perm filename CHIMPS[S,TES] blob sn#009963 filedate 1971-11-16 generic text, type T, neo UTF8
00300		WORLD
00500	The room is quantized into NX ⊗ NY ⊗ NZ cubes of equal size, called
00600	"places".  There are two sizes of thing; "big" things are the same
00700	size as a "place", and "small" things are much smaller.  The places
00800	are identified by three coordinates (X,Y,Z), in the range
00900	(0:XMAX, 0:YMAX, 0:ZMAX).  When X=0|XMAX or Y=0|YMAX, there is usually
01000	a wall board.  When Z=0, there is usually a floor board.  When Z=ZMAX,
01100	there is a ceiling board that sometimes has a hook in it, suitable
01200	for hanging bananas directly or via a string.  The floor board at
01300	(X,Y,0) is abbreviated FLOOR(X,Y); the hook at (X,Y,ZMAX) as HOOK(X,Y),
01400	etc.
01600	Things are big or small, animal or object.  Animals are agile or strong,
01700	and objects are edible or inedible.  Chimps are agile animals, gorillas
01800	are strong animals, bananas are edible objects, and boxes, strings, and
01900	sticks are inedible.  Boxes and animals and strings are big; bananas and sticks
02000	are small.
02200	Two big things can not occupy the same place at the same time.  There
02300	is no restriction on small things sharing space with big things or with
02400	other small things.  If an animal is HOLDing a small thing, the small
02500	thing moves with the animal.
02700	Gravitation makes any unsupported thing fall straight down until it
02800	encounters a floor-board or a box to top-support it, or an animal to hold
02900	it if it's small.  There are four kinds of support: an animal holds
03000	a small thing; a string or hook bottom-supports a small thing; a box
03100	or floor top-supports anything; a box side-supports an agile animal.
03200	If an object is supported in several ways, the first kind of support
03300	in the following list takes precedence: Gorilla-Hold > Chimp-Hold >
03400	Bottom-Support > Side-Support > Top-Support.  If a supporter moves,
03500	what it supports moves with it, but not vice versa.  This means that
03600	if both a gorilla and a chimp are holding a banana, and the animals
03700	move apart, the gorilla winds up with the banana.
03900	The notation ∂m-n ε [x0:x1,y0:y1,z0:z1] means that the location (mx,my,mz)
04000	of m and the location (nx,ny,nz) of n differ by an amount in the range
04100	x0≤mx-nx≤x1, y0≤my-ny≤y1, z0≤mz-nz≤z1.  Thus, ∂Box1-Chimp1 ε [-1:1,-1:1,0]
04200	means that both the box and the chimp are at the same altitude and are
04300	in adjacent places (cube faces, edges, or corners touch).
04500	Each animal has two hands that may be free or in use.  One use of a hand
04600	is to hold a small thing.  A second use is to maintain the side support
04700	of a box.  Other actions may require temporary use of one or both hands.

00100		ACTIONS
00300	Each action has a precondition and a postcondition.  If motion
00400	is entailed by an action, the simulator assures that the laws of
00500	physics are not violated (place sharing, gravitation).  If use of
00600	hands is involved, the simulator assures that the animal has the free
00700	hands needed.  If the action results in an unsupported thing, the
00800	simulator makes it fall instantly.  If a supporter moves, what it supports
00900	is moved with it. If support is a consequence of any action, the location
01000	of the supported thing is automatically changed to be adjacent to the
01100	supporter (above for top-support, below for bottom-support, alongside
01200	on the side of approach for side-support).
01400	Agile Animal C CLIMBS TO SIDE OF Box B
01500		FROM	∂C-B ε [-1:1,-1:1,-1:1]
01600		TO	B Side-Supports C
01800	Animal C CLIMBS TO TOP OF Box B
01900		FROM	∂C-B ε [-1:1,-1:1,0:1]
02000		TO	B Top-Supports C
02200	Animal M NUDGES Box B to Location L
02300		FROM	∂M-B = ∂B-L = D ε [-1:1,-1:1,0]
02400			M has 2 hands free
02500			B Supports (if M is Strong then 0:1 else 0) Things
02600		TO	∂B-L = 0
02700			∂M-L = D
02900	Animal M GIVES Small Object K TO Animal N
03000		FROM	∂M-N ε [-2:2, -2:2, -2:2]
03100			M holds K
03200		TO	N holds K		M ¬Holds K
03400	Animal M DROPS Small Object K
03500		FROM	M Holds K
03600		TO	M ¬Holds K
03800	Strong Animal G LIFTS Box B TO Location L
03900		FROM	G has 2 hands free
04000			B Supports 0 Things
04100			∂G-L ε [-1:1,-1:1,-1:0]
04200			∂B-G ε [-1:1,-1:1,0:1]
04300		TO	∂B-L = 0
04500	Animal M KNOCKS LOOSE Small Object K
04600		FROM	∃S: S is a stick, Length S = L, M holds S
04700			∃H: H bottom-supports K
04800			∂M-K ε [-(L+1):(L+1), -(L+1):(L+1), -(L+1):L]
04900		TO	H ¬bottom-supports K

00100	Animal M EATS Edible Object E
00200		FROM	M Holds E
00300			M is Hungry
00400		TO	E ¬Appears
00500			M is ¬Hungry
00700	Animal M GRASPS Small Object K
00800		FROM	∂M-K ε [-1:1,-1:1,-1:1]
00900		TO	M Holds K
01100	Animal M STEPS TO Location L
01200		FROM	∂M-L ε [-1:1,-1:1,0:1]
01300		TO	∂M-L = 0
01700	XMAX = 10
01800	YMAX = 10
01900	ZMAX = 6
02000	FLOOR everywhere; HOOKs at (5,5) and (7,5)
02100	HOOK(5,5) Bottom-Supports STRING1
02200	STRING1 Bottom-Supports STICK1
02300	HOOK(7,5) Bottom-Supports BANANA1
02400	FLOOR(2,2) Top-Supports BOX1
02500	FLOOR(8,8) Top-Supports BOX2
02600	FLOOR(9,8) Top-Supports CHIMP1
02700	FLOOR(1,5) Top-Supports BOX3
02800	FLOOR(6,5) Top-Supports GORILLA1
03100		PROBLEM
03300	Make a plan for GORILLA1, who is hungry, to become ¬hungry.  Assume
03400	the chimp is cooperative.