<sect1 id="tac_applyS">
<title>applyS</title>
<titleabbrev>applyS</titleabbrev>
- <para><userinput>applyS t</userinput></para>
+ <para><userinput>applyS t auto_params</userinput></para>
<para>
<variablelist>
<varlistentry role="tactic.synopsis">
<term>Synopsis:</term>
<listitem>
- <para><emphasis role="bold">applyS</emphasis> &sterm;</para>
+ <para><emphasis role="bold">applyS</emphasis> &sterm; &autoparams;</para>
</listitem>
</varlistentry>
<varlistentry>
Then it closes the current sequent by applying
<command>t</command> to <command>n</command>
implicit arguments (that become new sequents).
+ The <command>auto_params</command> parameters are passed
+ directly to <command>auto paramodulation</command>.
</para>
</listitem>
</varlistentry>
<sect1 id="tac_auto">
<title>auto</title>
<titleabbrev>auto</titleabbrev>
- <para><userinput>auto depth=d width=w paramodulation full</userinput></para>
+ <para><userinput>auto params</userinput></para>
<para>
<variablelist>
<varlistentry role="tactic.synopsis">
<term>Synopsis:</term>
<listitem>
- <para><emphasis role="bold">auto</emphasis> [<emphasis role="bold">depth=</emphasis>&nat;] [<emphasis role="bold">width=</emphasis>&nat;] [<emphasis role="bold">paramodulation</emphasis>] [<emphasis role="bold">full</emphasis>]</para>
+ <para><emphasis role="bold">auto</emphasis> &autoparams;</para>
</listitem>
</varlistentry>
<varlistentry>
<listitem>
<para>None, but the tactic may fail finding a proof if every
proof is in the search space that is pruned away. Pruning is
- controlled by <command>d</command> and <command>w</command>.
+ controlled by the optional <command>params</command>.
Moreover, only lemmas whose type signature is a subset of the
signature of the current sequent are considered. The signature of
- a sequent is ...TODO</para>
+ a sequent is ...&TODO;</para>
</listitem>
</varlistentry>
<varlistentry>
</variablelist>
</para>
</sect1>
- <sect1 id="tac_discriminate">
- <title>discriminate</title>
- <titleabbrev>discriminate</titleabbrev>
- <para><userinput>discriminate p</userinput></para>
+ <sect1 id="tac_destruct">
+ <title>destruct</title>
+ <titleabbrev>destruct</titleabbrev>
+ <para><userinput>destruct p</userinput></para>
<para>
<variablelist>
<varlistentry role="tactic.synopsis">
<term>Synopsis:</term>
<listitem>
- <para><emphasis role="bold">discriminate</emphasis> &sterm;</para>
+ <para><emphasis role="bold">destruct</emphasis> &sterm;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Pre-conditions:</term>
<listitem>
- <para><command>p</command> must have type <command>K t<subscript>1</subscript> ... t<subscript>n</subscript> = K' t'<subscript>1</subscript> ... t'<subscript>m</subscript></command> where <command>K</command> and <command>K'</command> must be different constructors of the same inductive type and each argument list can be empty if
-its constructor takes no arguments.</para>
+ <para><command>p</command> must have type <command>E<subscript>1</subscript> = E<subscript>2</subscript></command> where the two sides of the equality are possibly applied constructors of an inductive type.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Action:</term>
<listitem>
- <para>It closes the current sequent by proving the absurdity of
- <command>p</command>.</para>
+ <para>The tactic recursively compare the two sides of the equality
+ looking for different constructors in corresponding position.
+ If two of them are found, the tactic closes the current sequent
+ by proving the absurdity of <command>p</command>. Otherwise
+ it adds a new hypothesis for each leaf of the formula that
+ states the equality of the subformulae in the corresponding
+ positions on the two sides of the equality.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
</variablelist>
</para>
</sect1>
- <sect1 id="tac_injection">
- <title>injection</title>
- <titleabbrev>injection</titleabbrev>
- <para><userinput>injection p</userinput></para>
- <para>
- <variablelist>
- <varlistentry role="tactic.synopsis">
- <term>Synopsis:</term>
- <listitem>
- <para><emphasis role="bold">injection</emphasis> &sterm;</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Pre-conditions:</term>
- <listitem>
- <para><command>p</command> must have type <command>K t<subscript>1</subscript> ... t<subscript>n</subscript> = K t'<subscript>1</subscript> ... t'<subscript>n</subscript></command> where both argument lists are empty if
-<command>K</command> takes no arguments.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Action:</term>
- <listitem>
- <para>It derives new hypotheses by injectivity of
- <command>K</command>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>New sequents to prove:</term>
- <listitem>
- <para>The new sequent to prove is equal to the current sequent
- with the additional hypotheses
- <command>t<subscript>1</subscript>=t'<subscript>1</subscript></command> ... <command>t<subscript>n</subscript>=t'<subscript>n</subscript></command>.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- </sect1>
<sect1 id="tac_intro">
<title>intro</title>
<titleabbrev>intro</titleabbrev>