# HG changeset patch # User haftmann # Date 1581285522 0 # Node ID f2da99316b869bf932bfa026296c4b0bbbb6a104 # Parent e83fe2c31088ecf978ecd45f1ee5de9062aa36ee more rules for natural deduction from inequalities diff -r e83fe2c31088 -r f2da99316b86 src/HOL/Groups.thy --- a/src/HOL/Groups.thy Sun Feb 09 10:46:32 2020 +0000 +++ b/src/HOL/Groups.thy Sun Feb 09 21:58:42 2020 +0000 @@ -1413,6 +1413,25 @@ lemma zero_eq_add_iff_both_eq_0[simp]: "0 = x + y \ x = 0 \ y = 0" using add_eq_0_iff_both_eq_0[of x y] unfolding eq_commute[of 0] . +lemma less_eqE: + assumes \a \ b\ + obtains c where \b = a + c\ + using assms by (auto simp add: le_iff_add) + +lemma lessE: + assumes \a < b\ + obtains c where \b = a + c\ and \c \ 0\ +proof - + from assms have \a \ b\ \a \ b\ + by simp_all + from \a \ b\ obtain c where \b = a + c\ + by (rule less_eqE) + moreover have \c \ 0\ using \a \ b\ \b = a + c\ + by auto + ultimately show ?thesis + by (rule that) +qed + lemmas zero_order = zero_le le_zero_eq not_less_zero zero_less_iff_neq_zero not_gr_zero \ \This should be attributed with \[iff]\, but then \blast\ fails in \Set\.\ diff -r e83fe2c31088 -r f2da99316b86 src/HOL/Nat.thy --- a/src/HOL/Nat.thy Sun Feb 09 10:46:32 2020 +0000 +++ b/src/HOL/Nat.thy Sun Feb 09 21:58:42 2020 +0000 @@ -793,7 +793,6 @@ apply simp_all done -text \Deleted \less_natE\; use \less_imp_Suc_add RS exE\\ lemma less_imp_Suc_add: "m < n \ \k. n = Suc (m + k)" proof (induct n) case 0 @@ -809,6 +808,11 @@ for k l :: nat by (auto simp: less_Suc_eq_le[symmetric] dest: less_imp_Suc_add) +lemma less_natE: + assumes \m < n\ + obtains q where \n = Suc (m + q)\ + using assms by (auto dest: less_imp_Suc_add intro: that) + text \strict, in 1st argument; proof is by induction on \k > 0\\ lemma mult_less_mono2: fixes i j :: nat