7 val tfree_classes_of_terms : term list -> string list |
7 val tfree_classes_of_terms : term list -> string list |
8 val type_consts_of_terms : theory -> term list -> string list |
8 val type_consts_of_terms : theory -> term list -> string list |
9 val get_relevant : int -> bool -> Proof.context * (thm list * 'a) -> thm list -> |
9 val get_relevant : int -> bool -> Proof.context * (thm list * 'a) -> thm list -> |
10 (thm * (string * int)) list |
10 (thm * (string * int)) list |
11 val prepare_clauses : bool -> thm list -> thm list -> |
11 val prepare_clauses : bool -> thm list -> thm list -> |
|
12 (thm * (ResHolClause.axiom_name * ResHolClause.clause_id)) list -> |
12 (thm * (ResHolClause.axiom_name * ResHolClause.clause_id)) list -> theory -> |
13 (thm * (ResHolClause.axiom_name * ResHolClause.clause_id)) list -> theory -> |
13 ResHolClause.axiom_name vector * (ResHolClause.clause list * ResHolClause.clause list * |
14 ResHolClause.axiom_name vector * (ResHolClause.clause list * ResHolClause.clause list * |
14 ResHolClause.clause list * ResClause.classrelClause list * ResClause.arityClause list) |
15 ResHolClause.clause list * ResClause.classrelClause list * ResClause.arityClause list) |
15 end; |
16 end; |
16 |
17 |
524 |> remove_unwanted_clauses |
525 |> remove_unwanted_clauses |
525 in |
526 in |
526 relevance_filter max_new theory_const thy included_cls (map prop_of goal_cls) |
527 relevance_filter max_new theory_const thy included_cls (map prop_of goal_cls) |
527 end; |
528 end; |
528 |
529 |
529 (* prepare for passing to writer *) |
530 (* prepare for passing to writer, |
530 fun prepare_clauses dfg goal_cls chain_ths axcls thy = |
531 create additional clauses based on the information from extra_cls *) |
|
532 fun prepare_clauses dfg goal_cls chain_ths axcls extra_cls thy = |
531 let |
533 let |
532 val white_thms = filter check_named (map ResAxioms.pairname (if null chain_ths then whitelist else chain_ths)) |
534 val white_thms = |
|
535 filter check_named (map ResAxioms.pairname (if null chain_ths then whitelist else chain_ths)) |
533 val white_cls = ResAxioms.cnf_rules_pairs thy white_thms |
536 val white_cls = ResAxioms.cnf_rules_pairs thy white_thms |
534 val axcls = white_cls @ axcls |
537 val extra_cls = white_cls @ extra_cls |
535 val ccls = subtract_cls goal_cls axcls |
538 val ccls = subtract_cls goal_cls extra_cls |
536 val _ = app (fn th => Output.debug (fn _ => Display.string_of_thm th)) ccls |
539 val _ = app (fn th => Output.debug (fn _ => Display.string_of_thm th)) ccls |
537 val ccltms = map prop_of ccls |
540 val ccltms = map prop_of ccls |
538 and axtms = map (prop_of o #1) axcls |
541 and axtms = map (prop_of o #1) extra_cls |
539 val subs = tfree_classes_of_terms ccltms |
542 val subs = tfree_classes_of_terms ccltms |
540 and supers = tvar_classes_of_terms axtms |
543 and supers = tvar_classes_of_terms axtms |
541 and tycons = type_consts_of_terms thy (ccltms@axtms) |
544 and tycons = type_consts_of_terms thy (ccltms@axtms) |
542 (*TFrees in conjecture clauses; TVars in axiom clauses*) |
545 (*TFrees in conjecture clauses; TVars in axiom clauses*) |
543 val (clnames, (conjectures, axiom_clauses, helper_clauses)) = |
546 val conjectures = ResHolClause.make_conjecture_clauses dfg thy ccls |
544 ResHolClause.prepare_clauses dfg thy (isFO thy goal_cls) ccls axcls [] |
547 val (clnames,axiom_clauses) = ListPair.unzip (ResHolClause.make_axiom_clauses dfg thy axcls) |
|
548 val helper_clauses = ResHolClause.get_helper_clauses dfg thy (isFO thy goal_cls) (conjectures, extra_cls, []) |
545 val (supers',arity_clauses) = ResClause.make_arity_clauses_dfg dfg thy tycons supers |
549 val (supers',arity_clauses) = ResClause.make_arity_clauses_dfg dfg thy tycons supers |
546 val classrel_clauses = ResClause.make_classrel_clauses thy subs supers' |
550 val classrel_clauses = ResClause.make_classrel_clauses thy subs supers' |
547 in |
551 in |
548 (Vector.fromList clnames, (conjectures, axiom_clauses, helper_clauses, classrel_clauses, arity_clauses)) |
552 (Vector.fromList clnames, |
|
553 (conjectures, axiom_clauses, helper_clauses, classrel_clauses, arity_clauses)) |
549 end |
554 end |
550 |
555 |
551 end; |
556 end; |
552 |
557 |