:-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/Ontology.e',105). :- call_pel_directive(translate(unskipped, '/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.pel')). :-include(library('ec_planner/ec_test_incl')). :-expects_dialect(ecalc). :- call_pel_directive(translate(begining, '/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.pel')). %; %; Copyright (c) 2005 IBM Corporation and others. %; All rights reserved. This program and the accompanying materials %; are made available under the terms of the Common Public License v1.0 %; which accompanies this distribution, and is available at %; http://www.eclipse.org/legal/cpl-v10.html %; %; Contributors: %; IBM - Initial implementation %; %; OTSpace: object-scale topological space %; %; The OTSpace representation deals with topological space at %; the scale of objects such as agents (humans and animals) %; and physical objects. %; %; PartOf %; physobj is a part of object. % predicate PartOf(physobj,object) :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',20). predicate(partOf(physobj,object)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',23). %; A state constraint says that if a physical object %; is part of an object, the location of the %; physical object is the same as the location of the object: % [physobj,object,location,time] % PartOf(physobj,object) & % HoldsAt(At(object,location),time) -> % HoldsAt(At(physobj,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',26). partOf(Physobj, Object), holds_at(at_loc(Object, Location), Time) -> holds_at(at_loc(Physobj, Location), Time). %; rolling a snowball bigger %; agent rolls stuff1 along stuff2. % event RollAlong(agent,stuff,stuff) :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',33). event(rollAlong(agent,stuff,stuff)). %; The diameter of ball is diameter. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',36). % fluent Diameter(ball,diameter) fluent(diameter(ball,diameter)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',38). %; A state constraint says that a ball has a unique diameter: % [ball,diameter1,diameter2,time] % HoldsAt(Diameter(ball,diameter1),time) & % HoldsAt(Diameter(ball,diameter2),time) -> % diameter1=diameter2. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',40). holds_at(diameter(Ball, Diameter1), Time), holds_at(diameter(Ball, Diameter2), Time) -> Diameter1=Diameter2. %; Effect axiom state that if an agent rolls some snow along %; some other snow, the diameter of the first snow will increase: % [agent,snow1,snow2,diameter1,diameter2,time] % HoldsAt(Diameter(snow1,diameter1),time) & % diameter2 = diameter1+1 -> % Initiates(RollAlong(agent,snow1,snow2), % Diameter(snow1,diameter2), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',46). holds_at(diameter(Snow1, Diameter1), Time), Diameter2=Diameter1+1 -> initiates_at(rollAlong(Agent, Snow1, Snow2), diameter(Snow1, Diameter2), Time). % [agent,snow1,snow2,diameter1,time] % HoldsAt(Diameter(snow1,diameter1),time) -> % Terminates(RollAlong(agent,snow1,snow2), % Diameter(snow1,diameter1), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',54). holds_at(diameter(Snow1, Diameter1), Time) -> terminates_at(rollAlong(Agent, Snow1, Snow2), diameter(Snow1, Diameter1), Time). %; A precondition axiom states that %; for an agent to roll some snow along some other snow, %; there must be a location such that %; the agent is at the location, %; the first snow is at the location, and %; the second snow is at the location: %;[agent,snow1,snow2,time] %;Happens(RollAlong(agent,snow1,snow2),time) -> %;{location} %;HoldsAt(At(agent,location),time) & %;HoldsAt(At(snow1,location),time) & %;HoldsAt(At(snow2,location),time). %; motion %; object moves (in place). % event Move(object) :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',74). event(move(object)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',77). %; Holding %; agent is holding physobj. % fluent Holding(agent,physobj) :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',79). fluent(holding(agent,physobj)). %; agent holds or picks up physobj. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',82). % event Hold(agent,physobj) event(hold(agent,physobj)). %; agent picks up some stuff1 from stuff2. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',84). % event HoldSome(agent,stuff,stuff) event(holdSome(agent,stuff,stuff)). %; agent releases or lets go of physobj. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',86). % event LetGoOf(agent,physobj) event(letGoOf(agent,physobj)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',88). %; An effect axiom states that if an agent holds %; a physical object, the agent will be holding the %; physical object: % [agent,physobj,time] % Initiates(Hold(agent,physobj),Holding(agent,physobj),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',91). initiates_at(hold(Agent,Physobj), holding(Agent,Physobj), Time). %; A precondition axiom states that %; for an agent to hold a physical object, %; there must be a location such that %; the agent is at the location and %; the physical object is at the location: %;[agent,physobj,time] %;Happens(Hold(agent,physobj),time) -> %;{location} %; HoldsAt(At(agent,location),time) & %; HoldsAt(At(physobj,location),time). %; An effect axiom states that if an agent %; lets go of a physical object, the agent is no longer holding %; the physical object: % [agent,physobj,time] % Terminates(LetGoOf(agent,physobj),Holding(agent,physobj),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',108). terminates_at(letGoOf(Agent,Physobj), holding(Agent,Physobj), Time). %; A precondition axiom states that %; for an agent to let go of a physical object, %; the agent must be holding the physical object: % [agent,physobj,time] % Happens(LetGoOf(agent,physobj),time) -> % HoldsAt(Holding(agent,physobj),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',114). happens_at(letGoOf(Agent, Physobj), Time) -> holds_at(holding(Agent, Physobj), Time). %; A releases axiom states that if an agent holds %; a physical object, %; the physical object's location will be released %; from inertia: % [agent,physobj,location,time] % Releases(Hold(agent,physobj),At(physobj,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',122). releases_at(hold(Agent,Physobj), at_loc(Physobj,Location), Time). %; A state constraint says that if an agent is holding %; a physical object and the agent is at a location, %; the physical object is also at the location: % [agent,physobj,location,time] % HoldsAt(Holding(agent,physobj),time) & % HoldsAt(At(agent,location),time) -> % HoldsAt(At(physobj,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',128). holds_at(holding(Agent, Physobj), Time), holds_at(at_loc(Agent, Location), Time) -> holds_at(at_loc(Physobj, Location), Time). %; A releases axiom states that if an agent holds %; a physical object, %; the locations of the parts of the physical object %; will be released from inertia: % [agent,physobj1,physobj2,location,time] % PartOf(physobj1,physobj2) -> % Releases(Hold(agent,physobj2),At(physobj1,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',137). partOf(Physobj1, Physobj2) -> releases_at(hold(Agent, Physobj2), at_loc(Physobj1, Location), Time). %; Further, if an agent holds a physical object, %; the locations of the physical objects of which %; the physical object is a part %; will be released from inertia: % [agent,physobj1,physobj2,location,time] % PartOf(physobj1,physobj2) -> % Releases(Hold(agent,physobj1),At(physobj2,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',145). partOf(Physobj1, Physobj2) -> releases_at(hold(Agent, Physobj1), at_loc(Physobj2, Location), Time). %;[agent,physobj,location1,location2,time] %;(!{object} PartOf(physobj,object)) & %;HoldsAt(At(agent,location1),time) & %;location1 != location2 -> %;Terminates(LetGoOf(agent,physobj),At(physobj,location2),time). % [agent,physobj,location,time] % (!{object} PartOf(physobj,object)) & % HoldsAt(At(agent,location),time) -> % Initiates(LetGoOf(agent,physobj),At(physobj,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',155). not(exists([Object], partOf(Physobj, Object))), holds_at(at_loc(Agent, Location), Time) -> initiates_at(letGoOf(Agent, Physobj), at_loc(Physobj, Location), Time). %;[agent,physobj1,physobj2,location1,location2,time] %;PartOf(physobj1,physobj2) & %;(!{object} PartOf(physobj2,object)) & %;HoldsAt(At(agent,location1),time) & %;location1 != location2 -> %;Terminates(LetGoOf(agent,physobj1),At(physobj2,location2),time). % [agent,physobj1,physobj2,location,time] % PartOf(physobj1,physobj2) & % (!{object} PartOf(physobj2,object)) & % HoldsAt(At(agent,location),time) -> % Initiates(LetGoOf(agent,physobj1),At(physobj2,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',167). partOf(Physobj1, Physobj2), not(exists([Object], partOf(Physobj2, Object))), holds_at(at_loc(Agent, Location), Time) -> initiates_at(letGoOf(Agent, Physobj1), at_loc(Physobj2, Location), Time). %; An effect axiom states that if an agent is at a location %; and lets go of a physical object, the physical object %; will be at the location: % [agent,physobj,location,time] % HoldsAt(At(agent,location),time) -> % Initiates(LetGoOf(agent,physobj),At(physobj,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',176). holds_at(at_loc(Agent, Location), Time) -> initiates_at(letGoOf(Agent, Physobj), at_loc(Physobj, Location), Time). %; An effect axiom states that if an agent picks up %; some stuff out of some other stuff, the agent will %; be holding the first stuff: % [agent,stuff1,stuff2,time] % Initiates(HoldSome(agent,stuff1,stuff2), % Holding(agent,stuff1), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',183). initiates_at(holdSome(Agent,Stuff1,Stuff2), holding(Agent,Stuff1), Time). %; A precondition axiom states that %; for an agent to pick up some stuff out of some other stuff, %; the first stuff must be a part of the second stuff and %; there must be a location such that the agent is at the location, %; the first stuff is at the location, and the second stuff is %; at the location: % [agent,stuff1,stuff2,time] % Happens(HoldSome(agent,stuff1,stuff2),time) -> % PartOf(stuff1,stuff2) & :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',194). % {location}% % HoldsAt(At(agent,location),time) & % HoldsAt(At(stuff1,location),time) & % HoldsAt(At(stuff2,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',197). exists([Location], (happens_at(holdSome(Agent, Stuff1, Stuff2), Time)->partOf(Stuff1, Stuff2), holds_at(at_loc(Agent, Location), Time), holds_at(at_loc(Stuff1, Location), Time), holds_at(at_loc(Stuff2, Location), Time))). %; A releases axiom states that if an agent picks up some %; stuff out of some other stuff, %; the first stuff's location will be released %; from inertia: % [agent,stuff1,stuff2,location,time] % Releases(HoldSome(agent,stuff1,stuff2),At(stuff1,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',206). releases_at(holdSome(Agent,Stuff1,Stuff2), at_loc(Stuff1,Location), Time). %; Inside %; physobj1 is inside physobj2. % fluent Inside(physobj,physobj) :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',211). fluent(inside(physobj,physobj)). %; agent puts physobj1 inside physobj2. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',214). % event PutInside(agent,physobj,physobj) event(putInside(agent,physobj,physobj)). %; agent takes physobj1 out of physobj2. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',216). % event TakeOutOf(agent,physobj,physobj) event(takeOutOf(agent,physobj,physobj)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',218). %; A state constraint says that a physical object cannot %; be inside itself: % [physobj1,physobj2,time] % HoldsAt(Inside(physobj1,physobj2),time) -> % physobj1!=physobj2. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',220). holds_at(inside(Physobj1, Physobj2), Time) -> Physobj1\=Physobj2. %; A state constraint says that if a physical object is %; inside another physical object, the second physical object %; is not inside the first physical object: % [physobj1,physobj2,time] % HoldsAt(Inside(physobj1,physobj2),time) -> % !HoldsAt(Inside(physobj2,physobj1),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',227). holds_at(inside(Physobj1, Physobj2), Time) -> holds_at(not(inside(Physobj2, Physobj1)), Time). %; An effect axiom states that if an agent puts a physical %; object inside another physical object, the first %; physical object will be inside the second physical object: % [agent,physobj1,physobj2,time] % Initiates(PutInside(agent,physobj1,physobj2), % Inside(physobj1,physobj2),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',234). initiates_at(putInside(Agent,Physobj1,Physobj2), inside(Physobj1,Physobj2), Time). %; An effect axiom states that if an agent puts a physical %; object inside another physical object, the agent will %; no longer be holding the first physical object: % [agent,physobj1,physobj2,time] % Terminates(PutInside(agent,physobj1,physobj2), % Holding(agent,physobj1),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',241). terminates_at(putInside(Agent,Physobj1,Physobj2), holding(Agent,Physobj1), Time). %; A precondition axiom states that %; for an agent to put a physical object inside another %; physical object, %; the agent must be holding the first physical object %; and there must be a location such that %; the agent is at the location and %; the second physical object is at the location: %;[agent,physobj1,physobj2,time] %;Happens(PutInside(agent,physobj1,physobj2),time) -> %;HoldsAt(Holding(agent,physobj1),time) & %;{location} %; HoldsAt(At(agent,location),time) & %; HoldsAt(At(physobj2,location),time). %; An effect axiom states that %; if an agent takes a physical object out of another %; physical object, the first physical object %; will no longer be inside the second physical object: % [agent,physobj1,physobj2,time] % Terminates(TakeOutOf(agent,physobj1,physobj2), % Inside(physobj1,physobj2),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',263). terminates_at(takeOutOf(Agent,Physobj1,Physobj2), inside(Physobj1,Physobj2), Time). %; A precondition axiom states that %; for an agent to take a physical object out of another %; physical object, %; the first physical object must be inside the second physical object %; and there must be a location such that %; the agent is at the location, %; the first physical object is at the location, and %; the second physical object is at the location: % [agent,physobj1,physobj2,time] % Happens(TakeOutOf(agent,physobj1,physobj2),time) -> % HoldsAt(Inside(physobj1,physobj2),time) & :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',275). % {location}% % HoldsAt(At(agent,location),time) & % HoldsAt(At(physobj1,location),time) & % HoldsAt(At(physobj2,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',278). exists([Location], (happens_at(takeOutOf(Agent, Physobj1, Physobj2), Time)->holds_at(inside(Physobj1, Physobj2), Time), holds_at(at_loc(Agent, Location), Time), holds_at(at_loc(Physobj1, Location), Time), holds_at(at_loc(Physobj2, Location), Time))). %; A releases axiom states that if an agent puts a physical %; object inside another physical object, %; the first physical object's location will be released %; from inertia: % [agent,physobj1,physobj2,location,time] % Releases(PutInside(agent,physobj1,physobj2), % At(physobj1,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',287). releases_at(putInside(Agent,Physobj1,Physobj2), at_loc(Physobj1,Location), Time). %; A state constraint says that if a physical object is inside %; another physical object and the second physical object is %; at a location, the first physical object is also at the location: % [physobj1,physobj2,location,time] % HoldsAt(Inside(physobj1,physobj2),time) & % HoldsAt(At(physobj2,location),time) -> % HoldsAt(At(physobj1,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',294). holds_at(inside(Physobj1, Physobj2), Time), holds_at(at_loc(Physobj2, Location), Time) -> holds_at(at_loc(Physobj1, Location), Time). %; An effect axiom states that if an agent takes a physical %; object out of another physical object, %; the agent will be holding the first physical object: % [agent,physobj1,physobj2,time] % Initiates(TakeOutOf(agent,physobj1,physobj2), % Holding(agent,physobj1), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',302). initiates_at(takeOutOf(Agent,Physobj1,Physobj2), holding(Agent,Physobj1), Time). %; On %; physobj1 is on physobj2. % fluent On(physobj,physobj) :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',309). fluent(on(physobj,physobj)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',312). %; agent places physobj1 on physobj2. % event PlaceOn(agent,physobj,physobj) event(placeOn(agent,physobj,physobj)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',312). %; agent takes physobj1 off of physobj2. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',315). % event TakeOffOf(agent,physobj,physobj) event(takeOffOf(agent,physobj,physobj)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',317). %; A state constraint says that a physical object cannot %; be on itself: % [physobj1,physobj2,time] % HoldsAt(On(physobj1,physobj2),time) -> % physobj1!=physobj2. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',319). holds_at(on(Physobj1, Physobj2), Time) -> Physobj1\=Physobj2. %; A state constraint says that if a physical object is %; on another physical object, the second physical object %; is not on the first physical object: % [physobj1,physobj2,time] % HoldsAt(On(physobj1,physobj2),time) -> % !HoldsAt(On(physobj2,physobj1),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',326). holds_at(on(Physobj1, Physobj2), Time) -> holds_at(not(on(Physobj2, Physobj1)), Time). %; An effect axiom states that if an agent places a physical %; object on another physical object, the first %; physical object will be on the second physical object: % [agent,physobj1,physobj2,time] % Initiates(PlaceOn(agent,physobj1,physobj2), % On(physobj1,physobj2),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',333). initiates_at(placeOn(Agent,Physobj1,Physobj2), on(Physobj1,Physobj2), Time). %; An effect axiom states that if an agent places a physical %; object on another physical object, the agent will %; no longer be holding the first physical object: % [agent,physobj1,physobj2,time] % Terminates(PlaceOn(agent,physobj1,physobj2), % Holding(agent,physobj1),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',340). terminates_at(placeOn(Agent,Physobj1,Physobj2), holding(Agent,Physobj1), Time). %; A precondition axiom states that %; for an agent to place a physical object on another %; physical object, %; the agent must be holding the first physical object %; and there must be a location such that %; the agent is at the location and %; the second physical object is at the location: %;[agent,physobj1,physobj2,time] %;Happens(PlaceOn(agent,physobj1,physobj2),time) -> %;HoldsAt(Holding(agent,physobj1),time) & %;{location} %; HoldsAt(At(agent,location),time) & %; HoldsAt(At(physobj2,location),time). %; An effect axiom states that %; if an agent takes a physical object off of another %; physical object, the first physical object %; will no longer be on the second physical object: % [agent,physobj1,physobj2,time] % Terminates(TakeOffOf(agent,physobj1,physobj2), % On(physobj1,physobj2),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',362). terminates_at(takeOffOf(Agent,Physobj1,Physobj2), on(Physobj1,Physobj2), Time). %; An effect axiom states that if an agent takes a physical %; object off of another physical object, %; the agent will be holding the first physical object: % [agent,physobj1,physobj2,time] % Initiates(TakeOffOf(agent,physobj1,physobj2), % Holding(agent,physobj1),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',369). initiates_at(takeOffOf(Agent,Physobj1,Physobj2), holding(Agent,Physobj1), Time). %; A precondition axiom states that %; for an agent to take a physical object off of another %; physical object, %; the first physical object must be on the second physical object %; and there must be a location such that %; the agent is at the location and %; the first physical object is at the location: %; the second physical object is at the location: % [agent,physobj1,physobj2,time] % Happens(TakeOffOf(agent,physobj1,physobj2),time) -> % HoldsAt(On(physobj1,physobj2),time) & :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',381). % {location}% % HoldsAt(At(agent,location),time) & % HoldsAt(At(physobj1,location),time) & % HoldsAt(At(physobj2,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',384). exists([Location], (happens_at(takeOffOf(Agent, Physobj1, Physobj2), Time)->holds_at(on(Physobj1, Physobj2), Time), holds_at(at_loc(Agent, Location), Time), holds_at(at_loc(Physobj1, Location), Time), holds_at(at_loc(Physobj2, Location), Time))). %; A releases axiom states that if an agent places a physical %; object on another physical object, %; the first physical object's location will be released %; from inertia: % [agent,physobj1,physobj2,location,time] % Releases(PlaceOn(agent,physobj1,physobj2), % At(physobj1,location), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',393). releases_at(placeOn(Agent,Physobj1,Physobj2), at_loc(Physobj1,Location), Time). %; A state constraint says that if a physical object is on %; another physical object and the second physical object is %; at a location, the first physical object is also at the location: % [physobj1,physobj2,location,time] % HoldsAt(On(physobj1,physobj2),time) & % HoldsAt(At(physobj2,location),time) -> % HoldsAt(At(physobj1,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',401). holds_at(on(Physobj1, Physobj2), Time), holds_at(at_loc(Physobj2, Location), Time) -> holds_at(at_loc(Physobj1, Location), Time). % fluent Near(agent,object) :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',405). fluent(near(agent,object)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',407). % event WalkFromTo(agent,object,object) event(walkFromTo(agent,object,object)). % event WalkFrom(agent,object) event(walkFrom(agent,object)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',409). % event RunFromTo(agent,object,object) event(runFromTo(agent,object,object)). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',411). % [agent,object1,object2,time] % Initiates(WalkFromTo(agent,object1,object2), % Near(agent,object2), % time). initiates_at(walkFromTo(Agent,Object1,Object2), near(Agent,Object2), Time). % [agent,object1,object2,time] % Terminates(WalkFromTo(agent,object1,object2), % Near(agent,object1), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',417). terminates_at(walkFromTo(Agent,Object1,Object2), near(Agent,Object1), Time). % [agent,object1,object2,time] % Happens(WalkFromTo(agent,object1,object2),time) -> % {location}% % HoldsAt(At(agent,location),time) & % HoldsAt(At(object1,location),time) & % HoldsAt(At(object2,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',422). exists([Location], (happens_at(walkFromTo(Agent, Object1, Object2), Time)->holds_at(at_loc(Agent, Location), Time), holds_at(at_loc(Object1, Location), Time), holds_at(at_loc(Object2, Location), Time))). % [agent,object1,object2,time] % Initiates(RunFromTo(agent,object1,object2), % Near(agent,object2), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',429). initiates_at(runFromTo(Agent,Object1,Object2), near(Agent,Object2), Time). % [agent,object1,object2,time] % Terminates(RunFromTo(agent,object1,object2), % Near(agent,object1), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',434). terminates_at(runFromTo(Agent,Object1,Object2), near(Agent,Object1), Time). % [agent,object1,object2,time] % Happens(RunFromTo(agent,object1,object2),time) -> % {location}% % HoldsAt(At(agent,location),time) & % HoldsAt(At(object1,location),time) & % HoldsAt(At(object2,location),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',439). exists([Location], (happens_at(runFromTo(Agent, Object1, Object2), Time)->holds_at(at_loc(Agent, Location), Time), holds_at(at_loc(Object1, Location), Time), holds_at(at_loc(Object2, Location), Time))). % [agent,object,time] % Terminates(WalkFrom(agent,object), % Near(agent,object), % time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',446). terminates_at(walkFrom(Agent,Object), near(Agent,Object), Time). % [agent,object,location,door,time] % HoldsAt(Near(agent,object),time) & % HoldsAt(At(agent,location),time) & % HoldsAt(At(object,location),time) & % Side1(door)=location & % Happens(WalkThroughDoor12(agent,door),time) -> % Happens(WalkFrom(agent,object),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',451). holds_at(near(Agent, Object), Time), holds_at(at_loc(Agent, Location), Time), holds_at(at_loc(Object, Location), Time), side1(Door)=Location, happens_at(walkThroughDoor12(Agent, Door), Time) -> happens_at(walkFrom(Agent, Object), Time). % [agent,object,location,door,time] % HoldsAt(Near(agent,object),time) & % HoldsAt(At(agent,location),time) & % HoldsAt(At(object,location),time) & % Side2(door)=location & % Happens(WalkThroughDoor21(agent,door),time) -> % Happens(WalkFrom(agent,object),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',459). holds_at(near(Agent, Object), Time), holds_at(at_loc(Agent, Location), Time), holds_at(at_loc(Object, Location), Time), side2(Door)=Location, happens_at(walkThroughDoor21(Agent, Door), Time) -> happens_at(walkFrom(Agent, Object), Time). % [agent,object,room,staircase,time] % HoldsAt(Near(agent,object),time) & % HoldsAt(At(agent,room),time) & % HoldsAt(At(object,room),time) & % Side1(staircase)=room & % Happens(WalkUpStaircase(agent,staircase),time) -> % Happens(WalkFrom(agent,object),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',467). holds_at(near(Agent, Object), Time), holds_at(at_loc(Agent, Room), Time), holds_at(at_loc(Object, Room), Time), side1(Staircase)=Room, happens_at(walkUpStaircase(Agent, Staircase), Time) -> happens_at(walkFrom(Agent, Object), Time). % [agent,object,room,staircase,time] % HoldsAt(Near(agent,object),time) & % HoldsAt(At(agent,room),time) & % HoldsAt(At(object,room),time) & % Side2(staircase)=room & % Happens(WalkDownStaircase(agent,staircase),time) -> % Happens(WalkFrom(agent,object),time). :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',475). holds_at(near(Agent, Object), Time), holds_at(at_loc(Agent, Room), Time), holds_at(at_loc(Object, Room), Time), side2(Staircase)=Room, happens_at(walkDownStaircase(Agent, Staircase), Time) -> happens_at(walkFrom(Agent, Object), Time). %; End of file. :-was_s_l('/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.e',481). :- call_pel_directive(translate(ending, '/pack/logicmoo_ec/ext/ec_sources/ecnet/OTSpace.pel')).