src/HOL/Library/README.html
changeset 57412 b441f330078b
parent 42062 9fe5daa2e705
equal deleted inserted replaced
57411:9444489766a1 57412:b441f330078b
    20 ``module system'' of Isabelle is rather simplistic.  The following
    20 ``module system'' of Isabelle is rather simplistic.  The following
    21 guidelines may be helpful to achieve maximum re-usability and minimum
    21 guidelines may be helpful to achieve maximum re-usability and minimum
    22 clashes with existing developments.
    22 clashes with existing developments.
    23 
    23 
    24 <dl>
    24 <dl>
    25 
       
    26 <dt><strong>Files</strong>
       
    27 
       
    28 <dd>Avoid unnecessary scattering of theories over several files.  Use
       
    29 new-style theories only, as old ones tend to clutter the file space
       
    30 with separate <tt>.thy</tt> and <tt>.ML</tt> files.
       
    31 
    25 
    32 <dt><strong>Examples</strong>
    26 <dt><strong>Examples</strong>
    33 
    27 
    34 <dd>Theories should be as ``generic'' as is sensible.  Unused (or
    28 <dd>Theories should be as ``generic'' as is sensible.  Unused (or
    35 rather unusable?) theories should be avoided; common applications
    29 rather unusable?) theories should be avoided; common applications
    52 taken, as the name spaces are always ``open''.  Use adequate names;
    46 taken, as the name spaces are always ``open''.  Use adequate names;
    53 avoid unreadable abbreviations.  The general naming convention is to
    47 avoid unreadable abbreviations.  The general naming convention is to
    54 separate word constituents by underscores, as in <tt>foo_bar</tt> or
    48 separate word constituents by underscores, as in <tt>foo_bar</tt> or
    55 <tt>Foo_Bar</tt> (this looks best in LaTeX output).
    49 <tt>Foo_Bar</tt> (this looks best in LaTeX output).
    56 
    50 
    57 <p>
       
    58 
       
    59 Note that syntax is <em>global</em>; qualified names lose syntax on
       
    60 output.  Do not use ``exotic'' symbols for syntax (such as
       
    61 <tt>\&lt;oplus&gt;</tt>), but leave these for user applications.
       
    62 
       
    63 <dt><strong>Global context declarations</strong>
    51 <dt><strong>Global context declarations</strong>
    64 
    52 
    65 <dd>Only items introduced in the present theory should be declared
    53 <dd>Only items introduced in the present theory should be declared
    66 globally (e.g. as Simplifier rules).  Note that adding and deleting
    54 globally (e.g. as Simplifier rules).  Note that adding and deleting
    67 rules from parent theories may result in strange behavior later,
    55 rules from parent theories may result in strange behavior later,
    68 depending on the user's arrangement of import lists.
    56 depending on the user's arrangement of import lists.
    69 
       
    70 <dt><strong>Mathematical symbols</strong>
       
    71 
       
    72 <dd>Non-ASCII symbols should be used as appropriate, with some
       
    73 care. In particular, avoid unreadable arrows: <tt>==&gt;</tt> should
       
    74 be preferred over <tt>\&lt;Longrightarrow&gt;</tt>. Use <tt>isabelle
       
    75 unsymbolize</tt> to clean up the sources.
       
    76 
       
    77 <p>
       
    78 
       
    79 The following ASCII symbols of HOL should be generally avoided:
       
    80 <tt>@</tt>, <tt>!</tt>, <tt>?</tt>, <tt>?!</tt>, <tt>%</tt>, better
       
    81 use <tt>SOME</tt>, <tt>ALL</tt> (or <tt>\&lt;forall&gt;</tt>),
       
    82 <tt>EX</tt> (or <tt>\&lt;exists&gt;</tt>), <tt>EX!</tt> (or
       
    83 <tt>\&lt;exists&gt;!</tt>), <tt>\&lt;lambda&gt;</tt>, respectively.
       
    84 Note that bracket notation <tt>[|&nbsp;|]</tt> looks bad in LaTeX
       
    85 output.
       
    86 
       
    87 <p>
       
    88 
       
    89 Some additional mathematical symbols are quite suitable for both
       
    90 readable sources and the output document:
       
    91 <tt>\&lt;Inter&gt;</tt>,
       
    92 <tt>\&lt;Union&gt;</tt>,
       
    93 <tt>\&lt;and&gt;</tt>,
       
    94 <tt>\&lt;in&gt;</tt>,
       
    95 <tt>\&lt;inter&gt;</tt>,
       
    96 <tt>\&lt;le&gt;</tt>,
       
    97 <tt>\&lt;not&gt;</tt>,
       
    98 <tt>\&lt;noteq&gt;</tt>,
       
    99 <tt>\&lt;notin&gt;</tt>,
       
   100 <tt>\&lt;or&gt;</tt>,
       
   101 <tt>\&lt;subset&gt;</tt>,
       
   102 <tt>\&lt;subseteq&gt;</tt>,
       
   103 <tt>\&lt;times&gt;</tt>,
       
   104 <tt>\&lt;union&gt;</tt>.
       
   105 
    57 
   106 <dt><strong>Spacing</strong>
    58 <dt><strong>Spacing</strong>
   107 
    59 
   108 <dd>Isabelle is able to produce a high-quality LaTeX document from the
    60 <dd>Isabelle is able to produce a high-quality LaTeX document from the
   109 theory sources, provided some minor issues are taken care of.  In
    61 theory sources, provided some minor issues are taken care of.  In
   110 particular, spacing and line breaks are directly taken from source
    62 particular, spacing and line breaks are directly taken from source
   111 text.  Incidentally, output looks very good if common type-setting
    63 text.  Incidentally, output looks very good if common type-setting
   112 conventions are observed: put a single space <em>after</em> each
    64 conventions are observed: put a single space <em>after</em> each
   113 punctuation character ("<tt>,</tt>", "<tt>.</tt>", etc.), but none
    65 punctuation character ("<tt>,</tt>", "<tt>.</tt>", etc.), but none
   114 before it; do not extra spaces inside of parentheses, unless the
    66 before it; do not extra spaces inside of parentheses; do not attempt
   115 delimiters are composed of multiple symbols (as in
    67 to simulate table markup with spaces, avoid ``hanging'' indentations.
   116 <tt>[|&nbsp;|]</tt>); do not attempt to simulate table markup with
       
   117 spaces, avoid ``hanging'' indentations.
       
   118 
    68 
   119 </dl>
    69 </dl>
   120 
    70 
   121 </body>
    71 </body>
   122 </html>
    72 </html>