anchor.diff:              let! l' = vars(acc, l)
               return! vars(l', r)
           }
  -    fun tm -> vars([], tm)
  +    fun tm ->
  +        vars([], tm)
   
   (* ------------------------------------------------------------------------- *)
   (* General substitution (for any free expression).                           *)
  
positive.code:             let! tyins = type_match ty ty2 []
              let! tm1' = inst tyins tm1
              return mk_comb(tm1', tm2)
          | _ -> return! Choice.failwith "mk_icomb: Unhandled case."
      }
  
  (* ------------------------------------------------------------------------- *)
  
negative.code: (* ------------------------------------------------------------------------- *)
  
  /// Makes a combination, instantiating types in rator if necessary.
  let mk_icomb(tm1, tm2) =
      choice {
          let! ty1 = type_of tm1
          let! (s, ty1') = dest_type ty1
  