<!-- ============ User Notation ====================== -->
<chapter id="sec_usernotation">
<title>Extending the syntax</title>
+ Introduction: TODO
<sect1>
- <title>Introduction</title>
- <para>
- &TODO;
- </para>
- <para id="notation">
- notation: &TODO;
- </para>
+ <title>notation</title>
+ <titleabbrev>notation</titleabbrev>
+ <para id="notation">
+ notation: &TODO;
+ </para>
+ </sect1>
+ <sect1>
+ <title>interpretation</title>
+ <titleabbrev>interpretation</titleabbrev>
+ <para><userinput>interpretation "description" 'symbol p<subscript>1</subscript> … p<subscript>n</subscript> =
+ rhs</userinput></para>
<para id="interpretation">
- interpretation: &TODO;
+ <variablelist>
+ <varlistentry role="tactic.synopsis">
+ <term>Synopsis:</term>
+ <listitem>
+ <para><emphasis role="bold">interpretation</emphasis>
+ &qstring; &csymbol; [&interpretation_argument;]…
+ <emphasis role="bol">=</emphasis>
+ &interpretation_rhs;
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Action:</term>
+ <listitem>
+ <para>It declares a bi-directional mapping <command>{…}</command> between the content-level AST <command>'symbol t<subscript>1</subscript> … t<subscript>n</subscript></command> and the semantic term <command>rhs[{t<subscript>1</subscript>}/p<subscript>1</subscript>;…;{t<subscript>n</subscript>}/p<subscript>n</subscript>]</command>
+ (the simultaneous substitution in <command>rhs</command> of the
+ interpretation <command>{…}</command> of every content-level
+ actual argument <command>t<subscript>i</subscript></command> for its
+ corresponding formal parameter
+ <command>p<subscript>i</subscript></command>). The
+ <command>description</command> must be a textual description of the
+ meaning associated to <command>'symbol</command> by this
+ interpretation, and is used by the user interface of Matita to
+ provide feedback on the interpretation of ambiguous terms.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Interpretation arguments:</term>
+ <listitem>
+
+ <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+ <title>interpretation_argument</title>
+ <tgroup cols="4">
+ <tbody>
+ <row>
+ <entry id="grammar.interpretation_argument">&interpretation_argument;</entry>
+ <entry>::=</entry>
+ <entry>[<emphasis role="bold">η</emphasis><emphasis role="bold">.</emphasis>]… &id;</entry>
+ <entry>A formal parameter. If the name of the formal parameter is
+ prefixed by n symbols "η", then the mapping performs
+ (multiple) η-expansions to grant that the semantic actual
+ parameter begins with at least n λ-abstractions.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table frame="topbot" rowsep="0" colsep="0" role="grammar">
+ <title>interpretation_rhs</title>
+ <tgroup cols="4">
+ <tbody>
+ <row>
+ <entry id="grammar.interpretation_rhs">&interpretation_rhs;</entry>
+ <entry>::=</entry>
+ <entry>&uri;</entry>
+ <entry>A constant, specified by its URI</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>|</entry>
+ <entry>&id;</entry>
+ <entry>A constant, specified by its name, or a bound variable. If
+ the constant name is ambiguous, the one corresponding to the
+ last implicitly or explicitly specified alias is used.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>|</entry>
+ <entry><emphasis role="bold">_</emphasis></entry>
+ <entry>An implicit parameter</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>|</entry>
+ <entry><emphasis role="bold">(</emphasis>
+ &interpretation_rhs;
+ [&interpretation_rhs;]…
+ <emphasis role="bold">)</emphasis></entry>
+ <entry>An application</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </listitem>
+ </varlistentry>
+ </variablelist>
</para>
</sect1>
</chapter>
-