equal
deleted
inserted
replaced
245 text {* |
245 text {* |
246 \medskip Equivalence of @{prop "p ---> q"} and @{prop "p ===> q"}. |
246 \medskip Equivalence of @{prop "p ---> q"} and @{prop "p ===> q"}. |
247 *} |
247 *} |
248 |
248 |
249 lemma contract_imp_parcontract: "p-1->q ==> p=1=>q" |
249 lemma contract_imp_parcontract: "p-1->q ==> p=1=>q" |
250 by (erule contract.induct) auto |
250 by (induct set: contract) auto |
251 |
251 |
252 lemma reduce_imp_parreduce: "p--->q ==> p===>q" |
252 lemma reduce_imp_parreduce: "p--->q ==> p===>q" |
253 apply (frule rtrancl_type [THEN subsetD, THEN SigmaD1]) |
253 apply (frule rtrancl_type [THEN subsetD, THEN SigmaD1]) |
254 apply (drule field_contract_eq [THEN equalityD1, THEN subsetD]) |
254 apply (drule field_contract_eq [THEN equalityD1, THEN subsetD]) |
255 apply (erule rtrancl_induct) |
255 apply (erule rtrancl_induct) |
257 apply (blast intro: contract_imp_parcontract r_into_trancl |
257 apply (blast intro: contract_imp_parcontract r_into_trancl |
258 trans_trancl [THEN transD]) |
258 trans_trancl [THEN transD]) |
259 done |
259 done |
260 |
260 |
261 lemma parcontract_imp_reduce: "p=1=>q ==> p--->q" |
261 lemma parcontract_imp_reduce: "p=1=>q ==> p--->q" |
262 apply (erule parcontract.induct) |
262 apply (induct set: parcontract) |
263 apply (blast intro: reduction_rls) |
263 apply (blast intro: reduction_rls) |
264 apply (blast intro: reduction_rls) |
264 apply (blast intro: reduction_rls) |
265 apply (blast intro: reduction_rls) |
265 apply (blast intro: reduction_rls) |
266 apply (blast intro: trans_rtrancl [THEN transD] |
266 apply (blast intro: trans_rtrancl [THEN transD] |
267 Ap_reduce1 Ap_reduce2 parcontract_combD1 parcontract_combD2) |
267 Ap_reduce1 Ap_reduce2 parcontract_combD1 parcontract_combD2) |