src/HOL/Probability/measurable.ML
changeset 59498 50b60f501b05
parent 59353 f0707dc3d9aa
child 59582 0fbed69ff081
equal deleted inserted replaced
59497:0c5cd369a643 59498:50b60f501b05
   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