[STATEMENT]
lemma (in Module) finitesum_sprodTr:"\<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {};
       r \<in> carrier R\<rbrakk>  \<Longrightarrow> g \<in>{j. j \<le> (n::nat)} \<rightarrow> (finitesum_base M I f)
              \<longrightarrow> r \<cdot>\<^sub>s (nsum M g n) =  nsum M (\<lambda>x. r \<cdot>\<^sub>s (g x)) n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R\<rbrakk> \<Longrightarrow> g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n
[PROOF STEP]
apply (induct_tac n)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R\<rbrakk> \<Longrightarrow> g \<in> {j. j \<le> 0} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g 0 = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) 0
 2. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n\<rbrakk> \<Longrightarrow> g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g Suc n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) Suc n
[PROOF STEP]
apply (rule impI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; g \<in> {j. j \<le> 0} \<rightarrow> finitesum_base M I f\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g 0 = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) 0
 2. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n\<rbrakk> \<Longrightarrow> g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g Suc n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) Suc n
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n\<rbrakk> \<Longrightarrow> g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g Suc n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) Suc n
[PROOF STEP]
apply (rule impI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g Suc n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) Suc n
[PROOF STEP]
apply (frule func_pre)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f \<longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g Suc n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) Suc n
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s (\<Sigma>\<^sub>e M g n \<plusminus> g (Suc n)) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply (frule finitesumbase_sub_carrier [of f I])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f; finitesum_base M I f \<subseteq> carrier M\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s (\<Sigma>\<^sub>e M g n \<plusminus> g (Suc n)) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply (frule_tac f = g and A = "{j. j \<le> Suc n}" in extend_fun [of _ _ "finitesum_base M I f" "carrier M"], assumption+)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f; g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f; finitesum_base M I f \<subseteq> carrier M; g \<in> {j. j \<le> Suc n} \<rightarrow> carrier M\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s (\<Sigma>\<^sub>e M g n \<plusminus> g (Suc n)) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply (thin_tac "g \<in> {j. j \<le> Suc n} \<rightarrow> finitesum_base M I f",
        thin_tac "g \<in> {j. j \<le> n} \<rightarrow> finitesum_base M I f",
        frule func_pre)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; finitesum_base M I f \<subseteq> carrier M; g \<in> {j. j \<le> Suc n} \<rightarrow> carrier M; g \<in> {j. j \<le> n} \<rightarrow> carrier M\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s (\<Sigma>\<^sub>e M g n \<plusminus> g (Suc n)) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply (cut_tac n = n in nsum_mem [of _ g])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; finitesum_base M I f \<subseteq> carrier M; g \<in> {j. j \<le> Suc n} \<rightarrow> carrier M; g \<in> {j. j \<le> n} \<rightarrow> carrier M\<rbrakk> \<Longrightarrow> \<forall>j\<le>n. g j \<in> carrier M
 2. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; finitesum_base M I f \<subseteq> carrier M; g \<in> {j. j \<le> Suc n} \<rightarrow> carrier M; g \<in> {j. j \<le> n} \<rightarrow> carrier M; \<Sigma>\<^sub>e M g n \<in> carrier M\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s (\<Sigma>\<^sub>e M g n \<plusminus> g (Suc n)) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply (rule allI, simp add:Pi_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; finitesum_base M I f \<subseteq> carrier M; g \<in> {j. j \<le> Suc n} \<rightarrow> carrier M; g \<in> {j. j \<le> n} \<rightarrow> carrier M; \<Sigma>\<^sub>e M g n \<in> carrier M\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s (\<Sigma>\<^sub>e M g n \<plusminus> g (Suc n)) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply (frule_tac x = "Suc n" in funcset_mem [of "g" _ "carrier M"], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; finitesum_base M I f \<subseteq> carrier M; g \<in> {j. j \<le> Suc n} \<rightarrow> carrier M; g \<in> {j. j \<le> n} \<rightarrow> carrier M; \<Sigma>\<^sub>e M g n \<in> carrier M; g (Suc n) \<in> carrier M\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s (\<Sigma>\<^sub>e M g n \<plusminus> g (Suc n)) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply (subst sc_r_distr, assumption+)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>f \<in> I \<rightarrow> {X. submodule R M X}; I \<noteq> {}; r \<in> carrier R; r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n; finitesum_base M I f \<subseteq> carrier M; g \<in> {j. j \<le> Suc n} \<rightarrow> carrier M; g \<in> {j. j \<le> n} \<rightarrow> carrier M; \<Sigma>\<^sub>e M g n \<in> carrier M; g (Suc n) \<in> carrier M\<rbrakk> \<Longrightarrow> r \<cdot>\<^sub>s \<Sigma>\<^sub>e M g n \<plusminus> r \<cdot>\<^sub>s g (Suc n) = \<Sigma>\<^sub>e M (\<lambda>x. r \<cdot>\<^sub>s g x) n \<plusminus> r \<cdot>\<^sub>s g (Suc n)
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma CARD_fun [card_simps]:
  "CARD('a \<Rightarrow> 'b) = card_fun CARD('a) CARD('b)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. CARD('a \<Rightarrow> 'b) = card_fun CARD('a) CARD('b)
[PROOF STEP]
by(simp add: card_fun card_fun_def)


[STATEMENT]
lemma max_var_set_mono:
  assumes "finite N"
    and "M \<subseteq> N"
  shows "max_var_set M \<le> max_var_set N"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. max_var_set M \<le> max_var_set N
[PROOF STEP]
by (meson assms Max.subset_imp finite.insertI finite_imageI image_mono insert_mono insert_not_empty)


[STATEMENT]
lemma real_of_nat_div2: "0 \<le> real n / real x - real (n div x)" for n x :: nat
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 \<le> real n / real x - real (n div x)
[PROOF STEP]
apply (simp add: algebra_simps)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. real (n div x) \<le> real n / real x
[PROOF STEP]
by (metis floor_divide_of_nat_eq of_int_floor_le of_int_of_nat_eq)


[STATEMENT]
lemma joinpaths_translation:
    "((\<lambda>x. a + x) \<circ> g1) +++ ((\<lambda>x. a + x) \<circ> g2) = (\<lambda>x. a + x) \<circ> (g1 +++ g2)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((+) a \<circ> g1) +++ ((+) a \<circ> g2) = (+) a \<circ> g1 +++ g2
[PROOF STEP]
by (rule ext) (simp add: joinpaths_def)


[STATEMENT]
lemma elliptic_or_parabolic_or_loxodromic:
  assumes "isometry f"
  shows "elliptic_isometry f \<or> parabolic_isometry f \<or> loxodromic_isometry f"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. elliptic_isometry f \<or> parabolic_isometry f \<or> loxodromic_isometry f
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
isometry f

goal (1 subgoal):
 1. elliptic_isometry f \<or> parabolic_isometry f \<or> loxodromic_isometry f
[PROOF STEP]
unfolding parabolic_isometry_def loxodromic_isometry_def
[PROOF STATE]
proof (prove)
using this:
isometry f

goal (1 subgoal):
 1. elliptic_isometry f \<or> isometry f \<and> \<not> elliptic_isometry f \<and> stable_translation_length f = 0 \<or> isometry f \<and> \<not> elliptic_isometry f \<and> stable_translation_length f \<noteq> 0
[PROOF STEP]
by auto


[STATEMENT]
theorem Right_Coset_unit:
  "H |\<cdot> \<one> = H"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H |\<cdot> \<one> = H
[PROOF STEP]
by (force simp add: Right_Coset_def)


[STATEMENT]
lemma has_sum_cinner_right:
  assumes \<open>has_sum f I x\<close>
  shows \<open>has_sum (\<lambda>i. f i \<bullet>\<^sub>C a) I (x \<bullet>\<^sub>C a)\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. has_sum (\<lambda>i. f i \<bullet>\<^sub>C a) I (x \<bullet>\<^sub>C a)
[PROOF STEP]
apply (rule has_sum_bounded_linear[where f=\<open>\<lambda>x. x \<bullet>\<^sub>C a\<close>, unfolded o_def])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. bounded_linear (\<lambda>i. i \<bullet>\<^sub>C a)
 2. has_sum f I x
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
has_sum f I x

goal (2 subgoals):
 1. bounded_linear (\<lambda>i. i \<bullet>\<^sub>C a)
 2. has_sum f I x
[PROOF STEP]
by (simp_all add: bounded_antilinear.bounded_linear bounded_antilinear_cinner_left)


[STATEMENT]
lemma list_of_pdevs_eq:
  "rev (list_of_pdevs X) = (filter ((\<noteq>) 0 o snd) (map (\<lambda>i. (i, pdevs_apply X i)) [0..<degree X]))"
  (is "_ = filter ?P (map ?f ?xs)")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. rev (list_of_pdevs X) = filter ((\<noteq>) (0::'a) \<circ> snd) (map (\<lambda>i. (i, pdevs_apply X i)) [0..<degree X])
[PROOF STEP]
using map_filter[of ?f ?P ?xs]
[PROOF STATE]
proof (prove)
using this:
map (\<lambda>i. (i, pdevs_apply X i)) (filter (\<lambda>x. ((\<noteq>) (0::'a) \<circ> snd) (x, pdevs_apply X x)) [0..<degree X]) = filter ((\<noteq>) (0::'a) \<circ> snd) (map (\<lambda>i. (i, pdevs_apply X i)) [0..<degree X])

goal (1 subgoal):
 1. rev (list_of_pdevs X) = filter ((\<noteq>) (0::'a) \<circ> snd) (map (\<lambda>i. (i, pdevs_apply X i)) [0..<degree X])
[PROOF STEP]
by (auto simp: list_of_pdevs_def o_def sorted_list_of_pdevs_domain_eq rev_map)


[STATEMENT]
lemma length_dominant_term_ms_aux [simp]:
  "length (snd (dominant_term_ms_aux (xs :: ('a :: multiseries \<times> real) msllist))) =
     Suc (expansion_level TYPE('a))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
proof (cases xs rule: ms_aux_cases)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. xs = MSLNil \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
 2. \<And>c e xs'. xs = MSLCons (c, e) xs' \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
case (MSLCons C e xs')
[PROOF STATE]
proof (state)
this:
xs = MSLCons (C, e) xs'

goal (2 subgoals):
 1. xs = MSLNil \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
 2. \<And>c e xs'. xs = MSLCons (c, e) xs' \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
hence "length (snd (dominant_term_ms_aux xs)) = Suc (length (snd (dominant_term C)))"
[PROOF STATE]
proof (prove)
using this:
xs = MSLCons (C, e) xs'

goal (1 subgoal):
 1. length (snd (dominant_term_ms_aux xs)) = Suc (length (snd (dominant_term C)))
[PROOF STEP]
by (simp add: dominant_term_ms_aux_def split: prod.splits)
[PROOF STATE]
proof (state)
this:
length (snd (dominant_term_ms_aux xs)) = Suc (length (snd (dominant_term C)))

goal (2 subgoals):
 1. xs = MSLNil \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
 2. \<And>c e xs'. xs = MSLCons (c, e) xs' \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
length (snd (dominant_term_ms_aux xs)) = Suc (length (snd (dominant_term C)))

goal (2 subgoals):
 1. xs = MSLNil \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
 2. \<And>c e xs'. xs = MSLCons (c, e) xs' \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
note length_dominant_term
[PROOF STATE]
proof (state)
this:
length (snd (dominant_term ?F)) = expansion_level TYPE(?'a)

goal (2 subgoals):
 1. xs = MSLNil \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
 2. \<And>c e xs'. xs = MSLCons (c, e) xs' \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))

goal (1 subgoal):
 1. length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))

goal (1 subgoal):
 1. xs = MSLNil \<Longrightarrow> length (snd (dominant_term_ms_aux xs)) = Suc (expansion_level TYPE('a))
[PROOF STEP]
qed (simp_all add: dominant_term_ms_aux_def split: msllist.splits prod.splits)


[STATEMENT]
lemma comm_ring_1_ow_UNIV_axioms:
  "comm_ring_1_ow (UNIV::'a::comm_ring_1 set) (*) 1 (+) 0 (-) uminus"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. comm_ring_1_ow UNIV (*) (1::'a) (+) (0::'a) (-) uminus
[PROOF STEP]
by (fold comm_ring_1_ow) (rule comm_ring_1_class.comm_ring_1_axioms)


[STATEMENT]
lemma finite_minimal_antichain_path_weightp:
  "finite (minimal_antichain {x. path_weightp l1 l2 x})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. finite (minimal_antichain {x. path_weightp l1 l2 x})
[PROOF STEP]
apply (rule finite_surj[OF finite_summaries, where f = sum_path_weights])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. minimal_antichain {x. path_weightp l1 l2 x} \<subseteq> (\<lambda>xs. sum_weights (map (\<lambda>(s, l, t). l) xs)) ` {xs. distinct xs \<and> (\<forall>(l1, s, l2)\<in>set xs. s \<in>\<^sub>A weights l1 l2)}
[PROOF STEP]
apply (clarsimp simp: minimal_antichain_def image_iff dest!: path_weightp_ex_path)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x xs. \<lbrakk>\<forall>y. path_weightp l1 l2 y \<longrightarrow> \<not> y < x; let s' = sum_weights (map (\<lambda>(s, l, t). l) xs) in s' \<le> x \<and> path_weightp l1 l2 s' \<and> distinct xs \<and> (\<forall>x\<in>set xs. case x of (l1, s, l2) \<Rightarrow> s \<in>\<^sub>A weights l1 l2)\<rbrakk> \<Longrightarrow> \<exists>xa. distinct xa \<and> (\<forall>x\<in>set xa. case x of (l1, s, l2) \<Rightarrow> s \<in>\<^sub>A weights l1 l2) \<and> x = sum_weights (map (\<lambda>(s, l, t). l) xa)
[PROOF STEP]
apply (fastforce simp: Let_def)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
theorem Par_WbisT[simp]:
assumes "c1 \<approx>wT d1" and "c2 \<approx>wT d2"
shows "Par c1 c2 \<approx>wT Par d1 d2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. c1 | c2 \<approx>wT d1 | d2
[PROOF STEP]
using assms thetaParWT_WbisT
[PROOF STATE]
proof (prove)
using this:
c1 \<approx>wT d1
c2 \<approx>wT d2
thetaParWT \<subseteq> WbisT

goal (1 subgoal):
 1. c1 | c2 \<approx>wT d1 | d2
[PROOF STEP]
unfolding thetaParWT_def
[PROOF STATE]
proof (prove)
using this:
c1 \<approx>wT d1
c2 \<approx>wT d2
{(c1 | c2, d1 | d2) |c1 c2 d1 d2. c1 \<approx>wT d1 \<and> c2 \<approx>wT d2} \<subseteq> WbisT

goal (1 subgoal):
 1. c1 | c2 \<approx>wT d1 | d2
[PROOF STEP]
by blast


[STATEMENT]
lemma succ_rtran_correct: "FiniteGraph.succ_rtran (list_graph_to_graph G) v = set (succ_rtran G v)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. FiniteGraph.succ_rtran (list_graph_to_graph G) v = set (FiniteListGraph.succ_rtran G v)
[PROOF STEP]
unfolding FiniteGraph.succ_rtran_def succ_rtran_def list_graph_to_graph_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {e2. (v, e2) \<in> (edges \<lparr>nodes = set (nodesL G), edges = set (edgesL G)\<rparr>)\<^sup>*} = set (rtrancl_list_impl (edgesL G) [v])
[PROOF STEP]
by (simp add: rtrancl_list_impl)


[STATEMENT]
lemma finite_Inf_fun:
  "Inf (A::('a::finite \<Rightarrow> 'b::finite_lattice_complete) set) =
    Finite_Set.fold inf top A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Inf A = Finite_Set.fold inf top A
[PROOF STEP]
by (metis Inf_fold_inf finite)