equal
deleted
inserted
replaced
152 qed_spec_mp "less_eq_Suc_add"; |
152 qed_spec_mp "less_eq_Suc_add"; |
153 |
153 |
154 Goal "n <= ((m + n)::nat)"; |
154 Goal "n <= ((m + n)::nat)"; |
155 by (induct_tac "m" 1); |
155 by (induct_tac "m" 1); |
156 by (ALLGOALS Simp_tac); |
156 by (ALLGOALS Simp_tac); |
157 by (etac le_trans 1); |
|
158 by (rtac (lessI RS less_imp_le) 1); |
|
159 qed "le_add2"; |
157 qed "le_add2"; |
160 |
158 |
161 Goal "n <= ((n + m)::nat)"; |
159 Goal "n <= ((n + m)::nat)"; |
162 by (simp_tac (simpset() addsimps add_ac) 1); |
160 by (simp_tac (simpset() addsimps add_ac) 1); |
163 by (rtac le_add2 1); |
161 by (rtac le_add2 1); |
181 bind_thm ("trans_less_add1", le_add1 RSN (2,less_le_trans)); |
179 bind_thm ("trans_less_add1", le_add1 RSN (2,less_le_trans)); |
182 |
180 |
183 (*"i < j ==> i < m+j"*) |
181 (*"i < j ==> i < m+j"*) |
184 bind_thm ("trans_less_add2", le_add2 RSN (2,less_le_trans)); |
182 bind_thm ("trans_less_add2", le_add2 RSN (2,less_le_trans)); |
185 |
183 |
186 Goal "i+j < (k::nat) ==> i<k"; |
184 Goal "i+j < (k::nat) --> i<k"; |
187 by (etac rev_mp 1); |
|
188 by (induct_tac "j" 1); |
185 by (induct_tac "j" 1); |
189 by (ALLGOALS Asm_simp_tac); |
186 by (ALLGOALS Asm_simp_tac); |
190 by (blast_tac (claset() addDs [Suc_lessD]) 1); |
187 qed_spec_mp "add_lessD1"; |
191 qed "add_lessD1"; |
|
192 |
188 |
193 Goal "~ (i+j < (i::nat))"; |
189 Goal "~ (i+j < (i::nat))"; |
194 by (rtac notI 1); |
190 by (rtac notI 1); |
195 by (etac (add_lessD1 RS less_irrefl) 1); |
191 by (etac (add_lessD1 RS less_irrefl) 1); |
196 qed "not_add_less1"; |
192 qed "not_add_less1"; |