equal
deleted
inserted
replaced
27 |
27 |
28 qed_goalw "QPair_iff" QPair.thy [QPair_def] |
28 qed_goalw "QPair_iff" QPair.thy [QPair_def] |
29 "<a;b> = <c;d> <-> a=c & b=d" |
29 "<a;b> = <c;d> <-> a=c & b=d" |
30 (fn _=> [rtac sum_equal_iff 1]); |
30 (fn _=> [rtac sum_equal_iff 1]); |
31 |
31 |
32 val QPair_inject = standard (QPair_iff RS iffD1 RS conjE); |
32 bind_thm ("QPair_inject", (QPair_iff RS iffD1 RS conjE)); |
33 |
33 |
34 qed_goal "QPair_inject1" QPair.thy "<a;b> = <c;d> ==> a=c" |
34 qed_goal "QPair_inject1" QPair.thy "<a;b> = <c;d> ==> a=c" |
35 (fn [major]=> |
35 (fn [major]=> |
36 [ (rtac (major RS QPair_inject) 1), (assume_tac 1) ]); |
36 [ (rtac (major RS QPair_inject) 1), (assume_tac 1) ]); |
37 |
37 |
201 by (simp_tac (ZF_ss addsimps [QPair_iff, one_not_0]) 1); |
201 by (simp_tac (ZF_ss addsimps [QPair_iff, one_not_0]) 1); |
202 qed "QInr_QInl_iff"; |
202 qed "QInr_QInl_iff"; |
203 |
203 |
204 (*Injection and freeness rules*) |
204 (*Injection and freeness rules*) |
205 |
205 |
206 val QInl_inject = standard (QInl_iff RS iffD1); |
206 bind_thm ("QInl_inject", (QInl_iff RS iffD1)); |
207 val QInr_inject = standard (QInr_iff RS iffD1); |
207 bind_thm ("QInr_inject", (QInr_iff RS iffD1)); |
208 val QInl_neq_QInr = standard (QInl_QInr_iff RS iffD1 RS FalseE); |
208 bind_thm ("QInl_neq_QInr", (QInl_QInr_iff RS iffD1 RS FalseE)); |
209 val QInr_neq_QInl = standard (QInr_QInl_iff RS iffD1 RS FalseE); |
209 bind_thm ("QInr_neq_QInl", (QInr_QInl_iff RS iffD1 RS FalseE)); |
210 |
210 |
211 val qsum_cs = |
211 val qsum_cs = |
212 qpair_cs addSIs [PartI, QInlI, QInrI] |
212 qpair_cs addSIs [PartI, QInlI, QInrI] |
213 addSEs [PartE, qsumE, QInl_neq_QInr, QInr_neq_QInl] |
213 addSEs [PartE, qsumE, QInl_neq_QInr, QInr_neq_QInl] |
214 addSDs [QInl_inject, QInr_inject]; |
214 addSDs [QInl_inject, QInr_inject]; |