anchor.diff:  (* Free variables in assumption list and conclusion of a theorem.            *)
   (* ------------------------------------------------------------------------- *)
   
  +/// Returns a list of the variables free in a theorem's assumptions and conclusion.
   let thm_frees th = 
       let asl, c = dest_thm th
       itlist (union << frees) asl (frees c)
  
positive.code: (* Gets all variables (free and/or bound) in a term.                         *)
  (* ------------------------------------------------------------------------- *)
  
  let variables = 
      let rec vars(acc, tm) = 
          if is_var tm then insert tm acc
  
negative.code:         | "l" :: t -> follow_path t (rator tm)
          | "r" :: t -> follow_path t (rand tm)
          | _ :: t -> follow_path t (body tm)
      fun s tm -> follow_path (explode s) tm
  