<title>Tactics</title>
<sect1 id="tac_absurd">
- <title>absurd &term;</title>
+ <title>absurd &sterm;</title>
<titleabbrev>absurd</titleabbrev>
<para><userinput>absurd P</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_apply">
- <title>apply &term;</title>
+ <title>apply &sterm;</title>
<titleabbrev>apply</titleabbrev>
<para><userinput>apply t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_change">
- <title>change <pattern> with &term;</title>
+ <title>change <pattern> with &sterm;</title>
<titleabbrev>change</titleabbrev>
<para><userinput>change patt with t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_cut">
- <title>cut &term; [as &id;]</title>
+ <title>cut &sterm; [as &id;]</title>
<titleabbrev>cut</titleabbrev>
<para><userinput>cut P as H</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_discriminate">
- <title>discriminate &term;</title>
+ <title>discriminate &sterm;</title>
<titleabbrev>discriminate</titleabbrev>
<para><userinput>discriminate p</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_elim">
- <title>elim &term; [using &term;] [<intros_spec>]</title>
+ <title>elim &sterm; [using &sterm;] [<intros_spec>]</title>
<titleabbrev>elim</titleabbrev>
<para><userinput>elim t using th hyps</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_elimType">
- <title>elimType &term; [using &term;] [<intros_spec>]</title>
+ <title>elimType &sterm; [using &sterm;] [<intros_spec>]</title>
<titleabbrev>elimType</titleabbrev>
<para><userinput>elimType T using th hyps</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_exact">
- <title>exact &term;</title>
+ <title>exact &sterm;</title>
<titleabbrev>exact</titleabbrev>
<para><userinput>exact p</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_fold">
- <title>fold <reduction_kind> &term; <pattern></title>
+ <title>fold <reduction_kind> &sterm; <pattern></title>
<titleabbrev>fold</titleabbrev>
<para><userinput>fold red t patt</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_injection">
- <title>injection &term;</title>
+ <title>injection &sterm;</title>
<titleabbrev>injection</titleabbrev>
<para><userinput>injection p</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_inversion">
- <title>inversion &term;</title>
+ <title>inversion &sterm;</title>
<titleabbrev>inversion</titleabbrev>
<para><userinput>inversion t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_lapply">
- <title>lapply [depth=&nat;] &term; [to <term list>] [using &id;]</title>
+ <title>lapply [depth=&nat;] &sterm; [to <term list>] [using &id;]</title>
<titleabbrev>lapply</titleabbrev>
<para><userinput>lapply ???</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_letin">
- <title>letin &id; ≝ &term;</title>
+ <title>letin &id; ≝ &sterm;</title>
<titleabbrev>letin</titleabbrev>
<para><userinput>letin x ≝ t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_replace">
- <title>replace <pattern> with &term;</title>
+ <title>replace <pattern> with &sterm;</title>
<titleabbrev>change</titleabbrev>
<para><userinput>change patt with t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_rewrite">
- <title>rewrite [<|>] &term; <pattern></title>
+ <title>rewrite [<|>] &sterm; <pattern></title>
<titleabbrev>rewrite</titleabbrev>
<para><userinput>rewrite dir p patt</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_transitivity">
- <title>transitivity &term;</title>
+ <title>transitivity &sterm;</title>
<titleabbrev>transitivity</titleabbrev>
<para><userinput>transitivity t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_unfold">
- <title>unfold [&term;] <pattern></title>
+ <title>unfold [&sterm;] <pattern></title>
<titleabbrev>unfold</titleabbrev>
<para><userinput>unfold t patt</userinput></para>
<para>
<row>
<entry id="term">&term;</entry>
<entry>::=</entry>
- <entry>&id;</entry>
- <entry>identifier</entry>
+ <entry>&sterm;</entry>
+ <entry>simple or delimited term</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry>&uri;</entry>
- <entry>a qualified reference</entry>
+ <entry>&term; &term;</entry>
+ <entry>application</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">Prop</emphasis></entry>
- <entry>the impredicative sort of propositions</entry>
+ <entry><emphasis role="bold">λ</emphasis>&args;<emphasis role="bold">.</emphasis>&term;</entry>
+ <entry>λ-abstraction</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">Set</emphasis></entry>
- <entry>the impredicate sort of datatypes</entry>
+ <entry><emphasis role="bold">Π</emphasis>&args;<emphasis role="bold">.</emphasis>&term;</entry>
+ <entry>dependent product meant to define a datatype</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">Type</emphasis></entry>
- <entry>one predicative sort of datatypes</entry>
+ <entry><emphasis role="bold">∀</emphasis>&args;<emphasis role="bold">.</emphasis>&term;</entry>
+ <entry>dependent product meant to define a proposition</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry>&term; &term;</entry>
- <entry>application</entry>
+ <entry>&term; <emphasis role="bold">→</emphasis> &term;</entry>
+ <entry>non-dependent product (logical implication or function space)</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">λ</emphasis>&id;[<emphasis role="bold">:</emphasis> &term;]<emphasis role="bold">.</emphasis>&term;</entry>
- <entry>λ-abstraction</entry>
+ <entry><emphasis role="bold">let</emphasis> [&id;|(&id;<emphasis role="bold">:</emphasis> &term;)] <emphasis role="bold">≝</emphasis> &term; <emphasis role="bold">in</emphasis> &term;</entry>
+ <entry>local definition</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">Π</emphasis>&id;[<emphasis role="bold">:</emphasis> &term;]<emphasis role="bold">.</emphasis>&term;</entry>
- <entry>dependent product meant to define a datatype</entry>
+ <entry><emphasis role="bold">let</emphasis>
+ [<emphasis role="bold">co</emphasis>]<emphasis role="bold">rec</emphasis>
+ &id; [&id;|<emphasis role="bold">(</emphasis>&id;[<emphasis role="bold">,</emphasis>&term;]… <emphasis role="bold">:</emphasis>&term;<emphasis role="bold">)</emphasis>]… [<emphasis role="bold">on</emphasis> &nat;]
+ [<emphasis role="bold">:</emphasis> &term;]
+ <emphasis role="bold">≝</emphasis> &term;
+ </entry>
+ <entry>(co)recursive definitions</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry/>
+ <entry>
+ [<emphasis role="bold">and</emphasis>
+ [&id;|<emphasis role="bold">(</emphasis>&id;[<emphasis role="bold">,</emphasis>&term;]… <emphasis role="bold">:</emphasis>&term;<emphasis role="bold">)</emphasis>]… [<emphasis role="bold">on</emphasis> &nat;]
+ [<emphasis role="bold">:</emphasis> &term;]
+ <emphasis role="bold">≝</emphasis> &term;]…
+ </entry>
+ <entry/>
+ </row>
+ <row>
+ <entry/>
+ <entry/>
+ <entry>
+ <emphasis role="bold">in</emphasis> &term;
+ </entry>
+ <entry/>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">∀</emphasis>&id;[<emphasis role="bold">:</emphasis> &term;]<emphasis role="bold">.</emphasis>&term;</entry>
- <entry>dependent product meant to define a proposition</entry>
+ <entry>…</entry>
+ <entry>user provided notation</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table>
+ <tgroup>
+ <thead />
+ <tbody>
+ <row>
+ <entry id="sterm">&sterm;</entry>
+ <entry>::=</entry>
+ <entry><emphasis role="bold">(</emphasis>&term;<emphasis role="bold">)</emphasis></entry>
+ <entry/>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry>&term; <emphasis role="bold">→</emphasis> &term;</entry>
- <entry>non-dependent product (logical implication or function space)</entry>
+ <entry>&id;[<emphasis role="bold">\subst[</emphasis>
+ &id;<emphasis role="bold">≝</emphasis>&term;
+ [<emphasis role="bold">;</emphasis>&id;<emphasis role="bold">≝</emphasis>&term;]…
+ <emphasis role="bold">]</emphasis>]
+ </entry>
+ <entry>identifier with optional explicit named substitution</entry>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">let</emphasis> [&id;|(&id;<emphasis role="bold">:</emphasis> &term;)] <emphasis role="bold">≝</emphasis> &term; <emphasis role="bold">in</emphasis> &term;</entry>
- <entry>local definition</entry>
+ <entry>&uri;</entry>
+ <entry>a qualified reference</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</entry>
+ <entry><emphasis role="bold">Prop</emphasis></entry>
+ <entry>the impredicative sort of propositions</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</entry>
+ <entry><emphasis role="bold">Set</emphasis></entry>
+ <entry>the impredicate sort of datatypes</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</entry>
+ <entry><emphasis role="bold">Type</emphasis></entry>
+ <entry>one predicative sort of datatypes</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</entry>
+ <entry><emphasis role="bold">?</emphasis></entry>
+ <entry>implicit argument</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</entry>
+ <entry><emphasis role="bold">?n</emphasis>
+ [<emphasis role="bold">[</emphasis>
+ [<emphasis role="bold">_</emphasis>|&term;]…
+ <emphasis role="bold">]</emphasis>]</entry>
+ <entry>metavariable</entry>
</row>
<row>
<entry/>
<entry/>
<entry>
<emphasis role="bold">[</emphasis>
- &term_pattern; <emphasis role="bold"> ⇒ </emphasis> &term;
+ &match_pattern; <emphasis role="bold"> ⇒ </emphasis> &term;
[
<emphasis role="bold">|</emphasis>
- &term_pattern; <emphasis role="bold"> ⇒ </emphasis> &term;
+ &match_pattern; <emphasis role="bold"> ⇒ </emphasis> &term;
]…<emphasis role="bold">]</emphasis> </entry>
<entry/>
</row>
<row>
<entry/>
<entry>|</entry>
- <entry><emphasis role="bold">let</emphasis>
- [<emphasis role="bold">co</emphasis>]<emphasis role="bold">rec</emphasis>
- &id; [&id;]… [<emphasis role="bold">on</emphasis> &nat;]
- [<emphasis role="bold">:</emphasis> &term;]
- <emphasis role="bold">≝</emphasis> &term;
- </entry>
- <entry>(co)recursive definitions</entry>
+ <entry><emphasis role="bold">(</emphasis>&term;<emphasis role="bold">:</emphasis>&term;<emphasis role="bold">)</emphasis></entry>
+ <entry>cast</entry>
</row>
<row>
<entry/>
- <entry/>
- <entry>
- [<emphasis role="bold">and</emphasis>
- &id; [&id;]… [<emphasis role="bold">on</emphasis> &nat;]
- [<emphasis role="bold">:</emphasis> &term;]
- <emphasis role="bold">≝</emphasis> &term;]…
- </entry>
- <entry/>
+ <entry>|</entry>
+ <entry>…</entry>
+ <entry>user provided notation at precedence 90</entry>
</row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table>
+ <tgroup>
+ <thead />
+ <tbody>
<row>
- <entry/>
- <entry/>
+ <entry id="args">&args;</entry>
+ <entry>::=</entry>
<entry>
- <emphasis role="bold">in</emphasis> &term;
+ [<emphasis role="bold">(</emphasis>]<emphasis role="bold">_</emphasis>[<emphasis role="bold">:</emphasis> &term;][<emphasis role="bold">)</emphasis>]
</entry>
+ <entry>ignored argument</entry>
+ </row>
+ <row>
<entry/>
+ <entry>|</entry>
+ <entry>[<emphasis role="bold">(</emphasis>]&id;[<emphasis role="bold">,</emphasis>&id;]…[<emphasis role="bold">:</emphasis> &term;][<emphasis role="bold">)</emphasis>]</entry>
+ <entry></entry>
</row>
</tbody>
</tgroup>
<thead />
<tbody>
<row>
- <entry id="term_pattern">&term_pattern;</entry>
+ <entry id="match_pattern">&match_pattern;</entry>
<entry>::=</entry>
<entry>&id;</entry>
<entry>0-ary constructor</entry>
</tbody>
</tgroup>
</table>
+
</sect2>
</sect1>