src/HOL/Tools/res_atp.ML
changeset 31752 19a5f1c8a844
parent 31749 8ee34e3ceb5a
child 31836 8a8cf7b44739
equal deleted inserted replaced
31751:fda2cf4fef58 31752:19a5f1c8a844
     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