21 <em>asynchronous document processing</em>, which is supported |
21 <em>asynchronous document processing</em>, which is supported |
22 natively by the <em>parallel proof engine</em> implemented in Isabelle/ML. |
22 natively by the <em>parallel proof engine</em> implemented in Isabelle/ML. |
23 </p> |
23 </p> |
24 |
24 |
25 <p> |
25 <p> |
26 <b>Isabelle/jEdit</b> is the flagship application of the PIDE |
26 <b>Isabelle/jEdit</b> is the flagship application of the PIDE framework |
27 framework — it illustrates many of the ideas in a realistic |
27 — it is ready for small and large Isabelle applications, for |
28 manner, ready to be used right now in Isabelle applications. |
28 beginners and experts alike. |
29 </p> |
29 </p> |
30 |
30 |
31 <p> |
31 <p> |
32 <em>Research and implementation of concepts around PIDE has started |
32 <em>Research and implementation of concepts around PIDE has started |
33 around 2008 and was kindly supported by BMBF (http://www.bmbf.de), |
33 around 2008 and was kindly supported by BMBF (http://www.bmbf.de), |
46 principles. |
46 principles. |
47 </p> |
47 </p> |
48 |
48 |
49 <ul> |
49 <ul> |
50 |
50 |
51 <li>The original jEdit look-and-feel is generally preserved, although |
51 <li>The original jEdit look-and-feel is generally preserved, although some |
52 some default properties have been changed to accommodate Isabelle |
52 default properties have been changed to accommodate Isabelle (e.g. the text |
53 (e.g. the text area font).</li> |
53 area font).</li> |
54 |
54 |
55 <li>Formal Isabelle/Isar text is checked asynchronously while editing. |
55 <li>Formal Isabelle/Isar text is checked asynchronously while editing. The |
56 The user is in full command of the editor, and the prover refrains |
56 user is in full command of the editor, and the prover refrains from locking |
57 from locking portions of the buffer etc.</li> |
57 portions of the buffer.</li> |
58 |
58 |
59 <li>Prover feedback works via tooltips, syntax highlighting, colors, |
59 <li>Prover feedback works via colors, boxes, squiggly underline, |
60 boxes etc. based on semantic markup provided by Isabelle in the |
60 hyperlinks, popup windows, icons, clickable output, all based on semantic |
61 background.</li> |
61 markup produced by Isabelle in the background.</li> |
62 |
62 |
63 <li>Using the mouse together with the modifier key <tt>C</tt> |
63 <li>Using the mouse together with the modifier key <tt>CONTROL</tt> (Linux, |
64 (<tt>CONTROL</tt> on Linux or Windows, |
64 Windows) or <tt>COMMAND</tt> (Mac OS X) exposes additional formal |
65 <tt>COMMAND</tt> on Mac OS X) exposes additional information.</li> |
65 content.</li> |
66 |
66 |
67 <li>Dockable panels (e.g. <em>Output</em>) are managed as independent |
67 <li>Dockable panels (e.g. <em>Output</em>, <em>Symbols</em>) are managed as |
68 windows by jEdit, which also allows multiple instances.</li> |
68 independent windows by jEdit, which also allows multiple instances.</li> |
69 |
69 |
70 <li>Formal output (tooltips etc.) may be explored recursively, using the |
70 <li>Formal output (in popups etc.) may be explored recursively, using the |
71 same techniques as in the editor source buffer.</li> |
71 same techniques as in the editor source buffer.</li> |
72 |
72 |
73 <li>Prover process and source files are managed by the Isabelle/Scala on |
73 <li>The prover process and source files are managed on the editor side. The |
74 the editor side. The prover experiences a mostly timeless and |
74 prover operates on timeless and stateless document content via |
75 stateless environment of formal document content.</li> |
75 Isabelle/Scala.</li> |
|
76 |
|
77 <li>Plugin options of jEdit (for the <em>Isabelle</em> plugin) give access |
|
78 to a selection of Isabelle/Scala options and its persistence preferences, |
|
79 usually with immediate effect on the prover back-end or editor |
|
80 front-end.</li> |
|
81 |
|
82 <li>The logic image of the prover session may be specified within |
|
83 Isabelle/jEdit, but this requires restart. The new image is provided |
|
84 automatically by the Isabelle build process.</li> |
76 |
85 |
77 </ul> |
86 </ul> |
78 |
87 |
79 |
88 |
80 <h2>Isabelle symbols and fonts</h2> |
89 <h2>Isabelle symbols and fonts</h2> |
150 <li><b>NOTE:</b> Generic jEdit abbreviations or plugins perform similar |
159 <li><b>NOTE:</b> Generic jEdit abbreviations or plugins perform similar |
151 source replacement operations; this works for Isabelle as long |
160 source replacement operations; this works for Isabelle as long |
152 as the Unicode sequences coincide with the symbol mapping. |
161 as the Unicode sequences coincide with the symbol mapping. |
153 </li> |
162 </li> |
154 |
163 |
155 <li><b>NOTE:</b> Raw unicode characters within prover source files |
164 <li><b>NOTE:</b> Raw Unicode characters within prover source files |
156 should be restricted to informal parts, e.g. to write text in |
165 should be restricted to informal parts, e.g. to write text in |
157 non-latin alphabets. Mathematical symbols should be defined via the |
166 non-latin alphabets. Mathematical symbols should be defined via the |
158 official rendering tables. |
167 official rendering tables. |
159 </li> |
168 </li> |
160 |
169 |
|
170 <li><b>NOTE:</b> Control symbols may be applied to a region of selected |
|
171 text, either using the Symbols dockable or keyboard shortcuts.</li> |
|
172 |
161 </ul> |
173 </ul> |
162 |
174 |
163 |
175 |
164 <h2>Limitations and known problems</h2> |
176 <h2>Limitations and known problems</h2> |
165 |
177 |
166 <ul> |
178 <ul> |
167 <li>Lack of dependency managed for auxiliary files that contribute |
179 <li>Keyboard shortcuts C-PLUS and C-MINUS for adjusting the editor font |
|
180 size depend on platform details and national keyboards.<br/> |
|
181 <em>Workaround: Use numeric keypad or rebind keys in the jEdit Shortcuts |
|
182 options dialog.</em></li> |
|
183 |
|
184 <li>Lack of dependency management for auxiliary files that contribute |
168 to a theory (e.g. <tt>ML_file</tt>).<br/> |
185 to a theory (e.g. <tt>ML_file</tt>).<br/> |
169 <em>Workaround:</em> Re-load files manually within the prover.</li> |
186 <em>Workaround:</em> Re-load files manually within the prover.</li> |
170 |
187 |
171 <li>Odd behavior of some diagnostic commands with global |
188 <li>Odd behavior of some diagnostic commands with global |
172 side-effects, like writing a physical |
189 side-effects, like writing a physical |
175 <li>No way to delete document nodes from the overall collection of |
192 <li>No way to delete document nodes from the overall collection of |
176 theories.<br/> |
193 theories.<br/> |
177 <em>Workaround:</em> Restart whole Isabelle/jEdit session in |
194 <em>Workaround:</em> Restart whole Isabelle/jEdit session in |
178 worst-case situation.</li> |
195 worst-case situation.</li> |
179 |
196 |
180 <li>No support for non-local markup, e.g. commands reporting on |
197 <li>Some Linux desktop environments with extreme animation effects |
181 previous commands (proof end on proof head), or markup produced by |
198 may disrupt Java 7 window placement and keyboard focus.</br/> |
182 loading external files.</li> |
199 <em>Workaround:</em> Disable such effects.</li> |
183 |
200 |
184 <li>The native MacOSX plugin for jEdit tends to be disruptive. It |
201 <li>The native MacOSX plugin for jEdit tends to be disruptive and is off |
185 might or might not improve the user experience, and is off by |
202 by default. Enabling it might or might not improve the user |
186 default.</li> |
203 experience.<br/> |
187 |
204 <em>Workaround:</em> Disable MacOSX plugin.</li></li> |
188 <li>Java 7 on MacOSX is officially supported on Lion and Mountain |
205 |
189 Lion, but not Snow Leopard. It usually works on the latter, but |
206 <li>Java 7 on MacOSX is officially supported on Lion and Mountain Lion, |
190 there might be some instabilities.</li> |
207 but not Snow Leopard. It usually works on the latter, although with a |
|
208 small risk of instabilities.<br/> |
|
209 <em>Workaround:</em> Update to OS X Mountain Lion.</li> |
191 </ul> |
210 </ul> |
192 |
211 |
193 |
212 |
194 <h2>Licenses and home sites of contributing systems</h2> |
213 <h2>Licenses and home sites of contributing systems</h2> |
195 |
214 |
196 <ul> |
215 <ul> |
197 |
216 |
198 <li>Isabelle: BSD-style</li> |
217 <li>Isabelle: BSD-style</li> |
199 |
218 |
|
219 <li>Poly/ML: LGPL <br/> http://www.polyml.org </li> |
|
220 |
200 <li>Scala: BSD-style <br/> http://www.scala-lang.org</li> |
221 <li>Scala: BSD-style <br/> http://www.scala-lang.org</li> |
201 |
222 |
202 <li>jEdit: GPL (with special cases) <br/> http://www.jedit.org/</li> |
223 <li>jEdit: GPL (with special cases) <br/> http://www.jedit.org</li> |
203 |
224 |
204 <li>Lobo/Cobra: GPL and LGPL <br/> http://lobobrowser.org/</li> |
225 <li>JFreeChart: LGPL <br/> http://www.jfree.org</li> |
|
226 |
|
227 <li>Lobo/Cobra: GPL and LGPL <br/> http://lobobrowser.org</li> |
205 |
228 |
206 </ul> |
229 </ul> |
207 |
230 |
208 </body> |
231 </body> |
209 </html> |
232 </html> |