equal
deleted
inserted
replaced
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 |