src/HOL/Library/Quotient_Product.thy
changeset 47635 ebb79474262c
parent 47634 091bcd569441
child 47777 f29e7dcd7c40
equal deleted inserted replaced
47634:091bcd569441 47635:ebb79474262c
    51 lemma bi_unique_prod_rel [transfer_rule]:
    51 lemma bi_unique_prod_rel [transfer_rule]:
    52   assumes "bi_unique R1" and "bi_unique R2"
    52   assumes "bi_unique R1" and "bi_unique R2"
    53   shows "bi_unique (prod_rel R1 R2)"
    53   shows "bi_unique (prod_rel R1 R2)"
    54   using assms unfolding bi_unique_def prod_rel_def by auto
    54   using assms unfolding bi_unique_def prod_rel_def by auto
    55 
    55 
    56 subsection {* Correspondence rules for transfer package *}
    56 subsection {* Transfer rules for transfer package *}
    57 
    57 
    58 lemma Pair_transfer [transfer_rule]: "(A ===> B ===> prod_rel A B) Pair Pair"
    58 lemma Pair_transfer [transfer_rule]: "(A ===> B ===> prod_rel A B) Pair Pair"
    59   unfolding fun_rel_def prod_rel_def by simp
    59   unfolding fun_rel_def prod_rel_def by simp
    60 
    60 
    61 lemma fst_transfer [transfer_rule]: "(prod_rel A B ===> A) fst fst"
    61 lemma fst_transfer [transfer_rule]: "(prod_rel A B ===> A) fst fst"
    68   "((A ===> B ===> C) ===> prod_rel A B ===> C) prod_case prod_case"
    68   "((A ===> B ===> C) ===> prod_rel A B ===> C) prod_case prod_case"
    69   unfolding fun_rel_def prod_rel_def by simp
    69   unfolding fun_rel_def prod_rel_def by simp
    70 
    70 
    71 lemma curry_transfer [transfer_rule]:
    71 lemma curry_transfer [transfer_rule]:
    72   "((prod_rel A B ===> C) ===> A ===> B ===> C) curry curry"
    72   "((prod_rel A B ===> C) ===> A ===> B ===> C) curry curry"
    73   unfolding curry_def by correspondence
    73   unfolding curry_def by transfer_prover
    74 
    74 
    75 lemma map_pair_transfer [transfer_rule]:
    75 lemma map_pair_transfer [transfer_rule]:
    76   "((A ===> C) ===> (B ===> D) ===> prod_rel A B ===> prod_rel C D)
    76   "((A ===> C) ===> (B ===> D) ===> prod_rel A B ===> prod_rel C D)
    77     map_pair map_pair"
    77     map_pair map_pair"
    78   unfolding map_pair_def [abs_def] by correspondence
    78   unfolding map_pair_def [abs_def] by transfer_prover
    79 
    79 
    80 lemma prod_rel_transfer [transfer_rule]:
    80 lemma prod_rel_transfer [transfer_rule]:
    81   "((A ===> B ===> op =) ===> (C ===> D ===> op =) ===>
    81   "((A ===> B ===> op =) ===> (C ===> D ===> op =) ===>
    82     prod_rel A C ===> prod_rel B D ===> op =) prod_rel prod_rel"
    82     prod_rel A C ===> prod_rel B D ===> op =) prod_rel prod_rel"
    83   unfolding fun_rel_def by auto
    83   unfolding fun_rel_def by auto