File: convert.lp

package info (click to toggle)
gringo 4.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 8,260 kB
  • ctags: 10,755
  • sloc: cpp: 55,049; python: 629; yacc: 569; sh: 124; makefile: 23
file content (28 lines) | stat: -rw-r--r-- 1,148 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
f(lit(F, 1),F)      :- fluent(F).
f(lit(F,-1),neg(F)) :- fluent(F).

_action(A)              :- action(A).
_fluent(A)              :- fluent(A).
_executable(A,M)        :- executable(A,L), f(M,L).
_effect(A,M,G)          :- effect(A,L,G), f(M,L).
_condition(A,M,N)       :- condition(A,L,N), f(M,L).
_initially(M)           :- initially(L), f(M,L).
_initially_oneof(G,M,B) :- initially_oneof(G,L,B), f(M,L).
_goal(M)                :- goal(L), f(M,L).
_goal_or(M,N)           :- goal_or(L,N,_), f(M,L).

complement(F,lit(F,1),lit(F,-1)) :- fluent(F).

{ _holds_initially(F) } :- complement(F,L,M), not _initially(L;M).
  _holds_initially(F)   :- _initially(L), complement(F,L,M).

holds_oneof(N,B)  :- 
    _initially_oneof(N,_,B);
    not _holds_initially(F) : _initially_oneof(N,M,B), complement(F,L,M);
        _holds_initially(F) : _initially_oneof(N,L,B), complement(F,L,M).

 :- _initially_oneof(N,_,_), not 1 { holds_oneof(N,B) } 1.
 % just bizarre!
 :- not _holds_initially(F), _initially_oneof(N,M,B), not holds_oneof(N,B), complement(F,L,M).
 :-     _holds_initially(F), _initially_oneof(N,L,B), not holds_oneof(N,B), complement(F,L,M).