(role red)
(role blue)
(role orange)
(role cyan)
(team hot red)
(team hot orange)
(team cold blue)
(team cold cyan)
(<= (base (cell ?X ?Y ?P)) (x ?X) (y ?Y) (role ?P))
(base (control red))
(base (control blue))
(base (control orange))
(base (control cyan))
(<= (input ?P (drop ?X)) (role ?P) (x ?X))
(<= (input ?P noop) (role ?P))
(init (control red))
(<= (legal ?R (drop ?X)) (role ?R) (true (control ?R)) (columnopen ?X))
(<= (legal ?R noop) (role ?R) (role ?X) (distinct ?X ?R) (true (control ?X)))
(<= (next (cell ?X 1 ?Player)) (does ?Player (drop ?X)) (columnempty ?X))
(<= (next (cell ?X ?Y2 ?Player)) (does ?Player (drop ?X)) (cellopen ?X ?Y2) (succ ?Y1 ?Y2) (not (cellopen ?X ?Y1)))
(<= (next (cell ?X ?Y ?Player)) (true (cell ?X ?Y ?Player)))
(<= (next (control red)) (true (control cyan)))
(<= (next (control cyan)) (true (control orange)))
(<= (next (control orange)) (true (control blue)))
(<= (next (control blue)) (true (control red)))
(<= (goal ?X 100) (team hot ?X) (line hot))
(<= (goal ?X 50) (team hot ?X) (not (line hot)) (not (line cold)) (not boardopen))
(<= (goal ?X 0) (team hot ?X) (line cold))
(<= (goal ?X 0) (team hot ?X) (not (line hot)) (not (line col)) boardopen)
(<= (goal ?X 100) (team cold ?X) (line cold))
(<= (goal ?X 50) (team cold ?X) (not (line hot)) (not (line cold)) (not boardopen))
(<= (goal ?X 0) (team cold ?X) (line hot))
(<= (goal ?X 0) (team cold ?X) (not (line hot)) (not (line cold)) boardopen)
(<= terminal (line hot))
(<= terminal (line cold))
(<= terminal (not boardopen))
(<= (cellopen ?X ?Y) (x ?X) (y ?Y) (not (true (cell ?X ?Y red))) (not (true (cell ?X ?Y blue))) (not (true (cell ?X ?Y orange))) (not (true (cell ?X ?Y cyan))))
(<= (columnopen ?X) (cellopen ?X 6))
(<= (columnempty ?X) (cellopen ?X 1))
(<= boardopen (x ?X) (columnopen ?X))
(<= (line ?Team) (team ?Team ?Player1) (true (cell ?X1 ?Y ?Player1)) (succ ?X1 ?X2) (team ?Team ?Player2) (true (cell ?X2 ?Y ?Player2)) (succ ?X2 ?X3) (team ?Team ?Player3) (true (cell ?X3 ?Y ?Player3)) (succ ?X3 ?X4) (team ?Team ?Player4) (true (cell ?X4 ?Y ?Player4)))
(<= (line ?Team) (team ?Team ?Player1) (true (cell ?X ?Y1 ?Player1)) (succ ?Y1 ?Y2) (team ?Team ?Player2) (true (cell ?X ?Y2 ?Player2)) (succ ?Y2 ?Y3) (team ?Team ?Player3) (true (cell ?X ?Y3 ?Player3)) (succ ?Y3 ?Y4) (team ?Team ?Player4) (true (cell ?X ?Y4 ?Player4)))
(<= (line ?Team) (team ?Team ?Player1) (true (cell ?X1 ?Y1 ?Player1)) (succ ?Y1 ?Y2) (succ ?X1 ?X2) (team ?Team ?Player2) (true (cell ?X2 ?Y2 ?Player2)) (succ ?Y2 ?Y3) (succ ?X2 ?X3) (team ?Team ?Player3) (true (cell ?X3 ?Y3 ?Player3)) (succ ?Y3 ?Y4) (succ ?X3 ?X4) (team ?Team ?Player4) (true (cell ?X4 ?Y4 ?Player4)))
(<= (line ?Team) (team ?Team ?Player1) (true (cell ?X1 ?Y4 ?Player1)) (succ ?Y1 ?Y2) (succ ?X1 ?X2) (team ?Team ?Player2) (true (cell ?X2 ?Y3 ?Player2)) (succ ?Y2 ?Y3) (succ ?X2 ?X3) (team ?Team ?Player3) (true (cell ?X3 ?Y2 ?Player3)) (succ ?Y3 ?Y4) (succ ?X3 ?X4) (team ?Team ?Player4) (true (cell ?X4 ?Y1 ?Player4)))
(succ 1 2)
(succ 2 3)
(succ 3 4)
(succ 4 5)
(succ 5 6)
(succ 6 7)
(succ 7 8)
(x 1)
(x 2)
(x 3)
(x 4)
(x 5)
(x 6)
(x 7)
(x 8)
(y 1)
(y 2)
(y 3)
(y 4)
(y 5)
(y 6)