(**************************************************************************) (* ___ *) (* ||M|| *) (* ||A|| A project by Andrea Asperti *) (* ||T|| *) (* ||I|| Developers: *) (* ||T|| The HELM team. *) (* ||A|| http://helm.cs.unibo.it *) (* \ / *) (* \ / This file is distributed under the terms of the *) (* v GNU General Public License Version 2 *) (* *) (**************************************************************************) (* This file was automatically generated: do not edit *********************) include "CoRN.ma". (* $Id: DiffTactics2.v,v 1.1.1.1 2004/02/05 16:25:45 lionelm Exp $ *) (* begin hide *) include "ftc/Differentiability.ma". (* UNEXPORTED Section Automatizing_Continuity *) (* UNEXPORTED cic:/CoRN/tactics/DiffTactics2/Automatizing_Continuity/a.var *) (* UNEXPORTED cic:/CoRN/tactics/DiffTactics2/Automatizing_Continuity/b.var *) inline procedural "cic:/CoRN/tactics/DiffTactics2/cont_function.ind". inline procedural "cic:/CoRN/tactics/DiffTactics2/cont_to_pfunct.con" as definition. inline procedural "cic:/CoRN/tactics/DiffTactics2/continuous_cont.con" as lemma. (* UNEXPORTED End Automatizing_Continuity *) (* UNEXPORTED Ltac pfunct_to_cont a b f := match constr:f with | ([-C-]?X3) => constr:(cconst a b X3) | FId => constr:(cid a b) | (?X3{+}?X4) => let t1 := pfunct_to_cont a b X3 with t2 := pfunct_to_cont a b X4 in constr:(cplus a b t1 t2) | ({--}?X3) => let t1 := pfunct_to_cont a b X3 in constr:(cinv a b t1) | (?X3{-}?X4) => let t1 := pfunct_to_cont a b X3 with t2 := pfunct_to_cont a b X4 in constr:(cminus a b t1 t2) | (?X3{*}?X4) => let t1 := pfunct_to_cont a b X3 with t2 := pfunct_to_cont a b X4 in constr:(cmult a b t1 t2) | (?X3{**}?X4) => let t := pfunct_to_cont a b X4 in constr:(cscalmult a b X3 t) | (?X3{^}?X4) => let t1 := pfunct_to_cont a b X3 in constr:(cnth a b t1 X4) | (FAbs ?X3) => let t1 := pfunct_to_cont a b X3 in constr:(cabs a b t1) | ?X3 => let t := constr:X3 in match goal with | Hab:_,H:(Continuous_I (a:=a) (b:=b) ?X1 t) |- _ => constr:(hyp_c a b X1 t H) | H:(Derivative_I (a:=a) (b:=b) ?X1 t ?X4) |- _ => constr:(hyp_d a b X1 t X4 H) | H:(Derivative_I (a:=a) (b:=b) ?X1 ?X4 t) |- _ => constr:(hyp_d' a b X1 X4 t H) | H:(Diffble_I (a:=a) (b:=b) ?X1 t) |- _ => constr:(hyp_diff a b X1 t H) end end. *) (* UNEXPORTED Ltac New_Contin := match goal with | |- (Continuous_I (a:=?X1) (b:=?X2) ?X4 ?X3) => let r := pfunct_to_cont X1 X2 X3 in let a := constr:X1 in let b := constr:X2 in (apply Continuous_I_wd with (cont_to_pfunct a b r); [ unfold cont_to_pfunct in |- * | apply continuous_cont ]) end. *) (* UNEXPORTED Section Automatizing_Derivatives *) (* UNEXPORTED cic:/CoRN/tactics/DiffTactics2/Automatizing_Derivatives/a.var *) (* UNEXPORTED cic:/CoRN/tactics/DiffTactics2/Automatizing_Derivatives/b.var *) inline procedural "cic:/CoRN/tactics/DiffTactics2/deriv_function.ind". inline procedural "cic:/CoRN/tactics/DiffTactics2/deriv_to_pfunct.con" as definition. inline procedural "cic:/CoRN/tactics/DiffTactics2/deriv_deriv.con" as definition. inline procedural "cic:/CoRN/tactics/DiffTactics2/deriv_restr.con" as lemma. inline procedural "cic:/CoRN/tactics/DiffTactics2/diffble_restr.con" as lemma. (* UNEXPORTED End Automatizing_Derivatives *) (* UNEXPORTED Ltac pfunct_to_restr a b f := match constr:f with | ([-C-]?X3) => constr:(const a b X3) | FId => constr:(id a b) | (?X3{+}?X4) => let t1 := pfunct_to_restr a b X3 with t2 := pfunct_to_restr a b X4 in constr:(rplus a b t1 t2) | ({--}?X3) => let t1 := pfunct_to_restr a b X3 in constr:(rinv a b t1) | (?X3{-}?X4) => let t1 := pfunct_to_restr a b X3 with t2 := pfunct_to_restr a b X4 in constr:(rminus a b t1 t2) | (?X3{*}?X4) => let t1 := pfunct_to_restr a b X3 with t2 := pfunct_to_restr a b X4 in constr:(rmult a b t1 t2) | (?X3{**}?X4) => let t := pfunct_to_restr a b X4 in constr:(rscalmult a b X3 t) | (?X3{^}?X4) => let t1 := pfunct_to_restr a b X3 in constr:(rnth a b t1 X4) | ?X3 => let t := constr:X3 in match goal with | H:(Derivative_I (a:=a) (b:=b) ?X1 t ?X4) |- _ => constr:(hyp a b X1 t X4 H) | H:(Diffble_I (a:=a) (b:=b) ?X1 t) |- _ => constr:( hyp' a b X1 t H) end end. *) (* UNEXPORTED Ltac New_Deriv := match goal with | |- (Derivative_I (a:=?X1) (b:=?X2) _ ?X3 ?X4) => let r := pfunct_to_restr X1 X2 X3 in (apply Derivative_I_wdl with (deriv_to_pfunct X1 X2 r); [ unfold deriv_to_pfunct in |- * | apply Derivative_I_wdr with (deriv_deriv X1 X2 r); [ unfold deriv_deriv, deriv_to_pfunct in |- * | apply deriv_restr ] ]) end. *) (* UNEXPORTED Ltac Differentiate := match goal with | |- (Diffble_I (a:=?X1) (b:=?X2) _ ?X3) => let r := pfunct_to_restr X1 X2 X3 in (apply Diffble_I_wd with (deriv_to_pfunct X1 X2 r); [ apply diffble_restr | unfold deriv_deriv, deriv_to_pfunct in |- * ]) end. *) (* UNEXPORTED Ltac derivative_of f := match constr:f with | ([-C-]?X3) => constr:([-C-]ZeroR) | FId => constr:([-C-]OneR) | (?X3{+}?X4) => let t1 := derivative_of X3 with t2 := derivative_of X4 in constr:(t1{+}t2) | ({--}?X3) => let t1 := derivative_of X3 in constr:({--}t1) | (?X3{-}?X4) => let t1 := derivative_of X3 with t2 := derivative_of X4 in constr:(t1{-}t2) | (?X3{*}?X4) => let t1 := derivative_of X3 with t2 := derivative_of X4 with t3 := constr:X3 with t4 := constr:X4 in constr:(t3{*}t2{+}t1{*}t4) | (?X3{**}?X4) => let t1 := derivative_of X4 with t2 := constr:X3 in constr:(t2{**}t1) | (?X3{^}0) => constr:([-C-]ZeroR) | (?X3{^}S ?X4) => let t1 := derivative_of X3 with t2 := constr:X3 with t3 := constr:X4 in constr:(nring _ (S t3){**}(t1{*}t2{^}t3)) | ({1/}?X3) => let t1 := derivative_of X3 with t2 := constr:X3 in constr:({--}(t1{/}t2{*}t2)) | (?X3{/}?X4) => let t1 := derivative_of X3 with t2 := derivative_of X4 with t3 := constr:X3 with t4 := constr:X4 in constr:((t1{*}t4{-}t3{*}t2){/}t4{*}t4) | (?X3[o]?X4) => let t1 := derivative_of X3 with t2 := derivative_of X4 with t3 := constr:X3 in constr:((t3[o]t2){*}t1) | ?X3 => let t := constr:X3 in match goal with | H:(Derivative_I (b:=t) ?X4) |- _ => let t1 := constr:X4 in constr:t1 end end. *) (* UNEXPORTED Ltac Deriv_I_substR := match goal with | |- (Derivative_I _ ?X1 _) => let t := derivative_of X1 in apply Derivative_I_wdr with t end. *) (* end hide *)