src/HOL/Lex/Auto.ML
author clasohm
Tue, 30 Jan 1996 15:24:36 +0100
changeset 1465 5d7a7e439cec
parent 1344 f172a7f14e49
child 1894 c2c8279d40f0
permissions -rw-r--r--
expanded tabs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1465
5d7a7e439cec expanded tabs
clasohm
parents: 1344
diff changeset
     1
(*  Title:      HOL/Lex/Auto.ML
1344
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
     2
    ID:         $Id$
1465
5d7a7e439cec expanded tabs
clasohm
parents: 1344
diff changeset
     3
    Author:     Richard Mayr & Tobias Nipkow
1344
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
     4
    Copyright   1995 TUM
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
     5
*)
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
     6
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
     7
open Auto;
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
     8
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
     9
goalw Auto.thy [nexts_def] "nexts A st [] = st";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    10
by(Simp_tac 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    11
qed"nexts_Nil";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    12
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    13
goalw Auto.thy [nexts_def] "nexts A st (x#xs) = nexts A (next A st x) xs";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    14
by(Simp_tac 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    15
qed"nexts_Cons";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    16
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    17
Addsimps [nexts_Nil,nexts_Cons];
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    18
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    19
goalw Auto.thy [acc_prefix_def] "~acc_prefix A st []";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    20
by(Simp_tac 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    21
qed"acc_prefix_Nil";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    22
Addsimps [acc_prefix_Nil];
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    23
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    24
goalw Auto.thy [acc_prefix_def]
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    25
 "acc_prefix A s (x#xs) = (fin A (next A s x) | acc_prefix A (next A s x) xs)";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    26
by(simp_tac (!simpset addsimps [prefix_Cons]) 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    27
by(safe_tac HOL_cs);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    28
  by(Asm_full_simp_tac 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    29
  by (case_tac "zs=[]" 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    30
   by(hyp_subst_tac 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    31
   by(Asm_full_simp_tac 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    32
  by(fast_tac (HOL_cs addSEs [Cons_neq_Nil]) 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    33
 by(res_inst_tac [("x","[x]")] exI 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    34
 by(asm_simp_tac (!simpset addsimps [eq_sym_conv]) 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    35
by(res_inst_tac [("x","x#us")] exI 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    36
by(Asm_simp_tac 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    37
by (fast_tac HOL_cs 1);
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    38
qed"acc_prefix_Cons";
f172a7f14e49 Half a lexical analyzer generator.
nipkow
parents:
diff changeset
    39
Addsimps [acc_prefix_Cons];