equal
deleted
inserted
replaced
301 bind_thm ("trans_less_add1", le_add1 RSN (2,less_le_trans)); |
301 bind_thm ("trans_less_add1", le_add1 RSN (2,less_le_trans)); |
302 |
302 |
303 (*"i < j ==> i < m+j"*) |
303 (*"i < j ==> i < m+j"*) |
304 bind_thm ("trans_less_add2", le_add2 RSN (2,less_le_trans)); |
304 bind_thm ("trans_less_add2", le_add2 RSN (2,less_le_trans)); |
305 |
305 |
|
306 goal Arith.thy "!!i. i+j < (k::nat) ==> i<k"; |
|
307 be rev_mp 1; |
|
308 by(nat_ind_tac "j" 1); |
|
309 by (ALLGOALS(asm_simp_tac arith_ss)); |
|
310 by(fast_tac (HOL_cs addDs [Suc_lessD]) 1); |
|
311 qed "add_lessD1"; |
|
312 |
306 goal Arith.thy "!!k::nat. m <= n ==> m <= n+k"; |
313 goal Arith.thy "!!k::nat. m <= n ==> m <= n+k"; |
307 by (eresolve_tac [le_trans] 1); |
314 by (eresolve_tac [le_trans] 1); |
308 by (resolve_tac [le_add1] 1); |
315 by (resolve_tac [le_add1] 1); |
309 qed "le_imp_add_le"; |
316 qed "le_imp_add_le"; |
310 |
317 |