| author | Christian Urban <christian dot urban at kcl dot ac dot uk> | 
| Thu, 07 Apr 2016 23:14:26 +0100 | |
| changeset 424 | 1bb32ab3e90e | 
| parent 415 | f1be8028a4a9 | 
| permissions | -rw-r--r-- | 
| 
415
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
1  | 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
2  | 
"http://www.w3.org/TR/REC-html40/loose.dtd">  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
3  | 
<HEAD>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
4  | 
<TITLE>HGMP</TITLE>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
5  | 
<BASE HREF="http://www.inf.kcl.ac.uk/staff/urbanc/">  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
6  | 
</HEAD>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
7  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
8  | 
<BODY TEXT="#000000"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
9  | 
BGCOLOR="#4169E1"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
10  | 
LINK="#0000EF"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
11  | 
VLINK="#51188E"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
12  | 
ALINK="#FF0000">  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
13  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
14  | 
<TABLE WIDTH="100%"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
15  | 
BGCOLOR="#4169E1"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
16  | 
BORDER="0"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
17  | 
FRAME="border"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
18  | 
CELLPADDING="10"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
19  | 
CELLSPACING="2"  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
20  | 
RULES="all">  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
21  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
22  | 
<!-- right column -->  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
23  | 
<TR>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
24  | 
<TD BGCOLOR="#FFFFFF" WIDTH="75%">  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
25  | 
<H2>POSIX Lexing with Derivatives of Regular Expressions (Proof Pearl)</H2>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
26  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
27  | 
Fahad Ausaf, Roy Dyckhoff, Christian Urban  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
28  | 
<p>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
29  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
30  | 
Brzozowski introduced the notion of derivatives for regular  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
31  | 
expressions. They can be used for a very simple regular expression  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
32  | 
matching algorithm. Sulzmann and Lu cleverly extended this algorithm  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
33  | 
in order to deal with POSIX matching, which is the underlying  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
34  | 
disambiguation strategy for regular expressions needed in lexers.  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
35  | 
Sulzmann and Lu have made available on-line what they call a  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
36  | 
''rigorous proof'' of the correctness of their algorithm w.r.t. their  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
37  | 
specification; regrettably, it appears to us to have unfillable gaps.  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
38  | 
In the first part of this paper we give our inductive definition of  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
39  | 
what a POSIX value is and show (i) that such a value is unique (for  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
40  | 
given regular expression and string being matched) and (ii) that  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
41  | 
Sulzmann and Lu's algorithm always generates such a value (provided  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
42  | 
that the regular expression matches the string). We also prove the  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
43  | 
correctness of an optimised version of the POSIX matching  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
44  | 
algorithm. Our definitions and proof are much simpler than those by  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
45  | 
Sulzmann and Lu and can be easily formalised in Isabelle/HOL. In the  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
46  | 
second part we analyse the correctness argument by Sulzmann and Lu and  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
47  | 
explain why it seems hard to turn it into a proof rigorous enough to  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
48  | 
be accepted by a system such as Isabelle/HOL.  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
49  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
50  | 
<H3>Theory Files for Isabelle 2016</H3>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
51  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
52  | 
<ul>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
53  | 
<li> <A HREF="http://talisker.inf.kcl.ac.uk/%7Eurbanc/cgi-bin/repos.cgi/lexing/raw-file/tip/thys/ReStar.thy">ReStar.thy</A>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
54  | 
<li> <A HREF="http://talisker.inf.kcl.ac.uk/%7Eurbanc/cgi-bin/repos.cgi/lexing/raw-file/tip/thys/Simplifying.thy">Simplifying.thy</A>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
55  | 
<li> <A HREF="http://talisker.inf.kcl.ac.uk/%7Eurbanc/cgi-bin/repos.cgi/lexing/raw-file/tip/thys/Sulzmann.thy">Sulzmann.thy</A>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
56  | 
</ul>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
57  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
58  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
59  | 
<H3>Links</H3>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
60  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
61  | 
<ul>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
62  | 
<li> <A HREF="http://talisker.inf.kcl.ac.uk/%7Eurbanc/cgi-bin/repos.cgi/lexing/raw-file/tip/Literature/sulzmann14-new.pdf">the paper</A> by Sulzmann and Lu  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
63  | 
</ul>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
64  | 
|
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
65  | 
</TABLE>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
66  | 
<P>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
67  | 
<!-- hhmts start --> Last modified: Tue Mar 15 12:47:17 GMT 2016 <!-- hhmts end -->  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
68  | 
<a href="http://validator.w3.org/check/referer">[Validate this page.]</a>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
69  | 
</BODY>  | 
| 
 
f1be8028a4a9
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
70  | 
</HTML>  |