src/HOLCF/Lift.thy
changeset 35948 5e7909f0346b
parent 32149 ef59550a55d3
child 36452 d37c6eed8117
equal deleted inserted replaced
35947:dc36cd801694 35948:5e7909f0346b
   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