]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/help/C/sec_tactics.xml
Demodulate used to be a reduction_kind and it used to take a ~pattern.
[helm.git] / helm / software / matita / help / C / sec_tactics.xml
index 2e1f6f36565e8a32f32c921e63badaf964e26a36..56037dde56bf7d59f20b4efc6d6b1f848a2b643a 100644 (file)
   <sect1 id="tac_clear">
     <title>clear</title>
     <titleabbrev>clear</titleabbrev>
-    <para><userinput>clear H</userinput></para>
+    <para><userinput>
+     clear H<subscript>1</subscript> ... H<subscript>m</subscript>
+    </userinput></para>
     <para>
       <variablelist>
         <varlistentry role="tactic.synopsis">
           <term>Synopsis:</term>
           <listitem>
-            <para><emphasis role="bold">clear</emphasis> &id;</para>
+            <para>
+            <emphasis role="bold">clear</emphasis>
+            &id; [&id;…]
+           </para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <term>Pre-conditions:</term>
           <listitem>
-            <para><command>H</command> must be an hypothesis of the
-             current sequent to prove.</para>
+            <para>
+            <command>
+             H<subscript>1</subscript> ... H<subscript>m</subscript>
+            </command> must be hypotheses of the
+             current sequent to prove.
+           </para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <term>Action:</term>
           <listitem>
-            <para>It hides the hypothesis <command>H</command> from the
-             current sequent.</para>
+            <para>
+            It hides the hypotheses 
+             <command>
+             H<subscript>1</subscript> ... H<subscript>m</subscript>
+             </command> from the current sequent.
+           </para>
           </listitem>
         </varlistentry>
         <varlistentry>
     <title>decompose</title>
     <titleabbrev>decompose</titleabbrev>
     <para><userinput>
-     decompose (T<subscript>1</subscript> ... T<subscript>n</subscript>) H hips
+     decompose (T<subscript>1</subscript> ... T<subscript>n</subscript>) 
+     H as H<subscript>1</subscript> ... H<subscript>m</subscript>
     </userinput></para>
     <para>
       <variablelist>
         <varlistentry role="tactic.synopsis">
           <term>Synopsis:</term>
           <listitem>
-            <para><emphasis role="bold">decompose</emphasis> &id; [&id;]… &intros-spec;</para>
+            <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>
         <varlistentry>
           <term>Action:</term>
           <listitem>
             <para>
-            Runs <command>elim H hyps</command>, clears H and tries to run
-             itself recursively on each new identifier introduced by 
-            <command>elim</command> in the opened sequents.
+            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 
+            <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>
       </variablelist>
     </para>
   </sect1>
-  <sect1 id="tac_demodulation">
-    <title>demodulation</title>
-    <titleabbrev>demodulation</titleabbrev>
-    <para><userinput>demodulation patt</userinput></para>
+  <sect1 id="tac_demodulate">
+    <title>demodulate</title>
+    <titleabbrev>demodulate</titleabbrev>
+    <para><userinput>demodulate</userinput></para>
     <para>
       <variablelist>
         <varlistentry role="tactic.synopsis">
           <term>Synopsis:</term>
           <listitem>
-            <para><emphasis role="bold">demodulation</emphasis> &pattern;</para>
+            <para><emphasis role="bold">demodulate</emphasis></para>
           </listitem>
         </varlistentry>
         <varlistentry>
@@ -750,31 +775,48 @@ its constructor takes no arguments.</para>
   <sect1 id="tac_fwd">
     <title>fwd</title>
     <titleabbrev>fwd</titleabbrev>
-    <para><userinput>fwd ...TODO</userinput></para>
+    <para><userinput>fwd H as H<subscript>0</subscript> ... H<subscript>n</subscript></userinput></para>
     <para>
       <variablelist>
         <varlistentry role="tactic.synopsis">
           <term>Synopsis:</term>
           <listitem>
-            <para><emphasis role="bold">fwd</emphasis> &id; [<emphasis role="bold">(</emphasis>[&id;]…<emphasis role="bold">)</emphasis>]</para>
+            <para><emphasis role="bold">fwd</emphasis> &id; [<emphasis role="bold">as</emphasis> &id; [&id;]…]</para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <term>Pre-conditions:</term>
           <listitem>
-            <para>TODO.</para>
+            <para>
+              The type of <command>H</command> must be the premise of a
+               forward simplification theorem.
+           </para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <term>Action:</term>
           <listitem>
-            <para>TODO.</para>
+            <para>
+            This tactic is under development.
+             It simplifies the current context by removing
+            <command>H</command> using the following methods:
+            forward application (by <command>lapply</command>) of a suitable
+            simplification theorem, chosen automatically, of which the type
+            of <command>H</command> is a premise, 
+            decomposition (by <command>decompose</command>),
+            rewriting (by <command>rewrite</command>).
+            <command>H<subscript>0</subscript> ... H<subscript>n</subscript></command>
+            are passed to the tactics <command>fwd</command> invokes, as
+             names for the premise they introduce.
+           </para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <term>New sequents to prove:</term>
           <listitem>
-            <para>TODO.</para>
+            <para>
+            The ones opened by the tactics <command>fwd</command> invokes.
+           </para>
           </listitem>
         </varlistentry>
       </variablelist>
@@ -857,7 +899,7 @@ its constructor takes no arguments.</para>
   </sect1>
   <sect1 id="tac_injection">
     <title>injection</title>
-    <titleabbrev><emphasis role="bold">injection</emphasis></titleabbrev>
+    <titleabbrev>injection</titleabbrev>
     <para><userinput>injection p</userinput></para>
     <para>
       <variablelist>
@@ -1019,7 +1061,7 @@ its constructor takes no arguments.</para>
     <title>lapply</title>
     <titleabbrev>lapply</titleabbrev>
     <para><userinput>
-     lapply depth=d t 
+     lapply linear depth=d t 
      to t<subscript>1</subscript>, ..., t<subscript>n</subscript> as H
     </userinput></para>
     <para>
@@ -1027,25 +1069,59 @@ its constructor takes no arguments.</para>
         <varlistentry role="tactic.synopsis">
           <term>Synopsis:</term>
           <listitem>
-            <para><emphasis role="bold">lapply</emphasis> [<emphasis role="bold">depth=</emphasis>&nat;] &sterm; [<emphasis role="bold">to</emphasis> &sterm; [&sterm;]…] [<emphasis role="bold">as</emphasis> &id;]</para>
+            <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>TODO.</para>
+            <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>TODO.</para>
+            <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>TODO.</para>
+            <para>
+            The ones opened by the tactics <command>lapply</command> invokes.
+           </para>
           </listitem>
         </varlistentry>
       </variablelist>