anchor.diff:      ///     The next available intermediate stage number.
       ///     If the expression has no intermediate stages, we return 0.
       /// </returns>
  -    and nextIntermediate =
  +    and nextIntermediate : Expr<Sym<_>> -> bigint =
           function
           | Int x -> nextIntIntermediate x
           | Bool x -> nextBoolIntermediate x
  
positive.code:     ///     <c>true</c> if the command is a no-op;
      ///     <c>false</c> otherwise.
      /// </returns>
      let isNop =
          List.forall
              (fun { Results = ps } ->
                    ps = [])
  
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 } ) ->
  