1% examples/AkmanEtAl2004/ZooWorld.e:1
    2% translate: begining  File: examples/AkmanEtAl2004/ZooWorld.e.pro 
    3% ;
    4% ; Copyright (c) 2005 IBM Corporation and others.
    5% ; All rights reserved. This program and the accompanying materials
    6% ; are made available under the terms of the Common Public License v1.0
    7% ; which accompanies this distribution, and is available at
    8% ; http://www.eclipse.org/legal/cpl-v10.html
    9% ;
   10% ; Contributors:
   11% ; IBM - Initial implementation
   12% ;
   13% ; @article{Akman:2004,
   14% ;   author = "Varol Akman and Selim T. Erdogan and Joohyung Lee and Vladimir Lifschitz and Hudson Turner",
   15% ;   year = "2004",
   16% ;   title = "Representing the zoo world and the traffic world in the language of the causal calculator",
   17% ;   journal = "Artificial Intelligence",
   18% ;   volume = "153",
   19% ;   pages = "105--140",
   20% ; }
   21% ;
   22% examples/AkmanEtAl2004/ZooWorld.e:20
   23% 
   24% sort position: integer
   25subsort(position, integer).
   26
   27% sort location
   28sort(location).
   29
   30% sort cage: location
   31subsort(cage, location).
   32
   33% sort gate
   34sort(gate).
   35
   36% sort animal
   37sort(animal).
   38
   39% examples/AkmanEtAl2004/ZooWorld.e:26
   40% sort elephant: animal
   41subsort(elephant, animal).
   42
   43% sort horse: animal
   44subsort(horse, animal).
   45
   46% sort dog: animal
   47subsort(dog, animal).
   48
   49% sort human: animal
   50subsort(human, animal).
   51
   52% sort species
   53sort(species).
   54
   55% 
   56% examples/AkmanEtAl2004/ZooWorld.e:32
   57% function Loc(position): location
   58function(loc(position), location).
   59
   60% function Side1(gate): position
   61function(side1(gate), position).
   62
   63% function Side2(gate): position
   64function(side2(gate), position).
   65
   66% function Species(animal): species
   67function(species(animal), species).
   68
   69% 
   70% predicate Accessible(position,position,time)
   71predicate(accessible(position, position, time)).
   72
   73% examples/AkmanEtAl2004/ZooWorld.e:38
   74% predicate Adult(animal)
   75predicate(adult(animal)).
   76
   77% predicate Large(animal)
   78predicate(large(animal)).
   79
   80% predicate LargeSpecies(species)
   81predicate(largeSpecies(species)).
   82
   83% predicate Neighbor(position,position)
   84predicate(neighbor(position, position)).
   85
   86% predicate Sides(position,position,gate)
   87predicate(sides(position, position, gate)).
   88
   89% 
   90% examples/AkmanEtAl2004/ZooWorld.e:44
   91% event Close(human,gate)
   92event(close(human, gate)).
   93
   94% event GetOff(human,animal)
   95event(getOff(human, animal)).
   96
   97% event Mount(human,animal)
   98event(mount(human, animal)).
   99
  100% event Move(animal,position)
  101event(move(animal, position)).
  102
  103% event Open(human,gate)
  104event(open(human, gate)).
  105
  106% event ThrowOff(animal,human)
  107event(throwOff(animal, human)).
  108
  109% examples/AkmanEtAl2004/ZooWorld.e:50
  110% 
  111% fluent AbnormalEncroachment(human)
  112fluent(abnormalEncroachment(human)).
  113
  114% noninertial AbnormalEncroachment
  115noninertial(abnormalEncroachment).
  116
  117% fluent DoneBy(event,animal)
  118fluent(doneBy(event, animal)).
  119
  120% noninertial DoneBy
  121noninertial(doneBy).
  122
  123% fluent Mounted(human,animal)
  124fluent(mounted(human, animal)).
  125
  126% examples/AkmanEtAl2004/ZooWorld.e:56
  127% fluent MountFails(human)
  128fluent(mountFails(human)).
  129
  130% noninertial MountFails
  131noninertial(mountFails).
  132
  133% fluent Moves(animal)
  134fluent(moves(animal)).
  135
  136% noninertial Moves
  137noninertial(moves).
  138
  139% fluent Opened(gate)
  140fluent(opened(gate)).
  141
  142% fluent Pos(animal,position)
  143fluent(pos(animal, position)).
  144
  145% examples/AkmanEtAl2004/ZooWorld.e:62
  146% fluent PosDeterminingFluent(human,position)
  147fluent(posDeterminingFluent(human, position)).
  148
  149% noninertial PosDeterminingFluent
  150noninertial(posDeterminingFluent).
  151
  152% fluent ThrowOffFails(animal,human)
  153fluent(throwOffFails(animal, human)).
  154
  155% noninertial ThrowOffFails
  156noninertial(throwOffFails).
  157
  158% 
  159% species HumanSpecies, ElephantSpecies, HorseSpecies, DogSpecies
  160t(species, humanSpecies).
  161
  162t(species, elephantSpecies).
  163
  164t(species, horseSpecies).
  165
  166t(species, dogSpecies).
  167
  168% examples/AkmanEtAl2004/ZooWorld.e:68
  169% location Outside
  170t(location, outside).
  171
  172% 
  173% LargeSpecies(HumanSpecies).
  174largeSpecies(humanSpecies).
  175
  176% 
  177% LargeSpecies(ElephantSpecies).
  178largeSpecies(elephantSpecies).
  179
  180% 
  181% LargeSpecies(HorseSpecies).
  182largeSpecies(horseSpecies).
  183
  184% 
  185% !LargeSpecies(DogSpecies).
  186not(largeSpecies(dogSpecies)).
  187
  188% 
  189% examples/AkmanEtAl2004/ZooWorld.e:74
  190% 
  191% examples/AkmanEtAl2004/ZooWorld.e:75
  192% [event,animal,time]% 
  193% HoldsAt(DoneBy(event,animal),time) <->
  194% (Happens(event,time) &
  195%  (({gate} event=Close(animal,gate)) |
  196%   ({animal1} event=GetOff(animal,animal1))|
  197%   ({animal1} event=Mount(animal,animal1))|
  198%   ({position} event=Move(animal,position))|
  199%   ({gate} event=Open(animal,gate)) |
  200%   ({human1} event=ThrowOff(animal,human1)))).
  201holds_at(doneBy(Event, Animal), Time) <->
  202	happens(Event, Time),
  203	(   exists([Gate], Event=close(Animal, Gate))
  204	;   exists([Animal1],
  205		   Event=getOff(Animal, Animal1))
  206	;   exists([Animal15],
  207		   Event=mount(Animal, Animal15))
  208	;   exists([Position],
  209		   Event=move(Animal, Position))
  210	;   exists([Gate7], Event=open(Animal, Gate7))
  211	;   exists([Human1],
  212		   Event=throwOff(Animal, Human1))
  213	).
  214
  215% examples/AkmanEtAl2004/ZooWorld.e:83
  216% 
  217% 
  218% examples/AkmanEtAl2004/ZooWorld.e:85
  219% [event1,event2,animal,time]% 
  220% HoldsAt(DoneBy(event1,animal),time) &
  221% HoldsAt(DoneBy(event2,animal),time) ->
  222% event1=event2.
  223holds_at(doneBy(Event1, Animal), Time), holds_at(doneBy(Event2, Animal), Time) ->
  224	Event1=Event2.
  225
  226% 
  227% 
  228% examples/AkmanEtAl2004/ZooWorld.e:90
  229% [animal] % Large(animal) <-> (Adult(animal) & LargeSpecies(Species(animal))).
  230large(Animal) <->
  231	adult(Animal),
  232	largeSpecies(species(Animal)).
  233
  234% 
  235% 
  236% examples/AkmanEtAl2004/ZooWorld.e:92
  237% [position] 
  238% examples/AkmanEtAl2004/ZooWorld.e:92
  239% {position1} % position1!=% position & Neighbor(position,position1).
  240exists([Position1],  (Position1\=Position, neighbor(Position, Position1))).
  241
  242% 
  243% 
  244% examples/AkmanEtAl2004/ZooWorld.e:94
  245% [position] % !Neighbor(position,position).
  246not(neighbor(Position, Position)).
  247
  248% 
  249% 
  250% examples/AkmanEtAl2004/ZooWorld.e:96
  251% [position1,position2]% 
  252% Neighbor(position1,position2) ->
  253% Neighbor(position2,position1).
  254neighbor(Position1, Position2) ->
  255	neighbor(Position2, Position1).
  256
  257% 
  258% 
  259% examples/AkmanEtAl2004/ZooWorld.e:100
  260% [cage] % cage!=% Outside.
  261Cage\=outside.
  262
  263% 
  264% 
  265% examples/AkmanEtAl2004/ZooWorld.e:102
  266% [position1,position2,gate]% 
  267% Sides(position1,position2,gate) <->
  268% ((Side1(gate)=position1 &
  269%   Side2(gate)=position2) |
  270%  (Side2(gate)=position1 &
  271%   Side1(gate)=position2)).
  272sides(Position1, Position2, Gate) <->
  273	(   side1(Gate)=Position1,
  274	    side2(Gate)=Position2
  275	;   side2(Gate)=Position1,
  276	    side1(Gate)=Position2
  277	).
  278
  279% 
  280% examples/AkmanEtAl2004/ZooWorld.e:108
  281% 
  282% examples/AkmanEtAl2004/ZooWorld.e:109
  283% [gate] % Loc(Side1(gate))!=Loc(Side2(gate)).
  284loc(side1(Gate))\=loc(side2(Gate)).
  285
  286% 
  287% 
  288% examples/AkmanEtAl2004/ZooWorld.e:111
  289% [position1,position2,gate1,gate2]% 
  290% Sides(position1,position2,gate1) &
  291% Sides(position1,position2,gate2) ->
  292% gate1=gate2.
  293sides(Position1, Position2, Gate1), sides(Position1, Position2, Gate2) ->
  294	Gate1=Gate2.
  295
  296% 
  297% 
  298% examples/AkmanEtAl2004/ZooWorld.e:116
  299% [position1,position2,gate]% 
  300% Sides(position1,position2,gate) ->
  301% Neighbor(position1,position2).
  302sides(Position1, Position2, Gate) ->
  303	neighbor(Position1, Position2).
  304
  305% 
  306% 
  307% examples/AkmanEtAl2004/ZooWorld.e:120
  308% [position1,position2]% 
  309% Loc(position1) != Loc(position2) &
  310% Neighbor(position1,position2) ->
  311% examples/AkmanEtAl2004/ZooWorld.e:123
  312% {gate}%  Sides(position1,position2,gate).
  313exists([Gate],  (loc(Position1)\=loc(Position2), neighbor(Position1, Position2)->sides(Position1, Position2, Gate))).
  314
  315% 
  316% 
  317% examples/AkmanEtAl2004/ZooWorld.e:125
  318% [animal,position1,position2,time]% 
  319% HoldsAt(Pos(animal,position1),time) &
  320% HoldsAt(Pos(animal,position2),time) ->
  321% position1=position2.
  322holds_at(pos(Animal, Position1), Time), holds_at(pos(Animal, Position2), Time) ->
  323	Position1=Position2.
  324
  325% 
  326% 
  327% examples/AkmanEtAl2004/ZooWorld.e:130
  328% [animal,time]% 
  329% examples/AkmanEtAl2004/ZooWorld.e:131
  330% {position} % HoldsAt(Pos(animal,position),time).
  331exists([Position], holds_at(pos(Animal, Position), Time)).
  332
  333% 
  334% 
  335% examples/AkmanEtAl2004/ZooWorld.e:133
  336% [animal1,animal2,position,time]% 
  337% (animal1!=animal2 &
  338%  Large(animal1) &
  339%  Large(animal2) &
  340%  HoldsAt(Pos(animal1,position),time) &
  341%  HoldsAt(Pos(animal2,position),time)) ->
  342% (({human} human=animal1 & HoldsAt(Mounted(human,animal2),time)) |
  343%  ({human} human=animal2 & HoldsAt(Mounted(human,animal1),time))).
  344Animal1\=Animal2, large(Animal1), large(Animal2), holds_at(pos(Animal1, Position), Time), holds_at(pos(Animal2, Position), Time) ->
  345	(   exists([Human],
  346		   (Human=Animal1, holds_at(mounted(Human, Animal2), Time)))
  347	;   exists([Human5],
  348		   (Human5=Animal2, holds_at(mounted(Human5, Animal1), Time)))
  349	).
  350
  351% examples/AkmanEtAl2004/ZooWorld.e:140
  352% 
  353% 
  354% examples/AkmanEtAl2004/ZooWorld.e:142
  355% [human,position1,position2,time]% 
  356% HoldsAt(PosDeterminingFluent(human,position1),time) &
  357% HoldsAt(PosDeterminingFluent(human,position2),time) ->
  358% position1=position2.
  359holds_at(posDeterminingFluent(Human, Position1), Time), holds_at(posDeterminingFluent(Human, Position2), Time) ->
  360	Position1=Position2.
  361
  362% 
  363% 
  364% examples/AkmanEtAl2004/ZooWorld.e:147
  365% [animal,position,time]% 
  366% Initiates(Move(animal,position),Pos(animal,position),time).
  367initiates(move(Animal, Position), pos(Animal, Position), Time).
  368
  369% 
  370% 
  371% examples/AkmanEtAl2004/ZooWorld.e:150
  372% [animal,position1,position2,time]% 
  373% HoldsAt(Pos(animal,position1),time) ->
  374% Terminates(Move(animal,position2),Pos(animal,position1),time).
  375holds_at(pos(Animal, Position1), Time) ->
  376	terminates(move(Animal, Position2),
  377		   pos(Animal, Position1),
  378		   Time).
  379
  380% 
  381% 
  382% examples/AkmanEtAl2004/ZooWorld.e:154
  383% [animal,position,time]% 
  384% Happens(Move(animal,position),time) ->
  385% !HoldsAt(Pos(animal,position),time).
  386happens(move(Animal, Position), Time) ->
  387	not(holds_at(pos(Animal, Position), Time)).
  388
  389% 
  390% 
  391% examples/AkmanEtAl2004/ZooWorld.e:158
  392% [human,position,time]% 
  393% Happens(Move(human,position),time) ->
  394% !{animal} HoldsAt(Mounted(human,animal),time).
  395happens(move(Human, Position), Time) ->
  396	not(exists([Animal],
  397		   holds_at(mounted(Human, Animal), Time))).
  398
  399% 
  400% 
  401% examples/AkmanEtAl2004/ZooWorld.e:162
  402% [human,gate,time]% 
  403% Initiates(Open(human,gate),Opened(gate),time).
  404initiates(open(Human, Gate), opened(Gate), Time).
  405
  406% 
  407% 
  408% examples/AkmanEtAl2004/ZooWorld.e:165
  409% [human,gate,time]% 
  410% Happens(Open(human,gate),time) ->
  411% !HoldsAt(Opened(gate),time) &
  412% (!{animal} HoldsAt(Mounted(human,animal),time)) &
  413% ({position}
  414%  (Side1(gate)=position | Side2(gate)=position) &
  415%  HoldsAt(Pos(human,position),time)).
  416happens(open(Human, Gate), Time) ->
  417	not(holds_at(opened(Gate), Time)),
  418	not(exists([Animal],
  419		   holds_at(mounted(Human, Animal), Time))),
  420	exists([Position],
  421	       ((side1(Gate)=Position;side2(Gate)=Position), holds_at(pos(Human, Position), Time))).
  422
  423% examples/AkmanEtAl2004/ZooWorld.e:171
  424% 
  425% 
  426% examples/AkmanEtAl2004/ZooWorld.e:173
  427% [human,gate,time]% 
  428% Terminates(Close(human,gate),Opened(gate),time).
  429terminates(close(Human, Gate), opened(Gate), Time).
  430
  431% 
  432% 
  433% examples/AkmanEtAl2004/ZooWorld.e:176
  434% [human,gate,time]% 
  435% Happens(Close(human,gate),time) ->
  436% HoldsAt(Opened(gate),time) &
  437% (!{animal} HoldsAt(Mounted(human,animal),time)) &
  438% examples/AkmanEtAl2004/ZooWorld.e:180
  439% {position}% 
  440% (Side1(gate)=position | Side2(gate)=position) &
  441% HoldsAt(Pos(human,position),time).
  442exists([Position],  (happens(close(Human, Gate), Time)->holds_at(opened(Gate), Time), not(exists([Animal], holds_at(mounted(Human, Animal), Time))), (side1(Gate)=Position;side2(Gate)=Position), holds_at(pos(Human, Position), Time))).
  443
  444% 
  445% 
  446% examples/AkmanEtAl2004/ZooWorld.e:184
  447% [human,animal,position,time]% 
  448% HoldsAt(Mounted(human,animal),time) &
  449% HoldsAt(Pos(animal,position),time) ->
  450% HoldsAt(Pos(human,position),time).
  451holds_at(mounted(Human, Animal), Time), holds_at(pos(Animal, Position), Time) ->
  452	holds_at(pos(Human, Position), Time).
  453
  454% 
  455% 
  456% examples/AkmanEtAl2004/ZooWorld.e:189
  457% [animal,time]% 
  458% HoldsAt(Moves(animal),time) <->
  459% ({position}
  460%  HoldsAt(Pos(animal,position),time) &
  461%  !HoldsAt(Pos(animal,position),time+1)).
  462holds_at(moves(Animal), Time) <->
  463	exists([Position],
  464	       (holds_at(pos(Animal, Position), Time), not(holds_at(pos(Animal, Position), Time+1)))).
  465
  466% 
  467% 
  468% examples/AkmanEtAl2004/ZooWorld.e:195
  469% [human,time]% 
  470% HoldsAt(MountFails(human),time) <->
  471% ({animal}
  472%   Happens(Mount(human,animal),time) &
  473%   HoldsAt(Moves(animal),time)).
  474holds_at(mountFails(Human), Time) <->
  475	exists([Animal],
  476	       (happens(mount(Human, Animal), Time), holds_at(moves(Animal), Time))).
  477
  478% 
  479% 
  480% examples/AkmanEtAl2004/ZooWorld.e:201
  481% [human,animal,position,time]% 
  482% !HoldsAt(Moves(animal),time) ->
  483% Releases(Mount(human,animal),Pos(human,position),time).
  484not(holds_at(moves(Animal), Time)) ->
  485	releases(mount(Human, Animal),
  486		 pos(Human, Position),
  487		 Time).
  488
  489% 
  490% 
  491% examples/AkmanEtAl2004/ZooWorld.e:205
  492% [human,animal,time]% 
  493% !HoldsAt(Moves(animal),time) ->
  494% Initiates(Mount(human,animal),Mounted(human,animal),time).
  495not(holds_at(moves(Animal), Time)) ->
  496	initiates(mount(Human, Animal),
  497		  mounted(Human, Animal),
  498		  Time).
  499
  500% 
  501% 
  502% examples/AkmanEtAl2004/ZooWorld.e:209
  503% [human,animal,position,time]% 
  504% HoldsAt(Pos(animal,position),time) &
  505% HoldsAt(Moves(animal),time) ->
  506% Initiates(Mount(human,animal),Pos(human,position),time).
  507holds_at(pos(Animal, Position), Time), holds_at(moves(Animal), Time) ->
  508	initiates(mount(Human, Animal),
  509		  pos(Human, Position),
  510		  Time).
  511
  512% 
  513% 
  514% examples/AkmanEtAl2004/ZooWorld.e:214
  515% [human,animal,position,time]% 
  516% HoldsAt(Pos(human,position),time) &
  517% HoldsAt(Moves(animal),time) ->
  518% Terminates(Mount(human,animal),Pos(human,position),time).
  519holds_at(pos(Human, Position), Time), holds_at(moves(Animal), Time) ->
  520	terminates(mount(Human, Animal),
  521		   pos(Human, Position),
  522		   Time).
  523
  524% 
  525% 
  526% examples/AkmanEtAl2004/ZooWorld.e:219
  527% [human,animal,time]% 
  528% Happens(Mount(human,animal),time) ->
  529% Large(animal).
  530happens(mount(Human, Animal), Time) ->
  531	large(Animal).
  532
  533% 
  534% 
  535% examples/AkmanEtAl2004/ZooWorld.e:223
  536% [human,animal,time]% 
  537% HoldsAt(Mounted(human,animal),time) ->
  538% Large(animal).
  539holds_at(mounted(Human, Animal), Time) ->
  540	large(Animal).
  541
  542% 
  543% 
  544% examples/AkmanEtAl2004/ZooWorld.e:227
  545% [human1,human2,time]% 
  546% Happens(Mount(human1,human2),time) ->
  547% !Large(human1).
  548happens(mount(Human1, Human2), Time) ->
  549	not(large(Human1)).
  550
  551% 
  552% 
  553% examples/AkmanEtAl2004/ZooWorld.e:231
  554% [human1,human2,time]% 
  555% HoldsAt(Mounted(human1,human2),time) ->
  556% !Large(human1).
  557holds_at(mounted(Human1, Human2), Time) ->
  558	not(large(Human1)).
  559
  560% 
  561% 
  562% examples/AkmanEtAl2004/ZooWorld.e:235
  563% [human,animal,time]% 
  564% Happens(Mount(human,animal),time) ->
  565% !{human1} human1!=human & HoldsAt(Mounted(human1,animal),time).
  566happens(mount(Human, Animal), Time) ->
  567	not(exists([Human1],
  568		   (Human1\=Human, holds_at(mounted(Human1, Animal), Time)))).
  569
  570% 
  571% 
  572% examples/AkmanEtAl2004/ZooWorld.e:239
  573% [human1,human2,animal,time]% 
  574% HoldsAt(Mounted(human1,animal),time) &
  575% HoldsAt(Mounted(human2,animal),time) ->
  576% human1=human2.
  577holds_at(mounted(Human1, Animal), Time), holds_at(mounted(Human2, Animal), Time) ->
  578	Human1=Human2.
  579
  580% 
  581% 
  582% examples/AkmanEtAl2004/ZooWorld.e:244
  583% [human,animal,time]% 
  584% Happens(Mount(human,animal),time) ->
  585% !{human1} human1!=human & HoldsAt(Mounted(human1,human),time).
  586happens(mount(Human, Animal), Time) ->
  587	not(exists([Human1],
  588		   (Human1\=Human, holds_at(mounted(Human1, Human), Time)))).
  589
  590% 
  591% 
  592% examples/AkmanEtAl2004/ZooWorld.e:248
  593% [human1,human2,time]% 
  594% Happens(Mount(human1,human2),time) ->
  595% examples/AkmanEtAl2004/ZooWorld.e:250
  596% {animal}%  HoldsAt(Mounted(human2,animal),time).
  597exists([Animal],  (happens(mount(Human1, Human2), Time)->holds_at(mounted(Human2, Animal), Time))).
  598
  599% 
  600% 
  601% examples/AkmanEtAl2004/ZooWorld.e:252
  602% [human1,human2,time]% 
  603% HoldsAt(Mounted(human1,human2),time) ->
  604% !{animal} HoldsAt(Mounted(human2,animal),time).
  605holds_at(mounted(Human1, Human2), Time) ->
  606	not(exists([Animal],
  607		   holds_at(mounted(Human2, Animal), Time))).
  608
  609% 
  610% 
  611% examples/AkmanEtAl2004/ZooWorld.e:256
  612% [human,animal,time]% 
  613% Happens(Mount(human,animal),time) ->
  614% !{animal1} HoldsAt(Mounted(human,animal1),time).
  615happens(mount(Human, Animal), Time) ->
  616	not(exists([Animal1],
  617		   holds_at(mounted(Human, Animal1), Time))).
  618
  619% 
  620% 
  621% examples/AkmanEtAl2004/ZooWorld.e:260
  622% [human,animal,time]% 
  623% !HoldsAt(Moves(animal),time) ->
  624% Terminates(GetOff(human,animal),Mounted(human,animal),time).
  625not(holds_at(moves(Animal), Time)) ->
  626	terminates(getOff(Human, Animal),
  627		   mounted(Human, Animal),
  628		   Time).
  629
  630% 
  631% 
  632% examples/AkmanEtAl2004/ZooWorld.e:264
  633% [human,animal,position,time]% 
  634% !HoldsAt(Moves(animal),time) &
  635% HoldsAt(PosDeterminingFluent(human,position),time) ->
  636% Initiates(GetOff(human,animal),Pos(human,position),time).
  637not(holds_at(moves(Animal), Time)), holds_at(posDeterminingFluent(Human, Position), Time) ->
  638	initiates(getOff(Human, Animal),
  639		  pos(Human, Position),
  640		  Time).
  641
  642% 
  643% 
  644% examples/AkmanEtAl2004/ZooWorld.e:269
  645% [human,animal,position,time]% 
  646% !HoldsAt(Moves(animal),time) &
  647% HoldsAt(Pos(human,position),time) ->
  648% Terminates(GetOff(human,animal),Pos(human,position),time).
  649not(holds_at(moves(Animal), Time)), holds_at(pos(Human, Position), Time) ->
  650	terminates(getOff(Human, Animal),
  651		   pos(Human, Position),
  652		   Time).
  653
  654% 
  655% 
  656% examples/AkmanEtAl2004/ZooWorld.e:274
  657% [human,animal,position1,position2,time]% 
  658% !HoldsAt(Moves(animal),time) &
  659% HoldsAt(Pos(human,position1),time) &
  660% position1!=position2 ->
  661% Terminates(GetOff(human,animal),Pos(human,position2),time).
  662not(holds_at(moves(Animal), Time)), holds_at(pos(Human, Position1), Time), Position1\=Position2 ->
  663	terminates(getOff(Human, Animal),
  664		   pos(Human, Position2),
  665		   Time).
  666
  667% 
  668% 
  669% examples/AkmanEtAl2004/ZooWorld.e:280
  670% [human,animal,time]% 
  671% Happens(GetOff(human,animal),time) ->
  672% HoldsAt(Mounted(human,animal),time).
  673happens(getOff(Human, Animal), Time) ->
  674	holds_at(mounted(Human, Animal), Time).
  675
  676% 
  677% 
  678% examples/AkmanEtAl2004/ZooWorld.e:284
  679% [animal1,human,time]% 
  680% HoldsAt(ThrowOffFails(animal1,human),time) <->
  681% ({position,animal2}
  682%  animal2!=human &
  683%  HoldsAt(PosDeterminingFluent(human,position),time) &
  684%  Large(animal2) &
  685%  HoldsAt(Pos(animal2,position),time+1)).
  686holds_at(throwOffFails(Animal1, Human), Time) <->
  687	exists([Position, Animal2],
  688	       (Animal2\=Human, holds_at(posDeterminingFluent(Human, Position), Time), large(Animal2), holds_at(pos(Animal2, Position), Time+1))).
  689
  690% examples/AkmanEtAl2004/ZooWorld.e:290
  691% 
  692% 
  693% examples/AkmanEtAl2004/ZooWorld.e:292
  694% [animal,human,position,time]% 
  695% HoldsAt(PosDeterminingFluent(human,position),time) &
  696% !HoldsAt(ThrowOffFails(animal,human),time) ->
  697% Initiates(ThrowOff(animal,human),Pos(human,position),time).
  698holds_at(posDeterminingFluent(Human, Position), Time), not(holds_at(throwOffFails(Animal, Human), Time)) ->
  699	initiates(throwOff(Animal, Human),
  700		  pos(Human, Position),
  701		  Time).
  702
  703% 
  704% 
  705% examples/AkmanEtAl2004/ZooWorld.e:297
  706% [animal,human,position,time]% 
  707% HoldsAt(Pos(human,position),time) &
  708% !HoldsAt(ThrowOffFails(animal,human),time) ->
  709% Terminates(ThrowOff(animal,human),Pos(human,position),time).
  710holds_at(pos(Human, Position), Time), not(holds_at(throwOffFails(Animal, Human), Time)) ->
  711	terminates(throwOff(Animal, Human),
  712		   pos(Human, Position),
  713		   Time).
  714
  715% 
  716% 
  717% examples/AkmanEtAl2004/ZooWorld.e:302
  718% [animal,human,position1,position2,time]% 
  719% !HoldsAt(ThrowOffFails(animal,human),time) &
  720% HoldsAt(Pos(human,position1),time) &
  721% !HoldsAt(PosDeterminingFluent(human,position2),time) &
  722% position1!=position2 ->
  723% Terminates(ThrowOff(animal,human),Pos(human,position2),time).
  724not(holds_at(throwOffFails(Animal, Human), Time)), holds_at(pos(Human, Position1), Time), not(holds_at(posDeterminingFluent(Human, Position2), Time)), Position1\=Position2 ->
  725	terminates(throwOff(Animal, Human),
  726		   pos(Human, Position2),
  727		   Time).
  728
  729% 
  730% examples/AkmanEtAl2004/ZooWorld.e:308
  731% 
  732% examples/AkmanEtAl2004/ZooWorld.e:309
  733% [human,time]% 
  734% (!{animal} Happens(ThrowOff(animal,human),time) |
  735%            Happens(GetOff(human,animal),time)) ->
  736% HoldsAt(PosDeterminingFluent(human,1),time).
  737not(exists([Animal], happens(throwOff(Animal, Human), Time)));happens(getOff(Human, animal), Time) ->
  738	holds_at(posDeterminingFluent(Human, 1), Time).
  739
  740% 
  741% 
  742% examples/AkmanEtAl2004/ZooWorld.e:314
  743% [human,position,animal1,animal2,time]% 
  744% HoldsAt(PosDeterminingFluent(human,position),time) &
  745% HoldsAt(ThrowOffFails(animal1,human),time) &
  746% HoldsAt(Pos(animal2,position),time) ->
  747% Initiates(ThrowOff(animal1,human),Mounted(human,animal2),time).
  748holds_at(posDeterminingFluent(Human, Position), Time), holds_at(throwOffFails(Animal1, Human), Time), holds_at(pos(Animal2, Position), Time) ->
  749	initiates(throwOff(Animal1, Human),
  750		  mounted(Human, Animal2),
  751		  Time).
  752
  753% 
  754% 
  755% examples/AkmanEtAl2004/ZooWorld.e:320
  756% [human,animal,time]% 
  757% !HoldsAt(ThrowOffFails(animal,human),time) ->
  758% Terminates(ThrowOff(animal,human),Mounted(human,animal),time).
  759not(holds_at(throwOffFails(Animal, Human), Time)) ->
  760	terminates(throwOff(Animal, Human),
  761		   mounted(Human, Animal),
  762		   Time).
  763
  764% 
  765% 
  766% examples/AkmanEtAl2004/ZooWorld.e:324
  767% [animal,human,time]% 
  768% Happens(ThrowOff(animal,human),time) ->
  769% HoldsAt(Mounted(human,animal),time).
  770happens(throwOff(Animal, Human), Time) ->
  771	holds_at(mounted(Human, Animal), Time).
  772
  773% 
  774% 
  775% examples/AkmanEtAl2004/ZooWorld.e:328
  776% [animal,human,time]% 
  777% Happens(ThrowOff(animal,human),time) ->
  778% !Happens(GetOff(human,animal),time).
  779happens(throwOff(Animal, Human), Time) ->
  780	not(happens(getOff(Human, Animal), Time)).
  781
  782% 
  783% 
  784% examples/AkmanEtAl2004/ZooWorld.e:332
  785% [animal,human,time]% 
  786% Happens(GetOff(human,animal),time) ->
  787% !Happens(ThrowOff(animal,human),time).
  788happens(getOff(Human, Animal), Time) ->
  789	not(happens(throwOff(Animal, Human), Time)).
  790
  791% 
  792% 
  793% examples/AkmanEtAl2004/ZooWorld.e:336
  794% [position1,position2,time]% 
  795% Accessible(position1,position2,time) <->
  796% (Neighbor(position1,position2) &
  797%  !{gate} Sides(position1,position2,gate) &
  798%          !HoldsAt(Opened(gate),time)).
  799accessible(Position1, Position2, Time) <->
  800	thereExists((neighbor(Position1, Position2), not([gate])),
  801		    (sides(Position1, Position2, gate), not(holds_at(opened(gate), Time)))).
  802
  803% 
  804% 
  805% examples/AkmanEtAl2004/ZooWorld.e:342
  806% [animal,position1,position2,time]% 
  807% (position1!=position2 &
  808%  HoldsAt(Pos(animal,position1),time) &
  809%  HoldsAt(Pos(animal,position2),time+1)) ->
  810% Accessible(position1,position2,time).
  811Position1\=Position2, holds_at(pos(Animal, Position1), Time), holds_at(pos(Animal, Position2), Time+1) ->
  812	accessible(Position1, Position2, Time).
  813
  814% 
  815% 
  816% examples/AkmanEtAl2004/ZooWorld.e:348
  817% [human,time]% 
  818% HoldsAt(AbnormalEncroachment(human),time) <->
  819% (HoldsAt(MountFails(human),time) |
  820%  ({position,animal1,animal2}
  821%    HoldsAt(PosDeterminingFluent(human,position),time) &
  822%    !HoldsAt(ThrowOffFails(animal2,human),time) &
  823%    Happens(ThrowOff(animal2,human),time) &
  824%    animal1!=human &
  825%    Large(animal1) &
  826%    HoldsAt(Pos(animal1,position),time) &
  827%    !HoldsAt(Pos(animal1,position),time+1))).
  828holds_at(abnormalEncroachment(Human), Time) <->
  829	(   holds_at(mountFails(Human), Time)
  830	;   exists([Position, Animal1, Animal2],
  831		   (holds_at(posDeterminingFluent(Human, Position), Time), not(holds_at(throwOffFails(Animal2, Human), Time)), happens(throwOff(Animal2, Human), Time), Animal1\=Human, large(Animal1), holds_at(pos(Animal1, Position), Time), not(holds_at(pos(Animal1, Position), Time+1))))
  832	).
  833
  834% examples/AkmanEtAl2004/ZooWorld.e:358
  835% 
  836% 
  837% examples/AkmanEtAl2004/ZooWorld.e:360
  838% [animal1,animal2,position,time]% 
  839% HoldsAt(Pos(animal1,position),time) &
  840% !HoldsAt(Pos(animal1,position),time+1) &
  841% !HoldsAt(Pos(animal2,position),time) &
  842% HoldsAt(Pos(animal2,position),time+1) ->
  843% (!Large(animal1) |
  844%  !Large(animal2) |
  845%  ({human} human=animal2 & HoldsAt(AbnormalEncroachment(human),time))).
  846holds_at(pos(Animal1, Position), Time), not(holds_at(pos(Animal1, Position), Time+1)), not(holds_at(pos(Animal2, Position), Time)), holds_at(pos(Animal2, Position), Time+1) ->
  847	(   not(large(Animal1))
  848	;   not(large(Animal2))
  849	;   exists([Human],
  850		   (Human=Animal2, holds_at(abnormalEncroachment(Human), Time)))
  851	).
  852
  853% examples/AkmanEtAl2004/ZooWorld.e:367
  854% 
  855% 
  856% examples/AkmanEtAl2004/ZooWorld.e:369
  857% [animal1,animal2,position1,position2,time]% 
  858% animal1!=% animal2 &
  859% Large(animal1) & Large(animal2) &
  860% HoldsAt(Pos(animal1,position1),time) &
  861% HoldsAt(Pos(animal1,position2),time+1) &
  862% HoldsAt(Pos(animal2,position1),time) &
  863% HoldsAt(Pos(animal2,position2),time+1) ->
  864% !{gate} Sides(position1,position2,gate).
  865Animal1\=Animal2, large(Animal1), large(Animal2), holds_at(pos(Animal1, Position1), Time), holds_at(pos(Animal1, Position2), Time+1), holds_at(pos(Animal2, Position1), Time), holds_at(pos(Animal2, Position2), Time+1) ->
  866	not(exists([Gate],
  867		   sides(Position1, Position2, Gate))).
  868
  869% examples/AkmanEtAl2004/ZooWorld.e:376
  870% 
  871% 
  872% examples/AkmanEtAl2004/ZooWorld.e:378
  873% [animal1,animal2,position1,position2,time]% 
  874% animal1!=% animal2 &
  875% Large(animal1) & Large(animal2) &
  876% HoldsAt(Pos(animal1,position1),time) &
  877% HoldsAt(Pos(animal1,position2),time+1) &
  878% HoldsAt(Pos(animal2,position2),time) &
  879% HoldsAt(Pos(animal2,position1),time+1) ->
  880% !{gate} Sides(position1,position2,gate).
  881Animal1\=Animal2, large(Animal1), large(Animal2), holds_at(pos(Animal1, Position1), Time), holds_at(pos(Animal1, Position2), Time+1), holds_at(pos(Animal2, Position2), Time), holds_at(pos(Animal2, Position1), Time+1) ->
  882	not(exists([Gate],
  883		   sides(Position1, Position2, Gate))).
  884
  885% examples/AkmanEtAl2004/ZooWorld.e:385
  886% 
  887% 
  888% examples/AkmanEtAl2004/ZooWorld.e:387
  889% [gate,position1,position2,time]% 
  890% HoldsAt(Opened(gate),time) &
  891% !HoldsAt(Opened(gate),time+1) &
  892% Sides(position1,position2,gate) ->
  893% !{animal}
  894% HoldsAt(Pos(animal,position1),time) &
  895% HoldsAt(Pos(animal,position2),time+1).
  896holds_at(opened(Gate), Time), not(holds_at(opened(Gate), Time+1)), sides(Position1, Position2, Gate) ->
  897	not(exists([Animal],
  898		   (holds_at(pos(Animal, Position1), Time), holds_at(pos(Animal, Position2), Time+1)))).
  899
  900% examples/AkmanEtAl2004/ZooWorld.e:393
  901% 
  902% 
  903% gate GateAO
  904t(gate, gateAO).
  905
  906% cage CageA
  907t(cage, cageA).
  908
  909% 
  910% Loc(1)=CageA.
  911loc(1)=cageA.
  912
  913% 
  914% examples/AkmanEtAl2004/ZooWorld.e:399
  915% Loc(2)=CageA.
  916loc(2)=cageA.
  917
  918% 
  919% Loc(3)=CageA.
  920loc(3)=cageA.
  921
  922% 
  923% Loc(4)=CageA.
  924loc(4)=cageA.
  925
  926% 
  927% Loc(5)=Outside.
  928loc(5)=outside.
  929
  930% 
  931% Loc(6)=Outside.
  932loc(6)=outside.
  933
  934% 
  935% Loc(7)=Outside.
  936loc(7)=outside.
  937
  938% 
  939% examples/AkmanEtAl2004/ZooWorld.e:405
  940% Loc(8)=Outside.
  941loc(8)=outside.
  942
  943% 
  944% 
  945% examples/AkmanEtAl2004/ZooWorld.e:407
  946% [position1,position2]% 
  947% Neighbor(position1,position2) <->
  948% ((position1=1 & position2=2) |
  949%  (position1=1 & position2=3) |
  950%  (position1=1 & position2=4) |
  951%  (position1=2 & position2=3) |
  952%  (position1=2 & position2=4) |
  953%  (position1=3 & position2=4) |
  954%  (position1=5 & position2=6) |
  955%  (position1=5 & position2=7) |
  956%  (position1=5 & position2=8) |
  957%  (position1=6 & position2=7) |
  958%  (position1=6 & position2=8) |
  959%  (position1=7 & position2=8) |
  960%  (position2=1 & position1=2) |
  961%  (position2=1 & position1=3) |
  962%  (position2=1 & position1=4) |
  963%  (position2=2 & position1=3) |
  964%  (position2=2 & position1=4) |
  965%  (position2=3 & position1=4) |
  966%  (position2=5 & position1=6) |
  967%  (position2=5 & position1=7) |
  968%  (position2=5 & position1=8) |
  969%  (position2=6 & position1=7) |
  970%  (position2=6 & position1=8) |
  971%  (position2=7 & position1=8) |
  972%  (position1=4 & position2=7) |
  973%  (position2=4 & position1=7)).
  974neighbor(Position1, Position2) <->
  975	(   Position1=1,
  976	    Position2=2
  977	;   Position1=1,
  978	    Position2=3
  979	;   Position1=1,
  980	    Position2=4
  981	;   Position1=2,
  982	    Position2=3
  983	;   Position1=2,
  984	    Position2=4
  985	;   Position1=3,
  986	    Position2=4
  987	;   Position1=5,
  988	    Position2=6
  989	;   Position1=5,
  990	    Position2=7
  991	;   Position1=5,
  992	    Position2=8
  993	;   Position1=6,
  994	    Position2=7
  995	;   Position1=6,
  996	    Position2=8
  997	;   Position1=7,
  998	    Position2=8
  999	;   Position2=1,
 1000	    Position1=2
 1001	;   Position2=1,
 1002	    Position1=3
 1003	;   Position2=1,
 1004	    Position1=4
 1005	;   Position2=2,
 1006	    Position1=3
 1007	;   Position2=2,
 1008	    Position1=4
 1009	;   Position2=3,
 1010	    Position1=4
 1011	;   Position2=5,
 1012	    Position1=6
 1013	;   Position2=5,
 1014	    Position1=7
 1015	;   Position2=5,
 1016	    Position1=8
 1017	;   Position2=6,
 1018	    Position1=7
 1019	;   Position2=6,
 1020	    Position1=8
 1021	;   Position2=7,
 1022	    Position1=8
 1023	;   Position1=4,
 1024	    Position2=7
 1025	;   Position2=4,
 1026	    Position1=7
 1027	).
 1028
 1029% examples/AkmanEtAl2004/ZooWorld.e:434
 1030% 
 1031% 
 1032% Side1(GateAO)=4.
 1033side1(gateAO)=4.
 1034
 1035% 
 1036% Side2(GateAO)=7.
 1037side2(gateAO)=7.
 1038
 1039% 
 1040% 
 1041% ; End of file.
 1042% examples/AkmanEtAl2004/ZooWorld.e:440
 1043% translate: ending  File: examples/AkmanEtAl2004/ZooWorld.e.pro