(* Title: HOL/Basic_BNF_LFPs.thy Author: Jasmin Blanchette, TU Muenchen Copyright 2014 Registration of basic types as BNF least fixpoints (datatypes). *)
theory Basic_BNF_LFPs imports BNF_Least_Fixpoint begin
lemma eq_fst_iff: "a = fst p ⟷ (∃b. p = (a, b))" by (cases p) auto
lemma eq_snd_iff: "b = snd p ⟷ (∃a. p = (a, b))" by (cases p) auto
lemma ex_neg_all_pos: "((∃x. P x) ==> Q) ≡ (∧x. P x ==> Q)" by standard blast+
lemma hypsubst_in_prems: "(∧x. y = x ==> z = f x ==> P) ≡ (z = f y ==> P)" by standard blast+
lemma isl_map_sum: "isl (map_sum f g s) = isl s" by (cases s) simp_all
lemma map_sum_sel: "isl s ==> projl (map_sum f g s) = f (projl s)" "¬ isl s ==> projr (map_sum f g s) = g (projr s)" by (cases s; simp)+
lemma set_sum_sel: "isl s ==> projl s ∈ setl s" "¬ isl s ==> projr s ∈ setr s" by (cases s; auto intro: setl.intros setr.intros)+
lemma rel_sum_sel: "rel_sum R1 R2 a b = (isl a = isl b ∧ (isl a ⟶ isl b ⟶ R1 (projl a) (projl b)) ∧ (¬ isl a ⟶¬ isl b ⟶ R2 (projr a) (projr b)))" by (cases a b rule: sum.exhaust[case_product sum.exhaust]) simp_all
lemma isl_transfer: "rel_fun (rel_sum A B) (=) isl isl" unfolding rel_fun_def rel_sum_sel by simp
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.