anchor.diff:  (* ------------------------------------------------------------------------- *)
   (* First order unification (no type instantiation -- yet).                   *)
   (* ------------------------------------------------------------------------- *)
  +/// Unify two terms.
   let (term_unify : term list -> term -> term -> instantiation) = 
       let augment1 sofar (s, x) = 
           let s' = subst sofar s
  
positive.code:                     | Failure _ -> tth
              else failwith "INSTANTIATE: term or type var free in assumptions"
  
  let (INSTANTIATE_ALL : instantiation -> thm -> thm) = 
      fun ((_, tmin, tyin) as i) th -> 
          if tmin = [] && tyin = [] then th
  
negative.code: (* ------------------------------------------------------------------------- *)
  (* The last recourse when all else fails!                                    *)
  (* ------------------------------------------------------------------------- *)
  /// Creates an arbitrary theorem as an axiom (dangerous!)
  let mk_thm(asl, c) = 
      let ax = new_axiom(itlist (curry mk_imp) (rev asl) c)
      rev_itlist (fun t th -> MP th (ASSUME t)) (rev asl) ax
  