src/HOL/Tools/res_hol_clause.ML
changeset 21398 11996e938dfe
parent 21254 d53f76357f41
child 21470 7c1b59ddcd56
equal deleted inserted replaced
21397:2134b81a0b37 21398:11996e938dfe
   694 fun funcs_of_clauses clauses arity_clauses =
   694 fun funcs_of_clauses clauses arity_clauses =
   695     Symtab.dest (foldl ResClause.add_arityClause_funcs 
   695     Symtab.dest (foldl ResClause.add_arityClause_funcs 
   696                        (foldl add_clause_funcs (init_funcs_tab Symtab.empty) clauses)
   696                        (foldl add_clause_funcs (init_funcs_tab Symtab.empty) clauses)
   697                        arity_clauses)
   697                        arity_clauses)
   698 
   698 
   699 fun preds_of clsrel_clauses arity_clauses = 
   699 fun add_clause_preds (Clause {ctypes_sorts, ...}, preds) =
       
   700   foldl ResClause.add_type_sort_preds preds ctypes_sorts
       
   701   handle Symtab.DUP a => raise ERROR ("predicate " ^ a ^ " has multiple arities")
       
   702 
       
   703 (*Higher-order clauses have only the predicates hBOOL and type classes.*)
       
   704 fun preds_of_clauses clauses clsrel_clauses arity_clauses = 
   700     Symtab.dest
   705     Symtab.dest
   701 	(foldl ResClause.add_classrelClause_preds 
   706 	(foldl ResClause.add_classrelClause_preds 
   702 	       (foldl ResClause.add_arityClause_preds
   707 	       (foldl ResClause.add_arityClause_preds
   703 		      (Symtab.update ("hBOOL",1) Symtab.empty)
   708 		      (Symtab.update ("hBOOL",1) 
       
   709 		        (foldl add_clause_preds Symtab.empty clauses))
   704 		      arity_clauses)
   710 		      arity_clauses)
   705 	       clsrel_clauses)
   711 	       clsrel_clauses)
       
   712 
   706 
   713 
   707 
   714 
   708 (**********************************************************************)
   715 (**********************************************************************)
   709 (* write clauses to files                                             *)
   716 (* write clauses to files                                             *)
   710 (**********************************************************************)
   717 (**********************************************************************)
   779 	val tfree_clss = map ResClause.dfg_tfree_clause (ResClause.union_all tfree_litss)
   786 	val tfree_clss = map ResClause.dfg_tfree_clause (ResClause.union_all tfree_litss)
   780 	val out = TextIO.openOut filename
   787 	val out = TextIO.openOut filename
   781 	val helper_clauses = (#2 o ListPair.unzip o get_helper_clauses) ()
   788 	val helper_clauses = (#2 o ListPair.unzip o get_helper_clauses) ()
   782 	val helper_clauses_strs = (#1 o ListPair.unzip o (map clause2dfg)) helper_clauses
   789 	val helper_clauses_strs = (#1 o ListPair.unzip o (map clause2dfg)) helper_clauses
   783 	val funcs = funcs_of_clauses (helper_clauses @ conjectures @ axclauses') arity_clauses
   790 	val funcs = funcs_of_clauses (helper_clauses @ conjectures @ axclauses') arity_clauses
   784 	and preds = preds_of classrel_clauses arity_clauses
   791 	and preds = preds_of_clauses axclauses' classrel_clauses arity_clauses
   785     in
   792     in
   786 	TextIO.output (out, ResClause.string_of_start probname); 
   793 	TextIO.output (out, ResClause.string_of_start probname); 
   787 	TextIO.output (out, ResClause.string_of_descrip probname); 
   794 	TextIO.output (out, ResClause.string_of_descrip probname); 
   788 	TextIO.output (out, ResClause.string_of_symbols (ResClause.string_of_funcs funcs) (ResClause.string_of_preds preds)); 
   795 	TextIO.output (out, ResClause.string_of_symbols (ResClause.string_of_funcs funcs) (ResClause.string_of_preds preds)); 
   789 	TextIO.output (out, "list_of_clauses(axioms,cnf).\n");
   796 	TextIO.output (out, "list_of_clauses(axioms,cnf).\n");