/* generation of random sentences from an rtn */

/* use with random and drinks */

/*top level*/
go :- generate(sentence,start),         /* generate a sentence from start */
      nl,nl.                            /* and print 2 new lines */

generate(RTN,finish).                   /* if at finish then do nothing */

generate(RTN,Node):-                    /* to generate RTN from node */
      arc(RTN,Node,Arcs),               /* find all arcs leaving node */
      random_pick(Arcs,[NewNode,Label,Type]),  /* pick one at random*/
      traverse(Label,Type),              /* traverse it */
      generate(RTN,NewNode).            /* and carry on from the other end */

traverse(Word,word):-                   /* to traverse a word arc */
      write(Word), tab(1).              /* write word and a space */

traverse(SubRTN,rtn) :-                 /*to traverse an rtn arc */
      generate(SubRTN,start).           /* generate subrtn from start */