equal
deleted
inserted
replaced
335 \ l: list(nat) \ |
335 \ l: list(nat) \ |
336 \ |] ==> PREC(f,g)`l #+ list_add(l) < ack(succ(kf#+kg), list_add(l))"; |
336 \ |] ==> PREC(f,g)`l #+ list_add(l) < ack(succ(kf#+kg), list_add(l))"; |
337 by (etac List.elim 1); |
337 by (etac List.elim 1); |
338 by (asm_simp_tac (ack2_ss addsimps [[nat_le_refl, lt_ack2] MRS lt_trans]) 1); |
338 by (asm_simp_tac (ack2_ss addsimps [[nat_le_refl, lt_ack2] MRS lt_trans]) 1); |
339 by (asm_simp_tac ack2_ss 1); |
339 by (asm_simp_tac ack2_ss 1); |
340 be ssubst 1; (*get rid of the needless assumption*) |
340 by (etac ssubst 1); (*get rid of the needless assumption*) |
341 by (eres_inst_tac [("n","a")] nat_induct 1); |
341 by (eres_inst_tac [("n","a")] nat_induct 1); |
342 (*base case*) |
342 (*base case*) |
343 by (DO_GOAL [asm_simp_tac ack2_ss, rtac lt_trans, etac bspec, |
343 by (DO_GOAL [asm_simp_tac ack2_ss, rtac lt_trans, etac bspec, |
344 assume_tac, rtac (add_le_self RS ack_lt_mono1), |
344 assume_tac, rtac (add_le_self RS ack_lt_mono1), |
345 REPEAT o ares_tac (ack_typechecks)] 1); |
345 REPEAT o ares_tac (ack_typechecks)] 1); |