equal
deleted
inserted
replaced
1122 |
1122 |
1123 lemma Let_unfold: "f x \<equiv> g \<Longrightarrow> Let x f \<equiv> g" |
1123 lemma Let_unfold: "f x \<equiv> g \<Longrightarrow> Let x f \<equiv> g" |
1124 by (unfold Let_def) |
1124 by (unfold Let_def) |
1125 |
1125 |
1126 text {* |
1126 text {* |
1127 The following copy of the implication operator is useful for |
1127 The following copy of the implication operator is useful for |
1128 fine-tuning congruence rules. |
1128 fine-tuning congruence rules. It instructs the simplifier to simplify |
|
1129 its premise. |
1129 *} |
1130 *} |
1130 |
1131 |
1131 consts |
1132 consts |
1132 simp_implies :: "[prop, prop] => prop" ("(_/ =simp=> _)" [2, 1] 1) |
1133 "=simp=>" :: "[prop, prop] => prop" (infixr 1) |
1133 defs simp_implies_def: "simp_implies \<equiv> op ==>" |
1134 (* |
|
1135 "op =simp=>" :: "[prop, prop] => prop" ("(_/ =simp=> _)" [2, 1] 1) |
|
1136 syntax |
|
1137 "op =simp=>" :: "[prop, prop] => prop" ("op =simp=>") |
|
1138 *) |
|
1139 defs simp_implies_def: "op =simp=> \<equiv> op ==>" |
1134 |
1140 |
1135 lemma simp_impliesI: |
1141 lemma simp_impliesI: |
1136 assumes PQ: "(PROP P \<Longrightarrow> PROP Q)" |
1142 assumes PQ: "(PROP P \<Longrightarrow> PROP Q)" |
1137 shows "PROP P =simp=> PROP Q" |
1143 shows "PROP P =simp=> PROP Q" |
1138 apply (unfold simp_implies_def) |
1144 apply (unfold simp_implies_def) |