<title>Tactics</title>
<sect1 id="tac_absurd">
- <title>absurd <term></title>
+ <title>absurd &term;</title>
<titleabbrev>absurd</titleabbrev>
<para><userinput>absurd P</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_apply">
- <title>apply <term></title>
+ <title>apply &term;</title>
<titleabbrev>apply</titleabbrev>
<para><userinput>apply t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_auto">
- <title>auto [depth=<int>] [width=<int>] [paramodulation] [full]</title>
+ <title>auto [depth=&nat;] [width=&nat;] [paramodulation] [full]</title>
<titleabbrev>auto</titleabbrev>
<para><userinput>auto depth=d width=w paramodulation full</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_clear">
- <title>clear <id></title>
+ <title>clear &id;</title>
<titleabbrev>clear</titleabbrev>
<para><userinput>clear H</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_clearbody">
- <title>clearbody <id></title>
+ <title>clearbody &id;</title>
<titleabbrev>clearbody</titleabbrev>
<para><userinput>clearbody H</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_change">
- <title>change <pattern> with <term></title>
+ <title>change <pattern> with &term;</title>
<titleabbrev>change</titleabbrev>
<para><userinput>change patt with t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_constructor">
- <title>constructor <int></title>
+ <title>constructor &nat;</title>
<titleabbrev>constructor</titleabbrev>
<para><userinput>constructor n</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_cut">
- <title>cut <term> [as <id>]</title>
+ <title>cut &term; [as &id;]</title>
<titleabbrev>cut</titleabbrev>
<para><userinput>cut P as H</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_decompose">
- <title>decompose [<ident list>] <ident> [<intros_spec>]</title>
+ <title>decompose &id; [&id;]… [<intros_spec>]</title>
<titleabbrev>decompose</titleabbrev>
<para><userinput>decompose ???</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_discriminate">
- <title>discriminate <term></title>
+ <title>discriminate &term;</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 &term; [using &term;] [<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 &term; [using &term;] [<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 &term;</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> &term; <pattern></title>
<titleabbrev>fold</titleabbrev>
<para><userinput>fold red t patt</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_fwd">
- <title>fwd <ident> [<ident list>]</title>
+ <title>fwd &id; [<ident list>]</title>
<titleabbrev>fwd</titleabbrev>
<para><userinput>fwd ...TODO</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_generalize">
- <title>generalize <pattern> [as <id>]</title>
+ <title>generalize <pattern> [as &id;]</title>
<titleabbrev>generalize</titleabbrev>
<para><userinput>generalize patt as H</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_injection">
- <title>injection <term></title>
+ <title>injection &term;</title>
<titleabbrev>injection</titleabbrev>
<para><userinput>injection p</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_intro">
- <title>intro [<ident>]</title>
+ <title>intro [&id;]</title>
<titleabbrev>intro</titleabbrev>
<para><userinput>intro H</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_inversion">
- <title>inversion <term></title>
+ <title>inversion &term;</title>
<titleabbrev>inversion</titleabbrev>
<para><userinput>inversion t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_lapply">
- <title>lapply [depth=<int>] <term> [to <term list] [using <ident>]</title>
+ <title>lapply [depth=&nat;] &term; [to <term list>] [using &id;]</title>
<titleabbrev>lapply</titleabbrev>
<para><userinput>lapply ???</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_letin">
- <title>letin <ident> ≝ <term></title>
+ <title>letin &id; ≝ &term;</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 &term;</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 [<|>] &term; <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 &term;</title>
<titleabbrev>transitivity</titleabbrev>
<para><userinput>transitivity t</userinput></para>
<para>
</para>
</sect1>
<sect1 id="tac_unfold">
- <title>unfold [<term>] <pattern></title>
+ <title>unfold [&term;] <pattern></title>
<titleabbrev>unfold</titleabbrev>
<para><userinput>unfold t patt</userinput></para>
<para>
<title>Terms, axioms, definitions, declarations and proofs</title>
<sect1 id="terms">
- <title>Terms</title>
- <!--<informaltable>
- <tr>
- <td><term></td>
- <td>::=</td>
- <td><id></td>
- <td>identifier</td>
- </tr>
- <tr><td/><td>|</td><td><term> <term></td>
- <td>application</td></tr>
- </informaltable>-->
- <table>
- <tgroup>
- <thead />
- <tbody>
- <row>
- <entry><term></entry>
- <entry>::=</entry>
- <entry><id></entry>
- <entry>identifier</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry><term> <term></entry>
- <entry>application</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry>λ<id>[: <term>].<term></entry>
- <entry>λ-abstraction</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry>Π<id>[: <term>].<term></entry>
- <entry>dependent product meant to define a datatype</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry>∀<id>[: <term>].<term></entry>
- <entry>dependent product meant to define a proposition</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry><term> → <term></entry>
- <entry>non-dependent product (logical implication or function space)</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry>let [<id>|(<id>: <term>)] ≝ <term> in <term></entry>
- <entry>local definition</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry>let [co]rec <id> ≝ <term> in <term></entry>
- <entry>local definition</entry>
- </row>
- <row>
- <entry/>
- <entry>|</entry>
- <entry>...</entry>
- <entry>&TODO;</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
+ <title>Terms</title>
+ <table>
+ <tgroup>
+ <thead />
+ <tbody>
+ <row>
+ <entry id="id">&id;</entry>
+ <entry>::=</entry>
+ <entry><emphasis>〈〈&TODO;〉〉</emphasis></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table>
+ <tgroup>
+ <thead />
+ <tbody>
+ <row>
+ <entry id="nat">&nat;</entry>
+ <entry>::=</entry>
+ <entry><emphasis>〈〈&TODO;〉〉</emphasis></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table>
+ <tgroup>
+ <thead />
+ <tbody>
+ <row>
+ <entry id="uri">&uri;</entry>
+ <entry>::=</entry>
+ <entry><emphasis>〈〈&TODO;〉〉</emphasis></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table>
+ <tgroup>
+ <thead />
+ <tbody>
+ <row>
+ <entry id="term">&term;</entry>
+ <entry>::=</entry>
+ <entry>&id;</entry>
+ <entry>identifier</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</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 predicatie sort of datatypes</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</entry>
+ <entry>&term; &term;</entry>
+ <entry>application</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>
+ </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>
+ </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>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</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">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">match</emphasis> &term;
+ [ <emphasis role="bold">in</emphasis> &term; ]
+ [ <emphasis role="bold">return</emphasis> &term; ]
+ <emphasis role="bold">with</emphasis>
+ </entry>
+ <entry>case analysis</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry/>
+ <entry>
+ <emphasis role="bold">[</emphasis>
+ &term_pattern; <emphasis role="bold"> ⇒ </emphasis> &term;
+ [
+ <emphasis role="bold">|</emphasis>
+ &term_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>
+ </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/>
+ </row>
+ <row>
+ <entry/>
+ <entry/>
+ <entry>
+ <emphasis role="bold">in</emphasis> &term;
+ </entry>
+ <entry/>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table>
+ <tgroup>
+ <thead />
+ <tbody>
+ <row>
+ <entry id="term_pattern">&term_pattern;</entry>
+ <entry>::=</entry>
+ <entry>&id;</entry>
+ <entry>0-ary constructor</entry>
+ </row>
+ <row>
+ <entry/>
+ <entry>|</entry>
+ <entry><emphasis role="bold">(</emphasis>&id; &id; [&id;]…<emphasis role="bold">)</emphasis></entry>
+ <entry>n-ary constructor (binds the n arguments)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
</sect1>
<sect1 id="axiom">
- <title>axiom <id>: <term></title>
+ <title>axiom &id;: &term;</title>
<titleabbrev>axiom</titleabbrev>
<para><userinput>axiom H: P</userinput></para>
<para><command>H</command> is declared as an axiom that states <command>P</command></para>
</sect1>
<sect1 id="definition">
- <title>definition <id>[: <term>] [≝ <term>]</title>
+ <title>definition &id;[: &term;] [≝ &term;]</title>
<titleabbrev>definition</titleabbrev>
<para><userinput>definition f: T ≝ t</userinput></para>
<para><command>f</command> is defined as <command>t</command>;
</sect1>
<sect1 id="inductive">
- <title>[co]inductive <id> (of inductive types)</title>
+ <title>[co]inductive &id; (of inductive types)</title>
<titleabbrev>(co)inductive types declaration</titleabbrev>
<para> &TODO; </para>
</sect1>
<sect1 id="proofs">
<title>Proofs</title>
<sect2 id="theorem">
- <title>theorem <id>[: <term>] [≝ <term>]</title>
+ <title>theorem &id;[: &term;] [≝ &term;]</title>
<titleabbrev>theorem</titleabbrev>
<para><userinput>theorem f: P ≝ p</userinput></para>
<para>Proves a new theorem <command>f</command> whose thesis is
<para>Notice that the command is equivalent to <command>definition f: T ≝ t</command>.</para>
</sect2>
<sect2 id="variant">
- <title>variant <id>[: <term>] [≝ <term>]</title>
+ <title>variant &id;[: &term;] [≝ &term;]</title>
<titleabbrev>variant</titleabbrev>
<para><userinput>variant f: T ≝ t</userinput></para>
<para>Same as <command>theorem f: T ≝ t</command>, but it does not
an alternative name or proof to a theorem.</para>
</sect2>
<sect2 id="lemma">
- <title>lemma <id>[: <term>] [≝ <term>]</title>
+ <title>lemma &id;[: &term;] [≝ &term;]</title>
<titleabbrev>lemma</titleabbrev>
<para><userinput>lemma f: T ≝ t</userinput></para>
<para>Same as <command>theorem f: T ≝ t</command></para>
</sect2>
<sect2 id="fact">
- <title>fact <id>[: <term>] [≝ <term>]</title>
+ <title>fact &id;[: &term;] [≝ &term;]</title>
<titleabbrev>fact</titleabbrev>
<para><userinput>fact f: T ≝ t</userinput></para>
<para>Same as <command>theorem f: T ≝ t</command></para>
</sect2>
<sect2 id="remark">
- <title>remark <id>[: <term>] [≝ <term>]</title>
+ <title>remark &id;[: &term;] [≝ &term;]</title>
<titleabbrev>remark</titleabbrev>
<para><userinput>remark f: T ≝ t</userinput></para>
<para>Same as <command>theorem f: T ≝ t</command></para>