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 Grp_id_mono_subst: "(\x y. Grp P id x y \ Grp Q id (f x) (f y)) \
(\<And>x. x \<in> P \<Longrightarrow> f x \<in> Q)" unfolding Grp_def by rule auto
lemma vimage2p_mono: "vimage2p f g R x y \ R \ S \ vimage2p f g S x y" unfolding vimage2p_def by blast
lemma vimage2p_refl: "(\x. R x x) \ vimage2p f f R x x" unfolding vimage2p_def by auto
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 ist noch experimentell.