author | wenzelm |
Sun, 04 Sep 2011 16:37:22 +0200 | |
changeset 44700 | f4b42f310f86 |
parent 44203 | 77881904ee91 |
child 44759 | 9572b6be1aab |
permissions | -rw-r--r-- |
41628 | 1 |
<?xml version="1.0" encoding="UTF-8" ?> |
39591 | 2 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
3 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
|
4 |
||
5 |
<head> |
|
6 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
|
43470 | 7 |
<style type="text/css" media="screen"> |
43509
4414c8b02bf9
prefer STIXGeneral -- hard to tell if better or worse;
wenzelm
parents:
43472
diff
changeset
|
8 |
body { font-family: STIXGeneral, IsabelleText; font-size: 14pt; } |
43470 | 9 |
</style> |
39738 | 10 |
<title>Notes on the Isabelle/jEdit Prover IDE</title> |
39591 | 11 |
</head> |
12 |
||
13 |
<body> |
|
14 |
||
44700 | 15 |
<h2>The Isabelle/jEdit Prover IDE (based on Isabelle/Scala)</h2> |
16 |
||
17 |
The Isabelle/Scala layer that is already part of Isabelle/Pure |
|
18 |
provides some general infrastructure for advanced prover interaction |
|
19 |
and integration. The Isabelle/jEdit application serves as an example |
|
20 |
for asynchronous proof checking with support for parallel processing. |
|
39591 | 21 |
|
22 |
<ul> |
|
23 |
||
39738 | 24 |
<li>The original jEdit look-and-feel is generally preserved, although |
25 |
some default properties have been changed to accommodate Isabelle |
|
40894 | 26 |
(e.g. the text area font).</li> |
39736 | 27 |
|
39738 | 28 |
<li>Formal Isabelle/Isar text is checked asynchronously while editing. |
29 |
The user is in full command of the editor, and the prover refrains |
|
30 |
from locking portions of the buffer etc.</li> |
|
39591 | 31 |
|
39738 | 32 |
<li>Prover feedback works via tooltips, syntax highlighting, colors, |
33 |
boxes etc. based on semantic markup provided by Isabelle in the |
|
34 |
background.</li> |
|
35 |
||
36 |
<li>Using the mouse together with the modifier key <tt>C</tt> |
|
37 |
(<tt>CONTROL</tt> on Linux or Windows, |
|
39736 | 38 |
<tt>COMMAND</tt> on Mac OS) exposes additional information.</li> |
39 |
||
39738 | 40 |
<li>Dockable panels (e.g. <em>Output</em>) are managed as independent |
41 |
windows by jEdit, which also allows multiple instances.</li> |
|
39591 | 42 |
|
43 |
</ul> |
|
44 |
||
41628 | 45 |
|
46 |
<h2>Isabelle symbols and fonts</h2> |
|
47 |
||
48 |
<ul> |
|
49 |
||
50 |
<li>Isabelle supports infinitely many symbols:<br/> |
|
43472
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
51 |
α, β, γ, …<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
52 |
∀, ∃, ∨, ∧, ⟶, ⟷, …<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
53 |
≤, ≥, ⊓, ⊔, …<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
54 |
ℵ, △, ∇, …<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
55 |
<tt>\<foo></tt>, <tt>\<bar></tt>, <tt>\<baz></tt>, …<br/> |
41628 | 56 |
</li> |
57 |
||
43470 | 58 |
<li>There are some special control symbols to modify the style of a |
59 |
<em>single</em> symbol:<br/> |
|
43472
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
60 |
⇩ subscript<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
61 |
⇧ superscript<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
62 |
⇣ subscript within identifier<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
63 |
⇡ superscript within identifier<br/> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
64 |
❙ bold face</li> |
43470 | 65 |
|
41628 | 66 |
<li>A default mapping relates some Isabelle symbols to Unicode points |
67 |
(see <tt>$ISABELLE_HOME/etc/symbols</tt> and <tt>$ISABELLE_HOME_USER/etc/symbols</tt>). |
|
68 |
</li> |
|
69 |
||
70 |
<li>The <em>IsabelleText</em> font ensures that Unicode points are actually |
|
71 |
seen on the screen (or printer). |
|
72 |
</li> |
|
73 |
||
74 |
<li>Input methods: |
|
75 |
<ul> |
|
76 |
<li>copy/paste from decoded source files</li> |
|
77 |
<li>copy/paste from prover output</li> |
|
78 |
<li>completion provided by Isabelle plugin, e.g.<br/> |
|
79 |
||
80 |
<table border="1"> |
|
81 |
<tr><th><b>name</b></th> <th><b>abbreviation</b></th> <th><b>symbol</b></th></tr> |
|
82 |
||
43472
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
83 |
<tr><td>lambda</td> <td><tt>%</tt></td> <td>λ</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
84 |
<tr><td>Rightarrow</td> <td><tt>=></tt></td> <td>⇒</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
85 |
<tr><td>Longrightarrow</td> <td><tt>==></tt></td> <td>⟹</td></tr> |
41628 | 86 |
|
43472
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
87 |
<tr><td>And</td> <td><tt>!!</tt></td> <td>⋀</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
88 |
<tr><td>equiv</td> <td><tt>==</tt></td> <td>≡</td></tr> |
41628 | 89 |
|
43472
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
90 |
<tr><td>forall</td> <td><tt>!</tt></td> <td>∀</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
91 |
<tr><td>exists</td> <td><tt>?</tt></td> <td>∃</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
92 |
<tr><td>longrightarrow</td> <td><tt>--></tt></td> <td>⟶</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
93 |
<tr><td>and</td> <td><tt>/\</tt></td> <td>∧</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
94 |
<tr><td>or</td> <td><tt>\/</tt></td> <td>∨</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
95 |
<tr><td>not</td> <td><tt>~ </tt></td> <td>¬</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
96 |
<tr><td>noteq</td> <td><tt>~=</tt></td> <td>≠</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
97 |
<tr><td>in</td> <td><tt>:</tt></td> <td>∈</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
98 |
<tr><td>notin</td> <td><tt>~:</tt></td> <td>∉</td></tr> |
43470 | 99 |
|
43472
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
100 |
<tr><td>sub</td> <td><tt>=_</tt></td> <td>⇩</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
101 |
<tr><td>sup</td> <td><tt>=^</tt></td> <td>⇧</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
102 |
<tr><td>isup</td> <td><tt>-_</tt></td> <td>⇣</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
103 |
<tr><td>isub</td> <td><tt>-^</tt></td> <td>⇡</td></tr> |
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
wenzelm
parents:
43470
diff
changeset
|
104 |
<tr><td>bold</td> <td><tt>-.</tt></td> <td>❙</td></tr> |
43470 | 105 |
|
41628 | 106 |
</table> |
107 |
</li> |
|
108 |
</ul> |
|
109 |
</li> |
|
110 |
||
111 |
<li><b>NOTE:</b> The above abbreviations refer to the input method. |
|
112 |
The logical notation provides ASCII alternatives that often |
|
113 |
coincide, but deviate occasionally. |
|
114 |
</li> |
|
115 |
||
116 |
<li><b>NOTE:</b> Generic jEdit abbreviations or plugins perform similar |
|
117 |
source replacement operations; this works for Isabelle as long |
|
118 |
as the Unicode sequences coincide with the symbol mapping. |
|
119 |
</li> |
|
120 |
||
121 |
</ul> |
|
122 |
||
123 |
||
44700 | 124 |
<h2>Limitations and workrounds (September 2011)</h2> |
41538
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
125 |
|
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
126 |
<ul> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
127 |
<li>No way to start/stop prover or switch to a different logic.<br/> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
128 |
<em>Workaround:</em> Change options and restart editor.</li> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
129 |
|
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
130 |
<li>Incremental reparsing sometimes produces unexpected command |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
131 |
spans.<br/> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
132 |
<em>Workaround:</em> Cut/paste larger parts or reload buffer.</li> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
133 |
|
44700 | 134 |
<li>Odd behavior of some diagnostic commands, notably those starting |
135 |
external processes asynchronously (e.g. <tt>thy_deps</tt>).<br/> |
|
136 |
<em>Workaround:</em> Avoid such commands.</li> |
|
41538
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
137 |
|
44700 | 138 |
<li>Lack of dependency managed for auxiliary files that contribute |
139 |
to a theory ("<b>uses</b>").<br/> |
|
140 |
<em>Workaround:</em> Re-use files manually within the prover.</li> |
|
41538
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
141 |
|
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
142 |
<li>No support for non-local markup, e.g. commands reporting on |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
143 |
previous commands (proof end on proof head), or markup produced by |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
144 |
loading external files.</li> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
145 |
|
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
146 |
<li>General lack of various conveniences known from Proof |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
147 |
General.</li> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
148 |
</ul> |
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
wenzelm
parents:
40894
diff
changeset
|
149 |
|
44700 | 150 |
|
151 |
<h2>Known problems with Mac OS</h2> |
|
152 |
||
153 |
<ul> |
|
154 |
||
155 |
<li>The MacOSX plugin for jEdit disrupts regular C-X/C/V operations, |
|
156 |
e.g. between the editor and the Console plugin, which is a standard |
|
157 |
swing text box. Similar for search boxes etc.</li> |
|
158 |
||
159 |
<li>ToggleButton selected state is not rendered if window focus is |
|
160 |
lost, which is probably a genuine feature of the Apple |
|
161 |
look-and-feel.</li> |
|
162 |
||
163 |
<li>Font.createFont mangles the font family of non-regular fonts, |
|
164 |
e.g. bold. IsabelleText font files need to be installed/updated |
|
165 |
manually.</li> |
|
166 |
||
167 |
<li>Missing glyphs are collected from other fonts (like Emacs, |
|
168 |
Firefox). This is actually an advantage over the Oracle/Sun JVM on |
|
169 |
Windows or Linux, but probably also the deeper reason for the other |
|
170 |
oddities of Apple font management.</li> |
|
171 |
||
172 |
<li>The native font renderer of -Dapple.awt.graphics.UseQuartz=true |
|
173 |
(not enabled by default) fails to handle the infinitesimal font size |
|
174 |
of "hidden" text (e.g. used in Isabelle sub/superscripts).</li> |
|
175 |
||
176 |
</ul> |
|
177 |
||
178 |
||
179 |
<h2>Known problems with OpenJDK 1.6.x</h2> |
|
180 |
||
181 |
<ul> |
|
182 |
||
183 |
<li>The 2D rendering engine of OpenJDK 1.6.x distorts the appearance |
|
184 |
of the jEdit text area. Always use official JRE 1.6.x from |
|
185 |
Sun/Oracle/Apple.</li> |
|
186 |
||
187 |
<li>jEdit on OpenJDK is generally not supported.</li> |
|
188 |
||
189 |
</ul> |
|
190 |
||
191 |
||
192 |
<h2>Licenses and home sites of contributing systems</h2> |
|
193 |
||
194 |
<ul> |
|
195 |
||
196 |
<li>Scala: BSD-style <br/> http://www.scala-lang.org</li> |
|
197 |
||
198 |
<li>jEdit: GPL (with special cases) <br/> http://www.jedit.org/</li> |
|
199 |
||
200 |
<li>Lobo/Cobra: GPL and LGPL <br/> http://lobobrowser.org/</li> |
|
201 |
||
202 |
</ul> |
|
203 |
||
39591 | 204 |
</body> |
205 |
</html> |