src/HOL/Tools/BNF/bnf_util.ML
changeset 62124 d0dff7a80c26
parent 61270 28eb608b9b59
child 62324 ae44f16dcea5
equal deleted inserted replaced
62123:df65f5c27c15 62124:d0dff7a80c26
    84 
    84 
    85   val mk_conjIN: int -> thm
    85   val mk_conjIN: int -> thm
    86   val mk_nthI: int -> int -> thm
    86   val mk_nthI: int -> int -> thm
    87   val mk_nth_conv: int -> int -> thm
    87   val mk_nth_conv: int -> int -> thm
    88   val mk_ordLeq_csum: int -> int -> thm -> thm
    88   val mk_ordLeq_csum: int -> int -> thm -> thm
       
    89   val mk_pointful: Proof.context -> thm -> thm
    89   val mk_rel_funDN: int -> thm -> thm
    90   val mk_rel_funDN: int -> thm -> thm
    90   val mk_rel_funDN_rotated: int -> thm -> thm
    91   val mk_rel_funDN_rotated: int -> thm -> thm
    91   val mk_sym: thm -> thm
    92   val mk_sym: thm -> thm
    92   val mk_trans: thm -> thm -> thm
    93   val mk_trans: thm -> thm -> thm
    93   val mk_UnIN: int -> int -> thm
    94   val mk_UnIN: int -> int -> thm
   358 val mk_transp =  mk_pred @{const_name transp};
   359 val mk_transp =  mk_pred @{const_name transp};
   359 
   360 
   360 fun mk_trans thm1 thm2 = trans OF [thm1, thm2];
   361 fun mk_trans thm1 thm2 = trans OF [thm1, thm2];
   361 fun mk_sym thm = thm RS sym;
   362 fun mk_sym thm = thm RS sym;
   362 
   363 
   363 (*TODO: antiquote heavily used theorems once*)
       
   364 val prod_injectD = @{thm iffD1[OF prod.inject]};
   364 val prod_injectD = @{thm iffD1[OF prod.inject]};
   365 val prod_injectI = @{thm iffD2[OF prod.inject]};
   365 val prod_injectI = @{thm iffD2[OF prod.inject]};
   366 val ctrans = @{thm ordLeq_transitive};
   366 val ctrans = @{thm ordLeq_transitive};
   367 val id_apply = @{thm id_apply};
   367 val id_apply = @{thm id_apply};
   368 val meta_mp = @{thm meta_mp};
   368 val meta_mp = @{thm meta_mp};
   372 val rel_funI = @{thm rel_funI};
   372 val rel_funI = @{thm rel_funI};
   373 val set_mp = @{thm set_mp};
   373 val set_mp = @{thm set_mp};
   374 val set_rev_mp = @{thm set_rev_mp};
   374 val set_rev_mp = @{thm set_rev_mp};
   375 val subset_UNIV = @{thm subset_UNIV};
   375 val subset_UNIV = @{thm subset_UNIV};
   376 
   376 
       
   377 fun mk_pointful ctxt thm = unfold_thms ctxt [o_apply] (thm RS fun_cong);
       
   378 
   377 fun mk_nthN 1 t 1 = t
   379 fun mk_nthN 1 t 1 = t
   378   | mk_nthN _ t 1 = HOLogic.mk_fst t
   380   | mk_nthN _ t 1 = HOLogic.mk_fst t
   379   | mk_nthN 2 t 2 = HOLogic.mk_snd t
   381   | mk_nthN 2 t 2 = HOLogic.mk_snd t
   380   | mk_nthN n t m = mk_nthN (n - 1) (HOLogic.mk_snd t) (m - 1);
   382   | mk_nthN n t m = mk_nthN (n - 1) (HOLogic.mk_snd t) (m - 1);
   381 
   383