anchor.diff:      | OperatorName opname -> opname
       | "D"                 -> "D"
       | "AD" | "AD_N" | "AD_V"
  -    | "AD_C"              -> "AD"
  +    | "AD_C" | "AD_I"     -> "AD"
       | "GetArray"          -> "G"
       | "length"            -> "S"
       | "build"             -> "B"
  +    | "Fst"               -> "_1"
  +    | "Snd"               -> "_2"
       | n -> failwithf "Operator %s not supported!" n
     let compileSubs (s: Expr): string = 
       let rec rcr (e: Expr): string = 
  
positive.code:         rcrArgs [Expr.Var(x); body] "L"
        | Patterns.Application(e1, e2) ->
          rcrArgs [e1; e2] "A"
        | _ ->
          failwithf "Substitution %A not supported!" e
      rcr s
  
negative.code:         rcrArgs [Expr.Var(x); body] "L"
        | Patterns.Application(e1, e2) ->
          rcrArgs [e1; e2] "A"
        | Patterns.Let(x, e1, e2) ->
          rcr varsCount (Expr.Application(Expr.Lambda(x, e2), e1))
        | _ ->
          failwithf "Pattern %A not supported!" e
      rcr Map.empty p |> fst
  