[STATEMENT]
lemma bigo_pos_const:
  "(\<exists>c::'a::linordered_idom.
    \<forall>x. \<bar>h x\<bar> \<le> c * \<bar>f x\<bar>)
    \<longleftrightarrow> (\<exists>c. 0 < c \<and> (\<forall>x. \<bar>h x\<bar> \<le> c * \<bar>f x\<bar>))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<exists>c. \<forall>x. \<bar>h x\<bar> \<le> c * \<bar>f x\<bar>) = (\<exists>c>0::'a. \<forall>x. \<bar>h x\<bar> \<le> c * \<bar>f x\<bar>)
[PROOF STEP]
by (metis (no_types) abs_ge_zero
      algebra_simps mult.comm_neutral
      mult_nonpos_nonneg not_le_imp_less order_trans zero_less_one)


[STATEMENT]
lemma open_halfspace_component_lt: "open {x::'a::euclidean_space. x\<bullet>i < a}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. open {x. x \<bullet> i < a}
[PROOF STEP]
by (simp add: open_Collect_less continuous_on_inner)


[STATEMENT]
lemma chine_simps [simp]:
    shows "arr chine" and "ide chine"
    and "src chine = src r\<^sub>0" and "trg chine = src s\<^sub>0"
    and "dom chine = chine" and "cod chine = chine"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (arr chine &&& ide chine &&& src chine = src r\<^sub>0) &&& trg chine = src s\<^sub>0 &&& local.dom chine = chine &&& cod chine = chine
[PROOF STEP]
using chine_in_hom
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>chine : src r\<^sub>0 \<rightarrow> src s\<^sub>0\<guillemotright>
\<guillemotleft>chine : chine \<Rightarrow> chine\<guillemotright>

goal (1 subgoal):
 1. (arr chine &&& ide chine &&& src chine = src r\<^sub>0) &&& trg chine = src s\<^sub>0 &&& local.dom chine = chine &&& cod chine = chine
[PROOF STEP]
apply auto
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<guillemotleft>chine : src r\<^sub>0 \<rightarrow> src s\<^sub>0\<guillemotright>; \<guillemotleft>chine : chine \<Rightarrow> chine\<guillemotright>\<rbrakk> \<Longrightarrow> ide chine
[PROOF STEP]
by (meson arrow_of_spans_of_maps.is_ide chine_is_induced_map)


[STATEMENT]
lemma continuous_map_o_Pair:
  assumes h: "continuous_map (prod_topology X Y) Z h" and t: "t \<in> topspace X"
  shows "continuous_map Y Z (h \<circ> Pair t)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. continuous_map Y Z (h \<circ> Pair t)
[PROOF STEP]
by (intro continuous_map_compose [OF _ h] continuous_intros; simp add: t)


[STATEMENT]
lemma Fake_parts_insert_in_Un:
     "\<lbrakk>Z \<in> parts (insert X H);  X \<in> synth (analz H)\<rbrakk>
      \<Longrightarrow> Z \<in> synth (analz H) \<union> parts H"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>Z \<in> parts (insert X H); X \<in> synth (analz H)\<rbrakk> \<Longrightarrow> Z \<in> synth (analz H) \<union> parts H
[PROOF STEP]
by (metis Fake_parts_insert subsetD)


[STATEMENT]
lemma carrier_FactGroup: "carrier(G Mod N) = (\<lambda>x. r_coset G N x) ` carrier G"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. carrier (G Mod N) = (#>\<^bsub>G\<^esub>) N ` carrier G
[PROOF STEP]
by (auto simp: FactGroup_def RCOSETS_def)


[STATEMENT]
lemma meet_below2[intro]:
  fixes x y :: "'a :: Finite_Meet_cpo"
  assumes "y \<sqsubseteq> z"
  shows "(x \<sqinter> y) \<sqsubseteq> z"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x \<sqinter> y \<sqsubseteq> z
[PROOF STEP]
unfolding meet_def'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Sqinter>{x, y} \<sqsubseteq> z
[PROOF STEP]
by (metis assms binary_meet_exists' below_trans glb_eqI is_glbD1 is_lb_insert)


[STATEMENT]
lemma bind_eq_join_pmf: "bind_pmf M f = join_pmf (map_pmf f M)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. M \<bind> f = join_pmf (map_pmf f M)
[PROOF STEP]
unfolding join_pmf_def bind_map_pmf
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. M \<bind> f = M \<bind> f
[PROOF STEP]
..


[STATEMENT]
lemma lift_insertion : " \<forall>init.
       length init = (i::nat) \<longrightarrow>
       (\<forall>I xs.
           (insertion (nth_default 0 (init @ xs)) (p::real mpoly)) = (insertion ((nth_default 0) (init @ I @ xs)) (liftPoly i (length I) p)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>init. length init = i \<longrightarrow> (\<forall>I xs. insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly i (length I) p))
[PROOF STEP]
proof safe
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>init I xs. i = length init \<Longrightarrow> insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
fix init I xs
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>init I xs. i = length init \<Longrightarrow> insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
assume "i = length (init::real list)"
[PROOF STATE]
proof (state)
this:
i = length init

goal (1 subgoal):
 1. \<And>init I xs. i = length init \<Longrightarrow> insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i = length init
[PROOF STEP]
have i_len : "length init = i"
[PROOF STATE]
proof (prove)
using this:
i = length init

goal (1 subgoal):
 1. length init = i
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
length init = i

goal (1 subgoal):
 1. \<And>init I xs. i = length init \<Longrightarrow> insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
have h: "higherPoly\<^sub>0 i (length (I::real list)) (mapping_of p) \<in> UNIV"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. higherPoly\<^sub>0 i (length I) (mapping_of p) \<in> UNIV
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
higherPoly\<^sub>0 i (length I) (mapping_of p) \<in> UNIV

goal (1 subgoal):
 1. \<And>init I xs. i = length init \<Longrightarrow> insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
have h2 : "vars (liftPoly i (length I) p) \<inter> {i..<i + length I} = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vars (liftPoly i (length I) p) \<inter> {i..<i + length I} = {}
[PROOF STEP]
using lift_clear_vars
[PROOF STATE]
proof (prove)
using this:
vars (liftPoly ?i ?j ?p) \<inter> {?i..<?i + ?j} = {}

goal (1 subgoal):
 1. vars (liftPoly i (length I) p) \<inter> {i..<i + length I} = {}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
vars (liftPoly i (length I) p) \<inter> {i..<i + length I} = {}

goal (1 subgoal):
 1. \<And>init I xs. i = length init \<Longrightarrow> insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
show "insertion ((nth_default 0) (init @ xs)) p = insertion ((nth_default 0) (init @ I @ xs)) (liftPoly (length init) (length I) p) "
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
using lower_lift insertion_lowerPoly[OF h2 i_len refl, of xs] i_len
[PROOF STATE]
proof (prove)
using this:
insertion ?f ?p = insertion ?f (lowerPoly ?i ?j (liftPoly ?i ?j ?p))
insertion (nth_default 0 (init @ xs)) (lowerPoly i (length I) (liftPoly i (length I) p)) = insertion (nth_default 0 (init @ I @ xs)) (liftPoly i (length I) p)
length init = i

goal (1 subgoal):
 1. insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
insertion (nth_default 0 (init @ xs)) p = insertion (nth_default 0 (init @ I @ xs)) (liftPoly (length init) (length I) p)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma vpair_iff [simp]: "vpair a b = vpair a' b' \<longleftrightarrow> a=a' \<and> b=b'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<langle>a, b\<rangle> = \<langle>a', b'\<rangle>) = (a = a' \<and> b = b')
[PROOF STEP]
unfolding vpair_def' doubleton_eq_iff
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((a = a' \<and> a = a' \<or> a = a' \<and> a = a') \<and> (a = a' \<and> b = b' \<or> a = b' \<and> b = a') \<or> (a = a' \<and> a = b' \<or> a = b' \<and> a = a') \<and> (a = a' \<and> b = a' \<or> a = a' \<and> b = a')) = (a = a' \<and> b = b')
[PROOF STEP]
by auto


[STATEMENT]
lemma (in Group) FG_reducible :
  assumes "of_nat (card G) \<noteq> (0::'f::field)"
  shows   "\<exists>Us::('f,'g) aezfun set list.
                (\<forall>U\<in>set Us. IrrFinGroupRepresentation G (*) U) \<and> 0 \<notin> set Us
                  \<and> group_ring = (\<Oplus>U\<leftarrow>Us. U)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>Us. (\<forall>U\<in>set Us. IrrFinGroupRepresentation G (*) U) \<and> 0 \<notin> set Us \<and> group_ring = (\<Oplus>U\<leftarrow>Us. U)
[PROOF STEP]
using   assms FinGroupRepresentation_FG FinGroupRepresentation.reducible
[PROOF STATE]
proof (prove)
using this:
of_nat (card G) \<noteq> (0::'f)
of_nat (card G) \<noteq> (0::?'f) \<Longrightarrow> FinGroupRepresentation G (*) group_ring
FinGroupRepresentation ?G ?smult ?V \<Longrightarrow> \<exists>Us. (\<forall>U\<in>set Us. IrrFinGroupRepresentation ?G ?smult U) \<and> 0 \<notin> set Us \<and> ?V = (\<Oplus>U\<leftarrow>Us. U)

goal (1 subgoal):
 1. \<exists>Us. (\<forall>U\<in>set Us. IrrFinGroupRepresentation G (*) U) \<and> 0 \<notin> set Us \<and> group_ring = (\<Oplus>U\<leftarrow>Us. U)
[PROOF STEP]
by      fast


[STATEMENT]
lemma expands_to_sin_ms_neg_exp:
  assumes "e < 0" "basis_wf basis" "(f expands_to MS (MSLCons (C, e) xs) g) basis"
  shows   "((\<lambda>x. sin (f x)) expands_to MS (sin_ms_aux' (MSLCons (C, e) xs)) (\<lambda>x. sin (g x))) basis"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. sin (f x)) expands_to MS (sin_ms_aux' (MSLCons (C, e) xs)) (\<lambda>x. sin (g x))) basis
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
e < 0
basis_wf basis
(f expands_to MS (MSLCons (C, e) xs) g) basis

goal (1 subgoal):
 1. ((\<lambda>x. sin (f x)) expands_to MS (sin_ms_aux' (MSLCons (C, e) xs)) (\<lambda>x. sin (g x))) basis
[PROOF STEP]
by (auto simp: expands_to.simps snd_dominant_term_ms_aux_MSLCons o_def
                       intro!: sin_ms_aux' elim: eventually_mono)


[STATEMENT]
lemma add_suc:
 "foldl (+) (Suc m) ns = Suc (foldl (+) m ns)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. foldl (+) (Suc m) ns = Suc (foldl (+) m ns)
[PROOF STEP]
by (induction ns arbitrary: m, simp_all)


[STATEMENT]
lemma bl_not_bin: "map Not (bin_to_bl n w) = bin_to_bl n (NOT w)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. map Not (bin_to_bl n w) = bin_to_bl n (NOT w)
[PROOF STEP]
by (simp add: bin_to_bl_def bl_not_aux_bin)


[STATEMENT]
lemma wf_tuple_Suc_fviD: "wf_tuple (Suc n) (MFOTL.fvi b \<phi>) v \<Longrightarrow> wf_tuple n (MFOTL.fvi (Suc b) \<phi>) (tl v)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wf_tuple (Suc n) (MFOTL.fvi b \<phi>) v \<Longrightarrow> wf_tuple n (MFOTL.fvi (Suc b) \<phi>) (tl v)
[PROOF STEP]
unfolding wf_tuple_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length v = Suc n \<and> (\<forall>i<Suc n. (v ! i = None) = (i \<notin> MFOTL.fvi b \<phi>)) \<Longrightarrow> length (tl v) = n \<and> (\<forall>i<n. (tl v ! i = None) = (i \<notin> MFOTL.fvi (Suc b) \<phi>))
[PROOF STEP]
by (simp add: fvi_Suc nth_tl)


[STATEMENT]
lemma loop_semantics_kappa_mu_nu:
  "\<kappa> (\<lambda>x . y * x \<squnion> z) = n(y\<^sup>\<omega>) * L \<squnion> y\<^sup>\<star> * z"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<kappa> (\<lambda>x. y * x \<squnion> z) = n (y\<^sup>\<omega>) * L \<squnion> y\<^sup>\<star> * z
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<kappa> (\<lambda>x. y * x \<squnion> z) = n (y\<^sup>\<omega>) * L \<squnion> y\<^sup>\<star> * z
[PROOF STEP]
have "\<kappa> (\<lambda>x . y * x \<squnion> z) = y\<^sup>\<star> * z \<squnion> n(y\<^sup>\<omega> \<squnion> y\<^sup>\<star> * z) * L"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<kappa> (\<lambda>x. y * x \<squnion> z) = y\<^sup>\<star> * z \<squnion> n (y\<^sup>\<omega> \<squnion> y\<^sup>\<star> * z) * L
[PROOF STEP]
by (metis loop_semantics omega_loop_nu star_loop_mu)
[PROOF STATE]
proof (state)
this:
\<kappa> (\<lambda>x. y * x \<squnion> z) = y\<^sup>\<star> * z \<squnion> n (y\<^sup>\<omega> \<squnion> y\<^sup>\<star> * z) * L

goal (1 subgoal):
 1. \<kappa> (\<lambda>x. y * x \<squnion> z) = n (y\<^sup>\<omega>) * L \<squnion> y\<^sup>\<star> * z
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<kappa> (\<lambda>x. y * x \<squnion> z) = y\<^sup>\<star> * z \<squnion> n (y\<^sup>\<omega> \<squnion> y\<^sup>\<star> * z) * L

goal (1 subgoal):
 1. \<kappa> (\<lambda>x. y * x \<squnion> z) = n (y\<^sup>\<omega>) * L \<squnion> y\<^sup>\<star> * z
[PROOF STEP]
by (smt sup_assoc sup_commute le_iff_sup mult_right_dist_sup n_L_decreasing n_dist_sup)
[PROOF STATE]
proof (state)
this:
\<kappa> (\<lambda>x. y * x \<squnion> z) = n (y\<^sup>\<omega>) * L \<squnion> y\<^sup>\<star> * z

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma vifunion_constant[simp]: "(\<Union>\<^sub>\<circ>i\<in>\<^sub>\<circ>I. c) = (if I = 0 then 0 else c)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Union>\<^sub>\<circ> ((\<lambda>a\<in>\<^sub>\<circ>I. c) `\<^sub>\<circ> I) = (if I = 0 \<Rightarrow> 0 | otherwise \<Rightarrow> c)
[PROOF STEP]
proof(intro vsubset_antisym)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<Union>\<^sub>\<circ> ((\<lambda>a\<in>\<^sub>\<circ>I. c) `\<^sub>\<circ> I) \<subseteq>\<^sub>\<circ> (if I = 0 \<Rightarrow> 0 | otherwise \<Rightarrow> c)
 2. (if I = 0 \<Rightarrow> 0 | otherwise \<Rightarrow> c) \<subseteq>\<^sub>\<circ> \<Union>\<^sub>\<circ> ((\<lambda>a\<in>\<^sub>\<circ>I. c) `\<^sub>\<circ> I)
[PROOF STEP]
show "(if I = 0 then 0 else c) \<subseteq>\<^sub>\<circ> (\<Union>\<^sub>\<circ>i\<in>\<^sub>\<circ>I. c)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (if I = 0 \<Rightarrow> 0 | otherwise \<Rightarrow> c) \<subseteq>\<^sub>\<circ> \<Union>\<^sub>\<circ> ((\<lambda>a\<in>\<^sub>\<circ>I. c) `\<^sub>\<circ> I)
[PROOF STEP]
by (cases \<open>vdisjnt I I\<close>) (auto simp: VLambda_vconst_on)
[PROOF STATE]
proof (state)
this:
(if I = 0 \<Rightarrow> 0 | otherwise \<Rightarrow> c) \<subseteq>\<^sub>\<circ> \<Union>\<^sub>\<circ> ((\<lambda>a\<in>\<^sub>\<circ>I. c) `\<^sub>\<circ> I)

goal (1 subgoal):
 1. \<Union>\<^sub>\<circ> ((\<lambda>a\<in>\<^sub>\<circ>I. c) `\<^sub>\<circ> I) \<subseteq>\<^sub>\<circ> (if I = 0 \<Rightarrow> 0 | otherwise \<Rightarrow> c)
[PROOF STEP]
qed auto


[STATEMENT]
lemma Boolean_defined : "\<delta> Boolean = true"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<delta> Boolean = true
[PROOF STEP]
apply(rule ext, auto simp: Boolean_def defined_def false_def true_def
                           bot_fun_def null_fun_def null_option_def)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. Abs_Bag\<^sub>b\<^sub>a\<^sub>s\<^sub>e \<lfloor>\<lfloor>case_option 0 (case_option 0 (\<lambda>aa. Suc 0))\<rfloor>\<rfloor> = \<bottom> \<Longrightarrow> False
 2. Abs_Bag\<^sub>b\<^sub>a\<^sub>s\<^sub>e \<lfloor>\<lfloor>case_option 0 (case_option 0 (\<lambda>aa. Suc 0))\<rfloor>\<rfloor> = null \<Longrightarrow> False
[PROOF STEP]
by(simp_all add: Abs_Bag\<^sub>b\<^sub>a\<^sub>s\<^sub>e_inject bot_option_def bot_Bag\<^sub>b\<^sub>a\<^sub>s\<^sub>e_def null_Bag\<^sub>b\<^sub>a\<^sub>s\<^sub>e_def null_option_def)


[STATEMENT]
lemma satL_o_subst:
"satL \<xi> o substL \<rho> = satL (int \<xi> o \<rho>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. satL \<xi> \<circ> substL \<rho> = satL (int \<xi> \<circ> \<rho>)
[PROOF STEP]
apply(rule ext)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. (satL \<xi> \<circ> substL \<rho>) x = satL (int \<xi> \<circ> \<rho>) x
[PROOF STEP]
apply(subst comp_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. satL \<xi> (substL \<rho> x) = satL (int \<xi> \<circ> \<rho>) x
[PROOF STEP]
unfolding satL_o[symmetric]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. satL (int \<xi> \<circ> \<rho>) x = satL (int \<xi> \<circ> \<rho>) x
[PROOF STEP]
..


[STATEMENT]
lemma R26_d [simp]: "pmf (sds R26) d = 1 - pmf (sds R26) a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. pmf (sds R26) d = 1 - pmf (sds R26) a
[PROOF STEP]
using lottery_conditions[OF R26.wf] R26_bc
[PROOF STATE]
proof (prove)
using this:
0 \<le> pmf (sds R26) a
0 \<le> pmf (sds R26) b
0 \<le> pmf (sds R26) c
0 \<le> pmf (sds R26) d
pmf (sds R26) a + pmf (sds R26) b + pmf (sds R26) c + pmf (sds R26) d = 1
pmf (sds R26) b = 0
pmf (sds R26) c = 0

goal (1 subgoal):
 1. pmf (sds R26) d = 1 - pmf (sds R26) a
[PROOF STEP]
by simp


[STATEMENT]
lemma xor_commut: "xor xs ys = xor ys xs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Abstract_XOR.xor xs ys = Abstract_XOR.xor ys xs
[PROOF STEP]
by (auto simp add: xor_def)


[STATEMENT]
lemma downset_set_prop: "\<Down> = Union \<circ> (`) \<down>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Down> = \<Union> \<circ> (`) \<down>
[PROOF STEP]
unfolding downset_set_def downset_def fun_eq_iff
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>x. {y. Bex x ((\<le>) y)} = (\<Union> \<circ> (`) ((\<lambda>X. {y. Bex X ((\<le>) y)}) \<circ> \<eta>)) x
[PROOF STEP]
by fastforce


[STATEMENT]
theorem p61: "\<forall>x y z. f(x,f(y,z)) = f(f(x,y),z) \<Longrightarrow> \<forall>x y z w. f(x,f(y,f(z,w))) = f(f(f(x,y),z),w)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>x y z. f (x, f (y, z)) = f (f (x, y), z) \<Longrightarrow> \<forall>x y z w. f (x, f (y, f (z, w))) = f (f (f (x, y), z), w)
[PROOF STEP]
by auto2


[STATEMENT]
lemma lsum_list_mono:
  fixes f :: "'a \<Rightarrow> 'b :: {monoid_add, ordered_ab_semigroup_add}"
  assumes "\<And>x. x \<in> lset xs \<Longrightarrow> f x \<le> g x"
  shows "lsum_list (lmap f xs) \<le> lsum_list (lmap g xs)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. lsum_list (lmap f xs) \<le> lsum_list (lmap g xs)
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
?x \<in> lset xs \<Longrightarrow> f ?x \<le> g ?x

goal (1 subgoal):
 1. lsum_list (lmap f xs) \<le> lsum_list (lmap g xs)
[PROOF STEP]
by(auto simp add: lsum_list_def intro: sum_list_mono)


[STATEMENT]
lemma size_add_mset [simp]: "size (add_mset a A) = Suc (size A)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. size (add_mset a A) = Suc (size A)
[PROOF STEP]
by (simp add: size_multiset_overloaded_def wcount_add_mset)


[STATEMENT]
lemma wf_exists_minimal:
  assumes wf: "wf r" and Q: "Q x"
  shows "\<exists>x. Q x \<and> (\<forall>y. (f y, f x) \<in> r \<longrightarrow> \<not> Q y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>x. Q x \<and> (\<forall>y. (f y, f x) \<in> r \<longrightarrow> \<not> Q y)
[PROOF STEP]
using wf_eq_minimal[THEN iffD1, OF wf_app[OF wf], rule_format, of _ "{x. Q x}", simplified, OF Q]
[PROOF STATE]
proof (prove)
using this:
\<exists>z. Q z \<and> (\<forall>y. (?f y, ?f z) \<in> r \<longrightarrow> \<not> Q y)

goal (1 subgoal):
 1. \<exists>x. Q x \<and> (\<forall>y. (f y, f x) \<in> r \<longrightarrow> \<not> Q y)
[PROOF STEP]
by blast


[STATEMENT]
lemma ereal_divide_right_mono[simp]:
  fixes x y z :: ereal
  assumes "x \<le> y"
    and "0 < z"
  shows "x / z \<le> y / z"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x / z \<le> y / z
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
x \<le> y
0 < z

goal (1 subgoal):
 1. x / z \<le> y / z
[PROOF STEP]
by (cases x y z rule: ereal3_cases) (auto intro: divide_right_mono)


[STATEMENT]
lemma formulas_var_iff: "var i \<in> formulas S \<longleftrightarrow> i \<in> S"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (var i \<in> formulas S) = (i \<in> S)
[PROOF STEP]
unfolding formulas_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (var i \<in> {x. \<forall>A B. (\<forall>i\<in>S. (i \<in> A) = (i \<in> B)) \<longrightarrow> (A \<in> Rep_formula x) = (B \<in> Rep_formula x)}) = (i \<in> S)
[PROOF STEP]
by (simp add: Rep_formula_simps, fast)


[STATEMENT]
lemma g_orbital_collapses:
  assumes "s \<in> S" and "is_interval (U s)" and "U s \<subseteq> T" and "0 \<in> U s"
  shows "g_orbital (\<lambda>t. f) G U S 0 s = {\<phi> t s| t. t \<in> U s \<and> (\<forall>\<tau>\<in>down (U s) t. G (\<phi> \<tau> s))}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. g_orbital (\<lambda>t. f) G U S 0 s = {\<phi> t s |t. t \<in> U s \<and> (\<forall>\<tau>\<in>down (U s) t. G (\<phi> \<tau> s))}
[PROOF STEP]
apply (subst g_orbital_orbit[of _ _ "\<lambda>t. \<phi> t s"], simp_all add: assms g_orbit_eq)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>t. \<phi> t s) \<in> Sols (\<lambda>t. f) U S 0 s
[PROOF STEP]
by (rule in_ivp_sols, simp_all add: assms)


[STATEMENT]
lemma analz_insert_Key [simp]:
    "K \<notin> keysFor (analz H) \<Longrightarrow>
          analz (insert (Key K) H) = insert (Key K) (analz H)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. K \<notin> keysFor (analz H) \<Longrightarrow> analz (insert (Key K) H) = insert (Key K) (analz H)
[PROOF STEP]
apply (unfold keysFor_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. K \<notin> invKey ` {K. \<exists>X. Crypt K X \<in> analz H} \<Longrightarrow> analz (insert (Key K) H) = insert (Key K) (analz H)
[PROOF STEP]
apply (rule analz_insert_eq_I)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. \<lbrakk>K \<notin> invKey ` {K. \<exists>X. Crypt K X \<in> analz H}; x \<in> analz (insert (Key K) H)\<rbrakk> \<Longrightarrow> x \<in> insert (Key K) (analz H)
[PROOF STEP]
apply (erule analz.induct, auto)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma (in group) set_mult_subgroup_idem:
  assumes HG: "subgroup H G" and NG: "subgroup N (G \<lparr> carrier := H \<rparr>)"
  shows "H <#> N = H"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H <#> N = H
[PROOF STEP]
using group.set_mult_carrier_idem[OF subgroup.subgroup_is_group[OF HG group_axioms] NG]
[PROOF STATE]
proof (prove)
using this:
carrier (G\<lparr>carrier := H\<rparr>) <#>\<^bsub>G\<lparr>carrier := H\<rparr>\<^esub> N = carrier (G\<lparr>carrier := H\<rparr>)

goal (1 subgoal):
 1. H <#> N = H
[PROOF STEP]
by simp


[STATEMENT]
lemma inv_into_ordermap: "\<alpha> \<in> elts (ordertype A r) \<Longrightarrow> inv_into A (ordermap A r) \<alpha> \<in> A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<alpha> \<in> elts (ordertype A r) \<Longrightarrow> inv_into A (ordermap A r) \<alpha> \<in> A
[PROOF STEP]
by (meson in_mono inv_into_into ordermap_surj)


[STATEMENT]
lemma in_rel_Collect_case_prod_eq: "in_rel (Collect (case_prod X)) = X"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. in_rel {(x, y). X x y} = X
[PROOF STEP]
unfolding fun_eq_iff
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>x xa. in_rel {(x, y). X x y} x xa = X x xa
[PROOF STEP]
by auto


[STATEMENT]
lemma divide_fps_const':
  fixes c :: "'a :: {inverse,comm_monoid_add,uminus,mult_zero}"
  shows   "f / fps_const c = f * fps_const (inverse c)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f / fps_const c = f * fps_const (inverse c)
[PROOF STEP]
by      (simp add: fps_divide_def fps_const_inverse)