anchor.diff:  
     let rec mapVars v2w ty =
       match ty with
  +     | Mono t -> Mono t
        | Var v ->
          Var (v2w v)
        | App (tc, tys) ->
  
positive.code: type Ty<'v> =
    | Var of 'v
    | App of TyCon * array<Ty<'v>>
    override t.ToString () =
      match t with
       | Var v -> sprintf "%A" v
       | App (Def tc, [||]) ->
         sprintf "%A" tc
  
negative.code: 
    let rec tryMatchIn formal actual v2ty =
      match (resolveTop v2ty formal, resolveTop v2ty actual) with
       | (Var' fv, Var' av) when fv = av ->
         Some v2ty
       | (Var' v, ty) | (ty, Var' v) when not (occurs v2ty v ty) ->
         Some (HashEqMap.add v ty v2ty)
       | (App' (formal, pars), App' (actual, args)) when formal = actual ->
         assert (pars.Length = args.Length)
         let rec loop i v2ty =
           if i < pars.Length then
  