equal
deleted
inserted
replaced
21 Goal "[| b: acc(r); (a,b): r |] ==> a: acc(r)"; |
21 Goal "[| b: acc(r); (a,b): r |] ==> a: acc(r)"; |
22 by (etac acc.elim 1); |
22 by (etac acc.elim 1); |
23 by (rewtac pred_def); |
23 by (rewtac pred_def); |
24 by (Fast_tac 1); |
24 by (Fast_tac 1); |
25 qed "acc_downward"; |
25 qed "acc_downward"; |
|
26 |
|
27 Goal "(b,a) : r^* ==> a : acc r --> b : acc r"; |
|
28 be rtrancl_induct 1; |
|
29 by(Blast_tac 1); |
|
30 by(blast_tac (claset() addDs [acc_downward]) 1); |
|
31 val lemma = result(); |
|
32 Goal "[| a : acc r; (b,a) : r^* |] ==> b : acc r"; |
|
33 by(blast_tac (claset() addDs [lemma]) 1); |
|
34 qed "acc_downwards"; |
26 |
35 |
27 val [major,indhyp] = goal Acc.thy |
36 val [major,indhyp] = goal Acc.thy |
28 "[| a : acc(r); \ |
37 "[| a : acc(r); \ |
29 \ !!x. [| x: acc(r); ALL y. (y,x):r --> P(y) |] ==> P(x) \ |
38 \ !!x. [| x: acc(r); ALL y. (y,x):r --> P(y) |] ==> P(x) \ |
30 \ |] ==> P(a)"; |
39 \ |] ==> P(a)"; |