]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/help/C/sec_tactics.xml
interpretation documented
[helm.git] / helm / software / matita / help / C / sec_tactics.xml
index 468a27695c6e64495fd5450cc66b0eed395de912..0205ce8a896f286f0f75154f2eaa4764c9c85ebb 100644 (file)
@@ -61,7 +61,7 @@
           <term>Pre-conditions:</term>
           <listitem>
             <para><command>t</command> must have type
-             <command>T<subscript>1</subscript> → ... →
+             <command>T<subscript>1</subscript> →  →
               T<subscript>n</subscript> → G</command>
              where <command>G</command> can be unified with the conclusion
              of the current sequent.</para>
   <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>
+            <para><emphasis role="bold">autobatch</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 essentially the set of constats appearing in it.
+           </para>
           </listitem>
         </varlistentry>
         <varlistentry>
       </variablelist>
     </para>
   </sect1>
+  <sect1 id="tac_cases">
+    <title>cases</title>
+    <titleabbrev>cases</titleabbrev>
+    <para><userinput>
+     cases t hyps
+    </userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para>
+            <emphasis role="bold">cases</emphasis>
+            &term; [<emphasis role="bold">(</emphasis>[&id;]…<emphasis role="bold">)</emphasis>]
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para>
+            <command>t</command> must inhabit an inductive type
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>
+            It proceed by cases on <command>t</command>. The new generated
+             hypothesis in each branch are named according to
+             <command>hyps</command>.
+           </para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>One new sequent for each constructor of the type of
+             <command>t</command>. Each sequent has a new hypothesis for
+             each argument of the constructor.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
   <sect1 id="tac_clear">
     <title>clear</title>
     <titleabbrev>clear</titleabbrev>
       </variablelist>
     </para>
   </sect1>
+  <sect1 id="tac_compose">
+    <title>compose</title>
+    <titleabbrev>compose</titleabbrev>
+    <para><userinput>compose n t1 with t2 hyps</userinput></para>
+    <para>
+      <variablelist>
+        <varlistentry role="tactic.synopsis">
+          <term>Synopsis:</term>
+          <listitem>
+            <para><emphasis role="bold">compose</emphasis> [&nat;] &sterm; [<emphasis role="bold">with</emphasis> &sterm;] [&intros-spec;]</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Pre-conditions:</term>
+          <listitem>
+            <para></para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Action:</term>
+          <listitem>
+            <para>Composes t1 with t2 in every possible way
+              <command>n</command> times introducing generated terms
+              as if <command>intros hyps</command> was issued.</para>
+            <para>If <command>t1:∀x:A.B[x]</command> and
+            <command>t2:∀x,y:A.B[x]→B[y]→C[x,y]</command> it generates:
+             <itemizedlist>
+                <listitem>
+                  <para><command>λx,y:A.t2 x y (t1 x) : ∀x,y:A.B[y]→C[x,y]</command></para>
+                </listitem>
+                <listitem>
+                  <para><command>λx,y:A.λH:B[x].t2 x y H (t1 y) : ∀x,y:A.B[x]→C[x,y]
+                  </command></para>
+                </listitem>
+             </itemizedlist>
+          </para>
+          <para>If <command>t2</command> is omitted it composes 
+            <command>t1</command>
+              with every hypothesis that can be introduced.  
+              <command>n</command> iterates the process.</para>
+          </listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>New sequents to prove:</term>
+          <listitem>
+            <para>The same, but with more hypothesis eventually introduced
+            by the &intros-spec;.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </sect1>
   <sect1 id="tac_change">
     <title>change</title>
     <titleabbrev>change</titleabbrev>
     <title>decompose</title>
     <titleabbrev>decompose</titleabbrev>
     <para><userinput>
-     decompose (T<subscript>1</subscript> ... T<subscript>n</subscript>) 
-     H as H<subscript>1</subscript> ... H<subscript>m</subscript>
+     decompose as H<subscript>1</subscript> ... H<subscript>m</subscript>
     </userinput></para>
     <para>
       <variablelist>
           <listitem>
             <para>
             <emphasis role="bold">decompose</emphasis>
-            [<emphasis role="bold">(</emphasis>
-            &id;…
-            <emphasis role="bold">)</emphasis>]
-            [&id;] 
             [<emphasis role="bold">as</emphasis> &id;…]
            </para>
           </listitem>
         <varlistentry>
           <term>Pre-conditions:</term>
           <listitem>
-            <para> 
-            <command>H</command> must inhabit one inductive type among  
-            <command>
-             T<subscript>1</subscript> ... T<subscript>n</subscript>
-            </command>
-            and the types of a predefined list.
-           </para>
+            <para>None.</para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <term>Action:</term>
           <listitem>
             <para>
-            Runs <command>
-             elim H H<subscript>1</subscript> ... H<subscript>m</subscript>
-            </command>, clears <command>H</command> and tries to run itself
-            recursively on each new identifier introduced by 
+            For each each premise <command>H</command> of type 
+            <command>T</command> in the current context where
+            <command>T</command> is a non-recursive inductive type without
+            right parameters and of sort Prop or CProp, the tactic runs
+            <command> 
+             elim H as H<subscript>1</subscript> ... H<subscript>m</subscript>
+            </command>, clears <command>H</command>  and runs itself
+            recursively on each new premise introduced by 
             <command>elim</command> in the opened sequents. 
-            If <command>H</command> is not provided tries this operation on
-            each premise in the current context.
            </para>
           </listitem>
         </varlistentry>
   <sect1 id="tac_demodulate">
     <title>demodulate</title>
     <titleabbrev>demodulate</titleabbrev>
-    <para><userinput>demodulate</userinput></para>
+    <para><userinput>demodulate auto_params</userinput></para>
     <para>
       <variablelist>
         <varlistentry role="tactic.synopsis">
           <term>Synopsis:</term>
           <listitem>
-            <para><emphasis role="bold">demodulate</emphasis></para>
+            <para><emphasis role="bold">demodulate</emphasis> &autoparams;</para>
           </listitem>
         </varlistentry>
         <varlistentry>
   <sect1 id="tac_elim">
     <title>elim</title>
     <titleabbrev>elim</titleabbrev>
-    <para><userinput>elim t using th hyps</userinput></para>
+    <para><userinput>elim t pattern using th hyps</userinput></para>
     <para>
       <variablelist>
         <varlistentry role="tactic.synopsis">
           <term>Synopsis:</term>
           <listitem>
-            <para><emphasis role="bold">elim</emphasis> &sterm; [<emphasis role="bold">using</emphasis> &sterm;] &intros-spec;</para>
+            <para><emphasis role="bold">elim</emphasis> &sterm; &pattern; [<emphasis role="bold">using</emphasis> &sterm;] &intros-spec;</para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <listitem>
             <para>It proceeds by cases on the values of <command>t</command>,
              according to the elimination principle <command>th</command>.
+             The induction predicate is restricted by
+             <command>pattern</command>. In particular, if some hypothesis
+             is listed in <command>pattern</command>, the hypothesis is
+             generalized and cleared before eliminating <command>t</command>
             </para>
           </listitem>
         </varlistentry>
       </variablelist>
     </para>
   </sect1>
-  <sect1 id="tac_reduce">
-    <title>reduce</title>
-    <titleabbrev>reduce</titleabbrev>
-    <para><userinput>reduce patt</userinput></para>
-    <para>
-      <variablelist>
-        <varlistentry role="tactic.synopsis">
-          <term>Synopsis:</term>
-          <listitem>
-            <para><emphasis role="bold">reduce</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>
     <titleabbrev>reflexivity</titleabbrev>