author | Christian Urban <christian dot urban at kcl dot ac dot uk> |
Fri, 10 Jun 2016 23:53:46 +0100 | |
changeset 195 | c2d36c3cf8ad |
parent 191 | 6bb15b8e6301 |
permissions | -rw-r--r-- |
191
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
1 |
Title: |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
2 |
====== |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
3 |
POSIX Lexing with Derivatives of Regular Expressions |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
4 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
5 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
6 |
Authors: |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
7 |
======== |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
8 |
Fahad Ausaf <fahad.ausaf at icloud.com>, 2016 |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
9 |
Roy Dyckhoff <roy.dyckhoff at st-andrews.ac.uk>, 2016 |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
10 |
Christian Urban <christian.urban at kcl.ac.uk>, 2016 |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
11 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
12 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
13 |
Abstract: |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
14 |
========= |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
15 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
16 |
Brzozowski introduced the notion of derivatives for regular |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
17 |
expressions. They can be used for a very simple regular expression |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
18 |
matching algorithm. Sulzmann and Lu cleverly extended this algorithm |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
19 |
in order to deal with POSIX matching, which is the underlying |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
20 |
disambiguation strategy for regular expressions needed in |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
21 |
lexers. Sulzmann and Lu have made available on-line what they call a |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
22 |
``rigorous proof'' of the correctness of their algorithm w.r.t. their |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
23 |
specification; regrettably, it appears to us to have unfillable |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
24 |
gaps. In the first part of this paper we give our inductive definition |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
25 |
of what a POSIX value is and show (i) that such a value is unique (for |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
26 |
given regular expression and string being matched) and (ii) that |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
27 |
Sulzmann and Lu's algorithm always generates such a value (provided |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
28 |
that the regular expression matches the string). We also prove the |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
29 |
correctness of an optimised version of the POSIX matching |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
30 |
algorithm. Our definitions and proof are much simpler than those by |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
31 |
Sulzmann and Lu and can be easily formalised in Isabelle/HOL. In the |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
32 |
second part we analyse the correctness argument by Sulzmann and Lu and |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
33 |
explain why the gaps in this argument cannot be filled easily. |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
34 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
35 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
36 |
New Theories: |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
37 |
============= |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
38 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
39 |
Lexer.thy |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
40 |
Simplifying.thy |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
41 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
42 |
The repository can be checked using Isabelle 2016. |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
43 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
44 |
isabelle build -c -v -d . Posix-Lexing |
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
45 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
46 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
47 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
48 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
49 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
50 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
51 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
52 |
|
6bb15b8e6301
added files that were submitted to afp
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff
changeset
|
53 |