equal
deleted
inserted
replaced
158 thus "x == y" by (rule eq_reflection) |
158 thus "x == y" by (rule eq_reflection) |
159 qed |
159 qed |
160 |
160 |
161 declare atomize_all [symmetric, rulify] atomize_imp [symmetric, rulify] |
161 declare atomize_all [symmetric, rulify] atomize_imp [symmetric, rulify] |
162 |
162 |
|
163 |
|
164 subsection {* Calculational rules *} |
|
165 |
|
166 lemma forw_subst: "a = b ==> P(b) ==> P(a)" |
|
167 by (rule ssubst) |
|
168 |
|
169 lemma back_subst: "P(a) ==> a = b ==> P(b)" |
|
170 by (rule subst) |
|
171 |
|
172 text {* |
|
173 Note that this list of rules is in reverse order of priorities. |
|
174 *} |
|
175 |
|
176 lemmas trans_rules [trans] = |
|
177 forw_subst |
|
178 back_subst |
|
179 rev_mp |
|
180 mp |
|
181 transitive |
|
182 trans |
|
183 |
|
184 lemmas [Pure.elim] = sym |
|
185 |
163 end |
186 end |