#module f.

dom(a). -dom(b).

#show dom(_).

#end module.




tq(1..5).
q(1..5).
num(0..8).
#hide tq(_).
#hide q(_).
#hide num(_).



#module o.
#import rel num(_).
#export rel obs(_), num_obs(_).
#export func r(_).

dom(a). dom(b).


#sig func r(dom) -> fluent.
#sig func s(dom) -> fluent.

#sig rel obs(fluent).
#sig rel num_obs(num).


{ obs(r(X)) }.   % Any fluent of the form r(X) can be observed.

num_obs(Y) :- Y{ obs(F) }Y.

#hide *.
#show q.
#show dom(_).
#show obs(_).
#show num_obs(_).

#end module.
