| author | wenzelm | 
| Fri, 03 Aug 2012 16:00:12 +0200 | |
| changeset 48662 | b171bcd5dd86 | 
| parent 47741 | 9c44fdd287a1 | 
| child 48917 | ce37d4f8b4f4 | 
| 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: 
43472diff
changeset | 8 | body { font-family: STIXGeneral, IsabelleText; font-size: 14pt; }
 | 
| 43470 | 9 | </style> | 
| 45098 | 10 | <title>Welcome to the Isabelle/jEdit Prover IDE</title> | 
| 39591 | 11 | </head> | 
| 12 | ||
| 13 | <body> | |
| 14 | ||
| 45099 | 15 | <center><h2><img alt="PIDE" src="PIDE.png" width="230" align="middle"/></h2></center> | 
| 45098 | 16 | |
| 17 | <p> | |
| 45099 | 18 | <b>PIDE</b> is a novel framework for sophisticated Prover IDEs, | 
| 45098 | 19 | based on Isabelle/Scala technology that is integrated with Isabelle. | 
| 47741 | 20 | It is built around a concept of | 
| 45098 | 21 | <em>asynchronous document processing</em>, which is supported | 
| 22 | natively by the <em>parallel proof engine</em> implemented in Isabelle/ML. | |
| 23 | </p> | |
| 24 | ||
| 25 | <p> | |
| 26 | <b>Isabelle/jEdit</b> is an example application within the PIDE | |
| 27 | framework — it illustrates many of the ideas in a realistic | |
| 28 | manner, ready to be used right now in Isabelle applications. | |
| 29 | </p> | |
| 44700 | 30 | |
| 45098 | 31 | <p> | 
| 47491 | 32 | <em>Research and implementation of concepts around PIDE has started | 
| 33 | around 2008 and was kindly supported by BMBF (http://www.bmbf.de), | |
| 45098 | 34 | Université Paris-Sud (http://www.u-psud.fr), and Digiteo | 
| 35 | (http://www.digiteo.fr).</em> | |
| 36 | </p> | |
| 37 | ||
| 38 | ||
| 39 | ||
| 40 | <h2>The Isabelle/jEdit Prover IDE</h2> | |
| 41 | ||
| 42 | <p> | |
| 43 | Isabelle/jEdit consists of some plugins for the well-known jEdit text | |
| 44 | editor framework (http://www.jedit.org), according to the following | |
| 45 | principles. | |
| 46 | </p> | |
| 39591 | 47 | |
| 48 | <ul> | |
| 49 | ||
| 39738 | 50 | <li>The original jEdit look-and-feel is generally preserved, although | 
| 51 | some default properties have been changed to accommodate Isabelle | |
| 40894 | 52 | (e.g. the text area font).</li> | 
| 39736 | 53 | |
| 39738 | 54 | <li>Formal Isabelle/Isar text is checked asynchronously while editing. | 
| 55 | The user is in full command of the editor, and the prover refrains | |
| 56 | from locking portions of the buffer etc.</li> | |
| 39591 | 57 | |
| 39738 | 58 | <li>Prover feedback works via tooltips, syntax highlighting, colors, | 
| 59 | boxes etc. based on semantic markup provided by Isabelle in the | |
| 60 | background.</li> | |
| 61 | ||
| 62 | <li>Using the mouse together with the modifier key <tt>C</tt> | |
| 63 | (<tt>CONTROL</tt> on Linux or Windows, | |
| 45097 | 64 | <tt>COMMAND</tt> on Mac OS X) exposes additional information.</li> | 
| 39736 | 65 | |
| 39738 | 66 | <li>Dockable panels (e.g. <em>Output</em>) are managed as independent | 
| 67 | windows by jEdit, which also allows multiple instances.</li> | |
| 39591 | 68 | |
| 45098 | 69 | <li>Prover process and source files are managed by the Scala layer on | 
| 70 | the editor side. The prover experiences a mostly timeless and | |
| 71 | stateless environment of formal document content.</li> | |
| 72 | ||
| 39591 | 73 | </ul> | 
| 74 | ||
| 41628 | 75 | |
| 76 | <h2>Isabelle symbols and fonts</h2> | |
| 77 | ||
| 78 | <ul> | |
| 79 | <li>Isabelle supports infinitely many symbols:<br/> | |
| 43472 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 80 | α, β, γ, …<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 81 | ∀, ∃, ∨, ∧, ⟶, ⟷, …<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 82 | ≤, ≥, ⊓, ⊔, …<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 83 | ℵ, △, ∇, …<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 84 | <tt>\<foo></tt>, <tt>\<bar></tt>, <tt>\<baz></tt>, …<br/> | 
| 41628 | 85 | </li> | 
| 86 | ||
| 43470 | 87 | <li>There are some special control symbols to modify the style of a | 
| 88 | <em>single</em> symbol:<br/> | |
| 43472 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 89 | ⇩ subscript<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 90 | ⇧ superscript<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 91 | ⇣ subscript within identifier<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 92 | ⇡ superscript within identifier<br/> | 
| 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 93 | ❙ bold face</li> | 
| 43470 | 94 | |
| 41628 | 95 | <li>A default mapping relates some Isabelle symbols to Unicode points | 
| 96 | (see <tt>$ISABELLE_HOME/etc/symbols</tt> and <tt>$ISABELLE_HOME_USER/etc/symbols</tt>). | |
| 97 | </li> | |
| 98 | ||
| 99 | <li>The <em>IsabelleText</em> font ensures that Unicode points are actually | |
| 100 | seen on the screen (or printer). | |
| 101 | </li> | |
| 102 | ||
| 103 | <li>Input methods: | |
| 104 | <ul> | |
| 105 | <li>copy/paste from decoded source files</li> | |
| 106 | <li>copy/paste from prover output</li> | |
| 107 | <li>completion provided by Isabelle plugin, e.g.<br/> | |
| 108 | ||
| 109 | <table border="1"> | |
| 110 | <tr><th><b>name</b></th> <th><b>abbreviation</b></th> <th><b>symbol</b></th></tr> | |
| 111 | ||
| 43472 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 112 | <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: 
43470diff
changeset | 113 | <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: 
43470diff
changeset | 114 | <tr><td>Longrightarrow</td> <td><tt>==></tt></td> <td>⟹</td></tr> | 
| 41628 | 115 | |
| 43472 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 116 | <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: 
43470diff
changeset | 117 | <tr><td>equiv</td> <td><tt>==</tt></td> <td>≡</td></tr> | 
| 41628 | 118 | |
| 43472 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 119 | <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: 
43470diff
changeset | 120 | <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: 
43470diff
changeset | 121 | <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: 
43470diff
changeset | 122 | <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: 
43470diff
changeset | 123 | <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: 
43470diff
changeset | 124 | <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: 
43470diff
changeset | 125 | <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: 
43470diff
changeset | 126 | <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: 
43470diff
changeset | 127 | <tr><td>notin</td> <td><tt>~:</tt></td> <td>∉</td></tr> | 
| 43470 | 128 | |
| 43472 
ac6db8f44e5d
literal unicode in README.html allows to copy/paste from Lobo output;
 wenzelm parents: 
43470diff
changeset | 129 | <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: 
43470diff
changeset | 130 | <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: 
43470diff
changeset | 131 | <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: 
43470diff
changeset | 132 | <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: 
43470diff
changeset | 133 | <tr><td>bold</td> <td><tt>-.</tt></td> <td>❙</td></tr> | 
| 43470 | 134 | |
| 41628 | 135 | </table> | 
| 136 | </li> | |
| 137 | </ul> | |
| 138 | </li> | |
| 139 | ||
| 140 | <li><b>NOTE:</b> The above abbreviations refer to the input method. | |
| 141 | The logical notation provides ASCII alternatives that often | |
| 142 | coincide, but deviate occasionally. | |
| 143 | </li> | |
| 144 | ||
| 145 | <li><b>NOTE:</b> Generic jEdit abbreviations or plugins perform similar | |
| 146 | source replacement operations; this works for Isabelle as long | |
| 147 | as the Unicode sequences coincide with the symbol mapping. | |
| 148 | </li> | |
| 149 | ||
| 45107 | 150 | <li><b>NOTE:</b> Raw unicode characters within prover source files | 
| 45098 | 151 | should be restricted to informal parts, e.g. to write text in | 
| 152 | non-latin alphabets. Mathematical symbols should be defined via the | |
| 153 | official rendering tables. | |
| 154 | </li> | |
| 155 | ||
| 41628 | 156 | </ul> | 
| 157 | ||
| 158 | ||
| 47741 | 159 | <h2>Limitations and workarounds (May 2012)</h2> | 
| 41538 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 160 | |
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 161 | <ul> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 162 | <li>No way to start/stop prover or switch to a different logic.<br/> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 163 | <em>Workaround:</em> Change options and restart editor.</li> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 164 | |
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 165 | <li>Incremental reparsing sometimes produces unexpected command | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 166 | spans.<br/> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 167 | <em>Workaround:</em> Cut/paste larger parts or reload buffer.</li> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 168 | |
| 44700 | 169 | <li>Odd behavior of some diagnostic commands, notably those starting | 
| 170 | external processes asynchronously (e.g. <tt>thy_deps</tt>).<br/> | |
| 171 | <em>Workaround:</em> Avoid such commands.</li> | |
| 41538 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 172 | |
| 44700 | 173 | <li>Lack of dependency managed for auxiliary files that contribute | 
| 174 |   to a theory ("<b>uses</b>").<br/>
 | |
| 175 | <em>Workaround:</em> Re-use files manually within the prover.</li> | |
| 41538 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 176 | |
| 44806 | 177 | <li>No way to delete document nodes from the overall collection of | 
| 178 | theories.<br/> | |
| 179 | <em>Workaround:</em> Restart whole Isabelle/jEdit session in | |
| 180 | worst-case situation.</li> | |
| 181 | ||
| 41538 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 182 | <li>No support for non-local markup, e.g. commands reporting on | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 183 | previous commands (proof end on proof head), or markup produced by | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 184 | loading external files.</li> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 185 | |
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 186 | <li>General lack of various conveniences known from Proof | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 187 | General.</li> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 188 | </ul> | 
| 
d060ccad02bd
updated Isabelle/jEdit limitations and workarounds;
 wenzelm parents: 
40894diff
changeset | 189 | |
| 44700 | 190 | |
| 46118 | 191 | <h2>Known problems with Mac OS X (Java 1.6)</h2> | 
| 44700 | 192 | |
| 193 | <ul> | |
| 194 | ||
| 195 | <li>The MacOSX plugin for jEdit disrupts regular C-X/C/V operations, | |
| 196 | e.g. between the editor and the Console plugin, which is a standard | |
| 197 | swing text box. Similar for search boxes etc.</li> | |
| 198 | ||
| 45097 | 199 | <li><tt>Font.createFont</tt> mangles the font family of non-regular | 
| 200 | fonts, e.g. bold. IsabelleText font files need to be | |
| 201 | installed/updated manually if bold versions are desired. Note that | |
| 202 | this has to be repeated whenever fonts shipped with Isabelle are | |
| 203 | updated!</li> | |
| 44700 | 204 | |
| 205 | <li>Missing glyphs are collected from other fonts (like Emacs, | |
| 45097 | 206 | Firefox). This is actually an advantage over the Oracle JVM on | 
| 207 | Windows or Linux, but also the deeper reason for other oddities of | |
| 208 | Apple font management.</li> | |
| 44700 | 209 | |
| 45097 | 210 | <li>The native font renderer | 
| 211 | of <tt>-Dapple.awt.graphics.UseQuartz=true</tt> (<em>not</em> | |
| 212 | enabled by default) fails to handle the infinitesimal font size of | |
| 213 | "hidden" text (e.g. used in Isabelle sub/superscripts).</li> | |
| 44700 | 214 | |
| 215 | </ul> | |
| 216 | ||
| 217 | ||
| 218 | <h2>Licenses and home sites of contributing systems</h2> | |
| 219 | ||
| 220 | <ul> | |
| 221 | ||
| 45098 | 222 | <li>Isabelle: BSD-style</li> | 
| 223 | ||
| 44700 | 224 | <li>Scala: BSD-style <br/> http://www.scala-lang.org</li> | 
| 225 | ||
| 226 | <li>jEdit: GPL (with special cases) <br/> http://www.jedit.org/</li> | |
| 227 | ||
| 228 | <li>Lobo/Cobra: GPL and LGPL <br/> http://lobobrowser.org/</li> | |
| 229 | ||
| 230 | </ul> | |
| 231 | ||
| 39591 | 232 | </body> | 
| 233 | </html> |