src/HOL/Lex/NAe.thy
changeset 5184 9b8547a9496a
parent 4900 a4301a63bf5c
child 5489 15c97b95b3e3
equal deleted inserted replaced
5183:89f162de39cf 5184:9b8547a9496a
    16 
    16 
    17 syntax eps :: "('a,'s)nae => ('s * 's)set"
    17 syntax eps :: "('a,'s)nae => ('s * 's)set"
    18 translations "eps A" == "step A None"
    18 translations "eps A" == "step A None"
    19 
    19 
    20 consts steps :: "('a,'s)nae => 'a list =>   ('s * 's)set"
    20 consts steps :: "('a,'s)nae => 'a list =>   ('s * 's)set"
    21 primrec steps list
    21 primrec
    22 "steps A [] = (eps A)^*"
    22 "steps A [] = (eps A)^*"
    23 "steps A (a#w) = steps A w  O  step A (Some a)  O  (eps A)^*"
    23 "steps A (a#w) = steps A w  O  step A (Some a)  O  (eps A)^*"
    24 
    24 
    25 constdefs
    25 constdefs
    26  accepts :: ('a,'s)nae => 'a list => bool
    26  accepts :: ('a,'s)nae => 'a list => bool
    27 "accepts A w == ? q. (start A,q) : steps A w & fin A q"
    27 "accepts A w == ? q. (start A,q) : steps A w & fin A q"
    28 
    28 
    29 (* not really used:
    29 (* not really used:
    30 consts delta :: "('a,'s)nae => 'a list => 's => 's set"
    30 consts delta :: "('a,'s)nae => 'a list => 's => 's set"
    31 primrec delta list
    31 primrec
    32 "delta A [] s = (eps A)^* ^^ {s}"
    32 "delta A [] s = (eps A)^* ^^ {s}"
    33 "delta A (a#w) s = lift(delta A w) (lift(next A (Some a)) ((eps A)^* ^^ {s}))"
    33 "delta A (a#w) s = lift(delta A w) (lift(next A (Some a)) ((eps A)^* ^^ {s}))"
    34 *)
    34 *)
    35 end
    35 end