src/HOLCF/Ssum0.ML
changeset 4833 2e53109d4bc8
parent 4535 f24cebc299e4
child 8161 bde1391fd0a5
equal deleted inserted replaced
4832:bc11b5b06f87 4833:2e53109d4bc8
    28         (rtac disjI2 1),
    28         (rtac disjI2 1),
    29         (rtac exI 1),
    29         (rtac exI 1),
    30         (rtac refl 1)
    30         (rtac refl 1)
    31         ]);
    31         ]);
    32 
    32 
    33 qed_goal "inj_onto_Abs_Ssum" Ssum0.thy "inj_onto Abs_Ssum Ssum"
    33 qed_goal "inj_on_Abs_Ssum" Ssum0.thy "inj_on Abs_Ssum Ssum"
    34 (fn prems =>
    34 (fn prems =>
    35         [
    35         [
    36         (rtac inj_onto_inverseI 1),
    36         (rtac inj_on_inverseI 1),
    37         (etac Abs_Ssum_inverse 1)
    37         (etac Abs_Ssum_inverse 1)
    38         ]);
    38         ]);
    39 
    39 
    40 (* ------------------------------------------------------------------------ *)
    40 (* ------------------------------------------------------------------------ *)
    41 (* Strictness of Sinr_Rep, Sinl_Rep and Isinl, Isinr                        *)
    41 (* Strictness of Sinr_Rep, Sinl_Rep and Isinl, Isinr                        *)
    87         "Isinl(a)=Isinr(b) ==> a=UU & b=UU"
    87         "Isinl(a)=Isinr(b) ==> a=UU & b=UU"
    88  (fn prems =>
    88  (fn prems =>
    89         [
    89         [
    90         (cut_facts_tac prems 1),
    90         (cut_facts_tac prems 1),
    91         (rtac noteq_SinlSinr_Rep 1),
    91         (rtac noteq_SinlSinr_Rep 1),
    92         (etac (inj_onto_Abs_Ssum  RS inj_ontoD) 1),
    92         (etac (inj_on_Abs_Ssum  RS inj_onD) 1),
    93         (rtac SsumIl 1),
    93         (rtac SsumIl 1),
    94         (rtac SsumIr 1)
    94         (rtac SsumIr 1)
    95         ]);
    95         ]);
    96 
    96 
    97 
    97 
   182 "Isinl(a1)=Isinl(a2)==> a1=a2"
   182 "Isinl(a1)=Isinl(a2)==> a1=a2"
   183  (fn prems =>
   183  (fn prems =>
   184         [
   184         [
   185         (cut_facts_tac prems 1),
   185         (cut_facts_tac prems 1),
   186         (rtac inject_Sinl_Rep 1),
   186         (rtac inject_Sinl_Rep 1),
   187         (etac (inj_onto_Abs_Ssum  RS inj_ontoD) 1),
   187         (etac (inj_on_Abs_Ssum  RS inj_onD) 1),
   188         (rtac SsumIl 1),
   188         (rtac SsumIl 1),
   189         (rtac SsumIl 1)
   189         (rtac SsumIl 1)
   190         ]);
   190         ]);
   191 
   191 
   192 qed_goalw "inject_Isinr" Ssum0.thy [Isinr_def]
   192 qed_goalw "inject_Isinr" Ssum0.thy [Isinr_def]
   193 "Isinr(b1)=Isinr(b2) ==> b1=b2"
   193 "Isinr(b1)=Isinr(b2) ==> b1=b2"
   194  (fn prems =>
   194  (fn prems =>
   195         [
   195         [
   196         (cut_facts_tac prems 1),
   196         (cut_facts_tac prems 1),
   197         (rtac inject_Sinr_Rep 1),
   197         (rtac inject_Sinr_Rep 1),
   198         (etac (inj_onto_Abs_Ssum  RS inj_ontoD) 1),
   198         (etac (inj_on_Abs_Ssum  RS inj_onD) 1),
   199         (rtac SsumIr 1),
   199         (rtac SsumIr 1),
   200         (rtac SsumIr 1)
   200         (rtac SsumIr 1)
   201         ]);
   201         ]);
   202 
   202 
   203 qed_goal "inject_Isinl_rev" Ssum0.thy  
   203 qed_goal "inject_Isinl_rev" Ssum0.thy