% A simplified version of the Missionaries and Cannibals puzzle
% This has only missionaries (i.e. no cannibals) and a boat
% which may hold two at a time.

%  This module is very similar to BRIEFCASE

include "../library-ontology"
include "../library"

module MISSIONARIES;

  objects
    Miss(1..3) : Person;
    Boat : Vehicle;
    Bank1, Bank2 : Place;

  actions
    Board(Person); Disembark(Person);
    CrossTo(Place);

  variables
    m : Person;
    p : Place;

  import CARRIER;
    Load(m,Boat) is Board(m);
    Unload(m) is Disembark(m);
    Move(Boat,p) is CrossTo(p);

  import NOCONCURRENCY;

  axioms

    % The boat can carry at most two (i.e. not all three)
    constraint -forall m Holds(Boat,m);
