equal
deleted
inserted
replaced
1120 The following copy of the implication operator is useful for |
1120 The following copy of the implication operator is useful for |
1121 fine-tuning congruence rules. It instructs the simplifier to simplify |
1121 fine-tuning congruence rules. It instructs the simplifier to simplify |
1122 its premise. |
1122 its premise. |
1123 *} |
1123 *} |
1124 |
1124 |
1125 constdefs |
1125 definition simp_implies :: "[prop, prop] => prop" (infixr "=simp=>" 1) where |
1126 simp_implies :: "[prop, prop] => prop" (infixr "=simp=>" 1) |
|
1127 [code del]: "simp_implies \<equiv> op ==>" |
1126 [code del]: "simp_implies \<equiv> op ==>" |
1128 |
1127 |
1129 lemma simp_impliesI: |
1128 lemma simp_impliesI: |
1130 assumes PQ: "(PROP P \<Longrightarrow> PROP Q)" |
1129 assumes PQ: "(PROP P \<Longrightarrow> PROP Q)" |
1131 shows "PROP P =simp=> PROP Q" |
1130 shows "PROP P =simp=> PROP Q" |
1394 val conjunct2 = @{thm conjunct2} |
1393 val conjunct2 = @{thm conjunct2} |
1395 val mp = @{thm mp} |
1394 val mp = @{thm mp} |
1396 ) |
1395 ) |
1397 *} |
1396 *} |
1398 |
1397 |
1399 constdefs |
1398 definition induct_forall where |
1400 induct_forall where "induct_forall P == \<forall>x. P x" |
1399 "induct_forall P == \<forall>x. P x" |
1401 induct_implies where "induct_implies A B == A \<longrightarrow> B" |
1400 |
1402 induct_equal where "induct_equal x y == x = y" |
1401 definition induct_implies where |
1403 induct_conj where "induct_conj A B == A \<and> B" |
1402 "induct_implies A B == A \<longrightarrow> B" |
1404 induct_true where "induct_true == True" |
1403 |
1405 induct_false where "induct_false == False" |
1404 definition induct_equal where |
|
1405 "induct_equal x y == x = y" |
|
1406 |
|
1407 definition induct_conj where |
|
1408 "induct_conj A B == A \<and> B" |
|
1409 |
|
1410 definition induct_true where |
|
1411 "induct_true == True" |
|
1412 |
|
1413 definition induct_false where |
|
1414 "induct_false == False" |
1406 |
1415 |
1407 lemma induct_forall_eq: "(!!x. P x) == Trueprop (induct_forall (\<lambda>x. P x))" |
1416 lemma induct_forall_eq: "(!!x. P x) == Trueprop (induct_forall (\<lambda>x. P x))" |
1408 by (unfold atomize_all induct_forall_def) |
1417 by (unfold atomize_all induct_forall_def) |
1409 |
1418 |
1410 lemma induct_implies_eq: "(A ==> B) == Trueprop (induct_implies A B)" |
1419 lemma induct_implies_eq: "(A ==> B) == Trueprop (induct_implies A B)" |