anchor.diff:      lift List.concat (collect (List.map grassMicrocodeEntry routine))
   
   /// <summary>
  +///     Generates pure assumptions for the Starling variable frame associated
  +///     with a given state assignment map.
  +/// </summary>
  +/// <param name="assignMap">The map to convert to a frame.</param>
  +/// <returns>
  +///     If all went well, a list of Grasshopper commands pure-assuming the
  +///     variable frame.
  +/// </returns>
  +let grassFrame
  +  (assignMap : Map<TypedVar, MarkedVar>)
  +  : Result<GrassCommand list, Error> =
  +    // We can just adapt the normal frame generator.
  +    let normalFrame = makeFrame assignMap
  +
  +    let grassify x =
  +        // Pure assumption.
  +        let grassifyR =
  +            liftWithoutContext
  +                (Starling >> ok)
  +                (tliftOverSym >> tliftOverCTyped >> tliftToExprDest >> tliftToBoolSrc)
  +                (normalBool x)
  +        lift PureAssume (mapMessages Traversal grassifyR)
  +
  +    collect (List.map grassify normalFrame)
  +
  +/// <summary>
   ///     Generates a Grasshopper term.
   /// </summary>
   /// <param name="svars">The map of shared variables in the model.</param>
  
positive.code: 
      let printSymbolicGrass (pArg : 'Arg -> Doc) (s : Symbolic<'Arg>) : Doc =
          let { Sentence = ws; Args = xs } = s
          parened (printInterpolatedSymbolicSentence pArg ws xs)
  
      /// Pretty-prints a symbolic sentence 
      let rec printSymGrass (pReg : 'Var -> Doc) (sym : Sym<'Var>) : Doc =
          match sym with
          | Reg r -> pReg r
          | Sym s -> printSymbolicGrass (printExprG (printSym pReg) false) s
  
      /// <summary>
      ///     Pretty-prints a Grasshopper primitive command.
  
negative.code:     let requiresR = ok term.SymBool.WPre
      let ensuresR = ok term.SymBool.Goal
      let commandsR = grassMicrocode term.Original.Cmd.Microcode
      let frameR = grassFrame term.Original.Cmd.Assigns
      let framedCommandsR = lift2 (@) commandsR frameR
      let varsR = findVars term
  
      lift4
  