anchor.diff:    | TVar _ -> t
     | TBool _ -> t
     | TInt _ -> t
  -  | TTuple ts -> t
  -  | TFun (ts, t) -> t
  +  | TTuple _ -> t
  +  | TFun (_, _) -> t
     | TDependent x ->
         let (_, x) = lookup_name env x true in
         TDependent x
  
positive.code:   u_unify u None;
    let es = List.map (subst_exp env u.u_substs) aes in
    let prets = List.map (fun (_, t, _, _, _) -> t) p.prets in
    let tRet = match prets with | [] -> None | [t] -> Some t | _  -> Some (TTuple prets) in
    SAssign (xs, EApply (evar p.pname, Some pi.p_targs, es, tRet))
  
  let rec tc_stmt (env:env) (s:stmt):stmt =
    // TODO: need typing rules for statements
  
negative.code:         (t, (AE_Loc (loc, ae), t, None))
        with err -> locErr loc err
    | EVar (x, _) ->
        let (t, info) = lookup_id_or_fun env u x in
        let () =
          match (env.inline_only, info) with
          | (false, _) -> ()
  