src/HOLCF/Fixrec.thy
changeset 16401 57c35ede00b9
parent 16229 77cae9c8e73e
child 16417 9bc16273c2d4
equal deleted inserted replaced
16400:f2ab5797bbd0 16401:57c35ede00b9
   132 lemma match_up_simps [simp]:
   132 lemma match_up_simps [simp]:
   133   "match_up\<cdot>(up\<cdot>x) = return\<cdot>x"
   133   "match_up\<cdot>(up\<cdot>x) = return\<cdot>x"
   134   "match_up\<cdot>\<bottom> = \<bottom>"
   134   "match_up\<cdot>\<bottom> = \<bottom>"
   135 by (simp_all add: match_up_def)
   135 by (simp_all add: match_up_def)
   136 
   136 
       
   137 subsection {* Mutual recursion *}
       
   138 
       
   139 text {*
       
   140   The following rules are used to prove unfolding theorems from
       
   141   fixed-point definitions of mutually recursive functions.
       
   142 *}
       
   143 
       
   144 lemma cpair_equalI: "\<lbrakk>x \<equiv> cfst\<cdot>p; y \<equiv> csnd\<cdot>p\<rbrakk> \<Longrightarrow> <x,y> \<equiv> p"
       
   145 by (simp add: surjective_pairing_Cprod2)
       
   146 
       
   147 lemma cpair_eqD1: "<x,y> = <x',y'> \<Longrightarrow> x = x'"
       
   148 by simp
       
   149 
       
   150 lemma cpair_eqD2: "<x,y> = <x',y'> \<Longrightarrow> y = y'"
       
   151 by simp
       
   152 
       
   153 ML {*
       
   154 val cpair_equalI = thm "cpair_equalI";
       
   155 val cpair_eqD1 = thm "cpair_eqD1";
       
   156 val cpair_eqD2 = thm "cpair_eqD2";
       
   157 *}
   137 
   158 
   138 subsection {* Intitializing the fixrec package *}
   159 subsection {* Intitializing the fixrec package *}
   139 
   160 
   140 use "fixrec_package.ML"
   161 use "fixrec_package.ML"
   141 
   162