anchor.diff:          )
         | _ -> err ("cannot find type '" + (err_id x) + "'")
       )
  -let normalize_type (env:env) (t:typ):typ =
  -  normalize_type_rec env t
   
   // HACK: mangle the parameter types. This will not be needed if transform is performed before typechecker.
   let rec normalize_type_with_transform (env:env) (t:typ) (tr:transform_kind option):typ =
  
positive.code:         | (true, BpProp, Some (TBool BpBool)) -> tBool
          | (true, BpProp, _) -> tProp
          in
        norm_ret t (AE_Op (op, [ae1; ae2]))
  (*
    | EOp (Bop BIn, [e1; e2]) ->
      err ("BIn not supported in TypeChecker")
  
negative.code:       let (t1, ae1) = infer_exp_force env u e1 None in
        let (t2, ae2) = infer_exp_force env u e2 None in
        let t = unify_int_bound env t1 t2 op in
        ret t (AE_Op (Bop op, [ae1; ae2]))
    | EOp (Bop (BAnd _ | BOr _) as op, [e1; e2]) ->
        let tv = u_next_type_var u in
        let et = match expected_typ with | None -> tv | Some t -> t in
  