equal
deleted
inserted
replaced
18 val prems = goal Acc.thy |
18 val prems = goal Acc.thy |
19 "[| !!b. <b,a>:r ==> b: acc(r); a: field(r) |] ==> a: acc(r)"; |
19 "[| !!b. <b,a>:r ==> b: acc(r); a: field(r) |] ==> a: acc(r)"; |
20 by (fast_tac (claset() addIs (prems@acc.intrs)) 1); |
20 by (fast_tac (claset() addIs (prems@acc.intrs)) 1); |
21 qed "accI"; |
21 qed "accI"; |
22 |
22 |
23 goal Acc.thy "!!a b r. [| b: acc(r); <a,b>: r |] ==> a: acc(r)"; |
23 Goal "!!a b r. [| b: acc(r); <a,b>: r |] ==> a: acc(r)"; |
24 by (etac acc.elim 1); |
24 by (etac acc.elim 1); |
25 by (Fast_tac 1); |
25 by (Fast_tac 1); |
26 qed "acc_downward"; |
26 qed "acc_downward"; |
27 |
27 |
28 val [major,indhyp] = goal Acc.thy |
28 val [major,indhyp] = goal Acc.thy |
35 by (resolve_tac acc.intrs 1); |
35 by (resolve_tac acc.intrs 1); |
36 by (assume_tac 2); |
36 by (assume_tac 2); |
37 by (etac (Collect_subset RS Pow_mono RS subsetD) 1); |
37 by (etac (Collect_subset RS Pow_mono RS subsetD) 1); |
38 qed "acc_induct"; |
38 qed "acc_induct"; |
39 |
39 |
40 goal Acc.thy "wf[acc(r)](r)"; |
40 Goal "wf[acc(r)](r)"; |
41 by (rtac wf_onI2 1); |
41 by (rtac wf_onI2 1); |
42 by (etac acc_induct 1); |
42 by (etac acc_induct 1); |
43 by (Fast_tac 1); |
43 by (Fast_tac 1); |
44 qed "wf_on_acc"; |
44 qed "wf_on_acc"; |
45 |
45 |
53 by (rtac accI 1); |
53 by (rtac accI 1); |
54 by (assume_tac 2); |
54 by (assume_tac 2); |
55 by (Fast_tac 1); |
55 by (Fast_tac 1); |
56 qed "acc_wfD"; |
56 qed "acc_wfD"; |
57 |
57 |
58 goal Acc.thy "wf(r) <-> field(r) <= acc(r)"; |
58 Goal "wf(r) <-> field(r) <= acc(r)"; |
59 by (EVERY1 [rtac iffI, etac acc_wfD, etac acc_wfI]); |
59 by (EVERY1 [rtac iffI, etac acc_wfD, etac acc_wfI]); |
60 qed "wf_acc_iff"; |
60 qed "wf_acc_iff"; |