1:- use_module(library(lists)). 2
3pddlExport(Parsed) :-
5 view([parsed1,Parsed]),
6 generateProblemFromDomain(Parsed),
7 true
7.
8
9generateProblemFromDomain(Arguments) :-
10 argt(Arguments,[domainFile(DomainFile),domain(Domain),problemFile(ProblemFile),problem(Problem),solutionFile(SolutionFile),solution(Solution),verbFile(VerbFile),verb(Verb)]),
11 viewIf([arguments3,[domainFile(DomainFile),domain(Domain),problemFile(ProblemFile),problem(Problem),solutionFile(SolutionFile),solution(Solution),verbFile(VerbFile),verb(Verb)]]),
12 view([1]),
13 view([verb,Verb]),
14 Verb = [verber(A,B,C,D,E)],
15 view(2),
16 VerbArguments = [A,B,C,D,E],
17 view(3),
18 argt(VerbArguments,[problem(ProblemName)]),
19 view(4),
22
23
24 domain(Domain,ProblemDomainName),
25 view(5),
26
27 getCurrentDateTime(DateTime),
28 ExtraArgs = [dateTime(DateTime)],
29
30 exportFromWSM([domain(Domain),objects(Objects),types(Types),objectList(ObjectList),extraArgs(ExtraArgs)]),
31 viewIf([objects,Objects]),
32 exportFromWSM([domain(Domain),init(Init),objects(Objects),types(Types),objectList(ObjectList),extraArgs(ExtraArgs)]),
33 view([abba]),
34 viewIf([init,Init]),
35 exportFromWSM([domain(Domain),goals(Goals),extraArgs(ExtraArgs)]),
36
37 Problem = problem(ProblemName,ProblemDomainName,Objects,Init,Goals),
38 Arguments = [domainFile(DomainFile),domain(Domain),problemFile(ProblemFile),problem(Problem),solutionFile(SolutionFile),solution(Solution),verbFile(VerbFile),verb(Verb)],!
38.
39
40wsmHoldsNow(Expression,_) :-
41 getCurrentDateTime(DateTime),
42 atTimeQuery(DateTime,Expression).
43
44wsmHolds(Expression,Context) :-
45 Expression
45.
46
47wsmHolds(DateTime,Expression,Context) :-
48
49
50 atTimeQuery(DateTime,Expression)
50.
51
52wsmHoldsWrapper(Expression,Context) :-
53 ( wsmHolds(Expression,Context) ;
54 wsmHoldsNow(Expression,Context)).
55
56exportFromWSM(Arguments) :-
57 argt(Arguments,[domain(Domain),objects(Objects),types(Types),objectList(ObjectList),extraArgs(ExtraArgs)]),
58 argt(ExtraArgs,[dateTime(DateTime)]),
59 findall(TmpTypes,types(Domain,TmpTypes),AllTypes),
60 viewIf([allTypes,AllTypes]),
63 findall(Type,
64 (
65 member(genls(TypesList,_),AllTypes),
66 member(Type,TypesList),
67 Type \= '-'
68 ),
69 TmpTypes1),
70 findall(Type,
71 member(genls(_,Type),AllTypes),
72 TmpTypes2),
73 append([TmpTypes1,TmpTypes2],TmpTypes),
74 setof(Type,member(Type,TmpTypes),Types),
75 view([types,Types]),
76
77 viewIf([types,Types]),
78 findall(Declaration,
79 (
80 member(Type,Types),
81 view([tryingType,Type]),
82 setof(ObjectOfType,Type^(wsmHolds(isa(ObjectOfType,Type),z) ; wsmHoldsNow(isa(ObjectOfType,Type),z)),ObjectsOfType),
83 append([ObjectsOfType,['-'],[Type]],Declaration)
84 ),
85 Declarations),
86 viewIf([declarations,Declarations]),
87 append(Declarations,Objects),
88
89 findall(TmpObjectList,
90 (
91 member(Type,Types),
92 view([tryingType,Type]),
93 setof(ObjectOfType,Type^(wsmHolds(isa(ObjectOfType,Type),z) ; wsmHoldsNow(isa(ObjectOfType,Type),z)),TmpObjectList)
94 ),
95 TmpObjectLists),
96 view([tmpObjectLists,TmpObjectLists]),
97 findall(Object,(member(TmpObjectList,TmpObjectLists),member(Object,TmpObjectList)),TmpObjectList),
98 setof(Object,member(Object,TmpObjectList),ObjectList),
99
100 Arguments = [domain(Domain),objects(Objects),types(Types),objectList(ObjectList),extraArgs(ExtraArgs)],!
100.
101
102exportFromWSM(Arguments) :-
104
105 argt(Arguments,[domain(Domain),init(Init),objects(Objects),types(Types),objectList(ObjectList),extraArgs(ExtraArgs)]),
106 argt(ExtraArgs,[dateTime(DateTime)]),
108 findall(Predicate,predicates(Domain,Predicate),Predicates),
109 findall(QueryPredicate,
110 (
111 member(Predicate,Predicates),
112 Predicate =.. [PredicateName|TypeSpec],
113 findall([Var,Type],(member(are(Vars,Type),TypeSpec),member(Var,Vars)),VarSpecs),
114 length(VarSpecs,ArgsLength),
115 length(QueryPredicateArgs,ArgsLength),
116 QueryPredicate =.. [PredicateName|QueryPredicateArgs],
117 wsmHolds(DateTime,QueryPredicate,z),
118 validateAllArgumentsAreObjects(QueryPredicate,ObjectList),
119 validateQueryPredicateArgsHaveCorrectTypes(QueryPredicate,QueryPredicateArgs)
120 ),
121 QueryPredicates),
122 viewIf([queryPredicates,QueryPredicates]),
125
126
127
128
129
130
131
132
133
134
135
136
137
138
140 findall(Function,functions(Domain,Function),Functions),
141 findall('='(QueryAssignment,Value),
142 (
143 member(Assignment,Functions),
144 Assignment = f(AssignmentName,TypeSpec),
145 findall([Var,Type],(member(are(Vars,Type),TypeSpec),member(Var,Vars)),VarSpecs),
146 length(VarSpecs,ArgsLength),
147 length(QueryAssignmentArgs,ArgsLength),
148 QueryAssignment =.. [AssignmentName|QueryAssignmentArgs],
149 view([wsmHolds(DateTime,set(QueryAssignment,Value),z)]),
150 wsmHolds(DateTime,set(QueryAssignment,Value),z),
151 validateAllArgumentsAreObjects(QueryAssignment,ObjectList),
152 validateQueryFunctionArgsHaveCorrectTypes(QueryAssignment,QueryAssignmentArgs)
153 ),
154 QueryAssignments),
155 viewIf([queryAssignments,QueryAssignments]),
158 append([QueryPredicates,QueryFunctions,QueryAssignments],Init),
159 Arguments = [domain(Domain),init(Init),objects(Objects),types(Types),objectList(ObjectList),extraArgs(ExtraArgs)],!
159.
160
161validateAllArgumentsAreObjects(Term,ObjectList) :-
163 ( is_list(Term) ->
164 foreach(member(SubTerm,Term),validateAllArgumentsAreObjects(SubTerm,ObjectList)) ;
165 ( ( Term =.. ['$VAR',VariableName]) ->
166 true ;
167 ( ( Term =.. [PredicateName|Args], length(Args,N),N > 0) ->
168 foreach(member(SubArg,Args),validateAllArgumentsAreObjects(SubArg,ObjectList)) ;
169 (
170 (
171 member(Term,ObjectList) -> view([true]) ; view([false])
172 ),
173 member(Term,ObjectList)
174 ))))
174.
175
176exportFromWSM(Arguments) :-
177 argt(Arguments,[domain(Domain),goals(Goals),extraArgs(ExtraArgs)]),
178 currentPlanningGoals(Goals),
179
180 Arguments = [domain(Domain),goals(Goals),extraArgs(ExtraArgs)].
183
184
185
186
187
188
189
190
191
192
193
194
195
196
198validateQueryPredicateArgsHaveCorrectTypes(A,B) :-
199 true.
200
201validateQueryFunctionArgsHaveCorrectTypes(A,B) :-
202 true.
203
204validateQueryGoalArgsHaveCorrectTypes(A,B) :-
205 true