equal
deleted
inserted
replaced
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 |