equal
deleted
inserted
replaced
1 Addsimps exec.rules; |
|
2 Addsimps [Let_def,drop_all]; |
|
3 Addsplits [split_instr_case]; |
|
4 |
|
5 Goal "!xs. wf xs --> wf(drop n xs)"; |
|
6 by(induct_tac "n" 1); |
|
7 by(Simp_tac 1); |
|
8 by(Clarify_tac 1); |
|
9 by(exhaust_tac "xs" 1); |
|
10 by(Asm_simp_tac 1); |
|
11 by(Asm_full_simp_tac 1); |
|
12 qed_spec_mp "wf_drop"; |
|
13 Addsimps [wf_drop]; |
|
14 |
|
15 Goal "wf xs --> wf ys --> wf(xs@ys)"; |
|
16 by(induct_tac "xs" 1); |
|
17 by(Simp_tac 1); |
|
18 by(asm_full_simp_tac (simpset() addsimps [trans_le_add1]) 1); |
|
19 qed_spec_mp "wf_append"; |
|
20 Addsimps [wf_append]; |
|
21 |
|
22 Goal "!vs ys. wf xs --> exec(s,vs,xs@ys) = exec(s,exec(s,vs,xs),ys)"; |
|
23 by(res_inst_tac [("xs","xs")] length_induct 1); |
|
24 by(exhaust_tac "xs" 1); |
|
25 by(Asm_full_simp_tac 1); |
|
26 by(asm_full_simp_tac (simpset() addsimps [less_imp_diff_is_0,diff_less_Suc,le_imp_less_Suc]) 1); |
|
27 qed_spec_mp "exec_append"; |
|
28 Addsimps [exec_append]; |
|
29 |
|
30 Goal "wf(comp e)"; |
|
31 by(induct_tac "e" 1); |
|
32 by(ALLGOALS Asm_simp_tac); |
|
33 qed "wf_comp"; |
|
34 Addsimps [wf_comp]; |
|
35 |
|
36 Goal "!vs. exec(s, vs, comp e) = (value s e) # vs"; |
|
37 by(induct_tac "e" 1); |
|
38 by(ALLGOALS Asm_simp_tac); |
|
39 qed "exec_comp"; |
|