anchor.diff:      let printPrimCommand { Name = name; Args = xs; Results = ys } = 
           hjoin [ commaSep <| Seq.map (printCTyped String) ys; " <- " |> String; name |> String; String " "; commaSep <| Seq.map printSMExpr xs ]
   
  -    let printCommand = List.map printPrimCommand >> semiSep
  +    let printCommand : Command -> Doc = List.map printPrimCommand >> semiSep
  
positive.code:     ///     The next available intermediate stage number.
      ///     If the expression has no intermediate stages, we return 0.
      /// </returns>
      and nextIntermediate =
          function
          | Int x -> nextIntIntermediate x
          | Bool x -> nextBoolIntermediate x
  
negative.code:     ///     The next available intermediate stage number.
      ///     If the expression has no intermediate stages, we return 0.
      /// </returns>
      and nextBoolIntermediate : BoolExpr<Sym<_>> -> bigint =
          function
          | BVar (Reg (Intermediate (n, _))) -> n + 1I
          | BVar (Sym { Params = xs } ) ->
  