]> 6412 not({GoalState(?IS)}) inState=?ZS outState=?OS produces=?ZS uses=?IS boatAtStart(?OState,true), subtract(?NC,?OC,?BC), subtract(?NM,?OM,?BM), greaterThanOrEqual(?NC,0), greaterThanOrEqual(?NM,0), not({boatAtStart(?XState,true), noOfCannibalAtStart(?XState,?NC), noOfMissionarAtStart(?XState,?NM) }) -> BoatToGoal(?this) BoatToGoal(?this), subtract(?NC,?OC,?BC), subtract(?NM,?OM,?BM) -> boatAtStart(?NState,false) boatAtStart(?OState,false), add(?NC,?OC,?BC), add(?NM,?OM,?BM), lessThanOrEqual(?NC,3), lessThanOrEqual(?NM,3), not({boatAtStart(?XState,true), noOfCannibalAtStart(?XState,?NC), noOfMissionarAtStart(?XState,?NM) }) -> BoatToStart(?this) BoatToStart(?this), add(?NC,?OC,?BC), add(?NM,?OM,?BM) -> boatAtStart(?NState,true) inState=?IS outState=?IS inState=?IS outState=?OS GoalState(?IS) 0 0 1 1 2 2 0 3 States are legal if the Cannibals to not eat the missionars, i.e. on each riverside are either not more Cannibals than Missionars or only Cannibals, in fact that means that either no Missionars at start or all at start or number of missionars is equal on both sides. 3 3 LegalState(?OState), noOfCannibalAtStart(?OState,?OC), noOfMissionarAtStart(?OState,?OM), BoatLoad(?B), noOfCannibalLoaded(?B,?BC), noOfMissionarLoaded(?B,?BM) -> new(?this), BoatTravel(?this), uses(?this,?OState), load(?this,?B) BoatTravel(?this), uses(?this,?OState), load(?this,?B), noOfCannibalAtStart(?OState,?OC), noOfMissionarAtStart(?OState,?OM), noOfCannibalLoaded(?B,?BC), noOfMissionarLoaded(?B,?BM) -> newFor(?NState,<?OState>), State(?NState), produces(?this,?NState), noOfCannibalAtStart(?NState,?NC), noOfMissionarAtStart(?NState,?NM) 0 3 1 2 1 2 2 1 0 1 0 2 0 1 1 1 0 2 3 3 true