;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Multiple Buttons and Lights 9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Components
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (role robot)
  (<= (base (p ?x)) (index ?x))
  (<= (base (q ?x)) (index ?x))
  (<= (base (r ?x)) (index ?x))
  (base (step 1))
  (base (step 2))
  (base (step 3))
  (base (step 4))
  (base (step 5))
  (base (step 6))
  (base (step 7))

  (<= (input robot (a ?x)) (index ?x))
  (<= (input robot (b ?x)) (index ?x))
  (<= (input robot (c ?x)) (index ?x))

  (index 1)
  (index 2)
  (index 3)
  (index 4)
  (index 5)
  (index 6)
  (index 7)
  (index 8)
  (index 9)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; init
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (init (step 1));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; legal
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (<= (legal robot (a ?x)) (index ?x))  (<= (legal robot (b ?x)) (index ?x))  (<= (legal robot (c ?x)) (index ?x))  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; next
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (<= (next (p ?x)) (does robot (a ?x)) (not (true (p ?x))))  (<= (next (p ?x)) (does robot (b ?x)) (true (q ?x)))
  (<= (next (p ?x)) (true (p ?x)) (not (does robot (a ?x))) (not (does robot (b ?x))))
  (<= (next (q ?x)) (does robot (b ?x)) (true (p ?x)))  (<= (next (q ?x)) (true (q ?x)) (not (does robot (b ?x))))  
  (<= (next (r ?x)) (does robot (c ?x)) (true (q ?x)))  (<= (next (r ?x)) (true (r ?x)) (not (does robot (c ?x))))    (<= (next (step ?y)) (true (step ?x)) (successor ?x ?y))  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; goal
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (<= (goal robot 100) (true (p 5)) (true (q 5)) (true (r 5)))  (<= (goal robot 0) (not (true (p 5))))  (<= (goal robot 0) (not (true (q 5))))  (<= (goal robot 0) (not (true (r 5))));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; terminal
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (<= terminal (true (p 5)) (true (q 5)) (true (r 5)))  (<= terminal (true (step 7)));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Data
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (successor 1 2)  (successor 2 3)  (successor 3 4)  (successor 4 5)  (successor 5 6)  (successor 6 7);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;