anchor.diff:  let tm_type_z r = mk_term (Name (lid_of_path ["Type0"] r)) r Kind
   let tm_type r = mk_term (Name (lid_of_path   [ "Type"] r)) r Kind
    
  +//Deciding if the t is a computation type
  +//based on its head symbol
  +let rec is_comp_type env t = 
  +    match t.tm with 
  +    | Name l
  +    | Construct(l, _) -> Env.try_lookup_effect_name env l |> Option.isSome
  +    | App(head, _, _) -> is_comp_type env head
  +    | Paren t
  +    | Ascribed(t, _)
  +    | LetOpen(_, t) -> is_comp_type env t
  +    | _ -> false
  +
  +let unit_ty = mk_term (Name FStar.Syntax.Const.unit_lid) Range.dummyRange Type
  +
   let compile_op arity s =
       let name_of_char = function
               |'&' -> "Amp"
  
positive.code:             mk_lb (lbname, tun, body) in
          let lbs = List.map2 (desugar_one_def (if is_rec then env' else env)) fnames funs in
          let body = desugar_term env' body in
          mk <| (Tm_let((is_rec, lbs), Subst.close rec_bindings body)) in
        //end ds_let_rec_or_app
  
        let ds_non_rec pat t1 t2 =
  
negative.code:       end
  
      | Abs(binders, body) ->
        let binders = binders |> List.map replace_unit_pattern in
        let _, ftv = List.fold_left (fun (env, ftvs) pat ->
          match pat.pat with
            | PatAscribed(_, t) -> env, free_type_vars env t@ftvs
  