src/HOL/Tools/Sledgehammer/sledgehammer_fol_clause.ML
changeset 36062 194cb6e3c13f
parent 35865 2f8fb5242799
child 36063 cdc6855a6387
equal deleted inserted replaced
36061:d267bdccc660 36062:194cb6e3c13f
   178 
   178 
   179 fun make_schematic_type_var (x,i) =
   179 fun make_schematic_type_var (x,i) =
   180       tvar_prefix ^ (ascii_of_indexname (trim_type_var x,i));
   180       tvar_prefix ^ (ascii_of_indexname (trim_type_var x,i));
   181 fun make_fixed_type_var x = tfree_prefix ^ (ascii_of (trim_type_var x));
   181 fun make_fixed_type_var x = tfree_prefix ^ (ascii_of (trim_type_var x));
   182 
   182 
   183 (*HACK because SPASS truncates identifiers to 63 characters :-(( *)
   183 (* HACK because SPASS 3.0 truncates identifiers to 63 characters. (This is
   184 (*32-bit hash,so we expect no collisions unless there are around 65536 long identifiers...*)
   184    solved in 3.7 and perhaps in earlier versions too.) *)
   185 fun controlled_length dfg_format s =
   185 (* 32-bit hash, so we expect no collisions. *)
   186   if size s > 60 andalso dfg_format
   186 fun controlled_length dfg s =
   187   then Word.toString (Polyhash.hashw_string(s,0w0))
   187   if dfg andalso size s > 60 then Word.toString (hashw_string (s, 0w0))
   188   else s;
   188   else s;
   189 
   189 
   190 fun lookup_const dfg c =
   190 fun lookup_const dfg c =
   191     case Symtab.lookup const_trans_table c of
   191     case Symtab.lookup const_trans_table c of
   192         SOME c' => c'
   192         SOME c' => c'
   195 fun lookup_type_const dfg c =
   195 fun lookup_type_const dfg c =
   196     case Symtab.lookup type_const_trans_table c of
   196     case Symtab.lookup type_const_trans_table c of
   197         SOME c' => c'
   197         SOME c' => c'
   198       | NONE => controlled_length dfg (ascii_of c);
   198       | NONE => controlled_length dfg (ascii_of c);
   199 
   199 
   200 fun make_fixed_const _ "op =" = "equal"   (*MUST BE "equal" because it's built-in to ATPs*)
   200 (* "op =" MUST BE "equal" because it's built into ATPs. *)
   201   | make_fixed_const dfg c      = const_prefix ^ lookup_const dfg c;
   201 fun make_fixed_const _ (@{const_name "op ="}) = "equal"
       
   202   | make_fixed_const dfg c = const_prefix ^ lookup_const dfg c;
   202 
   203 
   203 fun make_fixed_type_const dfg c = tconst_prefix ^ lookup_type_const dfg c;
   204 fun make_fixed_type_const dfg c = tconst_prefix ^ lookup_type_const dfg c;
   204 
   205 
   205 fun make_type_class clas = class_prefix ^ ascii_of clas;
   206 fun make_type_class clas = class_prefix ^ ascii_of clas;
   206 
   207