anchor.diff:      ///     The next available intermediate stage number.
       ///     If the expression has no intermediate stages, we return 0.
       /// </returns>
  -    let rec nextIntIntermediate =
  +    let rec nextIntIntermediate : IntExpr<Sym<_>> -> bigint =
           function
           | AVar (Reg (Intermediate (n, _))) -> n + 1I
           | AVar (Sym { Params = xs } ) ->
  
positive.code:     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
  
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 } ) ->
  