anchor.diff:  (*
    * Starling imperative language semantics
    *)
  -let prim (name : string) (results : TypedVar list) (args : TypedVar list)
  +
  +/// Creates a prim from a name, results list, and arguments list.
  +let mkPrim (name : string) (results : TypedVar list) (args : TypedVar list)
     (body : Microcode<TypedVar, Var> list)
     : PrimSemantics =
       { Name = name; Results = results; Args = args; Body = body }
  
positive.code:        *)
  
        // Integer local set
        (prim "!ILSet" [ Int "dest" ] [ Int "src" ]
              [ Assign (Int "dest", Int (IVar "src")) ] )
  
        // Boolean store
        (prim "!BLSet" [ Bool "dest" ] [ Bool "src" ]
              [ Assign (Bool "dest", Bool (BVar "src")) ] )
  
        (*
  
negative.code:       (*
         * CAS
         *)
        (mkPrim "ICAS" [ Int "destA"; Int "testA" ] [ Int "destB"; Int "testB"; Int "set" ]
             [ Branch
                  (iEq (IVar "destB") (IVar "testB"),
                   [ Assign (Int "destA", Int (IVar "set"))
  