lemma case_unit_Unity: "(case u of () ==> f) = f" by (cases u) (hypsubst, rule unit.case)
lemma case_prod_Pair_iden: "(case p of (x, y) ==> (x, y)) = p" by simp
lemma unit_all_impI: "(P () ==> Q ()) ==>∀x. P x ⟶ Q x" by simp
lemma pointfree_idE: "f ∘ g = id ==> f (g x) = x" unfolding comp_def fun_eq_iff by simp
lemma o_bij: assumes gf: "g ∘ f = id"and fg: "f ∘ g = id" shows"bij f" unfolding bij_def inj_on_def surj_def proof safe fix a1 a2 assume"f a1 = f a2" hence"g ( f a1) = g (f a2)"by simp thus"a1 = a2"using gf unfolding fun_eq_iff by simp next fix b have"b = f (g b)" using fg unfolding fun_eq_iff by simp thus"∃a. b = f a"by blast qed
lemma case_sum_step: "case_sum (case_sum f' g') g (Inl p) = case_sum f' g' p" "case_sum f (case_sum f' g') (Inr p) = case_sum f' g' p" by auto
lemma obj_one_pointE: "∀x. s = x ⟶ P ==> P" by blast
lemma type_copy_obj_one_point_absE: assumes"type_definition Rep Abs UNIV""∀x. s = Abs x ⟶ P"shows P using type_definition.Rep_inverse[OF assms(1)] by (intro mp[OF spec[OF assms(2), of "Rep s"]]) simp
lemma obj_sumE_f: assumes"∀x. s = f (Inl x) ⟶ P""∀x. s = f (Inr x) ⟶ P" shows"∀x. s = f x ⟶ P" proof fix x from assms show"s = f x ⟶ P"by (cases x) auto qed
lemma case_sum_if: "case_sum f g (if p then Inl x else Inr y) = (if p then f x else g y)" by simp
lemma vimage2p_rel_fun: "rel_fun (vimage2p f g R) R f g" unfolding rel_fun_def vimage2p_def by auto
lemma fun_cong_unused_0: "f = (λx. g) ==> f (λx. 0) = g" by (erule arg_cong)
lemma inj_on_convol_ident: "inj_on (λx. (x, f x)) X" unfolding inj_on_def by simp
lemma map_sum_if_distrib_then: "∧f g e x y. map_sum f g (if e then Inl x else y) = (if e then Inl (f x) else map_sum f g y)" "∧f g e x y. map_sum f g (if e then Inr x else y) = (if e then Inr (g x) else map_sum f g y)" by simp_all
lemma map_sum_if_distrib_else: "∧f g e x y. map_sum f g (if e then x else Inl y) = (if e then map_sum f g x else Inl (f y))" "∧f g e x y. map_sum f g (if e then x else Inr y) = (if e then map_sum f g x else Inr (g y))" by simp_all
lemma case_prod_app: "case_prod f x y = case_prod (λl r. f l r y) x" by (cases x) simp
lemma case_sum_map_sum: "case_sum l r (map_sum f g x) = case_sum (l ∘ f) (r ∘ g) x" by (cases x) simp_all
lemma case_sum_transfer: "rel_fun (rel_fun R T) (rel_fun (rel_fun S T) (rel_fun (rel_sum R S) T)) case_sum case_sum" unfolding rel_fun_def by (auto split: sum.splits)
lemma case_prod_map_prod: "case_prod h (map_prod f g x) = case_prod (λl r. h (f l) (g r)) x" by (cases x) simp_all
lemma case_prod_o_map_prod: "case_prod f ∘ map_prod g1 g2 = case_prod (λl r. f (g1 l) (g2 r))" unfolding comp_def by auto
lemma case_prod_transfer: "(rel_fun (rel_fun A (rel_fun B C)) (rel_fun (rel_prod A B) C)) case_prod case_prod" unfolding rel_fun_def by simp
lemma eq_ifI: "(P ⟶ t = u1) ==> (¬ P ⟶ t = u2) ==> t = (if P then u1 else u2)" by simp
lemma comp_transfer: "rel_fun (rel_fun B C) (rel_fun (rel_fun A B) (rel_fun A C)) (∘) (∘)" unfolding rel_fun_def by simp
lemma If_transfer: "rel_fun (=) (rel_fun A (rel_fun A A)) If If" unfolding rel_fun_def by simp
lemma Inl_transfer: "rel_fun S (rel_sum S T) Inl Inl" by auto
lemma Inr_transfer: "rel_fun T (rel_sum S T) Inr Inr" by auto
lemma Pair_transfer: "rel_fun A (rel_fun B (rel_prod A B)) Pair Pair" unfolding rel_fun_def by simp
lemma eq_onp_live_step: "x = y ==> eq_onp P a a ∧ x ⟷ P a ∧ y" by (simp only: eq_onp_same_args)
lemma top_conj: "top x ∧ P ⟷ P""P ∧ top x ⟷ P" by blast+
lemma fst_convol': "fst (⟨f, g⟩ x) = f x" using fst_convol unfolding convol_def by simp
lemma snd_convol': "snd (⟨f, g⟩ x) = g x" using snd_convol unfolding convol_def by simp
lemma convol_expand_snd: "fst ∘ f = g ==>⟨g, snd ∘ f⟩ = f" unfolding convol_def by auto
lemma convol_expand_snd': assumes"(fst ∘ f = g)" shows"h = snd ∘ f ⟷⟨g, h⟩ = f" proof - from assms have *: "⟨g, snd ∘ f⟩ = f"by (rule convol_expand_snd) thenhave"h = snd ∘ f ⟷ h = snd ∘⟨g, snd ∘ f⟩"by simp moreoverhave"…⟷ h = snd ∘ f"by (simp add: snd_convol) moreoverhave"…⟷⟨g, h⟩ = f"by (subst (2) *[symmetric]) (auto simp: convol_def fun_eq_iff) ultimatelyshow ?thesis by simp qed
lemma case_sum_expand_Inr_pointfree: "f ∘ Inl = g ==> case_sum g (f ∘ Inr) = f" by (auto split: sum.splits)
lemma case_sum_expand_Inr': "f ∘ Inl = g ==> h = f ∘ Inr ⟷ case_sum g h = f" by (rule iffI) (auto simp add: fun_eq_iff split: sum.splits)
lemma case_sum_expand_Inr: "f ∘ Inl = g ==> f x = case_sum g (f ∘ Inr) x" by (auto split: sum.splits)
lemma id_transfer: "rel_fun A A id id" unfolding rel_fun_def by simp
lemma fst_transfer: "rel_fun (rel_prod A B) A fst fst" unfolding rel_fun_def by simp
lemma snd_transfer: "rel_fun (rel_prod A B) B snd snd" unfolding rel_fun_def by simp
lemma convol_transfer: "rel_fun (rel_fun R S) (rel_fun (rel_fun R T) (rel_fun R (rel_prod S T))) BNF_Def.convol BNF_Def.convol" unfolding rel_fun_def convol_def by auto
lemma Let_const: "Let x (λ_. c) = c" unfolding Let_def ..
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.