src/HOL/Tools/Sledgehammer/sledgehammer_fact_preprocessor.ML
changeset 36478 1aba777a367f
parent 36398 de8522a5cbae
child 36492 60532b9bcd1c
equal deleted inserted replaced
36477:71cc00ea5768 36478:1aba777a367f
    15   val bad_for_atp: thm -> bool
    15   val bad_for_atp: thm -> bool
    16   val type_has_topsort: typ -> bool
    16   val type_has_topsort: typ -> bool
    17   val cnf_rules_pairs: theory -> (string * thm) list -> (thm * (string * int)) list
    17   val cnf_rules_pairs: theory -> (string * thm) list -> (thm * (string * int)) list
    18   val suppress_endtheory: bool Unsynchronized.ref
    18   val suppress_endtheory: bool Unsynchronized.ref
    19     (*for emergency use where endtheory causes problems*)
    19     (*for emergency use where endtheory causes problems*)
    20   val strip_subgoal : thm -> int -> term list * term list * term
    20   val strip_subgoal : thm -> int -> (string * typ) list * term list * term
    21   val neg_clausify: thm -> thm list
    21   val neg_clausify: thm -> thm list
    22   val neg_conjecture_clauses:
    22   val neg_conjecture_clauses:
    23     Proof.context -> thm -> int -> thm list list * (string * typ) list
    23     Proof.context -> thm -> int -> thm list list * (string * typ) list
    24   val neg_clausify_tac: Proof.context -> int -> tactic
    24   val neg_clausify_tac: Proof.context -> int -> tactic
    25   val setup: theory -> theory
    25   val setup: theory -> theory
   461 fun strip_subgoal goal i =
   461 fun strip_subgoal goal i =
   462   let
   462   let
   463     val (t, frees) = Logic.goal_params (prop_of goal) i
   463     val (t, frees) = Logic.goal_params (prop_of goal) i
   464     val hyp_ts = t |> Logic.strip_assums_hyp |> map (curry subst_bounds frees)
   464     val hyp_ts = t |> Logic.strip_assums_hyp |> map (curry subst_bounds frees)
   465     val concl_t = t |> Logic.strip_assums_concl |> curry subst_bounds frees
   465     val concl_t = t |> Logic.strip_assums_concl |> curry subst_bounds frees
   466   in (rev frees, hyp_ts, concl_t) end
   466   in (rev (map dest_Free frees), hyp_ts, concl_t) end
   467 
   467 
   468 (*** Converting a subgoal into negated conjecture clauses. ***)
   468 (*** Converting a subgoal into negated conjecture clauses. ***)
   469 
   469 
   470 fun neg_skolemize_tac ctxt =
   470 fun neg_skolemize_tac ctxt =
   471   EVERY' [rtac ccontr, Object_Logic.atomize_prems_tac, Meson.skolemize_tac ctxt];
   471   EVERY' [rtac ccontr, Object_Logic.atomize_prems_tac, Meson.skolemize_tac ctxt];