anchor.diff:              Expression.Block(e1P, e2P) |> asExpr
   
           | Patterns.Let (v,e,b) -> 
  -            let env =
  -                match env.letrec with
  -                | None -> env
  -                | _ -> { env with letrec = None }
  -
               let vP = Expression.Variable (v.Type, v.Name)
               let eP = ConvExpr env e
               let assign = Expression.Assign (vP, eP) |> asExpression
  
positive.code:                             Expression.PropertyOrField(theFuncObject, "State"),
                              state) |> asExpression;
  
                      if letRecVar.IsSome then
                          AsLetRecExpression (theFuncObject, assignToConstruction, assignState)
                      else
                          Expression.Block (
  
negative.code:             let vePs =
                  vPs
                  |> List.map (fun (v, vP, e) ->
                      let funcObject, assignToConstruction, assignState = 
                          match LetRecConvExpr env (Some v) e with
                          | AsLetRecExpression (funcObject, assignToFuncObject, assignState) -> funcObject, assignToFuncObject, assignState
                          | _ -> failwith "Logic error"
                      vP, funcObject, assignToConstruction, assignState)
  