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"); |