]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/help/C/sec_tactics.xml
The document was not valid. Fixed.
[helm.git] / matita / help / C / sec_tactics.xml
index aa9610df0aa83e22c517da9782111274710a0d56..364401aa5c7b130ded02950e6c72658fc3fb0543 100644 (file)
       </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>