src/Tools/jEdit/README.html
author wenzelm
Fri, 25 Jan 2013 13:21:13 +0100
changeset 52017 0b48d00aba8f
parent 51559 c76b41cde4f5
child 52050 55b82b1417d1
permissions -rw-r--r--
minimal updated of jEdit/README.html, without any substantial reforms;
     1 <?xml version="1.0" encoding="UTF-8" ?>
     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"/>
     7 <style type="text/css" media="screen">
     8 body { font-family: IsabelleText; font-size: 14pt; }
     9 </style>
    10 <title>Welcome to the Isabelle/jEdit Prover IDE</title>
    11 </head>
    12 
    13 <body>
    14 
    15 <center><h2><img alt="PIDE" src="PIDE.png" width="230" align="middle"/></h2></center>
    16 
    17 <p>
    18   <b>PIDE</b> is a framework for sophisticated Prover IDEs,
    19   based on Isabelle/Scala technology that is integrated with Isabelle.
    20   It is built around a concept of
    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 the flagship application of the PIDE
    27   framework &mdash; it illustrates many of the ideas in a realistic
    28   manner, ready to be used right now in Isabelle applications.
    29 </p>
    30 
    31 <p>
    32   <em>Research and implementation of concepts around PIDE has started
    33   around 2008 and was kindly supported by BMBF (http://www.bmbf.de),
    34   Université Paris-Sud (http://www.u-psud.fr), Digiteo
    35   (http://www.digiteo.fr), and ANR
    36   (http://www.agence-nationale-recherche.fr).</em>
    37 </p>
    38 
    39 
    40 
    41 <h2>The Isabelle/jEdit Prover IDE</h2>
    42 
    43 <p>
    44 Isabelle/jEdit consists of some plugins for the well-known jEdit text
    45 editor framework (http://www.jedit.org), according to the following
    46 principles.
    47 </p>
    48 
    49 <ul>
    50 
    51 <li>The original jEdit look-and-feel is generally preserved, although
    52   some default properties have been changed to accommodate Isabelle
    53   (e.g. the text area font).</li>
    54 
    55 <li>Formal Isabelle/Isar text is checked asynchronously while editing.
    56   The user is in full command of the editor, and the prover refrains
    57   from locking portions of the buffer etc.</li>
    58 
    59 <li>Prover feedback works via tooltips, syntax highlighting, colors,
    60   boxes etc. based on semantic markup provided by Isabelle in the
    61   background.</li>
    62 
    63 <li>Using the mouse together with the modifier key <tt>C</tt>
    64 (<tt>CONTROL</tt> on Linux or Windows,
    65   <tt>COMMAND</tt> on Mac OS X) exposes additional information.</li>
    66 
    67 <li>Dockable panels (e.g. <em>Output</em>) are managed as independent
    68   windows by jEdit, which also allows multiple instances.</li>
    69 
    70 <li>Formal output (tooltips etc.) may be explored recursively, using the
    71 same techniques as in the editor source buffer.</li>
    72 
    73 <li>Prover process and source files are managed by the Isabelle/Scala on
    74 the editor side.  The prover experiences a mostly timeless and
    75 stateless environment of formal document content.</li>
    76 
    77 </ul>
    78 
    79 
    80 <h2>Isabelle symbols and fonts</h2>
    81 
    82 <ul>
    83   <li>Isabelle supports infinitely many symbols:<br/>
    84     α, β, γ, …<br/>
    85     ∀, ∃, ∨, ∧, ⟶, ⟷, …<br/>
    86     ≤, ≥, ⊓, ⊔, …<br/>
    87     ℵ, △, ∇, …<br/>
    88     <tt>\&lt;foo&gt;</tt>, <tt>\&lt;bar&gt;</tt>, <tt>\&lt;baz&gt;</tt>, …<br/>
    89   </li>
    90 
    91   <li>There are some special control symbols to modify the style of a
    92   <em>single</em> symbol:<br/>
    93     ⇩ subscript<br/>
    94     ⇧ superscript<br/>
    95     ⇣ subscript within identifier<br/>
    96     ⇡ superscript within identifier<br/>
    97     ❙ bold face</li>
    98 
    99   <li>A default mapping relates some Isabelle symbols to Unicode points
   100     (see <tt>$ISABELLE_HOME/etc/symbols</tt> and <tt>$ISABELLE_HOME_USER/etc/symbols</tt>).
   101   </li>
   102 
   103   <li>The <em>IsabelleText</em> font ensures that Unicode points are actually
   104     seen on the screen (or printer).
   105   </li>
   106 
   107   <li>Input methods:
   108     <ul>
   109       <li>use the Symbols dockable</li>
   110       <li>copy/paste from decoded source files</li>
   111       <li>copy/paste from prover output</li>
   112       <li>completion provided by Isabelle plugin, e.g.<br/>
   113 
   114       <table border="1">
   115       <tr><th><b>name</b></th>    <th><b>abbreviation</b></th>  <th><b>symbol</b></th></tr>
   116 
   117       <tr><td>lambda</td>         <td><tt>%</tt></td>           <td>λ</td></tr>
   118       <tr><td>Rightarrow</td>     <td><tt>=&gt;</tt></td>       <td>⇒</td></tr>
   119       <tr><td>Longrightarrow</td> <td><tt>==&gt;</tt></td>      <td>⟹</td></tr>
   120 
   121       <tr><td>And</td>            <td><tt>!!</tt></td>          <td>⋀</td></tr>
   122       <tr><td>equiv</td>          <td><tt>==</tt></td>          <td>≡</td></tr>
   123 
   124       <tr><td>forall</td>         <td><tt>!</tt></td>           <td>∀</td></tr>
   125       <tr><td>exists</td>         <td><tt>?</tt></td>           <td>∃</td></tr>
   126       <tr><td>longrightarrow</td> <td><tt>--&gt;</tt></td>      <td>⟶</td></tr>
   127       <tr><td>and</td>            <td><tt>/\</tt></td>          <td>∧</td></tr>
   128       <tr><td>or</td>             <td><tt>\/</tt></td>          <td>∨</td></tr>
   129       <tr><td>not</td>            <td><tt>~ </tt></td>          <td>¬</td></tr>
   130       <tr><td>noteq</td>          <td><tt>~=</tt></td>          <td>≠</td></tr>
   131       <tr><td>in</td>             <td><tt>:</tt></td>           <td>∈</td></tr>
   132       <tr><td>notin</td>          <td><tt>~:</tt></td>          <td>∉</td></tr>
   133 
   134       <tr><td>sub</td>            <td><tt>=_</tt></td>          <td>⇩</td></tr>
   135       <tr><td>sup</td>            <td><tt>=^</tt></td>          <td>⇧</td></tr>
   136       <tr><td>isup</td>           <td><tt>-_</tt></td>          <td>⇣</td></tr>
   137       <tr><td>isub</td>           <td><tt>-^</tt></td>          <td>⇡</td></tr>
   138       <tr><td>bold</td>           <td><tt>-.</tt></td>          <td>❙</td></tr>
   139 
   140     </table>
   141     </li>
   142   </ul>
   143   </li>
   144 
   145   <li><b>NOTE:</b> The above abbreviations refer to the input method.
   146     The logical notation provides ASCII alternatives that often
   147     coincide, but deviate occasionally.
   148   </li>
   149 
   150   <li><b>NOTE:</b> Generic jEdit abbreviations or plugins perform similar
   151     source replacement operations; this works for Isabelle as long
   152     as the Unicode sequences coincide with the symbol mapping.
   153   </li>
   154 
   155   <li><b>NOTE:</b> Raw unicode characters within prover source files
   156   should be restricted to informal parts, e.g. to write text in
   157   non-latin alphabets.  Mathematical symbols should be defined via the
   158   official rendering tables.
   159   </li>
   160 
   161 </ul>
   162 
   163 
   164 <h2>Limitations and known problems</h2>
   165 
   166 <ul>
   167   <li>Lack of dependency managed for auxiliary files that contribute
   168   to a theory (e.g. <tt>ML_file</tt>).<br/>
   169   <em>Workaround:</em> Re-load files manually within the prover.</li>
   170 
   171   <li>Odd behavior of some diagnostic commands with global
   172   side-effects, like writing a physical
   173   file.<br/>  <em>Workaround:</em> Avoid such commands.</li>
   174 
   175   <li>No way to delete document nodes from the overall collection of
   176   theories.<br/>
   177   <em>Workaround:</em> Restart whole Isabelle/jEdit session in
   178   worst-case situation.</li>
   179 
   180   <li>No support for non-local markup, e.g. commands reporting on
   181   previous commands (proof end on proof head), or markup produced by
   182   loading external files.</li>
   183 
   184   <li>The native MacOSX plugin for jEdit tends to be disruptive. It
   185   might or might not improve the user experience, and is off by
   186   default.</li>
   187 
   188   <li>Java 7 on MacOSX is officially supported on Lion and Mountain
   189   Lion, but not Snow Leopard. It usually works on the latter, but
   190   there might be some instabilities.</li>
   191 </ul>
   192 
   193 
   194 <h2>Licenses and home sites of contributing systems</h2>
   195 
   196 <ul>
   197 
   198 <li>Isabelle: BSD-style</li>
   199 
   200 <li>Scala: BSD-style <br/> http://www.scala-lang.org</li>
   201 
   202 <li>jEdit: GPL (with special cases) <br/> http://www.jedit.org/</li>
   203 
   204 <li>Lobo/Cobra: GPL and LGPL <br/> http://lobobrowser.org/</li>
   205 
   206 </ul>
   207 
   208 </body>
   209 </html>