(max_row 3)
(max_col 3)
(player red)
(start_position red (rc 1 1))
(player_next red red)
(rich_ui no_rich_ui)
(rules own field (cons nothing (cons nothing (cons nothing (cons nothing nil)))))
(rules wild field (cons (minus 1) (cons nothing (cons capture (cons (plus 1) nil)))))
(role random)
(role red)
(<= (input random (roll ?L)) (valid_dice ?L))
(<= (input ?Player ?Move) (player ?Player) (valid_move ?Move))
(<= (input ?Player (spawn (at ?StartPosition))) (start_position ?Player ?StartPosition))
(<= (input ?Player noop) (player ?Player))
(<= (base ?Cell) (unify_cell ?Cell (cell ?_1 (situation (army (of ?_2) (count ?X)) ?_3))) (le 1 ?X))
(<= (base ?Cell) (unify_cell ?Cell (cell ?_4 (situation nobody ?_5))))
(<= (base (control ?R)) (player ?R))
(<= (init (cell ?StartPosition (situation (army (of ?Player) (count 1)) (on field (owned_by ?Player))))) (start_position ?Player ?StartPosition))
(<= (init ?Cell) (unify_cell ?Cell (cell ?Rc (situation nobody (on field wild)))) (start_position ?_6 ?StartPosition) (distinct ?StartPosition ?Rc))
(init (control red))
(<= (legal random (roll ?Dice)) (true (control ?Player)) (max_possible_pawn_stack ?Player ?Max) (valid_length_dice ?Max ?Dice))
(<= (legal ?Player (move ?MovingPawns (from ?From) (to ?To))) (true (control ?Player)) (true (cell ?From (situation (army (of ?Player) (count ?StationaryPawns)) ?_7))) (le ?MovingPawns ?StationaryPawns) (valid_move (move ?MovingPawns (from ?From) (to ?To))) (or (true (cell ?To (situation (army (of ?Player) ?_8) ?_9))) (true (cell ?To (situation nobody ?_10)))) (distinct ?From ?To))
(<= (legal ?Player (attack ?MovingPawns (from ?From) (to ?To))) (true (control ?Player)) (true (cell ?From (situation (army (of ?Player) (count ?StationaryPawns)) ?_11))) (le ?MovingPawns ?StationaryPawns) (valid_move (move ?MovingPawns (from ?From) (to ?To))) (true (cell ?To (situation (army (of ?Opponent) ?_12) ?_13))) (distinct ?From ?To) (distinct ?Player ?Opponent))
(<= (legal ?Player (move ?MovingPawns (from ?FromAndTo) (to ?FromAndTo))) (true (control ?Player)) (true (cell ?FromAndTo (situation (army (of ?Player) (count ?MovingPawns)) (on ?_14 wild)))) (valid_move (move ?MovingPawns (from ?FromAndTo) (to ?FromAndTo))))
(<= (legal ?Player (spawn (at ?StartPosition))) (player ?Player) (true (control ?Player)) (start_position ?Player ?StartPosition) (not (player_has_an_army ?Player)))
(<= (legal ?Player noop) (player ?Player) (true (control ?Q)) (distinct ?Player ?Q))
(<= (player_has_an_army ?Player) (true (cell ?_15 (situation (army (of ?Player) ?_16) ?_17))))
(goal random 0)
(<= (goal ?Player ?Score) (player ?Player) (player_score ?Player ?Score))
(<= terminal (there_is_no_wild_cells_left dupa))
(<= (sees ?Role (did ?OtherRole ?Move)) (role ?Role) (does ?OtherRole ?Move))
(<= (next (cell ?FromAndTo ?NewSituation)) (does random (roll ?D)) (does ?_18 (move ?MovingPawns (from ?FromAndTo) (to ?FromAndTo))) (true (cell ?FromAndTo ?OldSituation)) (type_list_length_prefix valid_die ?D ?MovingPawns ?ActiveDice) (multi_throw_situation ?ActiveDice ?OldSituation ?NewSituation))
(<= (next (cell ?To ?NewSituation)) (does random (roll ?D)) (does ?Player (move ?MovingPawns (from ?From) (to ?To))) (distinct ?From ?To) (true (cell ?To (situation (army (of ?Player) (count ?StationaryPawns)) ?On))) (saturated_add ?StationaryPawns ?MovingPawns ?NewPawns) (type_list_length_prefix valid_die ?D ?NewPawns ?ActiveDice) (multi_throw_situation ?ActiveDice (situation (army (of ?Player) (count ?NewPawns)) ?On) ?NewSituation))
(<= (next (cell ?To ?NewSituation)) (does random (roll ?D)) (does ?Player (move ?MovingPawns (from ?From) (to ?To))) (distinct ?From ?To) (true (cell ?To (situation nobody ?On))) (type_list_length_prefix valid_die ?D ?MovingPawns ?ActiveDice) (multi_throw_situation ?ActiveDice (situation (army (of ?Player) (count ?MovingPawns)) ?On) ?NewSituation))
(<= (next (cell ?From ?NewSituation)) (does ?_19 (move ?MovingPawns (from ?From) (to ?To))) (distinct ?From ?To) (true (cell ?From (situation (army ?Of (count ?OldPawns)) ?On))) (add ?NewPawns ?MovingPawns ?OldPawns) (le 1 ?NewPawns) (unify_situation ?NewSituation (situation (army ?Of (count ?NewPawns)) ?On)))
(<= (next (cell ?From ?NewSituation)) (does ?_20 (move ?MovingPawns (from ?From) (to ?To))) (distinct ?From ?To) (true (cell ?From (situation (army ?_21 (count ?OldPawns)) ?On))) (add 0 ?MovingPawns ?OldPawns) (unify_situation ?NewSituation (situation nobody ?On)))
(<= (next (cell ?Rc ?Situation)) (does ?_22 (move ?_23 (from ?From) (to ?To))) (true (cell ?Rc ?Situation)) (distinct ?Rc ?From) (distinct ?Rc ?To) (valid_situation ?Situation))
(<= (next (cell ?Rc ?Situation)) (does ?_24 (spawn (at ?Spawn))) (true (cell ?Rc ?Situation)) (distinct ?Rc ?Spawn) (valid_situation ?Situation))
(<= (next (cell ?Spawn (situation (army (of ?Player) (count ?NewCount)) ?On))) (does ?Player (spawn (at ?Spawn))) (true (cell ?Spawn (situation (army (of ?Player) (count ?OldCount)) ?On))) (add 1 ?OldCount ?NewCount))
(<= (next (cell ?Spawn (situation (army (of ?Player) (count 1)) ?On))) (does ?Player (spawn (at ?Spawn))) (true (cell ?Spawn (situation nobody ?On))))
(<= (next (control ?P)) (true (control ?Q)) (player_next ?Q ?P))
(<= (player_score ?Player ?Score) (detailed_player_score ?Player ?Score))
(<= (fast_player_score ?Player 100) (player ?Player) (there_is_no_wild_cells_left dupa))
(<= (fast_player_score ?Player 0) (player ?Player) (there_is_a_wild_cell dupa))
(<= (there_is_no_wild_cells_left dupa) (not (there_is_a_wild_cell dupa)))
(<= (there_is_a_wild_cell dupa) (true (cell ?_25 (situation ?_26 (on ?_27 wild)))))
(<= (detailed_player_score ?Player 100) (player ?Player) (there_is_no_wild_cells_left dupa))
(<= (detailed_player_score ?Player ?Score) (player ?Player) (there_is_a_wild_cell dupa) (max_pawn_stack ?Player ?MaxPawnStack) (number_of_cells_with_ownership ?NumberOfCapturedCells (owned_by ?Player)) (saturated_add ?MaxPawnStack ?NumberOfCapturedCells ?Score))
(<= (number_of_cells_with_ownership ?N ?Ownership) (list_of_cells_with_particular_ownership ?Ownership ?RcList) (valid_length_rc ?N ?RcList))
(<= (list_of_cells_with_particular_ownership ?Ownership ?RcList) (det_ownership_cell_list_acc ?Ownership ?RcList nil))
(<= (det_ownership_cell_list_acc ?Ownership nil ?Collected) (valid_ownerhip ?Ownership) (valid_length_rc ?_28 ?Collected) (not (there_is_a_different_cell_with_ownership ?Ownership ?Collected)))
(<= (det_ownership_cell_list_acc ?Ownership ?RcList ?Collected) (true (cell ?H (situation ?_29 (on ?_30 ?Ownership)))) (type_list_head_tail valid_rc ?NewCollection ?H ?Collected) (not (type_member_list valid_rc ?H ?Collected)) (sorted_without_repetitions valid_rc ?NewCollection) (det_ownership_cell_list_acc ?Ownership ?T ?NewCollection) (type_list_head_tail valid_rc ?RcList ?H ?T))
(<= (there_is_a_different_cell_with_ownership ?Ownership ?L) (true (cell ?Rc (situation ?_31 (on ?_32 ?Ownership)))) (valid_length_rc ?_33 ?L) (not (type_member_list valid_rc ?Rc ?L)))
(<= (fast_ownership_cell_list_acc ?Ownership ?RcList ?Acc) (true (cell ?H (situation ?_34 (on ?_35 ?Ownership)))) (type_list_head_tail valid_rc ?NewAcc ?H ?Acc) (not (type_member_list valid_rc ?H ?Acc)) (fast_ownership_cell_list_acc ?Ownership ?T ?NewAcc) (type_list_head_tail valid_rc ?RcList ?H ?T))
(<= (fast_ownership_cell_list_acc ?Ownership nil ?Acc) (valid_ownerhip ?Ownership) (valid_length_rc ?_36 ?Acc))
(<= (max_pawn_stack ?Player ?MaxPawnStack) (true (cell ?_37 (situation (army (of ?Player) (count ?MaxPawnStack)) ?_38))) (not (there_are_stacks_larger_than_the_given_one ?Player ?MaxPawnStack)))
(<= (max_pawn_stack ?Player 0) (player ?Player) (not (there_is_a_cell_occupied_by_player ?Player)))
(<= (there_are_stacks_larger_than_the_given_one ?Player ?MaxPawnStack) (lt ?MaxPawnStack ?N) (true (cell ?_39 (situation (army (of ?Player) (count ?N)) ?_40))))
(<= (max_possible_pawn_stack ?Player ?MaxPossiblePawnStack) (possible_pawn_stack ?Player ?MaxPossiblePawnStack) (not (there_are_possible_stacks_larger_than_the_given_one ?Player ?MaxPossiblePawnStack)))
(<= (max_possible_pawn_stack ?Player 0) (player ?Player) (not (there_is_a_cell_occupied_by_player ?Player)))
(<= (there_are_possible_stacks_larger_than_the_given_one ?Player ?MaxPossiblePawnStack) (player ?Player) (lt ?MaxPossiblePawnStack ?N) (possible_pawn_stack ?Player ?N))
(<= (possible_pawn_stack ?Player ?PossiblePawnStack) (true (cell ?From (situation (army (of ?Player) (count ?M)) ?_41))) (valid_move (move ?M (from ?From) (to ?To))) (distinct ?From ?To) (true (cell ?To (situation (army (of ?Player) (count ?N)) ?_42))) (saturated_add ?M ?N ?PossiblePawnStack))
(<= (possible_pawn_stack ?Player ?PossiblePawnStack) (true (cell ?_43 (situation (army (of ?Player) (count ?PossiblePawnStack)) ?_44))))
(<= (there_is_a_cell_occupied_by_player ?Player) (true (cell ?_45 (situation (army (of ?Player) ?_46) ?_47))))
(<= (neighboring_rc ?A ?B) (valid_rc ?A) (valid_rc ?B) (neighboring_rc_aux ?A ?B))
(<= (neighboring_rc_aux (rc ?R ?C) (rc ?R ?C)) (num ?R) (num ?C))
(<= (neighboring_rc_aux (rc ?R ?Lc) (rc ?R ?Rc)) (num ?R) (add 1 ?Lc ?Rc))
(<= (neighboring_rc_aux (rc ?R ?Lc) (rc ?R ?Rc)) (num ?R) (add 1 ?Rc ?Lc))
(<= (neighboring_rc_aux (rc ?Lr ?C) (rc ?Rr ?C)) (num ?C) (add 1 ?Lr ?Rr))
(<= (neighboring_rc_aux (rc ?Lr ?C) (rc ?Rr ?C)) (num ?C) (add 1 ?Rr ?Lr))
(<= (multi_throw_situation nil ?S ?S) (unify_situation ?S (situation (army (of ?_48) (count ?X)) ?_49)) (le 1 ?X))
(<= (multi_throw_situation nil ?S ?S) (unify_situation ?S (situation nobody ?_50)))
(<= (multi_throw_situation ?Dice ?Before ?After) (type_list_head_tail valid_die ?Dice ?Die ?T) (single_throw_situation ?Die ?Before ?Next) (multi_throw_situation ?T ?Next ?After) (valid_situation ?After))
(<= (single_throw_situation ?Die ?Before ?Next) (outcome_for_single_throw ?Die ?Before ?Outcome) (applied_outcome ?Outcome ?Before ?Next))
(<= (outcome_for_single_throw ?Die ?Before ?Outcome) (situation_rules ?Before ?L) (nth_element valid_outcome ?Die ?L ?Outcome))
(<= (situation_rules ?S ?L) (unify_situation ?S (situation (army (of ?P) (count ?X)) (on ?Tile (owned_by ?P)))) (distinct ?X 0) (rules own ?Tile ?L))
(<= (situation_rules ?S ?L) (unify_situation ?S (situation (army (of ?_51) (count ?X)) (on ?Tile wild))) (distinct ?X 0) (rules wild ?Tile ?L))
(<= (situation_rules ?S ?L) (unify_situation ?S (situation (army (of ?P) (count ?X)) (on ?Tile (owned_by ?Q)))) (distinct ?X 0) (distinct ?P ?Q) (rules foreign ?Tile ?L))
(<= (applied_outcome (minus ?N) ?Before ?After) (unify_situation ?Before (situation (army ?Of (count ?B)) ?On)) (le 1 ?N) (saturated_sub ?B ?N ?A) (le 1 ?A) (unify_situation ?After (situation (army ?Of (count ?A)) ?On)))
(<= (applied_outcome (minus ?N) ?Before (situation nobody ?On)) (unify_situation ?Before (situation (army ?_52 (count ?B)) ?On)) (le 1 ?N) (saturated_sub ?B ?N ?A) (eq 0 ?A))
(<= (applied_outcome (plus ?N) ?Before ?After) (unify_situation ?Before (situation (army ?Of (count ?B)) ?On)) (le 1 ?N) (saturated_add ?N ?B ?A) (unify_situation ?After (situation (army ?Of (count ?A)) ?On)))
(<= (applied_outcome nothing ?Before ?After) (unify_situation ?Before ?After))
(<= (applied_outcome capture ?Before ?After) (or (unify_situation ?Before (situation (army (of ?P) ?Count) (on ?Tile wild))) (and (unify_situation ?Before (situation (army (of ?P) ?Count) (on ?Tile (owned_by ?Q)))) (distinct ?P ?Q))) (unify_situation ?After (situation (army (of ?P) ?Count) (on ?Tile (owned_by ?P)))))
(<= (unify_situation ?A ?A) (valid_situation ?A))
(<= (unify_die ?A ?A) (valid_die ?A))
(<= (unify_cell ?A ?A) (valid_cell ?A))
(valid_outcome capture)
(valid_outcome nothing)
(<= (valid_outcome (minus ?N)) (le 1 ?N))
(<= (valid_outcome (plus ?N)) (le 1 ?N))
(valid_tile field)
(<= (valid_situation (situation ?Occupation (on ?Tile ?Ownership))) (valid_occupation ?Occupation) (valid_tile ?Tile) (valid_ownerhip ?Ownership))
(valid_ownerhip wild)
(<= (valid_ownerhip (owned_by ?Player)) (player ?Player))
(valid_occupation nobody)
(<= (valid_occupation (army (of ?Player) (count ?X))) (player ?Player) (num ?X))
(<= (valid_cell (cell ?Coordinates ?Situation)) (valid_rc ?Coordinates) (valid_situation ?Situation))
(<= (valid_row ?I) (max_row ?MaxRow) (le 1 ?I) (le ?I ?MaxRow))
(<= (valid_col ?I) (max_col ?MaxCol) (le 1 ?I) (le ?I ?MaxCol))
(<= (valid_rc (rc ?Row ?Column)) (valid_row ?Row) (valid_col ?Column))
(valid_die 1)
(valid_die 2)
(valid_die 3)
(valid_die 4)
(<= (valid_dice ?L) (type_nl valid_die (nl ?_53 ?L)))
(<= (valid_length_dice ?Number ?Dice) (type_nl valid_die (nl ?Number ?Dice)))
(<= (valid_length_rc ?Number ?RcList) (type_nl valid_rc (nl ?Number ?RcList)))
(<= (valid_move (move ?NumberOfPawns (from ?From) (to ?To))) (le 1 ?NumberOfPawns) (neighboring_rc ?From ?To))
(type valid_outcome)
(type valid_die)
(type valid_rc)
(<= (type_element valid_rc ?Element) (valid_rc ?Element))
(<= (type_element valid_outcome ?Element) (valid_outcome ?Element))
(<= (type_element valid_die ?Element) (valid_die ?Element))
(<= (type_nl_00 ?Tp nil) (type ?Tp))
(<= (type_nl_01 ?Tp (cons ?H nil)) (type_element ?Tp ?H) (type_nl_00 ?Tp nil))
(<= (type_nl_02 ?Tp (cons ?H (cons ?T1 nil))) (type_element ?Tp ?H) (type_nl_01 ?Tp (cons ?T1 nil)))
(<= (type_nl_03 ?Tp (cons ?H (cons ?T1 (cons ?T2 nil)))) (type_element ?Tp ?H) (type_nl_02 ?Tp (cons ?T1 (cons ?T2 nil))))
(<= (type_nl_04 ?Tp (cons ?H (cons ?T1 (cons ?T2 (cons ?T3 nil))))) (type_element ?Tp ?H) (type_nl_03 ?Tp (cons ?T1 (cons ?T2 (cons ?T3 nil)))))
(<= (type_nl ?Tp (nl 0 nil)) (type_nl_00 ?Tp nil))
(<= (type_nl ?Tp (nl 1 (cons ?H nil))) (type_nl_01 ?Tp (cons ?H nil)))
(<= (type_nl ?Tp (nl 2 (cons ?H (cons ?T1 nil)))) (type_nl_02 ?Tp (cons ?H (cons ?T1 nil))))
(<= (type_nl ?Tp (nl 3 (cons ?H (cons ?T1 (cons ?T2 nil))))) (type_nl_03 ?Tp (cons ?H (cons ?T1 (cons ?T2 nil)))))
(<= (type_nl ?Tp (nl 4 (cons ?H (cons ?T1 (cons ?T2 (cons ?T3 nil)))))) (type_nl_04 ?Tp (cons ?H (cons ?T1 (cons ?T2 (cons ?T3 nil))))))
(<= (type_list_head_tail ?Tp (cons ?H ?T) ?H ?T) (type_nl ?Tp (nl ?_54 (cons ?H ?T))))
(<= (nth_element ?Tp 1 ?L ?H) (type_list_head_tail ?Tp ?L ?H ?_55))
(<= (nth_element ?Tp ?N ?L ?E) (type_list_head_tail ?Tp ?L ?_56 ?T) (type_element ?Tp ?E) (add 1 ?M ?N) (nth_element ?Tp ?M ?T ?E))
(<= (type_member_list ?Tp ?E ?L) (type_list_head_tail ?Tp ?L ?E ?_57))
(<= (type_member_list ?Tp ?E ?L) (type_list_head_tail ?Tp ?L ?_58 ?T) (type_member_list ?Tp ?E ?T) (type_element ?Tp ?E))
(<= (sorted_without_repetitions ?Tp nil) (type ?Tp))
(<= (sorted_without_repetitions ?Tp (cons ?E nil)) (type_element ?Tp ?E))
(<= (sorted_without_repetitions ?Tp (cons ?H1 (cons ?H2 ?T))) (type_lt ?Tp ?H1 ?H2) (sorted_without_repetitions ?Tp ?L) (type_list_head_tail ?Tp ?L ?H2 ?T))
(<= (type_lt valid_rc ?E1 ?E2) (rc_lt ?E1 ?E2))
(<= (rc_lt ?Rc1 ?Rc2) (rank ?Rc1 ?Rank1) (rank ?Rc2 ?Rank2) (lt ?Rank1 ?Rank2))
(rank (rc 1 1) 0)
(rank (rc 1 2) 1)
(rank (rc 1 3) 4)
(rank (rc 2 1) 3)
(rank (rc 2 2) 2)
(rank (rc 2 3) 5)
(rank (rc 3 1) 8)
(rank (rc 3 2) 7)
(rank (rc 3 3) 6)
(<= (type_list_length_prefix ?Tp ?L 0 nil) (type_nl ?Tp (nl ?_59 ?L)))
(<= (type_list_length_prefix ?Tp ?L ?N ?S) (add 1 ?M ?N) (type_list_length_prefix ?Tp ?Lt ?M ?St) (type_list_head_tail ?Tp ?L ?H ?Lt) (type_list_head_tail ?Tp ?S ?H ?St))
(<= (saturated_add ?A ?B ?C) (saturated_add_ns (ns ?A ?_60) (ns ?B ?_61) (ns ?C ?_62)))
(<= (saturated_sub ?A ?B ?C) (saturated_sub_ns (ns ?A ?_63) (ns ?B ?_64) (ns ?C ?_65)))
(<= (saturated_add_ns (ns 0 0) ?B ?B) (ns_val ?B))
(<= (saturated_add_ns ?A ?B ?C) (ns_suc ?Am1 ?A) (ns_suc ?B ?Bp1) (saturated_add_ns ?Am1 ?Bp1 ?C) (ns_val ?C))
(<= (saturated_add_ns ?A ?B ?B) (ns_suc ?_66 ?A) (ns_val ?B) (not (saturated_add_ns_aux ?B)))
(<= (saturated_add_ns_aux ?B) (ns_val ?Tmp) (ns_suc ?B ?Tmp))
(<= (saturated_sub_ns ?A (ns 0 0) ?A) (ns_val ?A))
(<= (saturated_sub_ns ?A ?B ?C) (ns_suc ?Bm1 ?B) (ns_suc ?Am1 ?A) (saturated_sub_ns ?Am1 ?Bm1 ?C) (ns_val ?C))
(<= (saturated_sub_ns ?A ?B (ns 0 0)) (ns_suc ?_67 ?B) (ns_val ?A) (not (saturated_sub_ns_aux ?A)))
(<= (saturated_sub_ns_aux ?A) (ns_val ?Tmp) (ns_suc ?Tmp ?A))
(<= (num ?A) (ns_val (ns ?A ?_68)))
(<= (eq ?A ?A) (ns_eq (ns ?A ?S) (ns ?A ?S)))
(<= (le ?A ?B) (ns_le (ns ?A ?_69) (ns ?B ?_70)))
(<= (lt ?A ?B) (ns_lt (ns ?A ?_71) (ns ?B ?_72)))
(<= (add ?A ?B ?C) (ns_add (ns ?A ?_73) (ns ?B ?_74) (ns ?C ?_75)))
(<= (ns_add (ns 0 0) ?B ?B) (ns_val ?B))
(<= (ns_add ?A ?B ?C) (ns_suc ?Am1 ?A) (ns_add ?Am1 ?B ?X) (ns_suc ?X ?C) (ns_val ?B))
(<= (ns_suc (ns ?An ?As) (ns ?Bn (succ ?As))) (ns_val (ns ?An ?As)) (ns_val (ns ?Bn (succ ?As))))
(<= (ns_le ?A ?A) (ns_val ?A))
(<= (ns_le ?A ?B) (ns_suc ?X ?B) (ns_le ?A ?X) (ns_val ?A))
(<= (ns_eq ?A ?A) (ns_val ?A))
(<= (ns_lt ?A ?B) (ns_suc ?X ?B) (ns_le ?A ?X))
(ns_val (ns 0 0))
(ns_val (ns 1 (succ 0)))
(ns_val (ns 2 (succ (succ 0))))
(ns_val (ns 3 (succ (succ (succ 0)))))
(ns_val (ns 4 (succ (succ (succ (succ 0))))))