src/HOL/Library/Kleene_Algebra.thy
changeset 44918 6a80fbc4e72c
parent 39749 fa94799e3a3b
child 44928 7ef6505bde7f
equal deleted inserted replaced
44917:8df4c332cb1c 44918:6a80fbc4e72c
   375   fix a x :: 'a
   375   fix a x :: 'a
   376   
   376   
   377   have [simp]: "1 \<le> star a"
   377   have [simp]: "1 \<le> star a"
   378     unfolding star_cont[of 1 a 1, simplified] 
   378     unfolding star_cont[of 1 a 1, simplified] 
   379     by (subst power_0[symmetric]) (rule le_SUPI [OF UNIV_I])
   379     by (subst power_0[symmetric]) (rule le_SUPI [OF UNIV_I])
   380   
   380 
   381   show "1 + a * star a \<le> star a"
   381   have "a * star a \<le> star a"
   382     apply (rule plus_leI, simp)
   382     using star_cont[of a a 1] star_cont[of 1 a 1]
   383     apply (simp add:star_cont[of a a 1, simplified])
   383     by (auto simp add: power_Suc[symmetric] simp del: power_Suc
   384     apply (simp add:star_cont[of 1 a 1, simplified])
   384       intro: SUP_leI le_SUPI)
   385     apply (subst power_Suc[symmetric])
   385 
   386     by (intro SUP_leI le_SUPI UNIV_I)
   386   then show "1 + a * star a \<le> star a"
   387 
   387     by simp
   388   show "1 + star a * a \<le> star a" 
   388 
   389     apply (rule plus_leI, simp)
   389   then show "1 + star a * a \<le> star a"
   390     apply (simp add:star_cont[of 1 a a, simplified])
   390     using star_cont[of a a 1] star_cont[of 1 a a]
   391     apply (simp add:star_cont[of 1 a 1, simplified])
   391     by (simp add: power_commutes)
   392     by (auto intro: SUP_leI le_SUPI simp add: power_Suc[symmetric] power_commutes simp del: power_Suc)
       
   393 
   392 
   394   show "a * x \<le> x \<Longrightarrow> star a * x \<le> x"
   393   show "a * x \<le> x \<Longrightarrow> star a * x \<le> x"
   395   proof -
   394   proof -
   396     assume a: "a * x \<le> x"
   395     assume a: "a * x \<le> x"
   397 
   396