anchor.diff:      (* ------------------------------------------------------------------------- *)
       (* Return all the defined types.                                             *)
       (* ------------------------------------------------------------------------- *)
  +
       let types() = !the_type_constants
   
       (* ------------------------------------------------------------------------- *)
       (* Lookup function for type constants. Returns arity if it succeeds.         *)
       (* ------------------------------------------------------------------------- *)
  +
       let get_type_arity s = assoc s (!the_type_constants)
   
       (* ------------------------------------------------------------------------- *)
       (* Declare a new type.                                                       *)
       (* ------------------------------------------------------------------------- *)
  +
       let new_type(name, arity) = 
           if can get_type_arity name
           then failwith("new_type: type " ^ name ^ " has already been declared")
  
positive.code:     (* ------------------------------------------------------------------------- *)
      (* Basic type constructors.                                                  *)
      (* ------------------------------------------------------------------------- *)
      let mk_type(tyop, args) = 
          let arity = 
              try 
  
negative.code:     (* ------------------------------------------------------------------------- *)
      (* For name-carrying syntax, we need this early.                             *)
      (* ------------------------------------------------------------------------- *)
  
      let rec variant avoid v = 
          if not(exists (vfree_in v) avoid)
          then v
  