| author | wenzelm | 
| Thu, 08 Aug 2002 23:48:31 +0200 | |
| changeset 13483 | 0e6adce08fb0 | 
| parent 10834 | a7897aebbffc | 
| permissions | -rw-r--r-- | 
| 4832 | 1  | 
(* Title: HOL/Lex/NAe.ML  | 
2  | 
ID: $Id$  | 
|
3  | 
Author: Tobias Nipkow  | 
|
4  | 
Copyright 1998 TUM  | 
|
5  | 
*)  | 
|
6  | 
||
| 5118 | 7  | 
Goal "steps A w O (eps A)^* = steps A w";  | 
| 
8442
 
96023903c2df
case_tac now subsumes both boolean and datatype cases;
 
wenzelm 
parents: 
8423 
diff
changeset
 | 
8  | 
by (case_tac "w" 1);  | 
| 5132 | 9  | 
by (ALLGOALS(asm_simp_tac (simpset() addsimps [O_assoc])));  | 
| 4832 | 10  | 
qed_spec_mp "steps_epsclosure";  | 
11  | 
Addsimps [steps_epsclosure];  | 
|
12  | 
||
| 5118 | 13  | 
Goal "[| (p,q) : (eps A)^*; (q,r) : steps A w |] ==> (p,r) : steps A w";  | 
| 5132 | 14  | 
by (rtac (steps_epsclosure RS equalityE) 1);  | 
15  | 
by (Blast_tac 1);  | 
|
| 4832 | 16  | 
qed "in_steps_epsclosure";  | 
17  | 
||
| 5069 | 18  | 
Goal "(eps A)^* O steps A w = steps A w";  | 
| 4832 | 19  | 
by (induct_tac "w" 1);  | 
20  | 
by (Simp_tac 1);  | 
|
21  | 
by (asm_simp_tac (simpset() addsimps [O_assoc RS sym]) 1);  | 
|
22  | 
qed "epsclosure_steps";  | 
|
23  | 
||
| 5118 | 24  | 
Goal "[| (p,q) : steps A w; (q,r) : (eps A)^* |] ==> (p,r) : steps A w";  | 
| 5132 | 25  | 
by (rtac (epsclosure_steps RS equalityE) 1);  | 
26  | 
by (Blast_tac 1);  | 
|
| 4832 | 27  | 
qed "in_epsclosure_steps";  | 
28  | 
||
| 5118 | 29  | 
Goal "steps A (v@w) = steps A w O steps A v";  | 
| 4832 | 30  | 
by (induct_tac "v" 1);  | 
| 5132 | 31  | 
by (ALLGOALS(asm_simp_tac (simpset() addsimps [O_assoc])));  | 
| 4832 | 32  | 
qed "steps_append";  | 
33  | 
Addsimps [steps_append];  | 
|
34  | 
||
| 5069 | 35  | 
Goal "(p,r) : steps A (v@w) = ((p,r) : (steps A w O steps A v))";  | 
| 5132 | 36  | 
by (rtac (steps_append RS equalityE) 1);  | 
37  | 
by (Blast_tac 1);  | 
|
| 4832 | 38  | 
qed "in_steps_append";  | 
39  | 
AddIffs [in_steps_append];  | 
|
40  | 
||
| 4900 | 41  | 
(* Equivalence of steps and delta  | 
| 10834 | 42  | 
(* Use "(? x : f ` A. P x) = (? a:A. P(f x))" ?? *)  | 
| 5069 | 43  | 
Goal "!p. (p,q) : steps A w = (q : delta A w p)";  | 
| 4832 | 44  | 
by (induct_tac "w" 1);  | 
45  | 
by (Simp_tac 1);  | 
|
46  | 
by (asm_simp_tac (simpset() addsimps [comp_def,step_def]) 1);  | 
|
| 5132 | 47  | 
by (Blast_tac 1);  | 
| 4832 | 48  | 
qed_spec_mp "steps_equiv_delta";  | 
| 4900 | 49  | 
*)  |