equal
deleted
inserted
replaced
206 fun IF' c t i = COND (c i) (t i) no_tac |
206 fun IF' c t i = COND (c i) (t i) no_tac |
207 |
207 |
208 fun r_tac msg = |
208 fun r_tac msg = |
209 if Config.get ctxt debug |
209 if Config.get ctxt debug |
210 then FIRST' o |
210 then FIRST' o |
211 map (fn thm => resolve_tac [thm] |
211 map (fn thm => resolve_tac ctxt [thm] |
212 THEN' K (debug_tac ctxt (debug_fact (msg ^ " resolved using") thm) all_tac)) |
212 THEN' K (debug_tac ctxt (debug_fact (msg ^ " resolved using") thm) all_tac)) |
213 else resolve_tac |
213 else resolve_tac ctxt |
214 |
214 |
215 val elem_congI = @{lemma "A = B \<Longrightarrow> x \<in> B \<Longrightarrow> x \<in> A" by simp} |
215 val elem_congI = @{lemma "A = B \<Longrightarrow> x \<in> B \<Longrightarrow> x \<in> A" by simp} |
216 |
216 |
217 val (thms, ctxt) = prepare_facts ctxt facts |
217 val (thms, ctxt) = prepare_facts ctxt facts |
218 |
218 |
247 Subgoal.FOCUS (fn {context = ctxt, ...} => SUBGOAL (fn (t, i) => |
247 Subgoal.FOCUS (fn {context = ctxt, ...} => SUBGOAL (fn (t, i) => |
248 let |
248 let |
249 val f = dest_measurable_fun (HOLogic.dest_Trueprop t) |
249 val f = dest_measurable_fun (HOLogic.dest_Trueprop t) |
250 fun cert f = map (Option.map (f (Proof_Context.theory_of ctxt))) |
250 fun cert f = map (Option.map (f (Proof_Context.theory_of ctxt))) |
251 fun inst (ts, Ts) = |
251 fun inst (ts, Ts) = |
252 Drule.instantiate' (cert ctyp_of Ts) (cert cterm_of ts) @{thm measurable_compose_countable} |
252 Drule.instantiate' (cert ctyp_of Ts) (cert cterm_of ts) |
|
253 @{thm measurable_compose_countable} |
253 in r_tac "split countable" (cnt_prefixes ctxt f |> map inst) i end |
254 in r_tac "split countable" (cnt_prefixes ctxt f |> map inst) i end |
254 handle TERM _ => no_tac) 1) |
255 handle TERM _ => no_tac) 1) |
255 |
256 |
256 val splitter = if Config.get ctxt split then split_countable_tac ctxt else K no_tac |
257 val splitter = if Config.get ctxt split then split_countable_tac ctxt else K no_tac |
257 |
258 |