(role white) (init (cell a 1 b)) (init (cell a 2 b)) (init (cell a 3 b)) (init (cell a 4 b)) (init (cell a 5 b)) (init (cell a 6 b)) (init (cell a 7 b)) (init (cell a 8 b)) (init (cell b 1 b)) (init (cell b 2 b)) (init (cell b 3 b)) (init (cell b 4 b)) (init (cell b 5 b)) (init (cell b 6 b)) (init (cell b 7 b)) (init (cell b 8 b)) (init (cell c 1 b)) (init (cell c 2 b)) (init (cell c 3 b)) (init (cell c 4 b)) (init (cell c 5 b)) (init (cell c 6 b)) (init (cell c 7 b)) (init (cell c 8 b)) (init (cell d 1 b)) (init (cell d 2 b)) (init (cell d 3 b)) (init (cell d 4 b)) (init (cell d 5 b)) (init (cell d 6 b)) (init (cell d 7 b)) (init (cell d 8 b)) (init (cell e 1 b)) (init (cell e 2 b)) (init (cell e 3 b)) (init (cell e 4 b)) (init (cell e 5 b)) (init (cell e 6 b)) (init (cell e 7 b)) (init (cell e 8 b)) (init (cell f 1 b)) (init (cell f 2 b)) (init (cell f 3 b)) (init (cell f 4 b)) (init (cell f 5 b)) (init (cell f 6 b)) (init (cell f 7 b)) (init (cell f 8 b)) (init (cell g 1 b)) (init (cell g 2 b)) (init (cell g 3 b)) (init (cell g 4 b)) (init (cell g 5 b)) (init (cell g 6 b)) (init (cell g 7 b)) (init (cell g 8 b)) (init (cell h 1 b)) (init (cell h 2 b)) (init (cell h 3 b)) (init (cell h 4 b)) (init (cell h 5 b)) (init (cell h 6 b)) (init (cell h 7 b)) (init (cell h 8 b)) (init (points 0)) (init initial) (<= (next (cell ?u ?v b)) (true (cell ?u ?v b)) (does white (place ?x ?y)) (distinct ?u ?x)) (<= (next (cell ?u ?v b)) (true (cell ?u ?v b)) (does white (place ?x ?y)) (distinct ?v ?y)) (<= (next (cell ?u ?v wn)) (does white (place ?u ?v))) (<= (next (cell ?u ?v wn)) (true (cell ?u ?v wn))) (<= (legal white (place ?u ?v)) (true (cell ?u ?v b))) (<= terminal (true (cell ?x ?y wn)) (true (cell ?u ?v wn)) (knight_move ?u ?v ?x ?y)) (<= (goal white ?p) (true (points ?p))) (<= (next (points ?y)) (true (points ?x)) (not (true initial)) (succ ?x ?y)) (<= (next (points 0)) (true initial)) ; Up two + over one in any direction (<= (knight_move ?u ?v ?x ?y) (adjacent_two ?v ?y) (adjacent ?u ?x)) ; Up one + over two in any direction (<= (knight_move ?u ?v ?x ?y) (adjacent_two ?u ?x) (adjacent ?v ?y)) ;;; DIFFERENT CELLS ;;; True iff ?x1 ?y1 is a different cell from ?x2 ?y2 (<= (adjacent ?x1 ?x2) (next_file ?x1 ?x2)) (<= (adjacent ?x1 ?x2) (next_file ?x2 ?x1)) (<= (adjacent ?y1 ?y2) (next_rank ?y1 ?y2)) (<= (adjacent ?y1 ?y2) (next_rank ?y2 ?y1)) (<= (adjacent_two ?a ?b) (adjacent ?a ?mid) (adjacent ?mid ?b) (distinct ?a ?b)) (<= (clear_column ?u ?v ?y) (next_rank ?v ?y) (coordinate ?u)) (<= (clear_column ?u ?v ?y) (next_rank ?v ?w) (true (cell ?u ?w b)) (clear_column ?u ?w ?y)) (<= (clear_row ?u ?x ?v) (next_file ?u ?x) (coordinate ?v)) (<= (clear_row ?u ?x ?v) (next_file ?u ?w) (true (cell ?w ?v b)) (clear_row ?w ?x ?v)) (<= (different_cells ?x1 ?y1 ?x2 ?y2) (coordinate ?x1) (coordinate ?x2) (coordinate ?y1) (coordinate ?y2) (distinct ?x1 ?x2)) (<= (different_cells ?x1 ?y1 ?x2 ?y2) (coordinate ?x1) (coordinate ?x2) (coordinate ?y1) (coordinate ?y2) (distinct ?y1 ?y2)) ; BOARD TOPOLOGY (next_rank 1 2) (next_rank 2 3) (next_rank 3 4) (next_rank 4 5) (next_rank 5 6) (next_rank 6 7) (next_rank 7 8) (next_file a b) (next_file b c) (next_file c d) (next_file d e) (next_file e f) (next_file f g) (next_file g h) ; BOARD COORDINATES (coordinate 1) (coordinate 2) (coordinate 3) (coordinate 4) (coordinate 5) (coordinate 6) (coordinate 7) (coordinate 8) (coordinate a) (coordinate b) (coordinate c) (coordinate d) (coordinate e) (coordinate f) (coordinate g) (coordinate h) (succ 0 1) (succ 1 2) (succ 2 3) (succ 3 4) (succ 4 5) (succ 5 6) (succ 6 7) (succ 7 8) (succ 8 9) (succ 9 10) (succ 10 12) (succ 12 14) (succ 14 16) (succ 16 18) (succ 18 20) (succ 20 22) (succ 22 24) (succ 24 26) (succ 26 28) (succ 28 30) (succ 30 35) (succ 35 40) (succ 40 45) (succ 45 50) (succ 50 55) (succ 55 60) (succ 60 65) (succ 65 70) (succ 70 75) (succ 75 80) (succ 80 90) (succ 90 100) ; These rules are strictly unnecessary, but suggest a helpful hint. (square a 1 black) (square a 3 black) (square a 5 black) (square a 7 black) (square b 2 black) (square b 4 black) (square b 6 black) (square b 8 black) (square c 1 black) (square c 3 black) (square c 5 black) (square c 7 black) (square d 2 black) (square d 4 black) (square d 6 black) (square d 8 black) (square e 1 black) (square e 3 black) (square e 5 black) (square e 7 black) (square f 2 black) (square f 4 black) (square f 6 black) (square f 8 black) (square g 1 black) (square g 3 black) (square g 5 black) (square g 7 black) (square h 2 black) (square h 4 black) (square h 6 black) (square h 8 black) (square h 1 white) (square h 3 white) (square h 5 white) (square h 7 white) (square g 2 white) (square g 4 white) (square g 6 white) (square g 8 white) (square f 1 white) (square f 3 white) (square f 5 white) (square f 7 white) (square e 2 white) (square e 4 white) (square e 6 white) (square e 8 white) (square d 1 white) (square d 3 white) (square d 5 white) (square d 7 white) (square c 2 white) (square c 4 white) (square c 6 white) (square c 8 white) (square b 1 white) (square b 3 white) (square b 5 white) (square b 7 white) (square a 2 white) (square a 4 white) (square a 6 white) (square a 8 white)