equal
deleted
inserted
replaced
338 by (Asm_simp_tac 1); |
338 by (Asm_simp_tac 1); |
339 qed "LessThan_induct"; |
339 qed "LessThan_induct"; |
340 |
340 |
341 (*Integer version. Could generalize from #0 to any lower bound*) |
341 (*Integer version. Could generalize from #0 to any lower bound*) |
342 val [reach, prem] = |
342 val [reach, prem] = |
343 Goal "[| F : Always {s. #0 <= f s}; \ |
343 Goal "[| F : Always {s. (#0::int) <= f s}; \ |
344 \ !! z. F : (A Int {s. f s = z}) LeadsTo \ |
344 \ !! z. F : (A Int {s. f s = z}) LeadsTo \ |
345 \ ((A Int {s. f s < z}) Un B) |] \ |
345 \ ((A Int {s. f s < z}) Un B) |] \ |
346 \ ==> F : A LeadsTo B"; |
346 \ ==> F : A LeadsTo B"; |
347 by (res_inst_tac [("f", "nat o f")] (allI RS LessThan_induct) 1); |
347 by (res_inst_tac [("f", "nat o f")] (allI RS LessThan_induct) 1); |
348 by (simp_tac (simpset() addsimps [vimage_def]) 1); |
348 by (simp_tac (simpset() addsimps [vimage_def]) 1); |