src/HOL/Lex/NA.ML
author nipkow
Mon, 17 Aug 1998 11:00:57 +0200
changeset 5323 028e00595280
child 6301 08245f5a436d
permissions -rw-r--r--
Direct translation RegExp -> NA!
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5323
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/Lex/NA.ML
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     2
    ID:         $Id$
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     4
    Copyright   1998 TUM
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     5
*)
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     6
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     7
Goal
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     8
 "steps A (v@w) = steps A w  O  steps A v";
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
     9
by (induct_tac "v" 1);
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    10
by(ALLGOALS(asm_simp_tac (simpset() addsimps [O_assoc])));
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    11
qed "steps_append";
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    12
Addsimps [steps_append];
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    13
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    14
Goal "(p,r) : steps A (v@w) = ((p,r) : (steps A w O steps A v))";
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    15
by(rtac (steps_append RS equalityE) 1);
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    16
by(Blast_tac 1);
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    17
qed "in_steps_append";
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    18
AddIffs [in_steps_append];
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    19
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    20
Goal
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    21
 "!p. delta A w p = {q. (p,q) : steps A w}";
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    22
by(induct_tac "w" 1);
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    23
by(auto_tac (claset(), simpset() addsimps [step_def]));
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    24
qed_spec_mp "delta_conv_steps";
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    25
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    26
Goalw [accepts_def]
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    27
 "accepts A w = (? q. (start A,q) : steps A w & fin A q)";
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    28
by(simp_tac (simpset() addsimps [delta_conv_steps]) 1);
028e00595280 Direct translation RegExp -> NA!
nipkow
parents:
diff changeset
    29
qed "accepts_conv_steps";