src/HOLCF/Cfun3.ML
changeset 10230 5eb935d6cc69
parent 9248 e1dee89de037
child 10834 a7897aebbffc
equal deleted inserted replaced
10229:10e2d29a77de 10230:5eb935d6cc69
   333 by (rtac (minimal RS monofun_cfun_arg) 1);
   333 by (rtac (minimal RS monofun_cfun_arg) 1);
   334 qed "iso_strict";
   334 qed "iso_strict";
   335 
   335 
   336 
   336 
   337 Goal "[|!x. rep`(ab`x)=x;!y. ab`(rep`y)=y; z~=UU|] ==> rep`z ~= UU";
   337 Goal "[|!x. rep`(ab`x)=x;!y. ab`(rep`y)=y; z~=UU|] ==> rep`z ~= UU";
   338 by (etac swap 1);
   338 by (etac contrapos_nn 1);
   339 by (dtac notnotD 1);
       
   340 by (dres_inst_tac [("f","ab")] cfun_arg_cong 1);
   339 by (dres_inst_tac [("f","ab")] cfun_arg_cong 1);
   341 by (etac box_equals 1);
   340 by (etac box_equals 1);
   342 by (fast_tac HOL_cs 1);
   341 by (fast_tac HOL_cs 1);
   343 by (etac (iso_strict RS conjunct1) 1);
   342 by (etac (iso_strict RS conjunct1) 1);
   344 by (atac 1);
   343 by (atac 1);
   345 qed "isorep_defined";
   344 qed "isorep_defined";
   346 
   345 
   347 Goal "[|!x. rep`(ab`x) = x;!y. ab`(rep`y)=y ; z~=UU|] ==> ab`z ~= UU";
   346 Goal "[|!x. rep`(ab`x) = x;!y. ab`(rep`y)=y ; z~=UU|] ==> ab`z ~= UU";
   348 by (etac swap 1);
   347 by (etac contrapos_nn 1);
   349 by (dtac notnotD 1);
       
   350 by (dres_inst_tac [("f","rep")] cfun_arg_cong 1);
   348 by (dres_inst_tac [("f","rep")] cfun_arg_cong 1);
   351 by (etac box_equals 1);
   349 by (etac box_equals 1);
   352 by (fast_tac HOL_cs 1);
   350 by (fast_tac HOL_cs 1);
   353 by (etac (iso_strict RS conjunct2) 1);
   351 by (etac (iso_strict RS conjunct2) 1);
   354 by (atac 1);
   352 by (atac 1);