236 |
236 |
237 (*These two are specialized, but imp_disj_not1 is useful in Auth/Yahalom.ML*) |
237 (*These two are specialized, but imp_disj_not1 is useful in Auth/Yahalom.ML*) |
238 prove "imp_disj_not1" "((P --> Q | R)) = (~Q --> P --> R)"; |
238 prove "imp_disj_not1" "((P --> Q | R)) = (~Q --> P --> R)"; |
239 prove "imp_disj_not2" "((P --> Q | R)) = (~R --> P --> Q)"; |
239 prove "imp_disj_not2" "((P --> Q | R)) = (~R --> P --> Q)"; |
240 |
240 |
|
241 prove "imp_disj1" "((P-->Q)|R) = (P--> Q|R)"; |
|
242 prove "imp_disj2" "(Q|(P-->R)) = (P--> Q|R)"; |
|
243 |
241 prove "de_Morgan_disj" "(~(P | Q)) = (~P & ~Q)"; |
244 prove "de_Morgan_disj" "(~(P | Q)) = (~P & ~Q)"; |
242 prove "de_Morgan_conj" "(~(P & Q)) = (~P | ~Q)"; |
245 prove "de_Morgan_conj" "(~(P & Q)) = (~P | ~Q)"; |
243 prove "not_imp" "(~(P --> Q)) = (P & ~Q)"; |
246 prove "not_imp" "(~(P --> Q)) = (P & ~Q)"; |
244 prove "not_iff" "(P~=Q) = (P = (~Q))"; |
247 prove "not_iff" "(P~=Q) = (P = (~Q))"; |
245 |
248 |
369 HOL_basic_ss addsimps |
372 HOL_basic_ss addsimps |
370 ([triv_forall_equality, (* prunes params *) |
373 ([triv_forall_equality, (* prunes params *) |
371 True_implies_equals, (* prune asms `True' *) |
374 True_implies_equals, (* prune asms `True' *) |
372 if_True, if_False, if_cancel, |
375 if_True, if_False, if_cancel, |
373 o_apply, imp_disjL, conj_assoc, disj_assoc, |
376 o_apply, imp_disjL, conj_assoc, disj_assoc, |
374 de_Morgan_conj, de_Morgan_disj, not_imp, |
377 de_Morgan_conj, de_Morgan_disj, imp_disj1, imp_disj2, not_imp, |
375 not_all, not_ex, cases_simp] |
378 not_all, not_ex, cases_simp] |
376 @ ex_simps @ all_simps @ simp_thms) |
379 @ ex_simps @ all_simps @ simp_thms) |
377 addsimprocs [defEX_regroup] |
380 addsimprocs [defEX_regroup] |
378 addcongs [imp_cong]; |
381 addcongs [imp_cong]; |
379 |
382 |