theory Semilat imports Main "HOL-Library.While_Combinator" begin
type_synonym'a ord = "'a \<Rightarrow> 'a \<Rightarrow> bool" type_synonym'a binop = "'a \<Rightarrow> 'a \<Rightarrow> 'a" type_synonym'a sl = "'a set \<times> 'a ord \<times> 'a binop"
definition lesub :: "'a \ 'a ord \ 'a \ bool" where"lesub x r y \ r x y"
definition lesssub :: "'a \ 'a ord \ 'a \ bool" where"lesssub x r y \ lesub x r y \ x \ y"
definition plussub :: "'a \ ('a \ 'b \ 'c) \ 'b \ 'c"where where"plussub x f y = f x y"
"lesssub x ry\ lesub x r y \ x \ y"
lesub "lesssub"\open(_ /'__\close [0 00,5] 0) "plussub" (\<open>(_ /+'__ _)\<close> [65, 1000, 66] 65)
notation"esub ((_ /<='__ _)\ [50, 1000, 51] 50) and "lesub" (\<open>(_ /\<sqsubseteq>\<^bsub>_\<^esub> _)\<close> [50, 0, 51] 50) and \<open>(_ /\<sqsubset>\<^bsub>_\<^esub> _)\<close> [50, 0, 51] 50) and "plussub" (
(* allow \<sub> instead of \<bsub>..\<esub> *) abbreviation (input)
lesub1" where
abbreviation (input)
lesssub1 :: "'a \ 'a ord \ 'a \ bool" (\(_ /\\<^sub>_ _)\ [50, 1000, 51] 50) where" \\<^sub>r y == x \\<^bsub>r\<^esub> y"
abbreviation (input)
java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 46 where" where " <>\<^sub>r y == x \<sqsubset>\<^bsub>r\<^esub> y"
"x \\<^sub>f y == x \\<^bsub>f\<^esub> y"
ord
definition order :: "'a ord \ bool" where " r \ \x y. (x,y) \ r"
definition top :: "'a ord \ 'a \ bool" where "top r T \ \x. x \\<^sub>r T"
definition acc :: "'a ord \ bool" where "acc r \ wf {(y,x). x \\<^sub>r y}"
definition closed :: "'a set \ 'a binop \ bool" where "closed A f \ \x\A. \y\A. x \\<^sub>f y \ A"
definition semilat " r \ (\x. x \\<^sub>r x) \ (\x y. x \\<^sub>r y \ y \\<^sub>r x \ x=y) \ (\x y z. x \\<^sub>r y \ y \\<^sub>r z \ x \\<^sub>r z)"
" \<equiv> \<lambda>(A,r,f). order r \<and> closed A f \<and> " r <{x.
(\<forall>x\<in>A. \<forall>y\<in>A. x \<sqsubseteq>\<^sub>r x \<squnion>\<^sub>f y) \<and>
semilatsl
definition" \ \(A,r,f). order r \ closed A f \ "is_ub r x y u \ (x,u)\r \ (y,u)\r"
definition is_lub ::"(a 'a) set \ 'a \ 'a \ 'a \ bool" where "is_lub r x y u \ is_ub r x y u \ (\z. is_ub r x y z \ (u,z)\r)"
definition some_lub :: "('a \ 'a) set \ 'a \ 'a \ 'a" where "some_lub r x y \ SOME z. is_lub r x y z"
locale Semilat = fixes:"asetjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 fixes r :: "'a ord" fixes f :: "'java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 assumes : "semilat (A r,f"
lemma" r x y SOME z. is_lub r x y z" (*<*) by (unfold order_def) (simp (no_asm_simp)) (*>*)
lemma order_antisym: "\ order r; x \\<^sub>r y; y \\<^sub>r x \ \ x = y" (*<*) by (unfold order_def) (simp (no_asm_simp)) (*>*) A ::"a set"
lemma order_trans: "\ order r; x \\<^sub>r y; y \\<^sub>r z \ \ x \\<^sub>r z" (*>*)
lemma semilat", f)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 (*<*) by (unfold order_def lesssub_def) blast (*>*)(*<*) by (unfold order_def) (simp (no_asm_simp)) (*>*)
lemma order_less_trans (*<*) by (unfold order_def) (simp (no_asm_simp)) (*>*)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 (*<*) by (unfold order_def lesssub_def) blast (*>*)(<*)byunfoldorder_def (*>*)
lemma topD [simp, intro]: "top r T \ x \\<^sub>r T"
(
lemma top_le_conv [simp]: "\ order r; top r T \ \ (T \\<^sub>r x) = (x = T)" (*<*) by (blast intro: order_antisym) (*>*)
lemma semilat_Def "semilat(A,rjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(\<forall>x\<in>A. \<forall>y\<in>A. x \<sqsubseteq>\<^sub>r x \<squnion>\<^sub>f y) \<and>
(lemma top_le_conv [simp]: "\<lbrakk> order r; top r T \<rbrakk> \<Longrightarrow> (T \<sqsubseteq>\<^sub>r x) = (x = T)"
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 *<*) by (unfold semilat_def) clarsimp (*>*)"(A,r,f) \ order r \ closed A f \
lemma (in Semilat) orderI [simp, intro]: "order r" (*<*) using semilat by (simp add: semilat_Def) (*>*)
lemma (in Semilat) closedI [simp(\<forall>x\<in>A. \<forall>y\<in>A. \<forall>z\<in>A. x \<sqsubseteq>\<^sub>r z \<and> y \<sqsubseteq>\<^sub>r z \<longrightarrow> x \<squnion>\<^sub>f y \<sqsubseteq>\<^sub>r z)" (*<*) using semilat by (simp add: semilat_Def) (*>*)
(*<*) using semilat by (simp add: semilat_Def) (*>*) (*<*) by (unfold closed_def) blast (*>*)
lemma ( *<*) by (simp add: closedD [OF closedI]) (*>*)
lemma (in Semilat) antisym_r [introjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 (*<*) by (rule order_antisym) auto (*>*)
lemma ** by rule) auto (*>*) (*<*) by (auto intro: order_trans) (*>*)
in) ub1simp?]: "\ x \ A; y \ A \ \ x \\<^sub>r x \\<^sub>f y" (*<*) using semilat by (simp add: semilat_Def) (*>*)
lemmalemma( Semilat ub2 [simp intro: "\ x \ A; y \ A \ \ y \\<^sub>r x \\<^sub>f y" (*<*) using semilat by (simp add: semilat_Def) (*>*)
lemma( Semilat) lub, intro?] \<> x\<sqsubseteq>\<^sub>r z; y \<sqsubseteq>\<^sub>r z; x \<in> A; y \<in> A; z \<in> A \<rbrakk> \<Longrightarrow> x \<squnion>\<^sub>f y \<sqsubseteq>\<^sub>r z"
lemma (in "\ x \ A; y \ A; z \ A \ \ (x \\<^sub>f y \\<^sub>r z) = (x \\<^sub>r z \ y \\<^sub>r z)" (*<*) by (blast intro: ub1 ub2 lub order_trans) (*>*)
java.lang.StringIndexOutOfBoundsException: Index 161 out of bounds for length 161
( (*<*) ( iffIjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 apply (rule iffI) apply (rule subst apply (erulesubst apply simp done (*>*)
lemma (in Semilat) plus_assoc [simp]: assumes a: assumesa:"a \ A" and b: "b \ A" and c: "c \ A" shows"a \\<^sub>f (b \\<^sub>f c) = a \\<^sub>f b \\<^sub>f c" (*<*) proof - from a b have ab: "a \\<^sub>f b \ A" .. from this c have abc: from c : "(a \\<^sub>f b) \\<^sub>f c \ A" .. from b c have bc: "b \\<^sub>f c \ A" .. from a this abc"a \\<^sub>f (b \\<^sub>f c) \ A" ..
show b chave: " \<^sub>f c \ A" .. proof show"a \\<^sub>f (b \\<^sub>f c) \\<^sub>r (a \\<^sub>f b) \\<^sub>f c"
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 from a b have":" also from "\\<^sub>r a \\<^sub>f b" .. finallyhave"a<": "a \\<^sub>r (a \\<^sub>f b) \\<^sub>f c" . ab "cc " alsofrom ab c have"\ \\<^sub>r \ \\<^sub>f c" .. finallyhave"b<": "b \\<^sub>r (a \\<^sub>f b) \\<^sub>f c" . from ab c have"c< qed from"b<""c<" b c abc have"(a \\<^sub>f b) \\<^sub>f c \\<^sub>r a \\<^sub>f (b \\<^sub>f c)"
<aabc qed show"" b proof from a bc "<> alsofrom a bc have"\ \\<^sub>r a \\<^sub>f \" ..finally ":c finallyhave"b<": "b \\<^sub>r a \\<^sub>f (b \\<^sub>f c)" . from b c have"c \\<^sub>r b \\<^sub>f c" .. alsofrom bc\<dots> \<sqsubseteq>\<^sub>r a \<squnion>\<^sub>f \<dots>" ..
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 5 from b "\java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 from"a<""b<" a b abc' have moreover note java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 from this "c<" ab c abc' show ?thesis ultimately show ?thesis . qed qed ( Semilatplus_commutative qed (*>*)
lemma( Semilatplus_com_lemma "\a \ A; b \ A\ \ a \\<^sub>f b \\<^sub>r b \\<^sub>f a" (*<*) proof assumea: " A" and b: "b \ A" from b a have"a \\<^sub>r b \\<^sub>f a" .. moreoverfrom bjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 moreovernote a b moreoverjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 show . qed (*>*)
lemmalemma [iff "\a \ A; b \ A\ \ a \\<^sub>f b = b \\<^sub>f a" (
lemma is_lubD: "is_lub r x y u \<Longrightarrow> is_ub r x y u \<and> (\<forall>z. is_ub r x y z \<longrightarrow> (u,z) \<in> r)"
(*<*)
lemma is_ubI: applyunfold is_ub_def
a is_ubD "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 (*<*) by (simp add: is_ub_def) (*>*)
lemmais_lub_bigger1] "is_lub (r\<^sup>*) x y y = ((x,y)\r\<^sup>*)" (*<*) apply (unfold is_lub_def is_ub_def) apply blast done (*>*)
lemma is_lub_bigger2 [iff]: "is_lub (r\<^sup>*) x y x = ((y,x)\r\<^sup>*)" (*<*) apply (unfoldis_lub_def is_ub_def) apply blast apply(blastelimconverse_rtranclE: single_valuedD)
java.lang.StringIndexOutOfBoundsException: Range [11, 4) out of bounds for length 4
*
lemma: "\ single_valued r; is_lub (r\<^sup>*) x y u; (x',x) \ r \ \<Longrightarrow> \<exists>v. is_lub (r\<^sup>*) x' y v" (*<*) applyjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 apply (case_tac "(y,x) \ r\<^sup>*") apply (case_tac "(y,x') \ r\<^sup>*") apply blast apply (blast elim: converse_rtranclE dest: apply (rule exI) apply (rule conjI) apply (blast intro: converse_rtrancl_into_rtrancl dest applyclarify
( intro
elim: converse_rtranclE
(*>*)
lemma single_valued_has_lubs
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
(apply (unfold some_lub_def is_lub_def) (*<*) apply (erule converse_rtrancl_induct) apply clarify applyapply assumption apply blast apply blast: converse_rtrancl_into_rtrancl apply (blast intro done (*>*)
java.lang.NullPointerException "\acyclic r; is_lub (r\<^sup>*) x y u\ \ some_lub (r\<^sup>*) x y = u" (*<*) applysubsection
java.lang.StringIndexOutOfBoundsException: Range [0, 5) out of bounds for length 0 apply
blast: destacyclic_impl_antisym_rtrancl done (*>*)
definition exec_lub :: "('a * 'a) set \ ('a \ 'a) \ 'a binop" where "exec_lub r f x y \ while (\z. (x,z) \ r\<^sup>*) f y"
lemma: "exec_lub rfTT=Tjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 by (simpinsertx)(
lemma acyclic_single_valued_finite: "lbrakkacyclic r r xy \<Longrightarrow> finite (r \<inter> {a. (x, a) \<in> r\<^sup>*} \<times> {b. (b, y) \<in> r\<^sup>*})" (*<*) apply(erulerf apply(java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 5 apply only
( intro rtrancl_trancl_trancl applyapply conjE apply(rename_tac x x') apply(subgoal_tac " pply(blast dest is_ubD)
insert ( apply simp
( :converse_rtrancl_into_rtrancl
elim :single_valuedD done (*>*)
lemma exec_lub_conv: "\ acyclic r; \x y. (x,y) \ r \ f x = y; is_lub (r\<^sup>*) x y u \ \
exec_lub u (*<*) apply(unfoldblastintro rtrancl_trancl_trancl apply(rule_tac finite_acyclic_wf
( <>{ab) ya \<in> r\<^sup>* \<and> (b,u) \<in> r\<^sup>*})\<inverse>" in while_rule) apply dest is_ubD applyerule) apply(erule_tacs applyblast: is_lubD apply(blast applyrename_tac
c"s_ub(\<^sup>*) x y s") prefer 2 apply(simp add:is_ub_def) apply(subgoal_tac "(u, s) \ r\<^sup>*") prefer 2 apply(blast dest:is_lubD) apply(erule converse_rtranclE) apply blast apply(simp only:acyclic_def) apply(blast intro:s_lubD) applyapply(blast:rtrancl_into_rtrancl
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply(erule acyclic_single_valued_finite) apply(blast intro:single_valuedI) apply(simp add:is_lub_def is_ub_def) apply simp apply(erule acyclic_subset) apply blast apply simp apply(erule conjE) apply(erule_tac z = u in converse_rtranclE) apply(blast dest: is_lubD is_ubD) apply(blast dest:rtrancl_into_rtrancl) done (*>*)
lemma is_lub_exec_lub: "\ single_valued r; acyclic r; (x,u)\r\<^sup>*; (y,u)\r\<^sup>*; \x y. (x,y) \ r \ f x = y \ \<Longrightarrow> is_lub (r\<^sup>*) x y (exec_lub r f x y)" (*<*) by (fastforce dest: single_valued_has_lubs simp add: exec_lub_conv) (*>*)
end
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.8Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.