lemma semi_inverse1: "x \ carrier \ \ \\<^sup>* x = \\<^sup>* (\\<^sub>* (\\<^sup>* x))" by (metis lower_comp)
lemma semi_inverse2: "x \ carrier \ \ \\<^sub>* x = \\<^sub>* (\\<^sup>* (\\<^sub>* x))" by (metis upper_comp)
theorem lower_by_complete_lattice: assumes"complete_lattice \""x \ carrier \" shows"\\<^sup>*(x) = \\<^bsub>\\<^esub> { y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>*(y) }" proof - interpret Y: complete_lattice Y by (simp add: assms)
show ?thesis proof (rule Y.le_antisym) show x: "\\<^sup>* x \ carrier \" using assms(2) lower_closure by blast show"\\<^sup>* x \\<^bsub>\\<^esub> \\<^bsub>\\<^esub>{y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>* y}" proof (rule Y.weak.inf_greatest) show"{y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>* y} \ carrier \" by auto show"\\<^sup>* x \ carrier \"by (fact x) fix z assume"z \ {y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>* y}" thus"\\<^sup>* x \\<^bsub>\\<^esub> z" using assms(2) left by auto qed show"\\<^bsub>\\<^esub>{y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>* y} \\<^bsub>\\<^esub> \\<^sup>* x" proof (rule Y.weak.inf_lower) show"{y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>* y} \ carrier \" by auto show"\\<^sup>* x \ {y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>* y}" proof (auto) show"\\<^sup>* x \ carrier \"by (fact x) show"x \\<^bsub>\\<^esub> \\<^sub>* (\\<^sup>* x)" using assms(2) inflation by blast qed qed show"\\<^bsub>\\<^esub>{y \ carrier \. x \\<^bsub>\\<^esub> \\<^sub>* y} \ carrier \" by (auto intro: Y.weak.inf_closed) qed qed
theorem upper_by_complete_lattice: assumes"complete_lattice \""y \ carrier \" shows"\\<^sub>*(y) = \\<^bsub>\\<^esub> { x \ carrier \. \\<^sup>*(x) \\<^bsub>\\<^esub> y }" proof - interpret X: complete_lattice X by (simp add: assms) show ?thesis proof (rule X.le_antisym) show y: "\\<^sub>* y \ carrier \" using assms(2) upper_closure by blast show"\\<^sub>* y \\<^bsub>\\<^esub> \\<^bsub>\\<^esub>{x \ carrier \. \\<^sup>* x \\<^bsub>\\<^esub> y}" proof (rule X.weak.sup_upper) show"{x \ carrier \. \\<^sup>* x \\<^bsub>\\<^esub> y} \ carrier \" by auto show"\\<^sub>* y \ {x \ carrier \. \\<^sup>* x \\<^bsub>\\<^esub> y}" proof (auto) show"\\<^sub>* y \ carrier \"by (fact y) show"\\<^sup>* (\\<^sub>* y) \\<^bsub>\\<^esub> y" by (simp add: assms(2) deflation) qed qed show"\\<^bsub>\\<^esub>{x \ carrier \. \\<^sup>* x \\<^bsub>\\<^esub> y} \\<^bsub>\\<^esub> \\<^sub>* y" proof (rule X.weak.sup_least) show"{x \ carrier \. \\<^sup>* x \\<^bsub>\\<^esub> y} \ carrier \" by auto show"\\<^sub>* y \ carrier \"by (fact y) fix z assume"z \ {x \ carrier \. \\<^sup>* x \\<^bsub>\\<^esub> y}" thus"z \\<^bsub>\\<^esub> \\<^sub>* y" by (simp add: assms(2) right) qed show"\\<^bsub>\\<^esub>{x \ carrier \. \\<^sup>* x \\<^bsub>\\<^esub> y} \ carrier \" by (auto intro: X.weak.sup_closed) qed qed
end
lemma dual_galois [simp]: " galois_connection \ orderA = inv_gorder B, orderB = inv_gorder A, lower = f, upper = g \
= galois_connection ( orderA = A, orderB = B, lower = g, upper = f )" by (auto simp add: galois_connection_def galois_connection_axioms_def connection_def dual_order_iff)
definition lower_adjoint :: "('a, 'c) gorder_scheme \ ('b, 'd) gorder_scheme \ ('a \ 'b) \ bool"where "lower_adjoint A B f \ \g. galois_connection \ orderA = A, orderB = B, lower = f, upper = g \"
definition upper_adjoint :: "('a, 'c) gorder_scheme \ ('b, 'd) gorder_scheme \ ('b \ 'a) \ bool"where "upper_adjoint A B g \ \f. galois_connection \ orderA = A, orderB = B, lower = f, upper = g \"
lemma lower_adjoint_dual [simp]: "lower_adjoint (inv_gorder A) (inv_gorder B) f = upper_adjoint B A f" by (simp add: lower_adjoint_def upper_adjoint_def)
lemma upper_adjoint_dual [simp]: "upper_adjoint (inv_gorder A) (inv_gorder B) f = lower_adjoint B A f" by (simp add: lower_adjoint_def upper_adjoint_def)
lemma lower_type: "lower_adjoint A B f \ f \ carrier A \ carrier B" by (auto simp add:lower_adjoint_def galois_connection_def galois_connection_axioms_def connection_def)
lemma upper_type: "upper_adjoint A B g \ g \ carrier B \ carrier A" by (auto simp add:upper_adjoint_def galois_connection_def galois_connection_axioms_def connection_def)
subsection‹Composition of Galois connections›
lemma id_galois: "partial_order A \ galois_connection (I\<^sub>g(A))" by (simp add: id_galcon_def galois_connection_def galois_connection_axioms_def connection_def)
lemma comp_galcon_closed: assumes"galois_connection G""galois_connection F""\\<^bsub>F\<^esub> = \\<^bsub>G\<^esub>" shows"galois_connection (G \\<^sub>g F)" proof - interpret F: galois_connection F by (simp add: assms) interpret G: galois_connection G by (simp add: assms)
have"partial_order \\<^bsub>G \\<^sub>g F\<^esub>" by (simp add: F.is_order_A comp_galcon_def) moreoverhave"partial_order \\<^bsub>G \\<^sub>g F\<^esub>" by (simp add: G.is_order_B comp_galcon_def) moreoverhave"\\<^sup>*\<^bsub>G\<^esub> \ \\<^sup>*\<^bsub>F\<^esub> \ carrier \\<^bsub>F\<^esub> \ carrier \\<^bsub>G\<^esub>" using F.lower_closure G.lower_closure assms(3) by auto moreoverhave"\\<^sub>*\<^bsub>F\<^esub> \ \\<^sub>*\<^bsub>G\<^esub> \ carrier \\<^bsub>G\<^esub> \ carrier \\<^bsub>F\<^esub>" using F.upper_closure G.upper_closure assms(3) by auto moreover have"\ x y. \x \ carrier \\<^bsub>F\<^esub>; y \ carrier \\<^bsub>G\<^esub> \ \
(π🚫*🚫G🚫 (π🚫*🚫F🚫 x) ⊑🚫Y🚫G🚫🚫 y) = (x ⊑🚫X🚫F🚫🚫 π🚫*🚫F🚫 (π🚫*🚫G🚫 y))" by (metis F.galois_property F.lower_closure G.galois_property G.upper_closure assms(3) Pi_iff) ultimatelyshow ?thesis by (simp add: comp_galcon_def galois_connection_def galois_connection_axioms_def connection_def) qed
lemma comp_galcon_left_unit [simp]: "I\<^sub>g(\\<^bsub>F\<^esub>) \\<^sub>g F = F" by (simp add: comp_galcon_def id_galcon_def)
lemma galois_connectionI: assumes "partial_order A""partial_order B" "L \ carrier A \ carrier B""R \ carrier B \ carrier A" "isotone A B L""isotone B A R" "\ x y. \ x \ carrier A; y \ carrier B \ \ L x \\<^bsub>B\<^esub> y \ x \\<^bsub>A\<^esub> R y" shows"galois_connection \ orderA = A, orderB = B, lower = L, upper = R \" using assms by (simp add: galois_connection_def connection_def galois_connection_axioms_def)
lemma galois_connectionI': assumes "partial_order A""partial_order B" "L \ carrier A \ carrier B""R \ carrier B \ carrier A" "isotone A B L""isotone B A R" "\ X. X \ carrier(B) \ L(R(X)) \\<^bsub>B\<^esub> X" "\ X. X \ carrier(A) \ X \\<^bsub>A\<^esub> R(L(X))" shows"galois_connection \ orderA = A, orderB = B, lower = L, upper = R \" using assms by (auto simp add: galois_connection_def connection_def galois_connection_axioms_def, (meson PiE isotone_def weak_partial_order.le_trans)+)
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 und die Messung sind noch experimentell.