src/HOL/Lex/RegSet.thy
author nipkow
Thu, 04 Mar 2004 15:48:38 +0100
changeset 14431 ade3d26e0caf
parent 8732 aef229ca5e77
permissions -rw-r--r--
ML -> Isar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4832
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/Lex/RegSet.thy
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     2
    ID:         $Id$
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     4
    Copyright   1998 TUM
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     5
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     6
Regular sets
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     7
*)
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
     8
14431
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
     9
theory RegSet = Main:
4832
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
    10
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
    11
constdefs
14431
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    12
 conc :: "'a list set => 'a list set => 'a list set"
4832
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
    13
"conc A B == {xs@ys | xs ys. xs:A & ys:B}"
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
    14
14431
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    15
consts star :: "'a list set => 'a list set"
4832
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
    16
inductive "star A"
14431
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    17
intros
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    18
  NilI[iff]:   "[] : star A"
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    19
  ConsI[intro,simp]:  "[| a:A; as : star A |] ==> a@as : star A"
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    20
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    21
lemma concat_in_star: "!xs: set xss. xs:S ==> concat xss : star S"
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    22
by (induct "xss") simp_all
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    23
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    24
lemma in_star:
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    25
 "w : star U = (? us. (!u : set(us). u : U) & (w = concat us))"
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    26
apply (rule iffI)
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    27
 apply (erule star.induct)
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    28
  apply (rule_tac x = "[]" in exI)
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    29
  apply simp
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    30
 apply clarify
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    31
 apply (rule_tac x = "a#us" in exI)
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    32
 apply simp
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    33
apply clarify
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    34
apply (simp add: concat_in_star)
ade3d26e0caf ML -> Isar
nipkow
parents: 8732
diff changeset
    35
done
4832
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
    36
bc11b5b06f87 Added conversion of reg.expr. to automata.
nipkow
parents:
diff changeset
    37
end