equal
deleted
inserted
replaced
168 by (erule lift_definedE, simp) |
168 by (erule lift_definedE, simp) |
169 |
169 |
170 lemma flift2_defined_iff [simp]: "(flift2 f\<cdot>x = \<bottom>) = (x = \<bottom>)" |
170 lemma flift2_defined_iff [simp]: "(flift2 f\<cdot>x = \<bottom>) = (x = \<bottom>)" |
171 by (cases x, simp_all) |
171 by (cases x, simp_all) |
172 |
172 |
173 text {* |
|
174 \medskip Extension of @{text cont_tac} and installation of simplifier. |
|
175 *} |
|
176 |
|
177 lemmas cont_lemmas_ext = |
|
178 cont2cont_flift1 cont2cont_lift_case cont2cont_lambda |
|
179 cont_Rep_CFun_app cont_Rep_CFun_app_app cont_if |
|
180 |
|
181 ML {* |
|
182 local |
|
183 val cont_lemmas2 = thms "cont_lemmas1" @ thms "cont_lemmas_ext"; |
|
184 val flift1_def = thm "flift1_def"; |
|
185 in |
|
186 |
|
187 fun cont_tac i = resolve_tac cont_lemmas2 i; |
|
188 fun cont_tacR i = REPEAT (cont_tac i); |
|
189 |
|
190 fun cont_tacRs ss i = |
|
191 simp_tac ss i THEN |
|
192 REPEAT (cont_tac i) |
|
193 end; |
|
194 *} |
|
195 |
173 |
196 subsection {* Lifted countable types are bifinite *} |
174 subsection {* Lifted countable types are bifinite *} |
197 |
175 |
198 instantiation lift :: (countable) bifinite |
176 instantiation lift :: (countable) bifinite |
199 begin |
177 begin |