]> matita.cs.unibo.it Git - helm.git/blob - helm/www/matita/docs/manual/sec_terms.html
manual regenerated
[helm.git] / helm / www / matita / docs / manual / sec_terms.html
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
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"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Syntax</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Matita V0.1.0&#10; User Manual (rev. 1α)" /><link rel="up" href="index.html" title="Matita V0.1.0&#10; User Manual (rev. 1α)" /><link rel="prev" href="authoring.html" title="Authoring" /><link rel="next" href="axiom_definition_declaration.html" title="Definitions and declarations" /></head><body><a xmlns="" href="../../"><div class="matita_logo"><img src="../../images/matita-tiny.png" alt="Tiny Matita logo" /><span>Matita Home</span></div></a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Syntax</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="authoring.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="axiom_definition_declaration.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="sec_terms"></a>Chapter 4. Syntax</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="sec_terms.html#terms_and_co">Terms &amp; co.</a></span></dt><dd><dl><dt><span class="sect2"><a href="sec_terms.html#lexical">Lexical conventions</a></span></dt><dt><span class="sect2"><a href="sec_terms.html#terms">Terms</a></span></dt></dl></dd><dt><span class="sect1"><a href="axiom_definition_declaration.html">Definitions and declarations</a></span></dt><dd><dl><dt><span class="sect2"><a href="axiom_definition_declaration.html#axiom">axiom</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#definition">definition</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#inductive">(co)inductive types declaration</a></span></dt><dt><span class="sect2"><a href="axiom_definition_declaration.html#record">record</a></span></dt></dl></dd><dt><span class="sect1"><a href="proofs.html">Proofs</a></span></dt><dd><dl><dt><span class="sect2"><a href="proofs.html#theorem">theorem</a></span></dt><dt><span class="sect2"><a href="proofs.html#variant">variant</a></span></dt><dt><span class="sect2"><a href="proofs.html#lemma">lemma</a></span></dt><dt><span class="sect2"><a href="proofs.html#fact">fact</a></span></dt><dt><span class="sect2"><a href="proofs.html#remark">remark</a></span></dt></dl></dd></dl></div><p>To describe syntax in this manual we use the following conventions:</p><div class="orderedlist"><ol type="1"><li><p>Non terminal symbols are emphasized and have a link to their
4         definition. E.g.: <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></p></li><li><p>Terminal symbols are in bold. E.g.:
5         <span class="bold"><strong>theorem</strong></span></p></li><li><p>Optional sequences of elements are put in square brackets.
6         E.g.: [<span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]</p></li><li><p>Alternatives are put in square brakets and they are
7         separated by vertical bars. E.g.: [<span class="bold"><strong>&lt;</strong></span>|<span class="bold"><strong>&gt;</strong></span>]</p></li><li><p>Repetition of sequences of elements are given by putting the
8     first sequence in square brackets, that are followed by three dots.
9     E.g.: [<span class="bold"><strong>and</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]…</p></li></ol></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="terms_and_co"></a>Terms &amp; co.</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="lexical"></a>Lexical conventions</h3></div></div></div><p>
10     </p><div class="table"><a id="id2522091"></a><p class="title"><b>Table 4.1. id</b></p><table summary="id" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="id"></a><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span></td><td>::=</td><td><span class="emphasis"><em>〈〈<span class="emphasis"><em>TODO</em></span>〉〉</em></span></td><td class="auto-generated"> </td></tr></tbody></table></div><p>
11     </p><div class="table"><a id="id2522119"></a><p class="title"><b>Table 4.2. nat</b></p><table summary="nat" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="nat"></a><span class="emphasis"><em><a href="sec_terms.html#nat">nat</a></em></span></td><td>::=</td><td><span class="emphasis"><em>〈〈<span class="emphasis"><em>TODO</em></span>〉〉</em></span></td><td class="auto-generated"> </td></tr></tbody></table></div><p>
12     </p><div class="table"><a id="id2522189"></a><p class="title"><b>Table 4.3. uri</b></p><table summary="uri" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="uri"></a><span class="emphasis"><em><a href="sec_terms.html#uri">uri</a></em></span></td><td>::=</td><td><span class="emphasis"><em>〈〈<span class="emphasis"><em>TODO</em></span>〉〉</em></span></td><td class="auto-generated"> </td></tr></tbody></table></div><p>
13   </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="terms"></a>Terms</h3></div></div></div><p>
14   </p><div class="table"><a id="id2522245"></a><p class="title"><b>Table 4.4. Terms</b></p><table summary="Terms" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="term"></a><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></td><td>::=</td><td><span class="emphasis"><em><a href="sec_terms.html#sterm">sterm</a></em></span></td><td>simple or delimited term</td></tr><tr><td> </td><td>|</td><td><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></td><td>application</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>λ</strong></span><span class="emphasis"><em><a href="sec_terms.html#args">args</a></em></span><span class="bold"><strong>.</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></td><td>λ-abstraction</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>Π</strong></span><span class="emphasis"><em><a href="sec_terms.html#args">args</a></em></span><span class="bold"><strong>.</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></td><td>dependent product meant to define a datatype</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>∀</strong></span><span class="emphasis"><em><a href="sec_terms.html#args">args</a></em></span><span class="bold"><strong>.</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></td><td>dependent product meant to define a proposition</td></tr><tr><td> </td><td>|</td><td><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span> <span class="bold"><strong>→</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></td><td>non-dependent product (logical implication or function space)</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>let</strong></span> [<span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>|(<span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span><span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>)] <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span> <span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span></td><td>local definition</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>let</strong></span>
15       [<span class="bold"><strong>co</strong></span>]<span class="bold"><strong>rec</strong></span>
16       <span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span> [<span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>|<span class="bold"><strong>(</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]… <span class="bold"><strong>:</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span><span class="bold"><strong>)</strong></span>]… [<span class="bold"><strong>on</strong></span> <span class="emphasis"><em><a href="sec_terms.html#nat">nat</a></em></span>]
17       [<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]
18       <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>
19       </td><td>(co)recursive definitions</td></tr><tr><td> </td><td> </td><td>
20       [<span class="bold"><strong>and</strong></span>
21       [<span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>|<span class="bold"><strong>(</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]… <span class="bold"><strong>:</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span><span class="bold"><strong>)</strong></span>]… [<span class="bold"><strong>on</strong></span> <span class="emphasis"><em><a href="sec_terms.html#nat">nat</a></em></span>]
22       [<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]
23       <span class="bold"><strong>≝</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]…
24       </td><td> </td></tr><tr><td> </td><td> </td><td>
25       <span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>
26       </td><td> </td></tr><tr><td> </td><td>|</td><td>…</td><td>user provided notation</td></tr></tbody></table></div><p>
27
28   </p><div class="table"><a id="id2522798"></a><p class="title"><b>Table 4.5. Simple terms</b></p><table summary="Simple terms" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="sterm"></a><span class="emphasis"><em><a href="sec_terms.html#sterm">sterm</a></em></span></td><td>::=</td><td><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span><span class="bold"><strong>)</strong></span></td><td> </td></tr><tr><td> </td><td>|</td><td><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>[<span class="bold"><strong>\subst[</strong></span>
29        <span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span><span class="bold"><strong>≔</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>
30        [<span class="bold"><strong>;</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span><span class="bold"><strong>≔</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]…
31        <span class="bold"><strong>]</strong></span>]
32       </td><td>identifier with optional explicit named substitution</td></tr><tr><td> </td><td>|</td><td><span class="emphasis"><em><a href="sec_terms.html#uri">uri</a></em></span></td><td>a qualified reference</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>Prop</strong></span></td><td>the impredicative sort of propositions</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>Set</strong></span></td><td>the impredicate sort of datatypes</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>Type</strong></span></td><td>one predicative sort of datatypes</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>?</strong></span></td><td>implicit argument</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>?n</strong></span>
33       [<span class="bold"><strong>[</strong></span>
34       [<span class="bold"><strong>_</strong></span>|<span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]…
35       <span class="bold"><strong>]</strong></span>]</td><td>metavariable</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>match</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span> 
36         [ <span class="bold"><strong>in</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span> ]
37         [ <span class="bold"><strong>return</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span> ]
38         <span class="bold"><strong>with</strong></span>
39       </td><td>case analysis</td></tr><tr><td> </td><td> </td><td>
40        <span class="bold"><strong>[</strong></span> 
41        <span class="emphasis"><em><a href="sec_terms.html#match_pattern">match_pattern</a></em></span> <span class="bold"><strong> ⇒ </strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>
42          [
43          <span class="bold"><strong>|</strong></span>
44          <span class="emphasis"><em><a href="sec_terms.html#match_pattern">match_pattern</a></em></span> <span class="bold"><strong> ⇒ </strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>
45          ]…<span class="bold"><strong>]</strong></span> </td><td> </td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span><span class="bold"><strong>:</strong></span><span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span><span class="bold"><strong>)</strong></span></td><td>cast</td></tr><tr><td> </td><td>|</td><td>…</td><td>user provided notation at precedence 90</td></tr></tbody></table></div><p>
46
47   </p><div class="table"><a id="id2523252"></a><p class="title"><b>Table 4.6. Arguments</b></p><table summary="Arguments" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="args"></a><span class="emphasis"><em><a href="sec_terms.html#args">args</a></em></span></td><td>::=</td><td>
48        <span class="bold"><strong>_</strong></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]
49       </td><td>ignored argument</td></tr><tr><td> </td><td>|</td><td>
50        <span class="bold"><strong>(</strong></span><span class="bold"><strong>_</strong></span>[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]<span class="bold"><strong>)</strong></span>
51       </td><td>ignored argument</td></tr><tr><td> </td><td>|</td><td><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>]…[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]</td><td> </td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>]…[<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span>]<span class="bold"><strong>)</strong></span></td><td> </td></tr></tbody></table></div><p>
52
53   </p><div class="table"><a id="id2523455"></a><p class="title"><b>Table 4.7. Miscellaneous arguments</b></p><table summary="Miscellaneous arguments" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="args2"></a><span class="emphasis"><em><a href="sec_terms.html#args2">args2</a></em></span></td><td>::=</td><td><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span></td><td> </td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>[<span class="bold"><strong>,</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>]…<span class="bold"><strong>:</strong></span> <span class="emphasis"><em><a href="sec_terms.html#term">term</a></em></span><span class="bold"><strong>)</strong></span></td><td> </td></tr></tbody></table></div><p>
54
55   </p><div class="table"><a id="id2523559"></a><p class="title"><b>Table 4.8. Pattern matching</b></p><table summary="Pattern matching" border="1"><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><td><a id="match_pattern"></a><span class="emphasis"><em><a href="sec_terms.html#match_pattern">match_pattern</a></em></span></td><td>::=</td><td><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span></td><td>0-ary constructor</td></tr><tr><td> </td><td>|</td><td><span class="bold"><strong>(</strong></span><span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span> <span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span> [<span class="emphasis"><em><a href="sec_terms.html#id">id</a></em></span>]…<span class="bold"><strong>)</strong></span></td><td>n-ary constructor (binds the n arguments)</td></tr></tbody></table></div><p>
56   </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="authoring.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="axiom_definition_declaration.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Authoring </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Definitions and declarations</td></tr></table></div></body></html>