# HG changeset patch # User haftmann # Date 1592560007 0 # Node ID ee2c7f0dd1bef01a79acbaa19c4bd8eec41edf96 # Parent 4320875eb8a12c77337f384e8e919a297674a95b prefer single name diff -r 4320875eb8a1 -r ee2c7f0dd1be NEWS --- a/NEWS Thu Jun 18 09:07:54 2020 +0000 +++ b/NEWS Fri Jun 19 09:46:47 2020 +0000 @@ -64,15 +64,21 @@ "bintrunc" and "max_word" are now mere input abbreviations. Minor INCOMPATIBILITY. +* Rewrite rule subst_all performs +more aggressive substitution with variables from assumptions. +INCOMPATIBILITY, use something like +"supply subst_all [simp del]" +to leave fragile proofs unaffected. + *** FOL *** * Added the "at most 1" quantifier, Uniq, as in HOL. -* Simproc defined_all and rewrite rules subst_all and subst_all' perform +* Simproc defined_all and rewrite rule subst_all perform more aggressive substitution with variables from assumptions. INCOMPATIBILITY, use something like -"supply subst_all [simp] subst_all' [simp] [[simproc del: defined_all]]" +"supply subst_all [simp del] [[simproc del: defined_all]]" to leave fragile proofs unaffected. diff -r 4320875eb8a1 -r ee2c7f0dd1be src/FOL/FOL.thy --- a/src/FOL/FOL.thy Thu Jun 18 09:07:54 2020 +0000 +++ b/src/FOL/FOL.thy Fri Jun 19 09:46:47 2020 +0000 @@ -345,7 +345,7 @@ (*intuitionistic simprules only*) val IFOL_ss = put_simpset FOL_basic_ss \<^context> - addsimps @{thms meta_simps IFOL_simps int_ex_simps int_all_simps subst_all subst_all'} + addsimps @{thms meta_simps IFOL_simps int_ex_simps int_all_simps subst_all} addsimprocs [\<^simproc>\defined_All\, \<^simproc>\defined_Ex\] |> Simplifier.add_cong @{thm imp_cong} |> simpset_of; diff -r 4320875eb8a1 -r ee2c7f0dd1be src/FOL/IFOL.thy --- a/src/FOL/IFOL.thy Thu Jun 18 09:07:54 2020 +0000 +++ b/src/FOL/IFOL.thy Fri Jun 19 09:46:47 2020 +0000 @@ -829,32 +829,34 @@ lemma subst_all: \(\x. x = a \ PROP P(x)) \ PROP P(a)\ -proof (rule equal_intr_rule) - assume *: \\x. x = a \ PROP P(x)\ - show \PROP P(a)\ - by (rule *) (rule refl) -next - fix x - assume \PROP P(a)\ and \x = a\ - from \x = a\ have \x \ a\ - by (rule eq_reflection) - with \PROP P(a)\ show \PROP P(x)\ - by simp -qed - -lemma subst_all': \(\x. a = x \ PROP P(x)) \ PROP P(a)\ -proof (rule equal_intr_rule) - assume *: \\x. a = x \ PROP P(x)\ - show \PROP P(a)\ - by (rule *) (rule refl) -next - fix x - assume \PROP P(a)\ and \a = x\ - from \a = x\ have \a \ x\ - by (rule eq_reflection) - with \PROP P(a)\ show \PROP P(x)\ - by simp +proof - + show \(\x. x = a \ PROP P(x)) \ PROP P(a)\ + proof (rule equal_intr_rule) + assume *: \\x. x = a \ PROP P(x)\ + show \PROP P(a)\ + by (rule *) (rule refl) + next + fix x + assume \PROP P(a)\ and \x = a\ + from \x = a\ have \x \ a\ + by (rule eq_reflection) + with \PROP P(a)\ show \PROP P(x)\ + by simp + qed + show \(\x. a = x \ PROP P(x)) \ PROP P(a)\ + proof (rule equal_intr_rule) + assume *: \\x. a = x \ PROP P(x)\ + show \PROP P(a)\ + by (rule *) (rule refl) + next + fix x + assume \PROP P(a)\ and \a = x\ + from \a = x\ have \a \ x\ + by (rule eq_reflection) + with \PROP P(a)\ show \PROP P(x)\ + by simp + qed qed diff -r 4320875eb8a1 -r ee2c7f0dd1be src/HOL/HOL.thy --- a/src/HOL/HOL.thy Thu Jun 18 09:07:54 2020 +0000 +++ b/src/HOL/HOL.thy Fri Jun 19 09:46:47 2020 +0000 @@ -943,32 +943,34 @@ lemma subst_all: \(\x. x = a \ PROP P x) \ PROP P a\ -proof (rule equal_intr_rule) - assume *: \\x. x = a \ PROP P x\ - show \PROP P a\ - by (rule *) (rule refl) -next - fix x - assume \PROP P a\ and \x = a\ - from \x = a\ have \x \ a\ - by (rule eq_reflection) - with \PROP P a\ show \PROP P x\ - by simp -qed - -lemma subst_all': \(\x. a = x \ PROP P x) \ PROP P a\ -proof (rule equal_intr_rule) - assume *: \\x. a = x \ PROP P x\ - show \PROP P a\ - by (rule *) (rule refl) -next - fix x - assume \PROP P a\ and \a = x\ - from \a = x\ have \a \ x\ - by (rule eq_reflection) - with \PROP P a\ show \PROP P x\ - by simp +proof - + show \(\x. x = a \ PROP P x) \ PROP P a\ + proof (rule equal_intr_rule) + assume *: \\x. x = a \ PROP P x\ + show \PROP P a\ + by (rule *) (rule refl) + next + fix x + assume \PROP P a\ and \x = a\ + from \x = a\ have \x \ a\ + by (rule eq_reflection) + with \PROP P a\ show \PROP P x\ + by simp + qed + show \(\x. a = x \ PROP P x) \ PROP P a\ + proof (rule equal_intr_rule) + assume *: \\x. a = x \ PROP P x\ + show \PROP P a\ + by (rule *) (rule refl) + next + fix x + assume \PROP P a\ and \a = x\ + from \a = x\ have \a \ x\ + by (rule eq_reflection) + with \PROP P a\ show \PROP P x\ + by simp + qed qed lemma simp_thms: @@ -1403,7 +1405,6 @@ all_simps simp_thms subst_all - subst_all' lemmas [cong] = imp_cong simp_implies_cong lemmas [split] = if_split diff -r 4320875eb8a1 -r ee2c7f0dd1be src/HOL/Proofs/Lambda/NormalForm.thy --- a/src/HOL/Proofs/Lambda/NormalForm.thy Thu Jun 18 09:07:54 2020 +0000 +++ b/src/HOL/Proofs/Lambda/NormalForm.thy Fri Jun 19 09:46:47 2020 +0000 @@ -92,7 +92,7 @@ apply (induct m) apply (case_tac n) apply (case_tac [3] n) - apply (simp del: simp_thms subst_all subst_all', iprover?)+ + apply (simp del: simp_thms subst_all, iprover?)+ done lemma App_NF_D: assumes NF: "NF (Var n \\ ts)" diff -r 4320875eb8a1 -r ee2c7f0dd1be src/HOL/Transcendental.thy --- a/src/HOL/Transcendental.thy Thu Jun 18 09:07:54 2020 +0000 +++ b/src/HOL/Transcendental.thy Fri Jun 19 09:46:47 2020 +0000 @@ -688,7 +688,7 @@ qed then have "\p q. \p < n; q < n - Suc 0\ \ norm ((z + h) ^ q * z ^ (n - 2 - q)) \ K ^ (n - 2)" - by (simp del: subst_all') + by (simp del: subst_all) then show "norm (\pq of_nat n * (of_nat (n - Suc 0) * K ^ (n - 2))"