title: Ways to model the farmer, goat, cabbage, wolf puzzle?
body: <p>I am cataloging various ways of modeling the farmer, goat, cabbage, wolf problem. </p>
  
  <p>Below are two ways to model the problem. Are there other, reasonable, ways to model it?</p>
  
  <p>One model defines a <em>set</em> of River objects. Each River object represents a snapshot of the River and its two sides after the farmer has done a ferry.</p>
  
  <pre><code>sig River {
      side1: set Item,
      side2: set Item
  }
  </code></pre>
  
  <p>Another model has <em>one</em> River object. The items on the two sides of the River vary over time.</p>
  
  <pre><code>one sig River {
      side1: Item -&gt; Time,
      side2: Item -&gt; Time
  }
  </code></pre>
  
  <p>What are other, reasonable, ways to model the farmer, goat, cabbage, wolf problem?</p>