gdl/hanoi.gdl @ fc378d24dd2f default tip

Make zdd union a bit cleaner
author Steve Losh <steve@stevelosh.com>
date Tue, 30 May 2017 15:13:42 +0000
parents 144bae0818af
children (none)
(role player)
(init (on disc5 pillar1))
(init (on disc4 disc5))
(init (on disc3 disc4))
(init (on disc2 disc3))
(init (on disc1 disc2))
(init (clear disc1))
(init (clear pillar2))
(init (clear pillar3))
(init (step s0))
(<= (legal player (puton ?x ?y))
    (true (clear ?x))
    (true (clear ?y))
    (smallerdisc ?x ?y))
(<= (next (step ?y))
    (true (step ?x))
    (successor ?x ?y))
(<= (next (on ?x ?y))
    (does player (puton ?x ?y)))
(<= (next (on ?x ?y))
    (true (on ?x ?y))
    (not (put_on_any ?x)))
(<= (next (clear ?y))
    (true (on ?x ?y))
	(put_on_any ?x))
(<= (next (clear ?y))
    (true (clear ?y))
    (not (put_any_on ?y)))

(<= (put_on_any ?x)
    (does player (puton ?x ?y)))
(<= (put_any_on ?y)
    (does player (puton ?x ?y)))

(<= (goal player 100)
    (tower pillar3 s5))
(<= (goal player 80)
    (tower pillar3 s4))
(<= (goal player 60)
    (tower pillar3 s3))
(<= (goal player 40)
    (tower pillar3 s2))
(<= (goal player 0)
    (tower pillar3 ?height)
    (smaller ?height s2))
(<= terminal
    (true (step s31)))
(<= (tower ?x s0)
    (true (clear ?x)))
(<= (tower ?x ?height)
    (true (on ?y ?x))
    (disc_or_pillar ?y)
    (tower ?y ?height1)
    (successor ?height1 ?height))
(pillar pillar1)
(pillar pillar2)
(pillar pillar3)
(nextsize disc1 disc2)
(nextsize disc2 disc3)
(nextsize disc3 disc4)
(nextsize disc4 disc5)
(disc_or_pillar disc1)
(disc_or_pillar disc2)
(disc_or_pillar disc3)
(disc_or_pillar disc4)
(disc_or_pillar disc5)
(<= (disc_or_pillar ?p)
	(pillar ?p))
(<= (nextsize disc5 ?pillar)
    (pillar ?pillar))
(<= (smallerdisc ?a ?b)
    (nextsize ?a ?b))
(<= (smallerdisc ?a ?b)
    (nextsize ?a ?c)
    (smallerdisc ?c ?b))
(successor s0 s1)
(successor s1 s2)
(successor s2 s3)
(successor s3 s4)
(successor s4 s5)
(successor s5 s6)
(successor s6 s7)
(successor s7 s8)
(successor s8 s9)
(successor s9 s10)
(successor s10 s11)
(successor s11 s12)
(successor s12 s13)
(successor s13 s14)
(successor s14 s15)
(successor s15 s16)
(successor s16 s17)
(successor s17 s18)
(successor s18 s19)
(successor s19 s20)
(successor s20 s21)
(successor s21 s22)
(successor s22 s23)
(successor s23 s24)
(successor s24 s25)
(successor s25 s26)
(successor s26 s27)
(successor s27 s28)
(successor s28 s29)
(successor s29 s30)
(successor s30 s31)
(<= (smaller ?x ?y)
    (successor ?x ?y))
(<= (smaller ?x ?y)
    (successor ?x ?z)
    (smaller ?z ?y))