- <para>The tactic <command>intros</command> </para>
- </sect1>
- <sect1 id="tac_inversion">
- <title>inversion <term></title>
- <titleabbrev>inversion</titleabbrev>
- <para>The tactic <command>inversion</command> </para>
- </sect1>
- <sect1 id="tac_lapply">
- <title>lapply [depth=<int>] <term> [to <term list] [using <ident>]</title>
- <titleabbrev>lapply</titleabbrev>
- <para>The tactic <command>lapply</command> </para>
- </sect1>
- <sect1 id="tac_left">
- <title>left</title>
- <titleabbrev>left</titleabbrev>
- <para>The tactic <command>left</command> </para>
- </sect1>
- <sect1 id="tac_letin">
- <title>letin <ident> ≝ <term></title>
- <titleabbrev>letin</titleabbrev>
- <para>The tactic <command>letin</command> </para>
- </sect1>
- <sect1 id="tac_normalize">
- <title>normalize <pattern></title>
- <titleabbrev>normalize</titleabbrev>
- <para>The tactic <command>normalize</command> </para>
- </sect1>
- <sect1 id="tac_paramodulation">
- <title>paramodulation <pattern></title>
- <titleabbrev>paramodulation</titleabbrev>
- <para>The tactic <command>paramodulation</command> </para>
- </sect1>
- <sect1 id="tac_reduce">
- <title>reduce <pattern></title>
- <titleabbrev>reduce</titleabbrev>
- <para>The tactic <command>reduce</command> </para>
- </sect1>
- <sect1 id="tac_reflexivity">
- <title>reflexivity</title>
+ <para><userinput>intros hyps</userinput></para>
+ <para>
+ <variablelist>
+ <varlistentry role="tactic.synopsis">
+ <term>Synopsis:</term>
+ <listitem>
+ <para><emphasis role="bold">intros</emphasis> &intros-spec;</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Pre-conditions:</term>
+ <listitem>
+ <para>If <command>hyps</command> specifies a number of hypotheses
+ to introduce, then the conclusion of the current sequent must
+ be formed by at least that number of imbricated implications
+ or universal quantifications.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Action:</term>
+ <listitem>
+ <para>It applies several times the right introduction rule for
+ implication, closing the current sequent.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New sequents to prove:</term>
+ <listitem>
+ <para>It opens a new sequent to prove adding a number of new
+ hypotheses equal to the number of new hypotheses requested.
+ If the user does not request a precise number of new hypotheses,
+ it adds as many hypotheses as possible.
+ The name of each new hypothesis is either popped from the
+ user provided list of names, or it is automatically generated when
+ the list is (or becomes) empty.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect1>
+ <sect1 id="tac_inversion">
+ <title>inversion</title>
+ <titleabbrev>inversion</titleabbrev>
+ <para><userinput>inversion t</userinput></para>
+ <para>
+ <variablelist>
+ <varlistentry role="tactic.synopsis">
+ <term>Synopsis:</term>
+ <listitem>
+ <para><emphasis role="bold">inversion</emphasis> &sterm;</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Pre-conditions:</term>
+ <listitem>
+ <para>The type of the term <command>t</command> must be an inductive
+ type or the application of an inductive type.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Action:</term>
+ <listitem>
+ <para>It proceeds by cases on <command>t</command> paying attention
+ to the constraints imposed by the actual "right arguments"
+ of the inductive type.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New sequents to prove:</term>
+ <listitem>
+ <para>It opens one new sequent to prove for each case in the
+ definition of the type of <command>t</command>. With respect to
+ a simple elimination, each new sequent has additional hypotheses
+ that states the equalities of the "right parameters"
+ of the inductive type with terms originally present in the
+ sequent to prove.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect1>
+ <sect1 id="tac_lapply">
+ <title>lapply</title>
+ <titleabbrev>lapply</titleabbrev>
+ <para><userinput>
+ lapply linear depth=d t
+ to t<subscript>1</subscript>, ..., t<subscript>n</subscript> as H
+ </userinput></para>
+ <para>
+ <variablelist>
+ <varlistentry role="tactic.synopsis">
+ <term>Synopsis:</term>
+ <listitem>
+ <para>
+ <emphasis role="bold">lapply</emphasis>
+ [<emphasis role="bold">linear</emphasis>]
+ [<emphasis role="bold">depth=</emphasis>&nat;]
+ &sterm;
+ [<emphasis role="bold">to</emphasis>
+ &sterm;
+ [<emphasis role="bold">,</emphasis>&sterm;…]
+ ]
+ [<emphasis role="bold">as</emphasis> &id;]
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Pre-conditions:</term>
+ <listitem>
+ <para>
+ <command>t</command> must have at least <command>d</command>
+ independent premises and <command>n</command> must not be
+ greater than <command>d</command>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Action:</term>
+ <listitem>
+ <para>
+ Invokes <command>letin H ≝ (t ? ... ?)</command>
+ with enough <command>?</command>'s to reach the
+ <command>d</command>-th independent premise of
+ <command>t</command>
+ (<command>d</command> is maximum if unspecified).
+ Then istantiates (by <command>apply</command>) with
+ t<subscript>1</subscript>, ..., t<subscript>n</subscript>
+ the <command>?</command>'s corresponding to the first
+ <command>n</command> independent premises of
+ <command>t</command>.
+ Usually the other <command>?</command>'s preceding the
+ <command>n</command>-th independent premise of
+ <command>t</command> are istantiated as a consequence.
+ If the <command>linear</command> flag is specified and if
+ <command>t, t<subscript>1</subscript>, ..., t<subscript>n</subscript></command>
+ are (applications of) premises in the current context, they are
+ <command>clear</command>ed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New sequents to prove:</term>
+ <listitem>
+ <para>
+ The ones opened by the tactics <command>lapply</command> invokes.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect1>
+ <sect1 id="tac_left">
+ <title>left</title>
+ <titleabbrev>left</titleabbrev>
+ <para><userinput>left </userinput></para>
+ <para>
+ <variablelist>
+ <varlistentry role="tactic.synopsis">
+ <term>Synopsis:</term>
+ <listitem>
+ <para><emphasis role="bold">left</emphasis></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Pre-conditions:</term>
+ <listitem>
+ <para>The conclusion of the current sequent must be
+ an inductive type or the application of an inductive type
+ with at least one constructor.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Action:</term>
+ <listitem>
+ <para>Equivalent to <command>constructor 1</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New sequents to prove:</term>
+ <listitem>
+ <para>It opens a new sequent for each premise of the first
+ constructor of the inductive type that is the conclusion of the
+ current sequent. For more details, see the <command>constructor</command> tactic.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect1>
+ <sect1 id="tac_letin">
+ <title>letin</title>
+ <titleabbrev>letin</titleabbrev>
+ <para><userinput>letin x ≝ t</userinput></para>
+ <para>
+ <variablelist>
+ <varlistentry role="tactic.synopsis">
+ <term>Synopsis:</term>
+ <listitem>
+ <para><emphasis role="bold">letin</emphasis> &id; <emphasis role="bold">≝</emphasis> &sterm;</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Pre-conditions:</term>
+ <listitem>
+ <para>None.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Action:</term>
+ <listitem>
+ <para>It adds to the context of the current sequent to prove a new
+ definition <command>x ≝ t</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New sequents to prove:</term>
+ <listitem>
+ <para>None.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect1>
+ <sect1 id="tac_normalize">
+ <title>normalize</title>
+ <titleabbrev>normalize</titleabbrev>
+ <para><userinput>normalize patt</userinput></para>
+ <para>
+ <variablelist>
+ <varlistentry role="tactic.synopsis">
+ <term>Synopsis:</term>
+ <listitem>
+ <para><emphasis role="bold">normalize</emphasis> &pattern;</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Pre-conditions:</term>
+ <listitem>
+ <para>None.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Action:</term>
+ <listitem>
+ <para>It replaces all the terms matched by <command>patt</command>
+ with their βδιζ-normal form.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>New sequents to prove:</term>
+ <listitem>
+ <para>None.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect1>
+ <sect1 id="tac_reflexivity">
+ <title>reflexivity</title>