lemma ssumE [case_names bottom sinl sinr, cases type: ssum]: obtains"p = ⊥"
| x where"p = sinl⋅x"and"x ≠⊥"
| y where"p = sinr⋅y"and"y ≠⊥" using Rep_ssum [of p] by (auto simp add: ssum_def Rep_ssum_simps)
lemma ssum_induct [case_names bottom sinl sinr, induct type: ssum]: "[P ⊥; ∧x. x ≠⊥==> P (sinl⋅x); ∧y. y ≠⊥==> P (sinr⋅y)]==> P x" by (cases x) simp_all
lemma ssumE2 [case_names sinl sinr]: "[∧x. p = sinl⋅x ==> Q; ∧y. p = sinr⋅y ==> Q]==> Q" by (cases p, simp only: sinl_strict [symmetric], simp, simp)
lemma below_sinlD: "p ⊑ sinl⋅x ==>∃y. p = sinl⋅y ∧ y ⊑ x" by (cases p, rule_tac x="⊥"in exI, simp_all)
lemma below_sinrD: "p ⊑ sinr⋅x ==>∃y. p = sinr⋅y ∧ y ⊑ x" by (cases p, rule_tac x="⊥"in exI, simp_all)
subsection‹Case analysis combinator›
definition sscase :: "('a::pcpo → 'c::pcpo) → ('b::pcpo → 'c) → ('a ++ 'b) → 'c" where"sscase = (Λ f g s. (λ(t, x, y). If t then f⋅x else g⋅y) (Rep_ssum s))"
translations "case s of XCONST sinl⋅x ==> t1 | XCONST sinr⋅y ==> t2"⇌"CONST sscase⋅(Λ x. t1)⋅(Λ y. t2)⋅s" "case s of (XCONST sinl :: 'a)⋅x ==> t1 | XCONST sinr⋅y ==> t2"⇀"CONST sscase⋅(Λ x. t1)⋅(Λ y. t2)⋅s"
¤ 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.11Bemerkung:
(vorverarbeitet am 2026-06-09)
¤
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.