From 32e77480c65cbf23ae7dea38a519c83dfeaf3830 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Tue, 22 Jul 2008 17:28:07 +0000 Subject: [PATCH] matitadep: we now handle the inline of an uri, we removed the -exclude option matitaInit: we removed the -drop option (now handled automatically) transcript: we removed the baseuri generation CoRN-Procedural: the mma files and the depends file are now available --- .../components/binaries/transcript/engine.ml | 29 +- .../components/binaries/transcript/grafite.ml | 4 - .../components/binaries/transcript/types.ml | 1 - .../matita/contribs/CoRN-Procedural/CoRN.ma | 813 +++++++++++++ .../matita/contribs/CoRN-Procedural/Makefile | 2 +- .../CoRN-Procedural/algebra/Basics.mma | 314 +++++ .../CoRN-Procedural/algebra/CAbGroups.mma | 304 +++++ .../CoRN-Procedural/algebra/CAbMonoids.mma | 99 ++ .../CoRN-Procedural/algebra/CFields.mma | 585 ++++++++++ .../CoRN-Procedural/algebra/CGroups.mma | 407 +++++++ .../CoRN-Procedural/algebra/CLogic.mma | 621 ++++++++++ .../CoRN-Procedural/algebra/CMonoids.mma | 175 +++ .../CoRN-Procedural/algebra/COrdAbs.mma | 158 +++ .../CoRN-Procedural/algebra/COrdCauchy.mma | 284 +++++ .../CoRN-Procedural/algebra/COrdFields.mma | 743 ++++++++++++ .../CoRN-Procedural/algebra/COrdFields2.mma | 370 ++++++ .../CoRN-Procedural/algebra/CPoly_ApZero.mma | 192 ++++ .../CoRN-Procedural/algebra/CPoly_Degree.mma | 244 ++++ .../algebra/CPoly_NthCoeff.mma | 210 ++++ .../CoRN-Procedural/algebra/CPolynomials.mma | 641 +++++++++++ .../CoRN-Procedural/algebra/CRings.mma | 1013 +++++++++++++++++ .../CoRN-Procedural/algebra/CSemiGroups.mma | 199 ++++ .../CoRN-Procedural/algebra/CSetoidFun.mma | 621 ++++++++++ .../CoRN-Procedural/algebra/CSetoidInc.mma | 106 ++ .../CoRN-Procedural/algebra/CSetoids.mma | 994 ++++++++++++++++ .../CoRN-Procedural/algebra/CSums.mma | 242 ++++ .../CoRN-Procedural/algebra/CVectorSpace.mma | 128 +++ .../CoRN-Procedural/algebra/Cauchy_COF.mma | 242 ++++ .../CoRN-Procedural/algebra/Expon.mma | 286 +++++ .../CoRN-Procedural/algebra/ListType.mma | 243 ++++ .../CoRN-Procedural/complex/AbsCC.mma | 167 +++ .../CoRN-Procedural/complex/CComplex.mma | 385 +++++++ .../complex/Complex_Exponential.mma | 102 ++ .../CoRN-Procedural/complex/NRootCC.mma | 574 ++++++++++ .../matita/contribs/CoRN-Procedural/depends | 315 +++++ .../CoRN-Procedural/devel/loeb/IDA/Ch6.mma | 625 ++++++++++ .../devel/loeb/per/csetfun.mma | 132 +++ .../devel/loeb/per/lst2fun.mma | 54 + .../contribs/CoRN-Procedural/fta/CC_Props.mma | 101 ++ .../CoRN-Procedural/fta/CPoly_Contin1.mma | 58 + .../CoRN-Procedural/fta/CPoly_Rev.mma | 177 +++ .../CoRN-Procedural/fta/CPoly_Shift.mma | 62 + .../contribs/CoRN-Procedural/fta/FTA.mma | 95 ++ .../contribs/CoRN-Procedural/fta/FTAreg.mma | 221 ++++ .../contribs/CoRN-Procedural/fta/KeyLemma.mma | 165 +++ .../CoRN-Procedural/fta/KneserLemma.mma | 143 +++ .../CoRN-Procedural/fta/MainLemma.mma | 126 ++ .../CoRN-Procedural/ftc/COrdLemmas.mma | 121 ++ .../CoRN-Procedural/ftc/CalculusTheorems.mma | 121 ++ .../CoRN-Procedural/ftc/Composition.mma | 401 +++++++ .../CoRN-Procedural/ftc/Continuity.mma | 405 +++++++ .../CoRN-Procedural/ftc/Derivative.mma | 178 +++ .../CoRN-Procedural/ftc/DerivativeOps.mma | 233 ++++ .../CoRN-Procedural/ftc/Differentiability.mma | 273 +++++ .../contribs/CoRN-Procedural/ftc/FTC.mma | 371 ++++++ .../CoRN-Procedural/ftc/FunctSequence.mma | 504 ++++++++ .../CoRN-Procedural/ftc/FunctSeries.mma | 364 ++++++ .../CoRN-Procedural/ftc/FunctSums.mma | 163 +++ .../contribs/CoRN-Procedural/ftc/Integral.mma | 494 ++++++++ .../CoRN-Procedural/ftc/IntervalFunct.mma | 268 +++++ .../CoRN-Procedural/ftc/MoreFunSeries.mma | 569 +++++++++ .../CoRN-Procedural/ftc/MoreFunctions.mma | 648 +++++++++++ .../CoRN-Procedural/ftc/MoreIntegrals.mma | 300 +++++ .../CoRN-Procedural/ftc/MoreIntervals.mma | 460 ++++++++ .../CoRN-Procedural/ftc/NthDerivative.mma | 300 +++++ .../CoRN-Procedural/ftc/PartFunEquality.mma | 415 +++++++ .../CoRN-Procedural/ftc/PartInterval.mma | 193 ++++ .../CoRN-Procedural/ftc/Partitions.mma | 488 ++++++++ .../contribs/CoRN-Procedural/ftc/RefLemma.mma | 565 +++++++++ .../CoRN-Procedural/ftc/RefSepRef.mma | 146 +++ .../CoRN-Procedural/ftc/RefSeparated.mma | 179 +++ .../CoRN-Procedural/ftc/RefSeparating.mma | 183 +++ .../contribs/CoRN-Procedural/ftc/Rolle.mma | 284 +++++ .../CoRN-Procedural/ftc/StrongIVT.mma | 162 +++ .../contribs/CoRN-Procedural/ftc/Taylor.mma | 154 +++ .../CoRN-Procedural/ftc/TaylorLemma.mma | 328 ++++++ .../contribs/CoRN-Procedural/ftc/WeakIVT.mma | 235 ++++ .../CoRN-Procedural/metrics/CMetricSpaces.mma | 205 ++++ .../CoRN-Procedural/metrics/CPMSTheory.mma | 226 ++++ .../metrics/CPseudoMSpaces.mma | 192 ++++ .../CoRN-Procedural/metrics/ContFunctions.mma | 246 ++++ .../CoRN-Procedural/metrics/Equiv.mma | 64 ++ .../CoRN-Procedural/metrics/IR_CPMSpace.mma | 103 ++ .../CoRN-Procedural/metrics/Prod_Sub.mma | 129 +++ .../model/abgroups/QSposabgroup.mma | 32 + .../model/abgroups/Qabgroup.mma | 35 + .../model/abgroups/Qposabgroup.mma | 32 + .../model/abgroups/Zabgroup.mma | 33 + .../CoRN-Procedural/model/fields/Qfield.mma | 33 + .../model/groups/QSposgroup.mma | 33 + .../CoRN-Procedural/model/groups/Qgroup.mma | 32 + .../model/groups/Qposgroup.mma | 32 + .../CoRN-Procedural/model/groups/Zgroup.mma | 33 + .../CoRN-Procedural/model/monoids/Nmonoid.mma | 40 + .../model/monoids/Nposmonoid.mma | 40 + .../model/monoids/QSposmonoid.mma | 37 + .../CoRN-Procedural/model/monoids/Qmonoid.mma | 49 + .../model/monoids/Qposmonoid.mma | 36 + .../CoRN-Procedural/model/monoids/Zmonoid.mma | 55 + .../model/non_examples/N_no_group.mma | 35 + .../model/non_examples/Npos_no_group.mma | 35 + .../model/non_examples/Npos_no_monoid.mma | 36 + .../model/ordfields/Qordfield.mma | 36 + .../CoRN-Procedural/model/reals/Cauchy_IR.mma | 34 + .../CoRN-Procedural/model/rings/Qring.mma | 46 + .../CoRN-Procedural/model/rings/Zring.mma | 37 + .../model/semigroups/Npossemigroup.mma | 42 + .../model/semigroups/Nsemigroup.mma | 32 + .../model/semigroups/QSpossemigroup.mma | 31 + .../model/semigroups/Qpossemigroup.mma | 30 + .../model/semigroups/Qsemigroup.mma | 35 + .../model/semigroups/Zsemigroup.mma | 37 + .../model/setoids/Npossetoid.mma | 68 ++ .../CoRN-Procedural/model/setoids/Nsetoid.mma | 64 ++ .../model/setoids/Qpossetoid.mma | 97 ++ .../CoRN-Procedural/model/setoids/Qsetoid.mma | 88 ++ .../CoRN-Procedural/model/setoids/Zsetoid.mma | 82 ++ .../model/structures/Npossec.mma | 35 + .../CoRN-Procedural/model/structures/Nsec.mma | 66 ++ .../model/structures/Qpossec.mma | 68 ++ .../CoRN-Procedural/model/structures/Qsec.mma | 266 +++++ .../CoRN-Procedural/model/structures/Zsec.mma | 100 ++ .../contribs/CoRN-Procedural/preamble.ma | 21 + .../CoRN-Procedural/reals/Bridges_LUB.mma | 218 ++++ .../CoRN-Procedural/reals/Bridges_iso.mma | 309 +++++ .../CoRN-Procedural/reals/CMetricFields.mma | 91 ++ .../CoRN-Procedural/reals/CPoly_Contin.mma | 32 + .../contribs/CoRN-Procedural/reals/CReals.mma | 51 + .../CoRN-Procedural/reals/CReals1.mma | 166 +++ .../CoRN-Procedural/reals/CSumsReals.mma | 92 ++ .../CoRN-Procedural/reals/CauchySeq.mma | 313 +++++ .../CoRN-Procedural/reals/Cauchy_CReals.mma | 134 +++ .../contribs/CoRN-Procedural/reals/IVT.mma | 234 ++++ .../CoRN-Procedural/reals/Intervals.mma | 311 +++++ .../CoRN-Procedural/reals/Max_AbsIR.mma | 411 +++++++ .../CoRN-Procedural/reals/NRootIR.mma | 267 +++++ .../CoRN-Procedural/reals/OddPolyRootIR.mma | 164 +++ .../CoRN-Procedural/reals/Q_dense.mma | 169 +++ .../CoRN-Procedural/reals/Q_in_CReals.mma | 170 +++ .../CoRN-Procedural/reals/R_morphism.mma | 298 +++++ .../CoRN-Procedural/reals/RealFuncts.mma | 262 +++++ .../CoRN-Procedural/reals/RealLists.mma | 104 ++ .../contribs/CoRN-Procedural/reals/Series.mma | 380 +++++++ .../CoRN-Procedural/reals/iso_CReals.mma | 123 ++ .../matita/contribs/CoRN-Procedural/root | 1 + .../CoRN-Procedural/tactics/AlgReflection.mma | 130 +++ .../CoRN-Procedural/tactics/DiffTactics1.mma | 39 + .../CoRN-Procedural/tactics/DiffTactics2.mma | 234 ++++ .../CoRN-Procedural/tactics/DiffTactics3.mma | 104 ++ .../tactics/FieldReflection.mma | 216 ++++ .../tactics/GroupReflection.mma | 244 ++++ .../tactics/Opaque_algebra.mma | 98 ++ .../tactics/RingReflection.mma | 322 ++++++ .../contribs/CoRN-Procedural/tactics/Step.mma | 74 ++ .../tactics/Transparent_algebra.mma | 100 ++ .../CoRN-Procedural/transc/Exponential.mma | 308 +++++ .../CoRN-Procedural/transc/InvTrigonom.mma | 294 +++++ .../contribs/CoRN-Procedural/transc/Pi.mma | 285 +++++ .../CoRN-Procedural/transc/PowerSeries.mma | 240 ++++ .../CoRN-Procedural/transc/RealPowers.mma | 195 ++++ .../CoRN-Procedural/transc/SinCos.mma | 174 +++ .../CoRN-Procedural/transc/TaylorSeries.mma | 256 +++++ .../CoRN-Procedural/transc/TrigMon.mma | 101 ++ .../CoRN-Procedural/transc/Trigonometric.mma | 214 ++++ .../CoRN-Procedural/transcript.conf.xml | 7 - helm/software/matita/matitaInit.ml | 6 - helm/software/matita/matitacLib.mli | 5 +- helm/software/matita/matitadep.ml | 44 +- 168 files changed, 34350 insertions(+), 55 deletions(-) create mode 100644 helm/software/matita/contribs/CoRN-Procedural/CoRN.ma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/Basics.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CAbGroups.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CAbMonoids.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CFields.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CGroups.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CLogic.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CMonoids.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/COrdAbs.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/COrdCauchy.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields2.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_ApZero.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_Degree.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_NthCoeff.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CPolynomials.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CRings.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CSemiGroups.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidFun.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidInc.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoids.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CSums.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/CVectorSpace.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/Cauchy_COF.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/Expon.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/algebra/ListType.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/complex/AbsCC.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/complex/CComplex.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/complex/Complex_Exponential.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/complex/NRootCC.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/depends create mode 100644 helm/software/matita/contribs/CoRN-Procedural/devel/loeb/IDA/Ch6.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/csetfun.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/lst2fun.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/CC_Props.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Contin1.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Rev.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Shift.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/FTA.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/FTAreg.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/KeyLemma.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/KneserLemma.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/fta/MainLemma.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/COrdLemmas.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/CalculusTheorems.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Composition.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Continuity.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Derivative.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/DerivativeOps.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Differentiability.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/FTC.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSequence.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSeries.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSums.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Integral.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/IntervalFunct.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunSeries.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunctions.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntegrals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntervals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/NthDerivative.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/PartFunEquality.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/PartInterval.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Partitions.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/RefLemma.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/RefSepRef.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparated.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparating.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Rolle.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/StrongIVT.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/Taylor.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/TaylorLemma.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/ftc/WeakIVT.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/metrics/CMetricSpaces.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/metrics/CPMSTheory.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/metrics/CPseudoMSpaces.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/metrics/ContFunctions.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/metrics/Equiv.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/metrics/IR_CPMSpace.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/metrics/Prod_Sub.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/abgroups/QSposabgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qabgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qposabgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Zabgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/fields/Qfield.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/groups/QSposgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/groups/Qgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/groups/Qposgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/groups/Zgroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nmonoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nposmonoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/monoids/QSposmonoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qmonoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qposmonoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/monoids/Zmonoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/non_examples/N_no_group.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_group.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_monoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/ordfields/Qordfield.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/reals/Cauchy_IR.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/rings/Qring.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/rings/Zring.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Npossemigroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Nsemigroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/semigroups/QSpossemigroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qpossemigroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qsemigroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Zsemigroup.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/setoids/Npossetoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/setoids/Nsetoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qpossetoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qsetoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/setoids/Zsetoid.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/structures/Npossec.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/structures/Nsec.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/structures/Qpossec.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/structures/Qsec.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/model/structures/Zsec.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/preamble.ma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_LUB.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_iso.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/CMetricFields.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/CPoly_Contin.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/CReals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/CReals1.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/CSumsReals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/CauchySeq.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Cauchy_CReals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/IVT.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Intervals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Max_AbsIR.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/NRootIR.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/OddPolyRootIR.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Q_dense.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Q_in_CReals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/R_morphism.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/RealFuncts.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/RealLists.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/Series.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/reals/iso_CReals.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/AlgReflection.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics1.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics2.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics3.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/FieldReflection.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/GroupReflection.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/Opaque_algebra.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/RingReflection.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/Step.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/tactics/Transparent_algebra.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/Exponential.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/InvTrigonom.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/Pi.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/PowerSeries.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/RealPowers.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/SinCos.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/TaylorSeries.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/TrigMon.mma create mode 100644 helm/software/matita/contribs/CoRN-Procedural/transc/Trigonometric.mma delete mode 100644 helm/software/matita/contribs/CoRN-Procedural/transcript.conf.xml diff --git a/helm/software/components/binaries/transcript/engine.ml b/helm/software/components/binaries/transcript/engine.ml index 7e561e9b0..f4b0c1e37 100644 --- a/helm/software/components/binaries/transcript/engine.ml +++ b/helm/software/components/binaries/transcript/engine.ml @@ -29,7 +29,8 @@ module T = Types module G = Grafite type script = { - name: string; + name : string; + is_ma : bool; contents: T.items } @@ -51,7 +52,7 @@ type status = { } let default_script = { - name = ""; contents = [] + name = ""; is_ma = false; contents = [] } let default_scripts = 2 @@ -134,20 +135,21 @@ let get_index st name = | Some i, _ | _, Some i -> i | None, None -> failwith "not enought script entries" +let is_ma st name = + let i = get_index st name in + let script = st.scripts.(i) in + st.scripts.(i) <- {script with is_ma = true} + let set_items st name items = let i = get_index st name in let script = st.scripts.(i) in let contents = List.rev_append items script.contents in - st.scripts.(i) <- {name = name; contents = contents} + st.scripts.(i) <- {script with name = name; contents = contents} let set_heading st name = let heading = st.heading_path, st.heading_lines in set_items st name [T.Heading heading] -let set_baseuri st name = - let baseuri = Filename.concat st.output_base_uri name in - set_items st name [T.BaseUri baseuri] - let require st name inc = set_items st name [T.Include inc] @@ -160,20 +162,24 @@ let make_path path = let make_prefix path = String.concat "__" (List.rev path) ^ "__" +let make_script_name st script name = + let ext = if script.is_ma then ".ma" else ".mma" in + Filename.concat st.output_path (name ^ ext) + let commit st name = let i = get_index st name in let script = st.scripts.(i) in let path = Filename.concat st.output_path (Filename.dirname name) in - let name = Filename.concat st.output_path (name ^ ".ma") in + let name = make_script_name st script name in let cmd = Printf.sprintf "mkdir -p %s" path in let _ = Sys.command cmd in let och = open_out name in G.commit st.output_type och script.contents; close_out och; - st.scripts.(i) <- default_script - + st.scripts.(i) <- default_script + let produce st = - let init name = set_heading st name; set_baseuri st name in + let init name = set_heading st name in let partition = function | T.Coercion (false, _) | T.Notation (false, _) -> false @@ -224,6 +230,7 @@ let produce st = with e -> prerr_endline (Printexc.to_string e); close_in ich in + is_ma st st.input_package; init st.input_package; require st st.input_package "preamble"; List.iter (produce st) st.files; commit st st.input_package diff --git a/helm/software/components/binaries/transcript/grafite.ml b/helm/software/components/binaries/transcript/grafite.ml index ef2105afb..f6a082290 100644 --- a/helm/software/components/binaries/transcript/grafite.ml +++ b/helm/software/components/binaries/transcript/grafite.ml @@ -72,9 +72,6 @@ let command_of_obj obj = let command_of_macro macro = G.Executable (floc, G.Macro (floc, macro)) -let set key value = - command_of_obj (G.Set (floc, key, value)) - let require value = command_of_obj (G.Include (floc, value ^ ".ma")) @@ -97,7 +94,6 @@ let commit kind och items = let commit = function | T.Heading heading -> out_preamble och heading | T.Line line -> out_line_comment och line - | T.BaseUri uri -> out_command och (set "baseuri" uri) | T.Include script -> out_command och (require script) | T.Coercion specs -> out_unexported och "COERCION" (snd specs) | T.Notation specs -> out_unexported och "NOTATION" (snd specs) (**) diff --git a/helm/software/components/binaries/transcript/types.ml b/helm/software/components/binaries/transcript/types.ml index f0c8212bc..2eb25a103 100644 --- a/helm/software/components/binaries/transcript/types.ml +++ b/helm/software/components/binaries/transcript/types.ml @@ -37,7 +37,6 @@ type item = Heading of (string * int) | Line of string | Comment of string | Unexport of string - | BaseUri of string | Include of string | Coercion of (local * string) | Notation of (local * string) diff --git a/helm/software/matita/contribs/CoRN-Procedural/CoRN.ma b/helm/software/matita/contribs/CoRN-Procedural/CoRN.ma new file mode 100644 index 000000000..36608f19e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/CoRN.ma @@ -0,0 +1,813 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "preamble.ma". + +(* From algebra/Basics ****************************************************) + +(* NOTATION +Notation Pair := (pair (B:=_)). +*) + +(* NOTATION +Notation Proj1 := (proj1 (B:=_)). +*) + +(* NOTATION +Notation Proj2 := (proj2 (B:=_)). +*) + +(* COERCION +cic:/Coq/ZArith/BinInt/Z_of_nat.con +*) + +(* From algebra/CAbGroups *************************************************) + +(* COERCION +cic:/CoRN/algebra/CAbGroups/cag_crr.con +*) + +(* From algebra/CAbMonoids ************************************************) + +(* COERCION +cic:/CoRN/algebra/CAbMonoids/cam_crr.con +*) + +(* From algebra/CFields ***************************************************) + +(* COERCION +cic:/CoRN/algebra/CFields/cf_crr.con +*) + +(* NOTATION +Notation "x [/] y [//] Hy" := (cf_div x y Hy) (at level 80). +*) + +(* NOTATION +Notation "{1/} x" := (Frecip x) (at level 2, right associativity). +*) + +(* NOTATION +Infix "{/}" := Fdiv (at level 41, no associativity). +*) + +(* From algebra/CGroups ***************************************************) + +(* COERCION +cic:/CoRN/algebra/CGroups/cg_crr.con +*) + +(* NOTATION +Notation "[--] x" := (cg_inv x) (at level 2, right associativity). +*) + +(* NOTATION +Infix "[-]" := cg_minus (at level 50, left associativity). +*) + +(* NOTATION +Notation "{--} x" := (Finv x) (at level 2, right associativity). +*) + +(* NOTATION +Infix "{-}" := Fminus (at level 50, left associativity). +*) + +(* From algebra/CLogic ****************************************************) + +(* NOTATION +Infix "IFF" := Iff (at level 60, right associativity). +*) + +(* NOTATION +Infix "or" := COr (at level 85, right associativity). +*) + +(* NOTATION +Infix "and" := CAnd (at level 80, right associativity). +*) + +(* NOTATION +Notation "{ x : A | P }" := (sigT (fun x : A => P):CProp) + (at level 0, x at level 99) : type_scope. +*) + +(* NOTATION +Notation "{ x : A | P | Q }" := + (sig2T A (fun x : A => P) (fun x : A => Q)) (at level 0, x at level 99) : + type_scope. +*) + +(* NOTATION +Notation ProjT1 := (proj1_sigT _ _). +*) + +(* NOTATION +Notation ProjT2 := (proj2_sigT _ _). +*) + +(* From algebra/CMonoids **************************************************) + +(* COERCION +cic:/CoRN/algebra/CMonoids/cm_crr.con +*) + +(* NOTATION +Notation Zero := (cm_unit _). +*) + +(* From algebra/COrdAbs ***************************************************) + +(* NOTATION +Notation ZeroR := (Zero:R). +*) + +(* NOTATION +Notation AbsBig := (absBig _). +*) + +(* From algebra/COrdCauchy ************************************************) + +(* COERCION +cic:/CoRN/algebra/COrdCauchy/CS_seq.con +*) + +(* From algebra/COrdFields ************************************************) + +(* COERCION +cic:/CoRN/algebra/COrdFields/cof_crr.con +*) + +(* NOTATION +Infix "[<]" := cof_less (at level 70, no associativity). +*) + +(* NOTATION +Infix "[>]" := greater (at level 70, no associativity). +*) + +(* NOTATION +Infix "[<=]" := leEq (at level 70, no associativity). +*) + +(* NOTATION +Notation " x [/]OneNZ" := (x[/] One[//]ring_non_triv _) (at level 20). +*) + +(* NOTATION +Notation " x [/]TwoNZ" := (x[/] Two[//]two_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]ThreeNZ" := (x[/] Three[//]three_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]FourNZ" := (x[/] Four[//]four_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]SixNZ" := (x[/] Six[//]six_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]EightNZ" := (x[/] Eight[//]eight_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]NineNZ" := (x[/] Nine[//]nine_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]TwelveNZ" := (x[/] Twelve[//]twelve_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]SixteenNZ" := (x[/] Sixteen[//]sixteen_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]EighteenNZ" := (x[/] Eighteen[//]eighteen_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]TwentyFourNZ" := (x[/] TwentyFour[//]twentyfour_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]FortyEightNZ" := (x[/] FortyEight[//]fortyeight_ap_zero _) (at level 20). +*) + +(* From algebra/COrdFields2 ***********************************************) + +(* NOTATION +Notation ZeroR := (Zero:R). +*) + +(* NOTATION +Notation OneR := (One:R). +*) + +(* From algebra/CPoly_ApZero **********************************************) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* From algebra/CPoly_Degree **********************************************) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* NOTATION +Notation FX := (cpoly_cring F). +*) + +(* From algebra/CPoly_NthCoeff ********************************************) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* From algebra/CPolynomials **********************************************) + +(* NOTATION +Infix "[+X*]" := cpoly_linear_fun' (at level 50, left associativity). +*) + +(* NOTATION +Notation RX := (cpoly_cring CR). +*) + +(* NOTATION +Infix "!" := cpoly_apply_fun (at level 1, no associativity). +*) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* NOTATION +Notation Cpoly := (cpoly CR). +*) + +(* NOTATION +Notation Cpoly_zero := (cpoly_zero CR). +*) + +(* NOTATION +Notation Cpoly_linear := (cpoly_linear CR). +*) + +(* NOTATION +Notation Cpoly_cring := (cpoly_cring CR). +*) + +(* From algebra/CRings ****************************************************) + +(* COERCION +cic:/CoRN/algebra/CRings/cr_crr.con +*) + +(* NOTATION +Notation One := (cr_one _). +*) + +(* NOTATION +Infix "[*]" := cr_mult (at level 40, left associativity). +*) + +(* NOTATION +Notation "x [^] n" := (nexp_op _ n x) (at level 20). +*) + +(* NOTATION +Notation Two := (nring 2). +*) + +(* NOTATION +Notation Three := (nring 3). +*) + +(* NOTATION +Notation Four := (nring 4). +*) + +(* NOTATION +Notation Six := (nring 6). +*) + +(* NOTATION +Notation Eight := (nring 8). +*) + +(* NOTATION +Notation Twelve := (nring 12). +*) + +(* NOTATION +Notation Sixteen := (nring 16). +*) + +(* NOTATION +Notation Nine := (nring 9). +*) + +(* NOTATION +Notation Eighteen := (nring 18). +*) + +(* NOTATION +Notation TwentyFour := (nring 24). +*) + +(* NOTATION +Notation FortyEight := (nring 48). +*) + +(* NOTATION +Infix "{*}" := Fmult (at level 40, left associativity). +*) + +(* NOTATION +Infix "{**}" := Fscalmult (at level 40, left associativity). +*) + +(* NOTATION +Infix "{^}" := Fnth (at level 30, right associativity). +*) + +(* From algebra/CSemiGroups ***********************************************) + +(* COERCION +cic:/CoRN/algebra/CSemiGroups/csg_crr.con +*) + +(* NOTATION +Infix "[+]" := csg_op (at level 50, left associativity). +*) + +(* NOTATION +Infix "{+}" := Fplus (at level 50, left associativity). +*) + +(* From algebra/CSetoidFun ************************************************) + +(* NOTATION +Notation Conj := (conjP _). +*) + +(* COERCION +cic:/CoRN/algebra/CSetoidFun/bpfpfun.con +*) + +(* NOTATION +Notation BDom := (bpfdom _ _). +*) + +(* COERCION +cic:/CoRN/algebra/CSetoidFun/pfpfun.con +*) + +(* NOTATION +Notation Dom := (pfdom _). +*) + +(* NOTATION +Notation Part := (pfpfun _). +*) + +(* NOTATION +Notation "[-C-] x" := (Fconst x) (at level 2, right associativity). +*) + +(* NOTATION +Notation FId := (Fid _). +*) + +(* NOTATION +Infix "[o]" := Fcomp (at level 65, no associativity). +*) + +(* NOTATION +Notation Prj1 := (prj1 _ _ _ _). +*) + +(* NOTATION +Notation Prj2 := (prj2 _ _ _ _). +*) + +(* From algebra/CSetoids **************************************************) + +(* COERCION +cic:/CoRN/algebra/CSetoids/cs_crr.con +*) + +(* NOTATION +Infix "[=]" := cs_eq (at level 70, no associativity). +*) + +(* NOTATION +Infix "[#]" := cs_ap (at level 70, no associativity). +*) + +(* NOTATION +Infix "[~=]" := cs_neq (at level 70, no associativity). +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/csp_pred.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/csp'_pred.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/csr_rel.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/Ccsr_rel.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/csf_fun.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/csbf_fun.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/un_op_fun.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/bin_op_bin_fun.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/outer_op_bin_fun.con +*) + +(* COERCION +cic:/CoRN/algebra/CSetoids/scs_elem.con +*) + +(* From algebra/CVectorSpace **********************************************) + +(* COERCION +cic:/CoRN/algebra/CVectorSpace/vs_vs.con +*) + +(* NOTATION +Infix "[']" := vs_op (at level 30, no associativity). +*) + +(* From algebra/Expon *****************************************************) + +(* NOTATION +Notation "( x [//] Hx ) [^^] n" := (zexp x Hx n) (at level 0). +*) + +(* From complex/CComplex **************************************************) + +(* NOTATION +Notation CCX := (cpoly_cring CC). +*) + +(* NOTATION +Infix "[+I*]" := cc_set_CC (at level 48, no associativity). +*) + +(* From fta/CC_Props ******************************************************) + +(* COERCION +cic:/CoRN/fta/CC_Props/CC_seq.con +*) + +(* From fta/FTAreg ********************************************************) + +(* COERCION +cic:/CoRN/fta/FTAreg/z_el.con +*) + +(* COERCION +cic:/CoRN/fta/FTAreg/Kntup.con +*) + +(* From ftc/FTC ***********************************************************) + +(* NOTATION +Notation "[-S-] F" := (Fprim F) (at level 20). +*) + +(* From ftc/Integral ******************************************************) + +(* NOTATION +Notation Integral := (integral _ _ Hab). +*) + +(* From ftc/MoreIntervals *************************************************) + +(* COERCION +cic:/CoRN/ftc/MoreIntervals/iprop.con +*) + +(* From ftc/Partitions ****************************************************) + +(* COERCION +cic:/CoRN/ftc/Partitions/Pts.con +*) + +(* From ftc/RefLemma ******************************************************) + +(* NOTATION +Notation g := RL_g. +*) + +(* NOTATION +Notation h := RL_h. +*) + +(* NOTATION +Notation just1 := (incF _ (Pts_part_lemma _ _ _ _ _ _ HfP _ _)). +*) + +(* NOTATION +Notation just2 := (incF _ (Pts_part_lemma _ _ _ _ _ _ HfQ _ _)). +*) + +(* NOTATION +Notation just := (fun z => incF _ (Pts_part_lemma _ _ _ _ _ _ z _ _)). +*) + +(* From ftc/RefSeparated **************************************************) + +(* NOTATION +Notation just1 := (incF _ (Pts_part_lemma _ _ _ _ _ _ gP _ _)). +*) + +(* NOTATION +Notation just2 := + (incF _ (Pts_part_lemma _ _ _ _ _ _ sep__sep_points_lemma _ _)). +*) + +(* From ftc/RefSeparating *************************************************) + +(* NOTATION +Notation m := RS'_m. +*) + +(* NOTATION +Notation h := RS'_h. +*) + +(* NOTATION +Notation just1 := (incF _ (Pts_part_lemma _ _ _ _ _ _ gP _ _)). +*) + +(* NOTATION +Notation just2 := + (incF _ (Pts_part_lemma _ _ _ _ _ _ sep__part_pts_in_Partition _ _)). +*) + +(* From ftc/Rolle *********************************************************) + +(* NOTATION +Notation cp := (compact_part a b Hab' d Hd). +*) + +(* From ftc/TaylorLemma ***************************************************) + +(* NOTATION +Notation A := (Build_subcsetoid_crr IR _ _ TL_compact_a). +*) + +(* NOTATION +Notation B := (Build_subcsetoid_crr IR _ _ TL_compact_b). +*) + +(* From ftc/WeakIVT *******************************************************) + +(* NOTATION +Infix "**" := prodT (at level 20). +*) + +(* From metrics/CMetricSpaces *********************************************) + +(* COERCION +cic:/CoRN/metrics/CMetricSpaces/scms_crr.con +*) + +(* From metrics/CPseudoMSpaces ********************************************) + +(* COERCION +cic:/CoRN/metrics/CPseudoMSpaces/cms_crr.con +*) + +(* NOTATION +Infix "[-d]" := cms_d (at level 68, left associativity). +*) + +(* From model/structures/Nsec *********************************************) + +(* NOTATION +Infix "{#N}" := ap_nat (no associativity, at level 90). +*) + +(* From model/structures/Qsec *********************************************) + +(* NOTATION +Infix "{=Q}" := Qeq (no associativity, at level 90). +*) + +(* NOTATION +Infix "{#Q}" := Qap (no associativity, at level 90). +*) + +(* NOTATION +Infix "{N# *) + +(*#* printing Z %\ensuremath{\mathbb Z}% #Z# *) + +include "algebra/ListType.ma". + +(*#* *Basics +This is random stuff that should be in the Coq basic library. +*) + +inline procedural "cic:/CoRN/algebra/Basics/lt_le_dec.con". + +inline procedural "cic:/CoRN/algebra/Basics/lt_z_two.con". + +inline procedural "cic:/CoRN/algebra/Basics/le_pred.con". + +inline procedural "cic:/CoRN/algebra/Basics/lt_mult_right.con". + +inline procedural "cic:/CoRN/algebra/Basics/le_mult_right.con". + +(*#* The power function does not exist in the standard library *) + +inline procedural "cic:/CoRN/algebra/Basics/power.con". + +(*#* Factorial function. Does not exist in Arith. +Needed for special operations on polynomials. *) + +inline procedural "cic:/CoRN/algebra/Basics/fac.con". + +inline procedural "cic:/CoRN/algebra/Basics/nat_fac_gtzero.con". + +(* needed for computational behavior of "Inversion" tactic *) + +(* UNEXPORTED +Transparent sym_eq. +*) + +(* UNEXPORTED +Transparent f_equal. +*) + +(* NOTATION +Notation Pair := (pair (B:=_)). +*) + +(* NOTATION +Notation Proj1 := (proj1 (B:=_)). +*) + +(* NOTATION +Notation Proj2 := (proj2 (B:=_)). +*) + +(* Following only needed in finite, but tha's now obsolete + +Lemma deMorgan_or_and: (A,B,X:Prop)((A\/B)->X)->(A->X)/\(B->X). +Tauto. +Qed. + +Lemma deMorgan_and_or: (A,B,X:Prop)(A->X)/\(B->X)->(A\/B->X). +Tauto. +Qed. + +Lemma deMorgan_ex_all: + (A:Set)(P:A->Prop)(X:Prop)((Ex P)->X)->(a:A)(P a)->X. +Intros. Apply H; Exists a; Assumption. +Qed. + +Lemma deMorgan_all_ex: + (A:Set)(P:A->Prop)(X:Prop)((a:A)(P a)->X)->(Ex P)->X. +Intros. Elim H0; Assumption. +Qed. + +Implicit Arguments Off. + +Three lemmas for proving properties about definitions made with case +distinction to a sumbool, i.e. [{A} + {B}]. + +Lemma sumbool_rec_or : (A,B:Prop)(S:Set)(l,r:S)(s:{A}+{B}) + (sumbool_rec A B [_:{A}+{B}]S [x:A]l [x:B]r s) = l \/ + (sumbool_rec A B [_:{A}+{B}]S [x:A]l [x:B]r s) = r. +Intros. Elim s. +Intros. Left. Reflexivity. +Intros. Right. Reflexivity. +Qed. +*) + +inline procedural "cic:/CoRN/algebra/Basics/not_r_sumbool_rec.con". + +inline procedural "cic:/CoRN/algebra/Basics/not_l_sumbool_rec.con". + +(* begin hide *) + +(* UNEXPORTED +Set Implicit Arguments. +*) + +(* UNEXPORTED +Unset Strict Implicit. +*) + +(* end hide *) + +(*#* **Some results about [Z] + +We consider the injection [inject_nat] from [nat] to [Z] as a +coercion. *) + +(* begin hide *) + +(* COERCION +cic:/Coq/ZArith/BinInt/Z_of_nat.con +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/Basics/POS_anti_convert.con". + +inline procedural "cic:/CoRN/algebra/Basics/NEG_anti_convert.con". + +inline procedural "cic:/CoRN/algebra/Basics/lt_O_positive_to_nat.con". + +inline procedural "cic:/CoRN/algebra/Basics/anti_convert_pred_convert.con". + +inline procedural "cic:/CoRN/algebra/Basics/p_is_some_anti_convert.con". + +inline procedural "cic:/CoRN/algebra/Basics/convert_is_POS.con". + +inline procedural "cic:/CoRN/algebra/Basics/min_convert_is_NEG.con". + +inline procedural "cic:/CoRN/algebra/Basics/inject_nat_convert.con". + +inline procedural "cic:/CoRN/algebra/Basics/Z_exh.con". + +inline procedural "cic:/CoRN/algebra/Basics/nats_Z_ind.con". + +inline procedural "cic:/CoRN/algebra/Basics/pred_succ_Z_ind.con". + +inline procedural "cic:/CoRN/algebra/Basics/Zmult_minus_distr_r.con". + +inline procedural "cic:/CoRN/algebra/Basics/Zodd_Zeven_min1.con". + +(* begin hide *) + +(* UNEXPORTED +Set Implicit Arguments. +*) + +(* UNEXPORTED +Unset Strict Implicit. +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/Basics/caseZ_diff.con". + +(* begin hide *) + +(* UNEXPORTED +Set Strict Implicit. +*) + +(* UNEXPORTED +Unset Implicit Arguments. +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/Basics/caseZ_diff_O.con". + +inline procedural "cic:/CoRN/algebra/Basics/caseZ_diff_Pos.con". + +inline procedural "cic:/CoRN/algebra/Basics/caseZ_diff_Neg.con". + +inline procedural "cic:/CoRN/algebra/Basics/proper_caseZ_diff.con". + +inline procedural "cic:/CoRN/algebra/Basics/diff_Z_ind.con". + +inline procedural "cic:/CoRN/algebra/Basics/Zlt_reg_mult_l.con". + +inline procedural "cic:/CoRN/algebra/Basics/Zlt_opp.con". + +inline procedural "cic:/CoRN/algebra/Basics/Zlt_conv_mult_l.con". + +inline procedural "cic:/CoRN/algebra/Basics/Zgt_not_eq.con". + +inline procedural "cic:/CoRN/algebra/Basics/Zmult_absorb.con". + +(* UNEXPORTED +Section Well_foundedT +*) + +alias id "A" = "cic:/CoRN/algebra/Basics/Well_foundedT/A.var". + +alias id "R" = "cic:/CoRN/algebra/Basics/Well_foundedT/R.var". + +(*#* The accessibility predicate is defined to be non-informative *) + +inline procedural "cic:/CoRN/algebra/Basics/Acc.ind". + +(* UNEXPORTED +End Well_foundedT +*) + +(* UNEXPORTED +Section AccT +*) + +alias id "A" = "cic:/CoRN/algebra/Basics/AccT/A.var". + +inline procedural "cic:/CoRN/algebra/Basics/well_founded.con". + +(* UNEXPORTED +End AccT +*) + +(* UNEXPORTED +Implicit Arguments Acc [A]. +*) + +(* UNEXPORTED +Section IndT +*) + +alias id "A" = "cic:/CoRN/algebra/Basics/IndT/A.var". + +alias id "R" = "cic:/CoRN/algebra/Basics/IndT/R.var". + +(* UNEXPORTED +Section AccIter +*) + +alias id "P" = "cic:/CoRN/algebra/Basics/IndT/AccIter/P.var". + +alias id "F" = "cic:/CoRN/algebra/Basics/IndT/AccIter/F.var". + +inline procedural "cic:/CoRN/algebra/Basics/Acc_inv.con". + +inline procedural "cic:/CoRN/algebra/Basics/Acc_iter.con". + +(* UNEXPORTED +End AccIter +*) + +alias id "Rwf" = "cic:/CoRN/algebra/Basics/IndT/Rwf.var". + +inline procedural "cic:/CoRN/algebra/Basics/well_founded_induction_type.con". + +(* UNEXPORTED +End IndT +*) + +(* UNEXPORTED +Section InductionT +*) + +alias id "A" = "cic:/CoRN/algebra/Basics/InductionT/A.var". + +alias id "f" = "cic:/CoRN/algebra/Basics/InductionT/f.var". + +inline procedural "cic:/CoRN/algebra/Basics/ltof.con". + +inline procedural "cic:/CoRN/algebra/Basics/well_founded_ltof.con". + +inline procedural "cic:/CoRN/algebra/Basics/induction_ltof2T.con". + +(* UNEXPORTED +End InductionT +*) + +(* UNEXPORTED +Section InductionTT +*) + +inline procedural "cic:/CoRN/algebra/Basics/lt_wf_rect.con". + +(* UNEXPORTED +End InductionTT +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CAbGroups.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CAbGroups.mma new file mode 100644 index 000000000..82bc6a265 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CAbGroups.mma @@ -0,0 +1,304 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "algebra/CGroups.ma". + +(* UNEXPORTED +Section Abelian_Groups +*) + +(*#* +* Abelian Groups +Now we introduce commutativity and add some results. +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/is_CAbGroup.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/CAbGroup.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CAbGroups/cag_crr.con +*) + +(* UNEXPORTED +Section AbGroup_Axioms +*) + +alias id "G" = "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/AbGroup_Axioms/G.var". + +(*#* +%\begin{convention}% Let [G] be an Abelian Group. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/CAbGroup_is_CAbGroup.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/cag_commutes.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/cag_commutes_unfolded.con". + +(* UNEXPORTED +End AbGroup_Axioms +*) + +(* UNEXPORTED +Section SubCAbGroups +*) + +(*#* +** Subgroups of an Abelian Group +*) + +alias id "G" = "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/G.var". + +alias id "P" = "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/P.var". + +alias id "Punit" = "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/Punit.var". + +alias id "op_pres_P" = "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/op_pres_P.var". + +alias id "inv_pres_P" = "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/inv_pres_P.var". + +(*#* +%\begin{convention}% +Let [G] be an Abelian Group and [P] be a ([CProp]-valued) predicate on [G] +that contains [Zero] and is closed under [[+]] and [[--]]. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/subcrr.con" "Abelian_Groups__SubCAbGroups__". + +inline procedural "cic:/CoRN/algebra/CAbGroups/isabgrp_scrr.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/Build_SubCAbGroup.con". + +(* UNEXPORTED +End SubCAbGroups +*) + +(* UNEXPORTED +Section Various +*) + +(*#* +** Basic properties of Abelian groups +*) + +(* UNEXPORTED +Hint Resolve cag_commutes_unfolded: algebra. +*) + +alias id "G" = "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/Various/G.var". + +(*#* +%\begin{convention}% Let [G] be an Abelian Group. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/cag_op_inv.con". + +(* UNEXPORTED +Hint Resolve cag_op_inv: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/assoc_1.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/minus_plus.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/op_lft_resp_ap.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/cag_ap_cancel_lft.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/plus_cancel_ap_lft.con". + +(* UNEXPORTED +End Various +*) + +(* UNEXPORTED +End Abelian_Groups +*) + +(* UNEXPORTED +Hint Resolve cag_commutes_unfolded: algebra. +*) + +(* UNEXPORTED +Hint Resolve cag_op_inv assoc_1 zero_minus minus_plus op_lft_resp_ap: algebra. +*) + +(* UNEXPORTED +Section Nice_Char +*) + +(*#* +** Building an abelian group + +In order to actually define concrete abelian groups, +it is not in general practical to construct first a semigroup, +then a monoid, then a group and finally an abelian group. The +presence of commutativity, for example, makes many of the monoid +proofs trivial. In this section, we provide a constructor that +will allow us to go directly from a setoid to an abelian group. + +We start from a setoid S with an element [unit], a +commutative and associative binary operation [plus] which +is strongly extensional in its first argument and admits [unit] +as a left unit, and a unary setoid +function [inv] which inverts elements respective to [plus]. +*) + +alias id "S" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/S.var". + +alias id "unit" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/unit.var". + +alias id "plus" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/plus.var". + +(*#* +%\begin{convention}% +Let [S] be a Setoid and [unit:S], [plus:S->S->S] and [inv] a unary +setoid operation on [S]. +Assume that [plus] is commutative, associative and `left-strongly-extensional +([(plus x z) [#] (plus y z) -> x [#] y]), that [unit] is a left-unit +for [plus] and [(inv x)] is a right-inverse of [x] w.r.t.%\% [plus]. +%\end{convention}% +*) + +alias id "plus_lext" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_lext.var". + +alias id "plus_lunit" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_lunit.var". + +alias id "plus_comm" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_comm.var". + +alias id "plus_assoc" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_assoc.var". + +alias id "inv" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/inv.var". + +alias id "inv_inv" = "cic:/CoRN/algebra/CAbGroups/Nice_Char/inv_inv.var". + +inline procedural "cic:/CoRN/algebra/CAbGroups/plus_rext.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/plus_runit.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/plus_is_fun.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/inv_inv'.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/plus_fun.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CSemiGroup'.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CMonoid'.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CGroup'.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CAbGroup'.con". + +(* UNEXPORTED +End Nice_Char +*) + +(*#* ** Iteration + +For reflection the following is needed; hopefully it is also useful. +*) + +(* UNEXPORTED +Section Group_Extras +*) + +alias id "G" = "cic:/CoRN/algebra/CAbGroups/Group_Extras/G.var". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_wd.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_one.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_Zero.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_plus.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_mult.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_inv.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_plus'.con". + +(* UNEXPORTED +Hint Resolve nmult_wd nmult_Zero nmult_inv nmult_plus nmult_plus': algebra. +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult.con". + +(* +Lemma Zeq_imp_nat_eq : forall m n:nat, m = n -> m = n. +auto. +intro m; induction m. +intro n; induction n; auto. + +intro; induction n. +intro. inversion H. +intros. +rewrite (IHm n). +auto. +repeat rewrite inj_S in H. +auto with zarith. +Qed. +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_char.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_wd.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_one.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_min_one.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_zero.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_Zero.con". + +(* UNEXPORTED +Hint Resolve zmult_zero: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_plus.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_mult.con". + +inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_plus'.con". + +(* UNEXPORTED +End Group_Extras +*) + +(* UNEXPORTED +Hint Resolve nmult_wd nmult_one nmult_Zero nmult_plus nmult_inv nmult_mult + nmult_plus' zmult_wd zmult_one zmult_min_one zmult_zero zmult_Zero + zmult_plus zmult_mult zmult_plus': algebra. +*) + +(* UNEXPORTED +Implicit Arguments nmult [G]. +*) + +(* UNEXPORTED +Implicit Arguments zmult [G]. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CAbMonoids.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CAbMonoids.mma new file mode 100644 index 000000000..b639df6cc --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CAbMonoids.mma @@ -0,0 +1,99 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "algebra/CMonoids.ma". + +(* UNEXPORTED +Section Abelian_Monoids +*) + +(*#* +* Abelian Monoids +Now we introduce commutativity and add some results. +*) + +inline procedural "cic:/CoRN/algebra/CAbMonoids/is_CAbMonoid.con". + +inline procedural "cic:/CoRN/algebra/CAbMonoids/CAbMonoid.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CAbMonoids/cam_crr.con +*) + +(* UNEXPORTED +Section AbMonoid_Axioms +*) + +alias id "M" = "cic:/CoRN/algebra/CAbMonoids/Abelian_Monoids/AbMonoid_Axioms/M.var". + +(*#* +%\begin{convention}% Let [M] be an abelian monoid. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/CAbMonoids/CAbMonoid_is_CAbMonoid.con". + +inline procedural "cic:/CoRN/algebra/CAbMonoids/cam_commutes.con". + +inline procedural "cic:/CoRN/algebra/CAbMonoids/cam_commutes_unfolded.con". + +(* UNEXPORTED +End AbMonoid_Axioms +*) + +(* UNEXPORTED +Section SubCAbMonoids +*) + +(*#* +** Subgroups of an Abelian Monoid +*) + +alias id "M" = "cic:/CoRN/algebra/CAbMonoids/Abelian_Monoids/SubCAbMonoids/M.var". + +alias id "P" = "cic:/CoRN/algebra/CAbMonoids/Abelian_Monoids/SubCAbMonoids/P.var". + +alias id "Punit" = "cic:/CoRN/algebra/CAbMonoids/Abelian_Monoids/SubCAbMonoids/Punit.var". + +alias id "op_pres_P" = "cic:/CoRN/algebra/CAbMonoids/Abelian_Monoids/SubCAbMonoids/op_pres_P.var". + +(*#* +%\begin{convention}% +Let [M] be an Abelian Monoid and [P] be a ([CProp]-valued) predicate on [M] +that contains [Zero] and is closed under [[+]] and [[--]]. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/CAbMonoids/Abelian_Monoids/SubCAbMonoids/subcrr.con" "Abelian_Monoids__SubCAbMonoids__". + +inline procedural "cic:/CoRN/algebra/CAbMonoids/isabgrp_scrr.con". + +inline procedural "cic:/CoRN/algebra/CAbMonoids/Build_SubCAbMonoid.con". + +(* UNEXPORTED +End SubCAbMonoids +*) + +(* UNEXPORTED +End Abelian_Monoids +*) + +(* UNEXPORTED +Hint Resolve cam_commutes_unfolded: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CFields.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CFields.mma new file mode 100644 index 000000000..5e6aeb87e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CFields.mma @@ -0,0 +1,585 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CFields.v,v 1.12 2004/04/23 10:00:52 lcf Exp $ *) + +(*#* printing [/] %\ensuremath{/}% #/# *) + +(*#* printing [//] %\ensuremath\ddagger% #‡# *) + +(*#* printing {/} %\ensuremath{/}% #/# *) + +(*#* printing {1/} %\ensuremath{\frac1\cdot}% #1/# *) + +(*#* printing [/]?[//] %\ensuremath{/?\ddagger}% #/?‡# *) + +include "algebra/CRings.ma". + +(* UNEXPORTED +Transparent sym_eq. +*) + +(* UNEXPORTED +Transparent f_equal. +*) + +(* UNEXPORTED +Transparent cs_crr. +*) + +(* UNEXPORTED +Transparent csg_crr. +*) + +(* UNEXPORTED +Transparent cm_crr. +*) + +(* UNEXPORTED +Transparent cg_crr. +*) + +(* UNEXPORTED +Transparent cr_crr. +*) + +(* UNEXPORTED +Transparent csf_fun. +*) + +(* UNEXPORTED +Transparent csbf_fun. +*) + +(* UNEXPORTED +Transparent csr_rel. +*) + +(* UNEXPORTED +Transparent cs_eq. +*) + +(* UNEXPORTED +Transparent cs_neq. +*) + +(* UNEXPORTED +Transparent cs_ap. +*) + +(* UNEXPORTED +Transparent cm_unit. +*) + +(* UNEXPORTED +Transparent csg_op. +*) + +(* UNEXPORTED +Transparent cg_inv. +*) + +(* UNEXPORTED +Transparent cg_minus. +*) + +(* UNEXPORTED +Transparent cr_one. +*) + +(* UNEXPORTED +Transparent cr_mult. +*) + +(* UNEXPORTED +Transparent nexp_op. +*) + +(* Begin_SpecReals *) + +(* FIELDS *) + +(*#* +* Fields %\label{section:fields}% +** Definition of the notion Field +*) + +inline procedural "cic:/CoRN/algebra/CFields/is_CField.con". + +inline procedural "cic:/CoRN/algebra/CFields/CField.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CFields/cf_crr.con +*) + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CFields/f_rcpcl'.con". + +inline procedural "cic:/CoRN/algebra/CFields/f_rcpcl.con". + +(* UNEXPORTED +Implicit Arguments f_rcpcl [F]. +*) + +(*#* +[cf_div] is the division in a field. It is defined in terms of +multiplication and the reciprocal. [x[/]y] is only defined if +we have a proof of [y [#] Zero]. +*) + +inline procedural "cic:/CoRN/algebra/CFields/cf_div.con". + +(* UNEXPORTED +Implicit Arguments cf_div [F]. +*) + +(* NOTATION +Notation "x [/] y [//] Hy" := (cf_div x y Hy) (at level 80). +*) + +(*#* +%\begin{convention}\label{convention:div-form}% +- Division in fields is a (type dependent) ternary function: [(cf_div x y Hy)] is denoted infix by [x [/] y [//] Hy]. +- In lemmas, a hypothesis that [t [#] Zero] will be named [t_]. +- We do not use [NonZeros], but write the condition [ [#] Zero] separately. +- In each lemma, we use only variables for proof objects, and these variables + are universally quantified. +For example, the informal lemma +$\frac{1}{x}\cdot\frac{1}{y} = \frac{1}{x\cdot y}$ +#(1/x).(1/y) = 1/(x.y)# for all [x] and [y]is formalized as +[[ +forall (x y : F) x_ y_ xy_, (1[/]x[//]x_) [*] (1[/]y[//]y_) [=] 1[/] (x[*]y)[//]xy_ +]] +and not as +[[ +forall (x y : F) x_ y_, (1[/]x[//]x_) [*] (1[/]y[//]y_) [=] 1[/] (x[*]y)[//](prod_nz x y x_ y_) +]] +We have made this choice to make it easier to apply lemmas; this can +be quite awkward if we would use the last formulation. +- So every division occurring in the formulation of a lemma is of the +form [e[/]e'[//]H] where [H] is a variable. Only exceptions: we may +write [e[/] (Snring n)] and [e[/]TwoNZ], [e[/]ThreeNZ] and so on. +(Constants like [TwoNZ] will be defined later on.) + +%\end{convention}% + +** Field axioms +%\begin{convention}% Let [F] be a field. +%\end{convention}% +*) + +(* UNEXPORTED +Section Field_axioms +*) + +alias id "F" = "cic:/CoRN/algebra/CFields/Field_axioms/F.var". + +inline procedural "cic:/CoRN/algebra/CFields/CField_is_CField.con". + +inline procedural "cic:/CoRN/algebra/CFields/rcpcl_is_inverse.con". + +(* UNEXPORTED +End Field_axioms +*) + +(* UNEXPORTED +Section Field_basics +*) + +(*#* ** Field basics +%\begin{convention}% Let [F] be a field. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/algebra/CFields/Field_basics/F.var". + +inline procedural "cic:/CoRN/algebra/CFields/rcpcl_is_inverse_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CFields/field_mult_inv.con". + +(* UNEXPORTED +Hint Resolve field_mult_inv: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CFields/field_mult_inv_op.con". + +(* UNEXPORTED +End Field_basics +*) + +(* UNEXPORTED +Hint Resolve field_mult_inv field_mult_inv_op: algebra. +*) + +(* UNEXPORTED +Section Field_multiplication +*) + +(*#* +** Properties of multiplication +%\begin{convention}% Let [F] be a field. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/algebra/CFields/Field_multiplication/F.var". + +inline procedural "cic:/CoRN/algebra/CFields/mult_resp_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_lft_resp_ap.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_rht_resp_ap.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_resp_neq_zero.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_resp_neq.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_eq_zero.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_cancel_lft.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_cancel_rht.con". + +inline procedural "cic:/CoRN/algebra/CFields/square_eq_aux.con". + +inline procedural "cic:/CoRN/algebra/CFields/square_eq_weak.con". + +inline procedural "cic:/CoRN/algebra/CFields/cond_square_eq.con". + +(* UNEXPORTED +End Field_multiplication +*) + +(* UNEXPORTED +Section x_square +*) + +inline procedural "cic:/CoRN/algebra/CFields/x_xminone.con". + +inline procedural "cic:/CoRN/algebra/CFields/square_id.con". + +(* UNEXPORTED +End x_square +*) + +(* UNEXPORTED +Hint Resolve mult_resp_ap_zero: algebra. +*) + +(* UNEXPORTED +Section Rcpcl_properties +*) + +(*#* +** Properties of reciprocal +%\begin{convention}% Let [F] be a field. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/algebra/CFields/Rcpcl_properties/F.var". + +inline procedural "cic:/CoRN/algebra/CFields/inv_one.con". + +inline procedural "cic:/CoRN/algebra/CFields/f_rcpcl_wd.con". + +inline procedural "cic:/CoRN/algebra/CFields/f_rcpcl_mult.con". + +inline procedural "cic:/CoRN/algebra/CFields/f_rcpcl_resp_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CFields/f_rcpcl_f_rcpcl.con". + +(* UNEXPORTED +End Rcpcl_properties +*) + +(* UNEXPORTED +Section MultipGroup +*) + +(*#* +** The multiplicative group of nonzeros of a field. +%\begin{convention}% Let [F] be a field +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/algebra/CFields/MultipGroup/F.var". + +(*#* +The multiplicative monoid of NonZeros. +*) + +inline procedural "cic:/CoRN/algebra/CFields/NonZeroMonoid.con". + +inline procedural "cic:/CoRN/algebra/CFields/fmg_cs_inv.con". + +inline procedural "cic:/CoRN/algebra/CFields/plus_nonzeros_eq_mult_dom.con". + +inline procedural "cic:/CoRN/algebra/CFields/cfield_to_mult_cgroup.con". + +(* UNEXPORTED +End MultipGroup +*) + +(* UNEXPORTED +Section Div_properties +*) + +(*#* +** Properties of division +%\begin{convention}% Let [F] be a field. +%\end{convention}% + +%\begin{nameconvention}% +In the names of lemmas, we denote [[/]] by [div], and +[One[/]] by [recip]. +%\end{nameconvention}% +*) + +alias id "F" = "cic:/CoRN/algebra/CFields/Div_properties/F.var". + +inline procedural "cic:/CoRN/algebra/CFields/div_prop.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_1.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_1'.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_1''.con". + +(* UNEXPORTED +Hint Resolve div_1: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CFields/x_div_x.con". + +(* UNEXPORTED +Hint Resolve x_div_x: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CFields/x_div_one.con". + +(*#* +The next lemma says $x\cdot\frac{y}{z} = \frac{x\cdot y}{z}$ +#x.(y/z) = (x.y)/z#. +*) + +inline procedural "cic:/CoRN/algebra/CFields/x_mult_y_div_z.con". + +(* UNEXPORTED +Hint Resolve x_mult_y_div_z: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CFields/div_wd.con". + +(* UNEXPORTED +Hint Resolve div_wd: algebra_c. +*) + +(*#* +The next lemma says $\frac{\frac{x}{y}}{z} = \frac{x}{y\cdot z}$ +#[(x/y)/z = x/(y.z)]# +*) + +inline procedural "cic:/CoRN/algebra/CFields/div_div.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_resp_ap_zero_rev.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_resp_ap_zero.con". + +(*#* +The next lemma says $\frac{x}{\frac{y}{z}} = \frac{x\cdot z}{y}$ +#[x/(y/z) = (x.z)/y]# +*) + +inline procedural "cic:/CoRN/algebra/CFields/div_div2.con". + +(*#* +The next lemma says $\frac{x\cdot p}{y\cdot q} = \frac{x}{y}\cdot \frac{p}{q}$ +#[(x.p)/(y.q) = (x/y).(p/q)]# +*) + +inline procedural "cic:/CoRN/algebra/CFields/mult_of_divs.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_dist.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_dist'.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_semi_sym.con". + +(* UNEXPORTED +Hint Resolve div_semi_sym: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CFields/eq_div.con". + +inline procedural "cic:/CoRN/algebra/CFields/div_strext.con". + +(* UNEXPORTED +End Div_properties +*) + +(* UNEXPORTED +Hint Resolve div_1 div_1' div_1'' div_wd x_div_x x_div_one div_div div_div2 + mult_of_divs x_mult_y_div_z mult_of_divs div_dist div_dist' div_semi_sym + div_prop: algebra. +*) + +(*#* +** Cancellation laws for apartness and multiplication +%\begin{convention}% Let [F] be a field +%\end{convention}% +*) + +(* UNEXPORTED +Section Mult_Cancel_Ap_Zero +*) + +alias id "F" = "cic:/CoRN/algebra/CFields/Mult_Cancel_Ap_Zero/F.var". + +inline procedural "cic:/CoRN/algebra/CFields/mult_cancel_ap_zero_lft.con". + +inline procedural "cic:/CoRN/algebra/CFields/mult_cancel_ap_zero_rht.con". + +inline procedural "cic:/CoRN/algebra/CFields/recip_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CFields/recip_resp_ap.con". + +(* UNEXPORTED +End Mult_Cancel_Ap_Zero +*) + +(* UNEXPORTED +Section CField_Ops +*) + +(*#* +** Functional Operations + +We now move on to lifting these operations to functions. As we are +dealing with %\emph{partial}% #partial# functions, we don't +have to worry explicitly about the function by which we are dividing +being non-zero everywhere; this will simply be encoded in its domain. + +%\begin{convention}% +Let [X] be a Field and [F,G:(PartFunct X)] have domains respectively +[P] and [Q]. +%\end{convention}% +*) + +alias id "X" = "cic:/CoRN/algebra/CFields/CField_Ops/X.var". + +alias id "F" = "cic:/CoRN/algebra/CFields/CField_Ops/F.var". + +alias id "G" = "cic:/CoRN/algebra/CFields/CField_Ops/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CFields/CField_Ops/P.con" "CField_Ops__". + +inline procedural "cic:/CoRN/algebra/CFields/CField_Ops/Q.con" "CField_Ops__". + +(* end hide *) + +(* UNEXPORTED +Section Part_Function_Recip +*) + +(*#* +Some auxiliary notions are helpful in defining the domain. +*) + +inline procedural "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Recip/R.con" "CField_Ops__Part_Function_Recip__". + +inline procedural "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Recip/Ext2R.con" "CField_Ops__Part_Function_Recip__". + +inline procedural "cic:/CoRN/algebra/CFields/part_function_recip_strext.con". + +inline procedural "cic:/CoRN/algebra/CFields/part_function_recip_pred_wd.con". + +inline procedural "cic:/CoRN/algebra/CFields/Frecip.con". + +(* UNEXPORTED +End Part_Function_Recip +*) + +(* UNEXPORTED +Section Part_Function_Div +*) + +(*#* +For division things work out almost in the same way. +*) + +inline procedural "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Div/R.con" "CField_Ops__Part_Function_Div__". + +inline procedural "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Div/Ext2R.con" "CField_Ops__Part_Function_Div__". + +inline procedural "cic:/CoRN/algebra/CFields/part_function_div_strext.con". + +inline procedural "cic:/CoRN/algebra/CFields/part_function_div_pred_wd.con". + +inline procedural "cic:/CoRN/algebra/CFields/Fdiv.con". + +(* UNEXPORTED +End Part_Function_Div +*) + +(*#* +%\begin{convention}% Let [R:X->CProp]. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CFields/CField_Ops/R.var". + +inline procedural "cic:/CoRN/algebra/CFields/included_FRecip.con". + +inline procedural "cic:/CoRN/algebra/CFields/included_FRecip'.con". + +inline procedural "cic:/CoRN/algebra/CFields/included_FDiv.con". + +inline procedural "cic:/CoRN/algebra/CFields/included_FDiv'.con". + +inline procedural "cic:/CoRN/algebra/CFields/included_FDiv''.con". + +(* UNEXPORTED +End CField_Ops +*) + +(* UNEXPORTED +Implicit Arguments Frecip [X]. +*) + +(* NOTATION +Notation "{1/} x" := (Frecip x) (at level 2, right associativity). +*) + +(* UNEXPORTED +Implicit Arguments Fdiv [X]. +*) + +(* NOTATION +Infix "{/}" := Fdiv (at level 41, no associativity). +*) + +(* UNEXPORTED +Hint Resolve included_FRecip included_FDiv : included. +*) + +(* UNEXPORTED +Hint Immediate included_FRecip' included_FDiv' included_FDiv'' : included. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CGroups.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CGroups.mma new file mode 100644 index 000000000..82ca16f2a --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CGroups.mma @@ -0,0 +1,407 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CGroups.v,v 1.9 2004/04/23 10:00:52 lcf Exp $ *) + +(*#* printing [-] %\ensuremath-% #−# *) + +(*#* printing [--] %\ensuremath-% #−# *) + +(*#* printing {-} %\ensuremath-% #−# *) + +(*#* printing {--} %\ensuremath-% #−# *) + +include "algebra/CMonoids.ma". + +(* Begin_SpecReals *) + +(*#* +* Groups +** Definition of the notion of Group +*) + +inline procedural "cic:/CoRN/algebra/CGroups/is_inverse.con". + +(* UNEXPORTED +Implicit Arguments is_inverse [S]. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/is_CGroup.con". + +inline procedural "cic:/CoRN/algebra/CGroups/CGroup.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CGroups/cg_crr.con +*) + +(* End_SpecReals *) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Implicit Arguments cg_inv [c]. +*) + +(* NOTATION +Notation "[--] x" := (cg_inv x) (at level 2, right associativity). +*) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_minus.con". + +(*#* +%\begin{nameconvention}% +In the names of lemmas, we will denote [[--] ] with [inv], +and [ [-] ] with [minus]. +%\end{nameconvention}% +*) + +(* UNEXPORTED +Implicit Arguments cg_minus [G]. +*) + +(* NOTATION +Infix "[-]" := cg_minus (at level 50, left associativity). +*) + +(* End_SpecReals *) + +(*#* +** Group axioms +%\begin{convention}% Let [G] be a group. +%\end{convention}% +*) + +(* UNEXPORTED +Section CGroup_axioms +*) + +alias id "G" = "cic:/CoRN/algebra/CGroups/CGroup_axioms/G.var". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inverse.con". + +(* UNEXPORTED +End CGroup_axioms +*) + +(*#* +** Group basics +General properties of groups. +%\begin{convention}% Let [G] be a group. +%\end{convention}% +*) + +(* UNEXPORTED +Section CGroup_basics +*) + +alias id "G" = "cic:/CoRN/algebra/CGroups/CGroup_basics/G.var". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_rht_inv_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_lft_inv_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_minus_correct.con". + +(* UNEXPORTED +Hint Resolve cg_rht_inv_unfolded cg_lft_inv_unfolded cg_minus_correct: + algebra. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inverse'.con". + +(* Hints for Auto *) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_minus_unfolded.con". + +(* UNEXPORTED +Hint Resolve cg_minus_unfolded: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_minus_wd.con". + +(* UNEXPORTED +Hint Resolve cg_minus_wd: algebra_c. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_minus_strext.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_minus_is_csetoid_bin_op.con". + +inline procedural "cic:/CoRN/algebra/CGroups/grp_inv_assoc.con". + +(* UNEXPORTED +Hint Resolve grp_inv_assoc: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inv_unique.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inv_inv.con". + +(* UNEXPORTED +Hint Resolve cg_inv_inv: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_cancel_lft.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_cancel_rht.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inv_unique'.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inv_unique_2.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_zero_inv.con". + +(* UNEXPORTED +Hint Resolve cg_zero_inv: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inv_zero.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_inv_op.con". + +(*#* +Useful for interactive proof development. +*) + +inline procedural "cic:/CoRN/algebra/CGroups/x_minus_x.con". + +(*#* +** Sub-groups +%\begin{convention}% Let [P] be a predicate on [G] containing +[Zero] and closed under [[+]] and [[--] ]. +%\end{convention}% +*) + +(* UNEXPORTED +Section SubCGroups +*) + +alias id "P" = "cic:/CoRN/algebra/CGroups/CGroup_basics/SubCGroups/P.var". + +alias id "Punit" = "cic:/CoRN/algebra/CGroups/CGroup_basics/SubCGroups/Punit.var". + +alias id "op_pres_P" = "cic:/CoRN/algebra/CGroups/CGroup_basics/SubCGroups/op_pres_P.var". + +alias id "inv_pres_P" = "cic:/CoRN/algebra/CGroups/CGroup_basics/SubCGroups/inv_pres_P.var". + +inline procedural "cic:/CoRN/algebra/CGroups/CGroup_basics/SubCGroups/subcrr.con" "CGroup_basics__SubCGroups__". + +inline procedural "cic:/CoRN/algebra/CGroups/CGroup_basics/SubCGroups/subinv.con" "CGroup_basics__SubCGroups__". + +inline procedural "cic:/CoRN/algebra/CGroups/isgrp_scrr.con". + +inline procedural "cic:/CoRN/algebra/CGroups/Build_SubCGroup.con". + +(* UNEXPORTED +End SubCGroups +*) + +(* UNEXPORTED +End CGroup_basics +*) + +(* UNEXPORTED +Hint Resolve cg_rht_inv_unfolded cg_lft_inv_unfolded: algebra. +*) + +(* UNEXPORTED +Hint Resolve cg_inv_inv cg_minus_correct cg_zero_inv cg_inv_zero: algebra. +*) + +(* UNEXPORTED +Hint Resolve cg_minus_unfolded grp_inv_assoc cg_inv_op: algebra. +*) + +(* UNEXPORTED +Hint Resolve cg_minus_wd: algebra_c. +*) + +(*#* +** Associative properties of groups +%\begin{convention}% Let [G] be a group. +%\end{convention}% +*) + +(* UNEXPORTED +Section Assoc_properties +*) + +alias id "G" = "cic:/CoRN/algebra/CGroups/Assoc_properties/G.var". + +inline procedural "cic:/CoRN/algebra/CGroups/assoc_2.con". + +inline procedural "cic:/CoRN/algebra/CGroups/zero_minus.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_cancel_mixed.con". + +inline procedural "cic:/CoRN/algebra/CGroups/plus_resp_eq.con". + +(* UNEXPORTED +End Assoc_properties +*) + +(* UNEXPORTED +Hint Resolve assoc_2 minus_plus zero_minus cg_cancel_mixed plus_resp_eq: + algebra. +*) + +(*#* +** Apartness in Constructive Groups +Specific properties of apartness. +%\begin{convention}% Let [G] be a group. +%\end{convention}% +*) + +(* UNEXPORTED +Section cgroups_apartness +*) + +alias id "G" = "cic:/CoRN/algebra/CGroups/cgroups_apartness/G.var". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_add_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CGroups/op_rht_resp_ap.con". + +inline procedural "cic:/CoRN/algebra/CGroups/cg_ap_cancel_rht.con". + +inline procedural "cic:/CoRN/algebra/CGroups/plus_cancel_ap_rht.con". + +inline procedural "cic:/CoRN/algebra/CGroups/minus_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CGroups/zero_minus_apart.con". + +inline procedural "cic:/CoRN/algebra/CGroups/inv_resp_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CGroups/inv_resp_ap.con". + +inline procedural "cic:/CoRN/algebra/CGroups/minus_resp_ap_rht.con". + +inline procedural "cic:/CoRN/algebra/CGroups/minus_resp_ap_lft.con". + +inline procedural "cic:/CoRN/algebra/CGroups/minus_cancel_ap_rht.con". + +(* UNEXPORTED +End cgroups_apartness +*) + +(* UNEXPORTED +Hint Resolve op_rht_resp_ap: algebra. +*) + +(* UNEXPORTED +Hint Resolve minus_ap_zero zero_minus_apart inv_resp_ap_zero: algebra. +*) + +(* UNEXPORTED +Section CGroup_Ops +*) + +(*#* +** Functional operations + +As before, we lift our group operations to the function space of the group. + +%\begin{convention}% +Let [G] be a group and [F,F':(PartFunct G)] with domains given respectively +by [P] and [Q]. +%\end{convention}% +*) + +alias id "G" = "cic:/CoRN/algebra/CGroups/CGroup_Ops/G.var". + +alias id "F" = "cic:/CoRN/algebra/CGroups/CGroup_Ops/F.var". + +alias id "F'" = "cic:/CoRN/algebra/CGroups/CGroup_Ops/F'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CGroups/CGroup_Ops/P.con" "CGroup_Ops__". + +inline procedural "cic:/CoRN/algebra/CGroups/CGroup_Ops/Q.con" "CGroup_Ops__". + +(* end hide *) + +(* UNEXPORTED +Section Part_Function_Inv +*) + +inline procedural "cic:/CoRN/algebra/CGroups/part_function_inv_strext.con". + +inline procedural "cic:/CoRN/algebra/CGroups/Finv.con". + +(* UNEXPORTED +End Part_Function_Inv +*) + +(* UNEXPORTED +Section Part_Function_Minus +*) + +inline procedural "cic:/CoRN/algebra/CGroups/part_function_minus_strext.con". + +inline procedural "cic:/CoRN/algebra/CGroups/Fminus.con". + +(* UNEXPORTED +End Part_Function_Minus +*) + +(*#* +%\begin{convention}% Let [R:G->CProp]. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CGroups/CGroup_Ops/R.var". + +inline procedural "cic:/CoRN/algebra/CGroups/included_FInv.con". + +inline procedural "cic:/CoRN/algebra/CGroups/included_FInv'.con". + +inline procedural "cic:/CoRN/algebra/CGroups/included_FMinus.con". + +inline procedural "cic:/CoRN/algebra/CGroups/included_FMinus'.con". + +inline procedural "cic:/CoRN/algebra/CGroups/included_FMinus''.con". + +(* UNEXPORTED +End CGroup_Ops +*) + +(* UNEXPORTED +Implicit Arguments Finv [G]. +*) + +(* NOTATION +Notation "{--} x" := (Finv x) (at level 2, right associativity). +*) + +(* UNEXPORTED +Implicit Arguments Fminus [G]. +*) + +(* NOTATION +Infix "{-}" := Fminus (at level 50, left associativity). +*) + +(* UNEXPORTED +Hint Resolve included_FInv included_FMinus : included. +*) + +(* UNEXPORTED +Hint Immediate included_FInv' included_FMinus' included_FMinus'' : included. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CLogic.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CLogic.mma new file mode 100644 index 000000000..27c279377 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CLogic.mma @@ -0,0 +1,621 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CLogic.v,v 1.10 2004/04/09 15:58:31 lcf Exp $ *) + +(*#* printing Not %\ensuremath\neg% #~# *) + +(*#* printing CNot %\ensuremath\neg% #~# *) + +(*#* printing Iff %\ensuremath\Leftrightarrow% #⇔# *) + +(*#* printing CFalse %\ensuremath\bot% #⊥# *) + +(*#* printing False %\ensuremath\bot% #⊥# *) + +(*#* printing CTrue %\ensuremath\top% *) + +(*#* printing True %\ensuremath\top% *) + +(*#* printing or %\ensuremath{\mathrel\vee}% *) + +(*#* printing and %\ensuremath{\mathrel\wedge}% *) + +include "algebra/Basics.ma". + +(*#* *Extending the Coq Logic +Because notions of apartness and order have computational meaning, we +will have to define logical connectives in [Type]. In order to +keep a syntactic distinction between types of terms, we define [CProp] +as an alias for [Type], to be used as type of (computationally meaningful) +propositions. + +Falsehood and negation will typically not be needed in [CProp], as +they are used to refer to negative statements, which carry no +computational meaning. Therefore, we will simply define a negation +operator from [Type] to [Prop] . + +Conjunction, disjunction and existential quantification will have to come in +multiple varieties. For conjunction, we will need four operators of type +[s1->s2->s3], where [s3] is [Prop] if both [s1] and [s2] +are [Prop] and [CProp] otherwise. +We here take advantage of the inclusion of [Prop] in [Type]. + +Disjunction is slightly different, as it will always return a value in [CProp] even +if both arguments are propositions. This is because in general +it may be computationally important to know which of the two branches of the +disjunction actually holds. + +Existential quantification will similarly always return a value in [CProp]. + +- [CProp]-valued conjuction will be denoted as [and]; +- [Crop]-valued conjuction will be denoted as [or]; +- Existential quantification will be written as [{x:A & B}] or [{x:A | B}], +according to whether [B] is respectively of type [CProp] or [Prop]. + +In a few specific situations we do need truth, false and negation in [CProp], +so we will also introduce them; this should be a temporary option. + +Finally, for other formulae that might occur in our [CProp]-valued +propositions, such as [(le m n)], we have to introduce a [CProp]-valued +version. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/CProp.con". + +(* UNEXPORTED +Section Basics +*) + +(*#* ** Basics +Here we treat conversion from [Prop] to [CProp] and vice versa, +and some basic connectives in [CProp]. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/Not.con". + +inline procedural "cic:/CoRN/algebra/CLogic/CAnd.ind". + +inline procedural "cic:/CoRN/algebra/CLogic/Iff.con". + +inline procedural "cic:/CoRN/algebra/CLogic/CFalse.ind". + +inline procedural "cic:/CoRN/algebra/CLogic/CTrue.ind". + +inline procedural "cic:/CoRN/algebra/CLogic/proj1_sigT.con". + +inline procedural "cic:/CoRN/algebra/CLogic/proj2_sigT.con". + +inline procedural "cic:/CoRN/algebra/CLogic/sig2T.ind". + +inline procedural "cic:/CoRN/algebra/CLogic/proj1_sig2T.con". + +inline procedural "cic:/CoRN/algebra/CLogic/proj2a_sig2T.con". + +inline procedural "cic:/CoRN/algebra/CLogic/proj2b_sig2T.con". + +inline procedural "cic:/CoRN/algebra/CLogic/toCProp.ind". + +inline procedural "cic:/CoRN/algebra/CLogic/toCProp_e.con". + +inline procedural "cic:/CoRN/algebra/CLogic/CNot.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Ccontrapos'.con". + +inline procedural "cic:/CoRN/algebra/CLogic/COr.ind". + +(*#* +Some lemmas to make it possible to use [Step] when reasoning with +biimplications.*) + +(* NOTATION +Infix "IFF" := Iff (at level 60, right associativity). +*) + +inline procedural "cic:/CoRN/algebra/CLogic/Iff_left.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Iff_right.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Iff_refl.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Iff_sym.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Iff_trans.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Iff_imp_imp.con". + +(* UNEXPORTED +Declare Right Step Iff_right. +*) + +(* UNEXPORTED +Declare Left Step Iff_left. +*) + +(* UNEXPORTED +Hint Resolve Iff_trans Iff_sym Iff_refl Iff_right Iff_left Iff_imp_imp : algebra. +*) + +(* UNEXPORTED +End Basics +*) + +(* begin hide *) + +(* NOTATION +Infix "or" := COr (at level 85, right associativity). +*) + +(* NOTATION +Infix "and" := CAnd (at level 80, right associativity). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CLogic/not_r_cor_rect.con". + +inline procedural "cic:/CoRN/algebra/CLogic/not_l_cor_rect.con". + +(* begin hide *) + +(* NOTATION +Notation "{ x : A | P }" := (sigT (fun x : A => P):CProp) + (at level 0, x at level 99) : type_scope. +*) + +(* NOTATION +Notation "{ x : A | P | Q }" := + (sig2T A (fun x : A => P) (fun x : A => Q)) (at level 0, x at level 99) : + type_scope. +*) + +(* end hide *) + +(* +Section test. + +Variable A:Type. +Variables P,Q:A->Prop. +Variables X,Y:A->CProp. + +Check {x:A | (P x)}. +Check {x:A |(X x)}. +Check {x:A | (X x) | (Y x)}. +Check {x:A | (P x) | (Q x)}. +Check {x:A | (P x) | (X x)}. +Check {x:A | (X x) | (P x)}. + +End test. +*) + +(* UNEXPORTED +Hint Resolve CI CAnd_intro Cinleft Cinright existT exist2T: core. +*) + +(* UNEXPORTED +Section Choice +*) + +(* **Choice +Let [P] be a predicate on $\NN^2$#N times N#. +*) + +alias id "P" = "cic:/CoRN/algebra/CLogic/Choice/P.var". + +inline procedural "cic:/CoRN/algebra/CLogic/choice.con". + +(* UNEXPORTED +End Choice +*) + +(* UNEXPORTED +Section Logical_Remarks +*) + +(*#* We prove a few logical results which are helpful to have as lemmas +when [A], [B] and [C] are non trivial. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/CNot_Not_or.con". + +inline procedural "cic:/CoRN/algebra/CLogic/CdeMorgan_ex_all.con". + +(* UNEXPORTED +End Logical_Remarks +*) + +(* UNEXPORTED +Section CRelation_Definition +*) + +(*#* ** [CProp]-valued Relations +Similar to Relations.v in Coq's standard library. + +%\begin{convention}% Let [A:Type] and [R:Crelation]. +%\end{convention}% +*) + +alias id "A" = "cic:/CoRN/algebra/CLogic/CRelation_Definition/A.var". + +inline procedural "cic:/CoRN/algebra/CLogic/Crelation.con". + +alias id "R" = "cic:/CoRN/algebra/CLogic/CRelation_Definition/R.var". + +inline procedural "cic:/CoRN/algebra/CLogic/Creflexive.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Ctransitive.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Csymmetric.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Cequiv.con". + +(* UNEXPORTED +End CRelation_Definition +*) + +(* UNEXPORTED +Section TRelation_Definition +*) + +(*#* ** [Prop]-valued Relations +Analogous. + +%\begin{convention}% Let [A:Type] and [R:Trelation]. +%\end{convention}% +*) + +alias id "A" = "cic:/CoRN/algebra/CLogic/TRelation_Definition/A.var". + +inline procedural "cic:/CoRN/algebra/CLogic/Trelation.con". + +alias id "R" = "cic:/CoRN/algebra/CLogic/TRelation_Definition/R.var". + +inline procedural "cic:/CoRN/algebra/CLogic/Treflexive.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Ttransitive.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Tsymmetric.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Tequiv.con". + +(* UNEXPORTED +End TRelation_Definition +*) + +inline procedural "cic:/CoRN/algebra/CLogic/eqs.ind". + +(* UNEXPORTED +Section le_odd +*) + +(*#* ** The relation [le], [lt], [odd] and [even] in [CProp] +*) + +inline procedural "cic:/CoRN/algebra/CLogic/Cle.ind". + +inline procedural "cic:/CoRN/algebra/CLogic/Cnat_double_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/my_Cle_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Cle_n_S.con". + +inline procedural "cic:/CoRN/algebra/CLogic/toCle.con". + +(* UNEXPORTED +Hint Resolve toCle. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/Cle_to.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Clt.con". + +inline procedural "cic:/CoRN/algebra/CLogic/toCProp_lt.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Clt_to.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Cle_le_S_eq.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Cnat_total_order.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Codd.ind". + +inline procedural "cic:/CoRN/algebra/CLogic/Codd_even_to.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Codd_to.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Ceven_to.con". + +inline procedural "cic:/CoRN/algebra/CLogic/to_Codd_even.con". + +inline procedural "cic:/CoRN/algebra/CLogic/to_Codd.con". + +inline procedural "cic:/CoRN/algebra/CLogic/to_Ceven.con". + +(* UNEXPORTED +End le_odd +*) + +(* UNEXPORTED +Section Misc +*) + +(*#* **Miscellaneous +*) + +inline procedural "cic:/CoRN/algebra/CLogic/CZ_exh.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Cnats_Z_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Cdiff_Z_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Cpred_succ_Z_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/not_r_sum_rec.con". + +inline procedural "cic:/CoRN/algebra/CLogic/not_l_sum_rec.con". + +(* UNEXPORTED +End Misc +*) + +(*#* **Results about the natural numbers + +We now define a class of predicates on a finite subset of natural +numbers that will be important throughout all our work. Essentially, +these are simply setoid predicates, but for clarity we will never +write them in that form but we will single out the preservation of the +setoid equality. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/nat_less_n_pred.con". + +inline procedural "cic:/CoRN/algebra/CLogic/nat_less_n_pred'.con". + +(* UNEXPORTED +Implicit Arguments nat_less_n_pred [n]. +*) + +(* UNEXPORTED +Implicit Arguments nat_less_n_pred' [n]. +*) + +(* UNEXPORTED +Section Odd_and_Even +*) + +(*#* +For our work we will many times need to distinguish cases between even or odd numbers. +We begin by proving that this case distinction is decidable. +Next, we prove the usual results about sums of even and odd numbers: +*) + +inline procedural "cic:/CoRN/algebra/CLogic/even_plus_n_n.con". + +inline procedural "cic:/CoRN/algebra/CLogic/even_or_odd_plus.con". + +(*#* Finally, we prove that an arbitrary natural number can be written in some canonical way. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/even_or_odd_plus_gt.con". + +(* UNEXPORTED +End Odd_and_Even +*) + +(* UNEXPORTED +Hint Resolve even_plus_n_n: arith. +*) + +(* UNEXPORTED +Hint Resolve toCle: core. +*) + +(* UNEXPORTED +Section Natural_Numbers +*) + +(*#* **Algebraic Properties + +We now present a series of trivial things proved with [Omega] that are +stated as lemmas to make proofs shorter and to aid in auxiliary +definitions. Giving a name to these results allows us to use them in +definitions keeping conciseness. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/Clt_le_weak.con". + +inline procedural "cic:/CoRN/algebra/CLogic/lt_5.con". + +inline procedural "cic:/CoRN/algebra/CLogic/lt_8.con". + +inline procedural "cic:/CoRN/algebra/CLogic/pred_lt.con". + +inline procedural "cic:/CoRN/algebra/CLogic/lt_10.con". + +inline procedural "cic:/CoRN/algebra/CLogic/lt_pred'.con". + +inline procedural "cic:/CoRN/algebra/CLogic/le_1.con". + +inline procedural "cic:/CoRN/algebra/CLogic/le_2.con". + +inline procedural "cic:/CoRN/algebra/CLogic/plus_eq_one_imp_eq_zero.con". + +inline procedural "cic:/CoRN/algebra/CLogic/not_not_lt.con". + +inline procedural "cic:/CoRN/algebra/CLogic/plus_pred_pred_plus.con". + +(*#* We now prove some properties of functions on the natural numbers. + +%\begin{convention}% Let [H:nat->nat]. +%\end{convention}% +*) + +alias id "h" = "cic:/CoRN/algebra/CLogic/Natural_Numbers/h.var". + +(*#* +First we characterize monotonicity by a local condition: if [h(n) < h(n+1)] +for every natural number [n] then [h] is monotonous. An analogous result +holds for weak monotonicity. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/nat_local_mon_imp_mon.con". + +inline procedural "cic:/CoRN/algebra/CLogic/nat_local_mon_imp_mon_le.con". + +(*#* A strictly increasing function is injective: *) + +inline procedural "cic:/CoRN/algebra/CLogic/nat_mon_imp_inj.con". + +(*#* And (not completely trivial) a function that preserves [lt] also preserves [le]. *) + +inline procedural "cic:/CoRN/algebra/CLogic/nat_mon_imp_mon'.con". + +(*#* +The last lemmas in this section state that a monotonous function in the + natural numbers completely covers the natural numbers, that is, for every +natural number [n] there is an [i] such that [h(i) <= n<(n+1) <= h(i+1)]. +These are useful for integration. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/mon_fun_covers.con". + +inline procedural "cic:/CoRN/algebra/CLogic/weird_mon_covers.con". + +(* UNEXPORTED +End Natural_Numbers +*) + +(*#* +Useful for the Fundamental Theorem of Algebra. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/kseq_prop.con". + +(* UNEXPORTED +Section Predicates_to_CProp +*) + +(*#* **Logical Properties + +This section contains lemmas that aid in logical reasoning with +natural numbers. First, we present some principles of induction, both +for [CProp]- and [Prop]-valued predicates. We begin by presenting the +results for [CProp]-valued predicates: +*) + +inline procedural "cic:/CoRN/algebra/CLogic/even_induction.con". + +inline procedural "cic:/CoRN/algebra/CLogic/odd_induction.con". + +inline procedural "cic:/CoRN/algebra/CLogic/four_induction.con". + +inline procedural "cic:/CoRN/algebra/CLogic/nat_complete_double_induction.con". + +inline procedural "cic:/CoRN/algebra/CLogic/odd_double_ind.con". + +(*#* For subsetoid predicates in the natural numbers we can eliminate +disjunction (and existential quantification) as follows. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/finite_or_elim.con". + +inline procedural "cic:/CoRN/algebra/CLogic/str_finite_or_elim.con". + +(* UNEXPORTED +End Predicates_to_CProp +*) + +(* UNEXPORTED +Section Predicates_to_Prop +*) + +(*#* Finally, analogous results for [Prop]-valued predicates are presented for +completeness's sake. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/even_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/odd_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/nat_complete_double_ind.con". + +inline procedural "cic:/CoRN/algebra/CLogic/four_ind.con". + +(* UNEXPORTED +End Predicates_to_Prop +*) + +(*#* **Integers + +Similar results for integers. +*) + +(* begin hide *) + +(* UNEXPORTED +Tactic Notation "ElimCompare" constr(c) constr(d) := elim_compare c d. +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CLogic/Zlts.con". + +inline procedural "cic:/CoRN/algebra/CLogic/toCProp_Zlt.con". + +inline procedural "cic:/CoRN/algebra/CLogic/CZlt_to.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zsgn_1.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zsgn_2.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zsgn_3.con". + +(*#* The following have unusual names, in line with the series of lemmata in +fast_integers.v. +*) + +inline procedural "cic:/CoRN/algebra/CLogic/ZL4'.con". + +inline procedural "cic:/CoRN/algebra/CLogic/ZL9.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zsgn_4.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zsgn_5.con". + +inline procedural "cic:/CoRN/algebra/CLogic/nat_nat_pos.con". + +inline procedural "cic:/CoRN/algebra/CLogic/S_predn.con". + +inline procedural "cic:/CoRN/algebra/CLogic/absolu_1.con". + +inline procedural "cic:/CoRN/algebra/CLogic/absolu_2.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zgt_mult_conv_absorb_l.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zgt_mult_reg_absorb_l.con". + +inline procedural "cic:/CoRN/algebra/CLogic/Zmult_Sm_Sn.con". + +(* NOTATION +Notation ProjT1 := (proj1_sigT _ _). +*) + +(* NOTATION +Notation ProjT2 := (proj2_sigT _ _). +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CMonoids.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CMonoids.mma new file mode 100644 index 000000000..7ce31a35a --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CMonoids.mma @@ -0,0 +1,175 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CMonoids.v,v 1.3 2004/04/07 15:07:57 lcf Exp $ *) + +(*#* printing Zero %\ensuremath{\mathbf0}% #0# *) + +include "algebra/CSemiGroups.ma". + +(* Begin_SpecReals *) + +(*#* +* Monoids %\label{section:monoids}% +** Definition of monoids +*) + +inline procedural "cic:/CoRN/algebra/CMonoids/is_rht_unit.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CMonoids/is_lft_unit.con". + +(* UNEXPORTED +Implicit Arguments is_lft_unit [S]. +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Implicit Arguments is_rht_unit [S]. +*) + +inline procedural "cic:/CoRN/algebra/CMonoids/is_CMonoid.ind". + +inline procedural "cic:/CoRN/algebra/CMonoids/CMonoid.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CMonoids/cm_crr.con +*) + +(*#* +%\begin{nameconvention}% +In the names of lemmas, we will denote [Zero] with [zero]. +We denote [ [#] Zero] in the names of lemmas by [ap_zero] +(and not, e.g.%\% [nonzero]). +%\end{nameconvention}% +*) + +(* Begin_SpecReals *) + +(*#* +The predicate "non-zero" is defined. +In lemmas we will continue to write [x [#] Zero], rather than +[(nonZeroP x)], but the predicate is useful for some high-level definitions, +e.g. for the setoid of non-zeros. +*) + +(* NOTATION +Notation Zero := (cm_unit _). +*) + +inline procedural "cic:/CoRN/algebra/CMonoids/nonZeroP.con". + +(* End_SpecReals *) + +(* UNEXPORTED +Implicit Arguments nonZeroP [M]. +*) + +(*#* +** Monoid axioms +%\begin{convention}% Let [M] be a monoid. +%\end{convention}% +*) + +(* UNEXPORTED +Section CMonoid_axioms +*) + +alias id "M" = "cic:/CoRN/algebra/CMonoids/CMonoid_axioms/M.var". + +inline procedural "cic:/CoRN/algebra/CMonoids/CMonoid_is_CMonoid.con". + +inline procedural "cic:/CoRN/algebra/CMonoids/cm_rht_unit.con". + +inline procedural "cic:/CoRN/algebra/CMonoids/cm_lft_unit.con". + +(* UNEXPORTED +End CMonoid_axioms +*) + +(*#* +** Monoid basics +%\begin{convention}% Let [M] be a monoid. +%\end{convention}% +*) + +(* UNEXPORTED +Section CMonoid_basics +*) + +alias id "M" = "cic:/CoRN/algebra/CMonoids/CMonoid_basics/M.var". + +inline procedural "cic:/CoRN/algebra/CMonoids/cm_rht_unit_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CMonoids/cm_lft_unit_unfolded.con". + +(* UNEXPORTED +Hint Resolve cm_rht_unit_unfolded cm_lft_unit_unfolded: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CMonoids/cm_unit_unique_lft.con". + +inline procedural "cic:/CoRN/algebra/CMonoids/cm_unit_unique_rht.con". + +(* Begin_SpecReals *) + +(*#* +The proof component of the monoid is irrelevant. +*) + +inline procedural "cic:/CoRN/algebra/CMonoids/is_CMonoid_proof_irr.con". + +(* End_SpecReals *) + +(*#* +** Submonoids +%\begin{convention}% +Let [P] a predicate on [M] containing [Zero] and closed under [[+]]. +%\end{convention}% +*) + +(* UNEXPORTED +Section SubCMonoids +*) + +alias id "P" = "cic:/CoRN/algebra/CMonoids/CMonoid_basics/SubCMonoids/P.var". + +alias id "Punit" = "cic:/CoRN/algebra/CMonoids/CMonoid_basics/SubCMonoids/Punit.var". + +alias id "op_pres_P" = "cic:/CoRN/algebra/CMonoids/CMonoid_basics/SubCMonoids/op_pres_P.var". + +inline procedural "cic:/CoRN/algebra/CMonoids/CMonoid_basics/SubCMonoids/subcrr.con" "CMonoid_basics__SubCMonoids__". + +inline procedural "cic:/CoRN/algebra/CMonoids/ismon_scrr.con". + +inline procedural "cic:/CoRN/algebra/CMonoids/Build_SubCMonoid.con". + +(* UNEXPORTED +End SubCMonoids +*) + +(* UNEXPORTED +End CMonoid_basics +*) + +(* UNEXPORTED +Hint Resolve cm_rht_unit_unfolded cm_lft_unit_unfolded: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdAbs.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdAbs.mma new file mode 100644 index 000000000..cf2ee34e5 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdAbs.mma @@ -0,0 +1,158 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "algebra/COrdFields2.ma". + +(*#* +** Properties of [AbsSmall] +*) + +(* Begin_SpecReals *) + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall.con". + +(* UNEXPORTED +Implicit Arguments AbsSmall [R]. +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Section AbsSmall_properties +*) + +(*#* +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdAbs/AbsSmall_properties/R.var". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_wdr.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_wdr_unfolded.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_wdl.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_wdl_unfolded.con". + +(* UNEXPORTED +Declare Left Step AbsSmall_wdl_unfolded. +*) + +(* UNEXPORTED +Declare Right Step AbsSmall_wdr_unfolded. +*) + +(* begin hide *) + +(* NOTATION +Notation ZeroR := (Zero:R). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_leEq_trans.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/zero_AbsSmall.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_trans.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/leEq_imp_AbsSmall.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/inv_resp_AbsSmall.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_minus.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_plus.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_eps_div_two.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_x_plus_delta.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_x_minus_delta.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_x_plus_eps_div2.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_x_minus_eps_div2.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_intermediate.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_eps_div2.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_nonneg.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_mult.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_cancel_mult.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsSmall_approach_zero.con". + +(* UNEXPORTED +End AbsSmall_properties +*) + +(* UNEXPORTED +Declare Left Step AbsSmall_wdl_unfolded. +*) + +(* UNEXPORTED +Declare Right Step AbsSmall_wdr_unfolded. +*) + +(*#* ** Properties of [AbsBig] *) + +inline procedural "cic:/CoRN/algebra/COrdAbs/absBig.con". + +(* NOTATION +Notation AbsBig := (absBig _). +*) + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsBigSmall_minus.con". + +(* UNEXPORTED +Section absBig_wd_properties +*) + +(*#* +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdAbs/absBig_wd_properties/R.var". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsBig_wdr.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsBig_wdl.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsBig_wdr_unfolded.con". + +inline procedural "cic:/CoRN/algebra/COrdAbs/AbsBig_wdl_unfolded.con". + +(* UNEXPORTED +End absBig_wd_properties +*) + +(* UNEXPORTED +Declare Left Step AbsBig_wdl_unfolded. +*) + +(* UNEXPORTED +Declare Right Step AbsBig_wdr_unfolded. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdCauchy.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdCauchy.mma new file mode 100644 index 000000000..a77326c63 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdCauchy.mma @@ -0,0 +1,284 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "algebra/COrdAbs.ma". + +(* Begin_SpecReals *) + +(* UNEXPORTED +Section OrdField_Cauchy +*) + +(*#* **Cauchy sequences +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/R.var". + +(* begin hide *) + +(* UNEXPORTED +Set Implicit Arguments. +*) + +(* UNEXPORTED +Unset Strict Implicit. +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/Cauchy_prop.con". + +(* begin hide *) + +(* UNEXPORTED +Set Strict Implicit. +*) + +(* UNEXPORTED +Unset Implicit Arguments. +*) + +(* end hide *) + +(* Def. CauchyP, Build_CauchyP *) + +(* Should be defined in terms of CauchyP *) + +(*#* +Implicit arguments turned off, because Coq makes a mess of it in combination +with the coercions +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CauchySeq.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/COrdCauchy/CS_seq.con +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/SeqLimit.con". + +(* End_SpecReals *) + +(*#* +We now prove that the property of being a Cauchy sequence is preserved +through the usual algebraic operations (addition, subtraction and +multiplication -- and division, provided some additional conditions +hold). + +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_bounded.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_const.con". + +(*#* +%\begin{convention}% Assume [f] and [g] are Cauchy sequences on [R]. +%\end{convention}% +*) + +alias id "f" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/f.var". + +alias id "g" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/g.var". + +alias id "Hf" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/Hf.var". + +alias id "Hg" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/Hg.var". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_plus.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_inv.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_mult.con". + +(*#* +We now assume that [f] is, from some point onwards, greater than +some positive number. The sequence of reciprocals is defined as +being constantly one up to that point, and the sequence of +reciprocals from then onwards. + +%\begin{convention}% +Let [e] be a postive element of [R] and let [N:nat] be such that from +[N] onwards, [(f n) [#] Zero] +%\end{convention}% +*) + +alias id "e" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/e.var". + +alias id "He" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/He.var". + +alias id "N" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/N.var". + +alias id "f_bnd" = "cic:/CoRN/algebra/COrdCauchy/OrdField_Cauchy/f_bnd.var". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_recip_def.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_recip_seq.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/CS_seq_recip.con". + +(* UNEXPORTED +End OrdField_Cauchy +*) + +(* UNEXPORTED +Implicit Arguments SeqLimit [R]. +*) + +(*#* +The following lemma does not require the sequence to be Cauchy, but it fits +well here anyway. +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/maj_upto_eps.con". + +(* UNEXPORTED +Section Mult_AbsSmall +*) + +alias id "R" = "cic:/CoRN/algebra/COrdCauchy/Mult_AbsSmall/R.var". + +(*#* +** [AbsSmall] revisited +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mult_AbsSmall'_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mult_AbsSmall_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mult_AbsSmall_lft.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mult_AbsSmall.con". + +(* UNEXPORTED +End Mult_AbsSmall +*) + +(* UNEXPORTED +Section Mult_Continuous +*) + +alias id "R" = "cic:/CoRN/algebra/COrdCauchy/Mult_Continuous/R.var". + +(*#* +** Multiplication is continuous +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/smaller.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/estimate_abs.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mult_contin.con". + +(*#* Addition is also continuous. *) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/plus_contin.con". + +(* UNEXPORTED +End Mult_Continuous +*) + +(* UNEXPORTED +Section Monotonous_functions +*) + +(*#* +** Monotonous Functions + +Finally, we study several properties of monotonous functions and +characterize them in some way. + +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdCauchy/Monotonous_functions/R.var". + +(*#* +We begin by characterizing the preservation of less (less or equal) +in terms of preservation of less or equal (less). +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/resp_less_char'.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/resp_less_char.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/resp_leEq_char'.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/resp_leEq_char.con". + +(*#* +Next, we see different characterizations of monotonous functions from +some subset of the natural numbers into [R]. Mainly, these +amount (for different types of functions) to proving that a function +is monotonous iff [f(i) [<] f(i+1)] for every [i]. + +Also, strictly monotonous functions are injective. +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon_imp_mon.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon_imp_mon'.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon'_imp_mon'.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mon_imp_mon'.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mon_imp_inj.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon_imp_mon_lt.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon_imp_mon'_lt.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon'_imp_mon'_lt.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon'_imp_mon'2_lt.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mon_imp_mon'_lt.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mon_imp_inj_lt.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon_imp_mon_le.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon_imp_mon'_le.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon'_imp_mon'_le.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/local_mon'_imp_mon'2_le.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mon_imp_mon'_le.con". + +inline procedural "cic:/CoRN/algebra/COrdCauchy/mon_imp_inj_le.con". + +(*#* +A similar result for %{\em %partial%}% functions. +*) + +inline procedural "cic:/CoRN/algebra/COrdCauchy/part_mon_imp_mon'.con". + +(* UNEXPORTED +End Monotonous_functions +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields.mma new file mode 100644 index 000000000..b0bb26b26 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields.mma @@ -0,0 +1,743 @@ +(**************************************************************************) +(* ___ *) +(* ||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: COrdFields.v,v 1.6 2004/04/23 10:00:52 lcf Exp $ *) + +(*#* printing [<] %\ensuremath<% #<# *) + +(*#* printing [<=] %\ensuremath{\leq}% #≤# *) + +(*#* printing [>] %\ensuremath>% #># *) + +(*#* printing OneNZ %\ensuremath{\mathbf1}% #1# *) + +(*#* printing TwoNZ %\ensuremath{\mathbf2}% #2# *) + +(*#* printing ThreeNZ %\ensuremath{\mathbf3}% #3# *) + +(*#* printing FourNZ %\ensuremath{\mathbf4}% #4# *) + +(*#* printing SixNZ %\ensuremath{\mathbf6}% #6# *) + +(*#* printing EightNZ %\ensuremath{\mathbf8}% #8# *) + +(*#* printing NineNZ %\ensuremath{\mathbf9}% #9# *) + +(*#* printing TwelveNZ %\ensuremath{\mathbf{12}}% #12# *) + +(*#* printing SixteenNZ %\ensuremath{\mathbf{16}}% #16# *) + +(*#* printing EighteenNZ %\ensuremath{\mathbf{18}}% #18# *) + +(*#* printing TwentyFourNZ %\ensuremath{\mathbf{24}}% #24# *) + +(*#* printing FortyEightNZ %\ensuremath{\mathbf{48}}% #48# *) + +include "tactics/FieldReflection.ma". + +(* ORDERED FIELDS *) + +(*#* +* Ordered Fields +** Definition of the notion of ordered field +*) + +(* Begin_SpecReals *) + +inline procedural "cic:/CoRN/algebra/COrdFields/strictorder.ind". + +(* UNEXPORTED +Implicit Arguments strictorder [A]. +*) + +(* UNEXPORTED +Implicit Arguments Build_strictorder [A R]. +*) + +(* UNEXPORTED +Implicit Arguments so_trans [A R]. +*) + +(* UNEXPORTED +Implicit Arguments so_asym [A R]. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/is_COrdField.ind". + +inline procedural "cic:/CoRN/algebra/COrdFields/COrdField.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/COrdFields/cof_crr.con +*) + +(*#* +%\begin{nameconvention}% +In the names of lemmas, [ [<] ] is written as [less] and "[Zero [<] ]" +is written as [pos]. +%\end{nameconvention}% +*) + +(* UNEXPORTED +Implicit Arguments cof_less [c]. +*) + +(* NOTATION +Infix "[<]" := cof_less (at level 70, no associativity). +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/greater.con". + +(* UNEXPORTED +Implicit Arguments greater [F]. +*) + +(* NOTATION +Infix "[>]" := greater (at level 70, no associativity). +*) + +(* End_SpecReals *) + +(*#* +Less or equal is defined as ``not greater than''. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq.con". + +(*#* +%\begin{nameconvention}% +In the names of lemmas, [ [<=] ] is written as [leEq] and +[Zero [<=] ] is written as [nonneg]. +%\end{nameconvention}% +*) + +(* UNEXPORTED +Implicit Arguments leEq [F]. +*) + +(* NOTATION +Infix "[<=]" := leEq (at level 70, no associativity). +*) + +(* UNEXPORTED +Section COrdField_axioms +*) + +(*#* +** Ordered field axioms +%\begin{convention}% +Let [F] be a field. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/algebra/COrdFields/COrdField_axioms/F.var". + +inline procedural "cic:/CoRN/algebra/COrdFields/COrdField_is_COrdField.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_strorder.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_transitive_unfolded.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_antisymmetric_unfolded.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_irreflexive.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_irreflexive_unfolded.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/plus_resp_less_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/mult_resp_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_conf_ap.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_wdr.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_wdl.con". + +(* UNEXPORTED +End COrdField_axioms +*) + +(* UNEXPORTED +Declare Left Step less_wdl. +*) + +(* UNEXPORTED +Declare Right Step less_wdr. +*) + +(* UNEXPORTED +Section OrdField_basics +*) + +(*#* +** Basics +*) + +(*#* +%\begin{convention}% +Let in the rest of this section (and all subsections) +[R] be an ordered field +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields/OrdField_basics/R.var". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_imp_ap.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/Greater_imp_ap.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/ap_imp_less.con". + +(*#* +Now properties which can be derived. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/less_cotransitive.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_cotransitive_unfolded.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_ap_zero.con". + +(* Main characterization of less *) + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq_not_eq.con". + +(* UNEXPORTED +End OrdField_basics +*) + +(*#**********************************) + +(* UNEXPORTED +Section Basic_Properties_of_leEq +*) + +(*#**********************************) + +(*#* ** Basic properties of [ [<=] ] +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields/Basic_Properties_of_leEq/R.var". + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq_wdr.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq_wdl.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq_reflexive.con". + +(* UNEXPORTED +Declare Left Step leEq_wdl. +*) + +(* UNEXPORTED +Declare Right Step leEq_wdr. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/eq_imp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq_imp_eq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/lt_equiv_imp_eq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_leEq_trans.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq_less_trans.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/leEq_transitive.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_leEq.con". + +(* UNEXPORTED +End Basic_Properties_of_leEq +*) + +(* UNEXPORTED +Declare Left Step leEq_wdl. +*) + +(* UNEXPORTED +Declare Right Step leEq_wdr. +*) + +(* UNEXPORTED +Section infinity_of_cordfields +*) + +(*#* +** Infinity of ordered fields + +In an ordered field we have that [One[+]One] and +[One[+]One[+]One] and so on are all apart from zero. +We first show this, so that we can define [TwoNZ], [ThreeNZ] +and so on. These are elements of [NonZeros], so that we can write +e.g.%\% [x[/]TwoNZ]. +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields/infinity_of_cordfields/R.var". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_one.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_less_succ.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_apart.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_ap_zero'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_ap_zero_imp.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/Snring.con". + +include "tactics/Transparent_algebra.ma". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_Snring.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nringS_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_fac_ap_zero.con". + +include "tactics/Opaque_algebra.ma". + +(* UNEXPORTED +Section up_to_four +*) + +(*#* +*** Properties of one up to four +%\begin{nameconvention}% +In the names of lemmas, we denote the numbers 0,1,2,3,4 and so on, by +[zero], [one], [two] etc. +%\end{nameconvention}% +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/less_plusOne.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/zero_lt_posplus1.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/plus_one_ext_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/one_less_two.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/two_less_three.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/three_less_four.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_two.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/one_less_three.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/two_less_four.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_three.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/one_less_four.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_four.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/two_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/three_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/four_ap_zero.con". + +(* UNEXPORTED +End up_to_four +*) + +(* UNEXPORTED +Section More_than_four +*) + +(*#* *** Properties of some other numbers *) + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_six.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_eight.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_nine.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_twelve.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_sixteen.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_eighteen.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_twentyfour.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_fortyeight.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/six_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/eight_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/nine_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/twelve_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/sixteen_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/eighteen_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/twentyfour_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/fortyeight_ap_zero.con". + +(* UNEXPORTED +End More_than_four +*) + +(* UNEXPORTED +End infinity_of_cordfields +*) + +(* UNEXPORTED +Declare Left Step leEq_wdl. +*) + +(* UNEXPORTED +Declare Right Step leEq_wdr. +*) + +(* NOTATION +Notation " x [/]OneNZ" := (x[/] One[//]ring_non_triv _) (at level 20). +*) + +(* NOTATION +Notation " x [/]TwoNZ" := (x[/] Two[//]two_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]ThreeNZ" := (x[/] Three[//]three_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]FourNZ" := (x[/] Four[//]four_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]SixNZ" := (x[/] Six[//]six_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]EightNZ" := (x[/] Eight[//]eight_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]NineNZ" := (x[/] Nine[//]nine_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]TwelveNZ" := (x[/] Twelve[//]twelve_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]SixteenNZ" := (x[/] Sixteen[//]sixteen_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]EighteenNZ" := (x[/] Eighteen[//]eighteen_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]TwentyFourNZ" := (x[/] TwentyFour[//]twentyfour_ap_zero _) (at level 20). +*) + +(* NOTATION +Notation " x [/]FortyEightNZ" := (x[/] FortyEight[//]fortyeight_ap_zero _) (at level 20). +*) + +(* UNEXPORTED +Section consequences_of_infinity +*) + +(*#* +*** Consequences of infinity +*) + +alias id "F" = "cic:/CoRN/algebra/COrdFields/consequences_of_infinity/F.var". + +inline procedural "cic:/CoRN/algebra/COrdFields/square_eq.con". + +(*#* +Ordered fields have characteristic zero. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/char0_OrdField.con". + +(* UNEXPORTED +End consequences_of_infinity +*) + +(*#**********************************) + +(* UNEXPORTED +Section Properties_of_Ordering +*) + +(*#**********************************) + +(*#* +** Properties of [[<]] +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields/Properties_of_Ordering/R.var". + +(*#* +We do not use a special predicate for positivity, +(e.g.%\% [PosP]), but just write [Zero [<] x]. +Reasons: it is more natural; in ordinary mathematics we also write [Zero [<] x] +(or [x [>] Zero]). + +*) + +(* UNEXPORTED +Section addition +*) + +(*#* +*** Addition and subtraction%\label{section:less_plus_minus}% + +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/plus_resp_less_lft.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/inv_resp_less.con". + +(* UNEXPORTED +Transparent cg_minus. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/minus_resp_less.con". + +(* UNEXPORTED +Transparent cg_minus. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/minus_resp_less_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/plus_resp_less_both.con". + +(*#* +For versions of [plus_resp_less_both] where one [ [<] ] in the +assumption is replaced by [ [<=] ]%, see +Section~\ref{section:leEq-plus-minus}%. + +Cancellation laws +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/plus_cancel_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/inv_cancel_less.con". + +(*#* + +Lemmas where an operation is transformed into the inverse operation on +the other side of an inequality are called laws for shifting. +%\begin{nameconvention}% +The names of laws for shifting start with [shift_], and then come +the operation and the inequality, in the order in which they occur in the +conclusion. +If the shifted operand changes sides w.r.t.%\% the operation and its inverse, +the name gets a prime. +%\end{nameconvention}% + +It would be nicer to write the laws for shifting as bi-implications, +However, it is impractical to use these in +Coq%(see the Coq shortcoming in Section~\ref{section:setoid-basics})%. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_less_plus.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_less_plus'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_less_minus.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_less_minus'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_plus_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_plus_less'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_minus_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_minus_less'.con". + +(*#* +Some special cases of laws for shifting. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_zero_less_minus.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_zero_less_minus'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/qltone.con". + +(* UNEXPORTED +End addition +*) + +(* UNEXPORTED +Section multiplication +*) + +(*#* +*** Multiplication and division +By Convention%~\ref{convention:div-form}% +in CFields% (Section~\ref{section:fields})%, we often have redundant premises +in lemmas. E.g.%\% the informal statement +``for all [x,y : R] with [Zero [<] x] and [Zero [<] y] +we have [Zero [<] y[/]x]'' +is formalized as follows. +[[ +forall (x y : R) x_, (Zero [<] x) -> (Zero [<] y) -> (Zero [<] y[/]x[//]H) +]] +We do this to keep it easy to use such lemmas. + +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/mult_resp_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/recip_resp_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/div_resp_less_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/div_resp_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/mult_resp_less_lft.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/mult_resp_less_both.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/recip_resp_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/div_resp_less.con". + +(*#* Cancellation laws +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/mult_cancel_less.con". + +(*#* +Laws for shifting + +%For namegiving, see the Section~\ref{section:less_plus_minus} +on plus and minus.% +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_div_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_div_less'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_less_div.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_less_mult.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_less_mult'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/shift_mult_less.con". + +(*#* Other properties of multiplication and division +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/minusOne_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/swap_div.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/eps_div_less_eps.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_two.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_two'.con". + +(* +Apply mult_cancel_less with (Two::R). +Apply pos_two. +rstepl eps[+]Zero; rstepr eps[+]eps. +Apply plus_resp_less_lft. +Auto. +Qed. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_three.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_three'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_four.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_four'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_six.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_eight.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_nine.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_twelve.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_sixteen.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_eighteen.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_twentyfour.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_div_fortyeight.con". + +(* UNEXPORTED +End multiplication +*) + +(* UNEXPORTED +Section misc +*) + +(*#* +*** Miscellaneous properties +*) + +inline procedural "cic:/CoRN/algebra/COrdFields/nring_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/less_nring.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/pos_nring_fac.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/Smallest_less_Average.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/Average_less_Greatest.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/Sum_resp_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/Sumx_resp_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/positive_Sum_two.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/positive_Sumx.con". + +inline procedural "cic:/CoRN/algebra/COrdFields/negative_Sumx.con". + +(* UNEXPORTED +End misc +*) + +(* UNEXPORTED +End Properties_of_Ordering +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields2.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields2.mma new file mode 100644 index 000000000..3e39c77f0 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/COrdFields2.mma @@ -0,0 +1,370 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "algebra/COrdFields.ma". + +(*#* printing one_div_succ %\ensuremath{\frac1{\cdot+1}}% *) + +(*#* printing Half %\ensuremath{\frac12}% #½# *) + +(*#**********************************) + +(* UNEXPORTED +Section Properties_of_leEq +*) + +(*#**********************************) + +(*#* +** Properties of [[<=]] +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields2/Properties_of_leEq/R.var". + +(* UNEXPORTED +Section addition +*) + +(*#* +*** Addition and subtraction%\label{section:leEq-plus-minus}% +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_leEq_lft.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/minus_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/inv_resp_leEq.con". + +(* UNEXPORTED +Transparent cg_minus. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/minus_resp_leEq_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_leEq_both.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_less_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_leEq_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/minus_resp_less_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/minus_resp_leEq_both.con". + +(*#* Cancellation properties +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_cancel_leEq_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/inv_cancel_leEq.con". + +(*#* Laws for shifting +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_plus_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_plus.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_plus_leEq'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_plus'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_lft.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_minus_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_minus.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_minus'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_zero_leEq_minus.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_zero_leEq_minus'.con". + +(* UNEXPORTED +End addition +*) + +(* UNEXPORTED +Section multiplication +*) + +(*#* +*** Multiplication and division + +Multiplication and division respect [[<=]] +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_resp_leEq_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_resp_leEq_lft.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_resp_leEq_both.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/recip_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/div_resp_leEq.con". + +(* UNEXPORTED +Hint Resolve recip_resp_leEq: algebra. +*) + +(*#* Cancellation properties +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_cancel_leEq.con". + +(*#* Laws for shifting +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_mult_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_mult_leEq'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_mult'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_div_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_div_leEq'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/shift_leEq_div.con". + +(* UNEXPORTED +Hint Resolve shift_leEq_div: algebra. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/eps_div_leEq_eps.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nonneg_div_two.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nonneg_div_two'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nonneg_div_three.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nonneg_div_three'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nonneg_div_four.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nonneg_div_four'.con". + +(* UNEXPORTED +End multiplication +*) + +(* UNEXPORTED +Section misc +*) + +(*#* +*** Miscellaneous Properties +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/sqr_nonneg.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nring_nonneg.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/suc_leEq_dub.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/leEq_nring.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/cc_abs_aid.con". + +include "tactics/Transparent_algebra.ma". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nexp_resp_pos.con". + +include "tactics/Opaque_algebra.ma". + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_resp_nonneg.con". + +include "tactics/Transparent_algebra.ma". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nexp_resp_nonneg.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/power_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nexp_resp_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/power_cancel_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/power_cancel_less.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/nat_less_bin_nexp.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/Sum_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/Sumx_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/Sum2_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/approach_zero.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/approach_zero_weak.con". + +(* UNEXPORTED +End misc +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/equal_less_leEq.con". + +(* UNEXPORTED +End Properties_of_leEq +*) + +(*#**********************************) + +(* UNEXPORTED +Section PosP_properties +*) + +(*#**********************************) + +(*#* +** Properties of positive numbers +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields2/PosP_properties/R.var". + +(* begin hide *) + +(* NOTATION +Notation ZeroR := (Zero:R). +*) + +(* NOTATION +Notation OneR := (One:R). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_pos_imp.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_pos_nonneg.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_nonneg_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/pos_square.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_cancel_pos_rht.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/mult_cancel_pos_lft.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/pos_wd.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/even_power_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/odd_power_cancel_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/plus_resp_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/pos_nring_S.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/square_eq_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/square_eq_neg.con". + +(* UNEXPORTED +End PosP_properties +*) + +(* UNEXPORTED +Hint Resolve mult_resp_nonneg. +*) + +(*#* +** Properties of one over successor +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/one_div_succ.con". + +(* UNEXPORTED +Implicit Arguments one_div_succ [R]. +*) + +(* UNEXPORTED +Section One_div_succ_properties +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields2/One_div_succ_properties/R.var". + +inline procedural "cic:/CoRN/algebra/COrdFields2/one_div_succ_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/one_div_succ_pos.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/one_div_succ_resp_less.con". + +(* UNEXPORTED +End One_div_succ_properties +*) + +(*#* +** Properties of [Half] +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/Half.con". + +(* UNEXPORTED +Implicit Arguments Half [R]. +*) + +(* UNEXPORTED +Section Half_properties +*) + +(*#* +%\begin{convention}% +Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/COrdFields2/Half_properties/R.var". + +inline procedural "cic:/CoRN/algebra/COrdFields2/half_1.con". + +(* UNEXPORTED +Hint Resolve half_1: algebra. +*) + +inline procedural "cic:/CoRN/algebra/COrdFields2/pos_half.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/half_1'.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/half_2.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/half_lt1.con". + +inline procedural "cic:/CoRN/algebra/COrdFields2/half_3.con". + +(* UNEXPORTED +End Half_properties +*) + +(* UNEXPORTED +Hint Resolve half_1 half_1' half_2: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_ApZero.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_ApZero.mma new file mode 100644 index 000000000..adb08299d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_ApZero.mma @@ -0,0 +1,192 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPoly_ApZero.v,v 1.3 2004/04/23 10:00:53 lcf Exp $ *) + +include "algebra/CPoly_Degree.ma". + +include "algebra/COrdFields2.ma". + +(*#* * Polynomials apart from zero *) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/distinct1.con". + +(* UNEXPORTED +Implicit Arguments distinct1 [A]. +*) + +(* UNEXPORTED +Section Poly_Representation +*) + +(*#* +** Representation of polynomials +%\begin{convention}% Let [R] be a field, [RX] the ring of polynomials +over [R], [a_ : nat->R] with [(distinct1 a_)] and let [f] be a +polynomial over [R], [n] a natural with [(degree_le n f)], i.e. [f] +has degree at most [n]. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CPoly_ApZero/Poly_Representation/R.var". + +alias id "a_" = "cic:/CoRN/algebra/CPoly_ApZero/Poly_Representation/a_.var". + +alias id "distinct_a_" = "cic:/CoRN/algebra/CPoly_ApZero/Poly_Representation/distinct_a_.var". + +alias id "f" = "cic:/CoRN/algebra/CPoly_ApZero/Poly_Representation/f.var". + +alias id "n" = "cic:/CoRN/algebra/CPoly_ApZero/Poly_Representation/n.var". + +alias id "degree_f" = "cic:/CoRN/algebra/CPoly_ApZero/Poly_Representation/degree_f.var". + +(* begin hide *) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* end hide *) + +include "tactics/Transparent_algebra.ma". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_linear_shifted.con". + +include "tactics/Opaque_algebra.ma". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_linear_factor.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/zero_poly.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/identical_poly.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor'.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor'_degree.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor'_zero.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor'_apzero.con". + +(* UNEXPORTED +Hint Resolve poly_01_factor'_zero. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor_degree.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor_zero.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_factor_one.con". + +(* UNEXPORTED +Hint Resolve poly_01_factor_zero poly_01_factor_one: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_degree'.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_degree.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_zero.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_01_one.con". + +(* UNEXPORTED +Hint Resolve poly_01_zero poly_01_one: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_representation''.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_representation'.con". + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_representation.con". + +(* UNEXPORTED +Hint Resolve poly_representation: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/Cpoly_choose_apzero.con". + +(* UNEXPORTED +End Poly_Representation +*) + +(* UNEXPORTED +Section Characteristic_zero +*) + +(*#* +If we are in a field of characteristic zero, the previous result can be +strengthened. +*) + +alias id "R" = "cic:/CoRN/algebra/CPoly_ApZero/Characteristic_zero/R.var". + +(* begin show *) + +alias id "H" = "cic:/CoRN/algebra/CPoly_ApZero/Characteristic_zero/H.var". + +(* end show *) + +(* begin hide *) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_apzero.con". + +(*#* +Also, in this situation polynomials are extensional functions. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/poly_extensional.con". + +(* UNEXPORTED +End Characteristic_zero +*) + +(*#* +** Polynomials are nonzero on any interval +*) + +(* UNEXPORTED +Section Poly_ApZero_Interval +*) + +alias id "R" = "cic:/CoRN/algebra/CPoly_ApZero/Poly_ApZero_Interval/R.var". + +(* begin hide *) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CPoly_ApZero/Cpoly_apzero_interval.con". + +(* UNEXPORTED +End Poly_ApZero_Interval +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_Degree.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_Degree.mma new file mode 100644 index 000000000..5b8104be8 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_Degree.mma @@ -0,0 +1,244 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPoly_Degree.v,v 1.5 2004/04/23 10:00:53 lcf Exp $ *) + +include "algebra/CPoly_NthCoeff.ma". + +include "algebra/CFields.ma". + +(*#* *Degrees of Polynomials +** Degrees of polynomials over a ring +%\begin{convention}% +Let [R] be a ring and write [RX] for the ring of polynomials +over [R]. +%\end{convention}% +*) + +(* UNEXPORTED +Section Degree_def +*) + +alias id "R" = "cic:/CoRN/algebra/CPoly_Degree/Degree_def/R.var". + +(* begin hide *) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* end hide *) + +(*#* +The length of a polynomial is the number of its coefficients. This is +a syntactical property, as the highest coefficient may be [0]. Note that +the `zero' polynomial [cpoly_zero] has length [0], +a constant polynomial has length [1] and so forth. So the length +is always [1] higher than the `degree' (assuming that the highest +coefficient is [[#]Zero])! +*) + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/lth_of_poly.con". + +(*#* +When dealing with constructive polynomials, notably over the reals or +complex numbers, the degree may be unknown, as we can not decide +whether the highest coefficient is [[#]Zero]. Hence, +degree is a relation between polynomials and natural numbers; if the +degree is unknown for polynomial [p], degree(n,p) doesn't hold for +any [n]. If we don't know the degree of [p], we may still +know it to be below or above a certain number. E.g. for the polynomial +$p_0 +p_1 X +\cdots + p_{n-1} X^{n-1}$#p0 +p1 X + ... + p(n-1) +X^(n-1)#, if $p_i \mathrel{\#}0$#pi apart from 0#, we can say that the +`degree is at least [i]' and if $p_{j+1} = \ldots =p_n =0$#p(j+1) += ... =pn =0# (with [n] the length of the polynomial), we can say +that the `degree is at most [j]'. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/odd_cpoly.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/even_cpoly.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/regular.con". + +(* UNEXPORTED +End Degree_def +*) + +(* UNEXPORTED +Implicit Arguments degree_le [R]. +*) + +(* UNEXPORTED +Implicit Arguments degree [R]. +*) + +(* UNEXPORTED +Implicit Arguments monic [R]. +*) + +(* UNEXPORTED +Implicit Arguments lth_of_poly [R]. +*) + +(* UNEXPORTED +Section Degree_props +*) + +alias id "R" = "cic:/CoRN/algebra/CPoly_Degree/Degree_props/R.var". + +(* begin hide *) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_wd.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_wd.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_wd.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_imp_degree_le.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_c_.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_c_.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_c_one.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_x_.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_x_.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_x_.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_mon.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_inv.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_plus.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_minus.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/Sum_degree_le.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_inv.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_plus_rht.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_minus_lft.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_plus.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_minus.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_mult.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_mult_aux.con". + +(* UNEXPORTED +Hint Resolve degree_mult_aux: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_mult.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_nexp.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_nexp.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/lt_i_lth_of_poly.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/poly_degree_lth.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/Cpoly_ex_degree.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/poly_as_sum''.con". + +(* UNEXPORTED +Hint Resolve poly_as_sum'': algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/poly_as_sum'.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/poly_as_sum.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_zero.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_1_imp.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_cpoly_linear.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_cpoly_linear.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_one.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/monic_apzero.con". + +(* UNEXPORTED +End Degree_props +*) + +(* UNEXPORTED +Hint Resolve poly_as_sum'' poly_as_sum' poly_as_sum: algebra. +*) + +(* UNEXPORTED +Hint Resolve degree_mult_aux: algebra. +*) + +(* UNEXPORTED +Section degree_props_Field +*) + +(*#* ** Degrees of polynomials over a field +%\begin{convention}% Let [F] be a field and write [FX] for the ring of +polynomials over [F]. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/algebra/CPoly_Degree/degree_props_Field/F.var". + +(* begin hide *) + +(* NOTATION +Notation FX := (cpoly_cring F). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_mult.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_nexp.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_le_mult_imp.con". + +inline procedural "cic:/CoRN/algebra/CPoly_Degree/degree_mult_imp.con". + +(* UNEXPORTED +End degree_props_Field +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_NthCoeff.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_NthCoeff.mma new file mode 100644 index 000000000..81ddb6ab6 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPoly_NthCoeff.mma @@ -0,0 +1,210 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPoly_NthCoeff.v,v 1.6 2004/04/23 10:00:53 lcf Exp $ *) + +include "algebra/CPolynomials.ma". + +(*#* +* Polynomials: Nth Coefficient +%\begin{convention}% Let [R] be a ring and write [RX] for the ring of +polynomials over [R]. +%\end{convention}% + +** Definitions +*) + +(* UNEXPORTED +Section NthCoeff_def +*) + +alias id "R" = "cic:/CoRN/algebra/CPoly_NthCoeff/NthCoeff_def/R.var". + +(* begin hide *) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* end hide *) + +(*#* +The [n]-th coefficient of a polynomial. The default value is +[Zero:CR] e.g. if the [n] is higher than the length. For the +polynomial $a_0 +a_1 X +a_2 X^2 + \cdots + a_n X^n$ #a0 +a1 X +a2 X^2 ++ ... + an X^n#, the [Zero]-th coefficient is $a_0$#a0#, the first +is $a_1$#a1# etcetera. *) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_strext.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_wd.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_fun.con". + +(*#* +%\begin{shortcoming}% +We would like to use [nth_coeff_fun n] all the time. +However, Coq's coercion mechanism doesn't support this properly: +the term +[(nth_coeff_fun n p)] won't get parsed, and has to be written as +[((nth_coeff_fun n) p)] instead. + +So, in the names of lemmas, we write [(nth_coeff n p)], +which always (e.g. in proofs) can be converted +to [((nth_coeff_fun n) p)]. +%\end{shortcoming}% +*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nonConst.con". + +(*#* +The following is probably NOT needed. These functions are +NOT extensional, that is, they are not CSetoid functions. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_ok.con". + +(* The in_coeff predicate*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/in_coeff.con". + +(*#* +The [cpoly_zero] case should be [c [=] Zero] in order to be extensional. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_S.con". + +(* UNEXPORTED +End NthCoeff_def +*) + +(* UNEXPORTED +Implicit Arguments nth_coeff [R]. +*) + +(* UNEXPORTED +Implicit Arguments nth_coeff_fun [R]. +*) + +(* UNEXPORTED +Hint Resolve nth_coeff_wd: algebra_c. +*) + +(* UNEXPORTED +Section NthCoeff_props +*) + +(*#* ** Properties of [nth_coeff] *) + +alias id "R" = "cic:/CoRN/algebra/CPoly_NthCoeff/NthCoeff_props/R.var". + +(* begin hide *) + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_zero.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/coeff_O_lin.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/coeff_Sm_lin.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/coeff_O_c_.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/coeff_O_x_mult.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/coeff_Sm_x_mult.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/coeff_Sm_mult_x_.con". + +(* UNEXPORTED +Hint Resolve nth_coeff_zero coeff_O_lin coeff_Sm_lin coeff_O_c_ + coeff_O_x_mult coeff_Sm_x_mult coeff_Sm_mult_x_: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_ap_zero_imp.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_plus.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_inv.con". + +(* UNEXPORTED +Hint Resolve nth_coeff_inv: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_c_mult_p.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_p_mult_c_.con". + +(* UNEXPORTED +Hint Resolve nth_coeff_c_mult_p nth_coeff_p_mult_c_ nth_coeff_plus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_complicated.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/all_nth_coeff_eq_imp.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/poly_at_zero.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_inv'.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_minus.con". + +(* UNEXPORTED +Hint Resolve nth_coeff_minus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_sum0.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_sum.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_nexp_eq.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_nexp_neq.con". + +inline procedural "cic:/CoRN/algebra/CPoly_NthCoeff/nth_coeff_mult.con". + +(* UNEXPORTED +End NthCoeff_props +*) + +(* UNEXPORTED +Hint Resolve nth_coeff_wd: algebra_c. +*) + +(* UNEXPORTED +Hint Resolve nth_coeff_complicated poly_at_zero nth_coeff_inv: algebra. +*) + +(* UNEXPORTED +Hint Resolve nth_coeff_inv' nth_coeff_c_mult_p nth_coeff_mult: algebra. +*) + +(* UNEXPORTED +Hint Resolve nth_coeff_zero nth_coeff_plus nth_coeff_minus: algebra. +*) + +(* UNEXPORTED +Hint Resolve nth_coeff_nexp_eq nth_coeff_nexp_neq: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CPolynomials.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPolynomials.mma new file mode 100644 index 000000000..25155ca72 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CPolynomials.mma @@ -0,0 +1,641 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPolynomials.v,v 1.9 2004/04/23 10:00:53 lcf Exp $ *) + +(*#* printing _X_ %\ensuremath{x}% *) + +(*#* printing _C_ %\ensuremath\diamond% *) + +(*#* printing [+X*] %\ensuremath{+x\times}% #+x×# *) + +(*#* printing RX %\ensuremath{R[x]}% #R[x]# *) + +(*#* printing FX %\ensuremath{F[x]}% #F[x]# *) + +include "tactics/RingReflection.ma". + +(*#* * Polynomials +The first section only proves the polynomials form a ring, and nothing more +interesting. +Section%~\ref{section:poly-equality}% gives some basic properties of +equality and induction of polynomials. +** Definition of polynomials; they form a ring +%\label{section:poly-ring}% +*) + +(* UNEXPORTED +Section CPoly_CRing +*) + +(*#* +%\begin{convention}% Let [CR] be a ring. +%\end{convention}% +*) + +alias id "CR" = "cic:/CoRN/algebra/CPolynomials/CPoly_CRing/CR.var". + +(*#* +The intuition behind the type [cpoly] is the following +- [(cpoly CR)] is $CR[X]$ #CR[X]#; +- [cpoly_zero] is the `empty' polynomial with no coefficients; +- [(cpoly_linear c p)] is [c[+]X[*]p] + +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly.ind". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_constant.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_one.con". + +(*#* +Some useful induction lemmas for doubly quantified propositions. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_double_ind0.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_double_sym_ind0.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_double_ind0'.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_ind0.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_sym_ind0.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_ind0'.con". + +(*#* *** The polynomials form a setoid +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_eq_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_eq.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_eq_p_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_ap.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_ap_p_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/irreflexive_cpoly_ap.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/symmetric_cpoly_ap.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cotransitive_cpoly_ap.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/tight_apart_cpoly_ap.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_is_CSetoid.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_csetoid.con". + +(*#* +Now that we know that the polynomials form a setoid, we can use the +notation with [ [#] ] and [ [=] ]. In order to use this notation, +we introduce [cpoly_zero_cs] and [cpoly_linear_cs], so that Coq +recognizes we are talking about a setoid. +We formulate the induction properties and +the most basic properties of equality and apartness +in terms of these generators. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/CPoly_CRing/cpoly_zero_cs.con" "CPoly_CRing__". + +inline procedural "cic:/CoRN/algebra/CPolynomials/CPoly_CRing/cpoly_linear_cs.con" "CPoly_CRing__". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_ind_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_double_ind0_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_double_sym_ind0_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_ind_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_ind0_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_sym_ind0_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_eq_zero_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_cpoly_lin_eq_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_zero_eq_lin_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_cpoly_zero_eq_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_eq_lin_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_cpoly_lin_eq_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_ap_zero_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_cpoly_lin_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_zero_ap_lin_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_cpoly_zero_ap_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_zero_ap_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_ap_lin_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_cpoly_lin_ap_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_ap_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_linear_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_linear_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_linear_fun.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_double_comp_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_triple_comp_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_comp_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_triple_comp_ind.con". + +(*#* +*** The polynomials form a semi-group and a monoid +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_zero_plus.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_plus_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_commutative.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_q_ap_q.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_p_plus_ap_p.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_ap_zero_plus.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_op_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_op_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_op.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_plus_associative.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_csemi_grp.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cm_proof.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cmonoid.con". + +(*#* *** The polynomials form a group +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_inv.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_inv_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_inv_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_inv_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_inv_op_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_inv_op_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_inv_op.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cg_proof.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cgroup.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cag_proof.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cabgroup.con". + +(*#* *** The polynomials form a ring +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_zero_mult_cr.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_mult_cr.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cs.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_zero_mult.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin_mult.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_op_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_op_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_op.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_dist.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cr_dist.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_assoc_mult_cr.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_assoc_mult.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_lin.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_commutative.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_dist_rht.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_assoc.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_cr_one.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_one_mult.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_one.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_mult_monoid.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cr_non_triv.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_is_CRing.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_cring.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_constant_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_constant_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_C_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_X_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_x_minus_c.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_x_minus_c_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_x_minus_c_wd.con". + +(* UNEXPORTED +End CPoly_CRing +*) + +(* UNEXPORTED +Implicit Arguments _C_ [CR]. +*) + +(* UNEXPORTED +Implicit Arguments _X_ [CR]. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_linear_fun'.con". + +(* UNEXPORTED +Implicit Arguments cpoly_linear_fun' [CR]. +*) + +(* NOTATION +Infix "[+X*]" := cpoly_linear_fun' (at level 50, left associativity). +*) + +(*#* ** Apartness, equality, and induction +%\label{section:poly-equality}% +*) + +(* UNEXPORTED +Section CPoly_CRing_ctd +*) + +(*#* +%\begin{convention}% +Let [CR] be a ring, [p] and [q] polynomials over that ring, and [c] and [d] +elements of the ring. +%\end{convention}% +*) + +alias id "CR" = "cic:/CoRN/algebra/CPolynomials/CPoly_CRing_ctd/CR.var". + +(* NOTATION +Notation RX := (cpoly_cring CR). +*) + +(* UNEXPORTED +Section helpful_section +*) + +alias id "p" = "cic:/CoRN/algebra/CPolynomials/CPoly_CRing_ctd/helpful_section/p.var". + +alias id "q" = "cic:/CoRN/algebra/CPolynomials/CPoly_CRing_ctd/helpful_section/q.var". + +alias id "c" = "cic:/CoRN/algebra/CPolynomials/CPoly_CRing_ctd/helpful_section/c.var". + +alias id "d" = "cic:/CoRN/algebra/CPolynomials/CPoly_CRing_ctd/helpful_section/d.var". + +inline procedural "cic:/CoRN/algebra/CPolynomials/linear_eq_zero_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_linear_eq_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/zero_eq_linear_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_zero_eq_linear.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/linear_eq_linear_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_linear_eq_linear.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/linear_ap_zero_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_linear_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/linear_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/zero_ap_linear_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_zero_ap_linear.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/zero_ap_linear.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/linear_ap_linear_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_linear_ap_linear.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/linear_ap_linear.con". + +(* UNEXPORTED +End helpful_section +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_induc.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Ccpoly_double_sym_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Cpoly_double_comp_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Cpoly_triple_comp_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_induc.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_sym_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/poly_double_comp_ind.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/poly_triple_comp_ind.con". + +(* UNEXPORTED +Transparent cpoly_cring. +*) + +(* UNEXPORTED +Transparent cpoly_cgroup. +*) + +(* UNEXPORTED +Transparent cpoly_csetoid. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_apply.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_apply_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_apply_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_apply_fun.con". + +(* UNEXPORTED +End CPoly_CRing_ctd +*) + +(*#* +%\begin{convention}% +[cpoly_apply_fun] is denoted infix by [!] +The first argument is left implicit, so the application of +polynomial [f] (seen as a function) to argument [x] can be written as [f!x]. +In the names of lemmas, we write [apply]. +%\end{convention}% +*) + +(* UNEXPORTED +Implicit Arguments cpoly_apply_fun [CR]. +*) + +(* NOTATION +Infix "!" := cpoly_apply_fun (at level 1, no associativity). +*) + +(*#* +** Basic properties of polynomials +%\begin{convention}% +Let [R] be a ring and write [RX] for the ring of polynomials over [R]. +%\end{convention}% +*) + +(* UNEXPORTED +Section Poly_properties +*) + +alias id "R" = "cic:/CoRN/algebra/CPolynomials/Poly_properties/R.var". + +(* NOTATION +Notation RX := (cpoly_cring R). +*) + +(*#* +*** Constant and identity +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_X_.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_C_.con". + +(* UNEXPORTED +Hint Resolve cpoly_X_ cpoly_C_: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_const_eq.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_c_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_c_one.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_c_mult.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_lin.con". + +(* UNEXPORTED +Hint Resolve cpoly_lin: algebra. +*) + +(* SUPERFLUOUS *) + +inline procedural "cic:/CoRN/algebra/CPolynomials/poly_linear.con". + +(* UNEXPORTED +Hint Resolve _c_zero: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/poly_c_apzero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_c_mult_lin.con". + +(* SUPERFLUOUS ? *) + +inline procedural "cic:/CoRN/algebra/CPolynomials/lin_mult.con". + +(* UNEXPORTED +Hint Resolve lin_mult: algebra. +*) + +(*#* *** Application of polynomials +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/poly_eq_zero.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/apply_wd.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpolyap_pres_eq.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpolyap_strext.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_csetoid_op.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_c_apply.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_x_apply.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/plus_apply.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/inv_apply.con". + +(* UNEXPORTED +Hint Resolve plus_apply inv_apply: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/minus_apply.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/_c_mult_apply.con". + +(* UNEXPORTED +Hint Resolve _c_mult_apply: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/mult_apply.con". + +(* UNEXPORTED +Hint Resolve mult_apply: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/one_apply.con". + +(* UNEXPORTED +Hint Resolve one_apply: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/nexp_apply.con". + +(* SUPERFLUOUS *) + +inline procedural "cic:/CoRN/algebra/CPolynomials/poly_inv_apply.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Sum0_cpoly_ap.con". + +inline procedural "cic:/CoRN/algebra/CPolynomials/Sum_cpoly_ap.con". + +(* UNEXPORTED +End Poly_properties +*) + +(*#* ** Induction properties of polynomials for [Prop] +*) + +(* UNEXPORTED +Section Poly_Prop_Induction +*) + +alias id "CR" = "cic:/CoRN/algebra/CPolynomials/Poly_Prop_Induction/CR.var". + +(* NOTATION +Notation Cpoly := (cpoly CR). +*) + +(* NOTATION +Notation Cpoly_zero := (cpoly_zero CR). +*) + +(* NOTATION +Notation Cpoly_linear := (cpoly_linear CR). +*) + +(* NOTATION +Notation Cpoly_cring := (cpoly_cring CR). +*) + +inline procedural "cic:/CoRN/algebra/CPolynomials/cpoly_double_ind.con". + +(* UNEXPORTED +End Poly_Prop_Induction +*) + +(* UNEXPORTED +Hint Resolve poly_linear cpoly_lin: algebra. +*) + +(* UNEXPORTED +Hint Resolve apply_wd cpoly_const_eq: algebra_c. +*) + +(* UNEXPORTED +Hint Resolve _c_apply _x_apply inv_apply plus_apply minus_apply mult_apply + nexp_apply: algebra. +*) + +(* UNEXPORTED +Hint Resolve one_apply _c_zero _c_one _c_mult: algebra. +*) + +(* UNEXPORTED +Hint Resolve poly_inv_apply: algebra. +*) + +(* UNEXPORTED +Hint Resolve _c_mult_lin: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CRings.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CRings.mma new file mode 100644 index 000000000..88764d191 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CRings.mma @@ -0,0 +1,1013 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CRings.v,v 1.8 2004/04/23 10:00:53 lcf Exp $ *) + +(*#* printing [*] %\ensuremath\times% #×# *) + +(*#* printing [^] %\ensuremath{\hat{\ }}% #^# *) + +(*#* printing {*} %\ensuremath\times% #×# *) + +(*#* printing {**} %\ensuremath\ast% #∗# *) + +(*#* printing {^} %\ensuremath{\hat{\ }}% #^# *) + +(*#* printing One %\ensuremath{\mathbf1}% #1# *) + +(*#* printing Two %\ensuremath{\mathbf2}% #2# *) + +(*#* printing Three %\ensuremath{\mathbf3}% #3# *) + +(*#* printing Four %\ensuremath{\mathbf4}% #4# *) + +(*#* printing Six %\ensuremath{\mathbf6}% #6# *) + +(*#* printing Eight %\ensuremath{\mathbf8}% #8# *) + +(*#* printing Nine %\ensuremath{\mathbf9}% #9# *) + +(*#* printing Twelve %\ensuremath{\mathbf{12}}% #12# *) + +(*#* printing Sixteen %\ensuremath{\mathbf{16}}% #16# *) + +(*#* printing Eighteen %\ensuremath{\mathbf{18}}% #18# *) + +(*#* printing TwentyFour %\ensuremath{\mathbf{24}}% #24# *) + +(*#* printing FortyEight %\ensuremath{\mathbf{48}}% #48# *) + +include "algebra/CSums.ma". + +(* UNEXPORTED +Transparent sym_eq. +*) + +(* UNEXPORTED +Transparent f_equal. +*) + +(* Begin_SpecReals *) + +(* Constructive RINGS *) + +(*#* * Rings +We actually define commutative rings with identity. +** Definition of the notion of Ring +*) + +inline procedural "cic:/CoRN/algebra/CRings/distributive.con". + +(* UNEXPORTED +Implicit Arguments distributive [S]. +*) + +inline procedural "cic:/CoRN/algebra/CRings/is_CRing.ind". + +inline procedural "cic:/CoRN/algebra/CRings/CRing.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CRings/cr_crr.con +*) + +inline procedural "cic:/CoRN/algebra/CRings/cr_plus.con". + +inline procedural "cic:/CoRN/algebra/CRings/cr_inv.con". + +inline procedural "cic:/CoRN/algebra/CRings/cr_minus.con". + +(* NOTATION +Notation One := (cr_one _). +*) + +(* End_SpecReals *) + +(* Begin_SpecReals *) + +(*#* +%\begin{nameconvention}% +In the names of lemmas, we will denote [One] with [one], +and [[*]] with [mult]. +%\end{nameconvention}% +*) + +(* UNEXPORTED +Implicit Arguments cr_mult [c]. +*) + +(* NOTATION +Infix "[*]" := cr_mult (at level 40, left associativity). +*) + +(* UNEXPORTED +Section CRing_axioms +*) + +(*#* +** Ring axioms +%\begin{convention}% Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/CRing_axioms/R.var". + +inline procedural "cic:/CoRN/algebra/CRings/CRing_is_CRing.con". + +inline procedural "cic:/CoRN/algebra/CRings/mult_assoc.con". + +inline procedural "cic:/CoRN/algebra/CRings/mult_commutes.con". + +inline procedural "cic:/CoRN/algebra/CRings/mult_mon.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CRings/dist.con". + +inline procedural "cic:/CoRN/algebra/CRings/ring_non_triv.con". + +inline procedural "cic:/CoRN/algebra/CRings/mult_wd.con". + +inline procedural "cic:/CoRN/algebra/CRings/mult_wdl.con". + +inline procedural "cic:/CoRN/algebra/CRings/mult_wdr.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End CRing_axioms +*) + +(* UNEXPORTED +Section Ring_constructions +*) + +(*#* +** Ring constructions +%\begin{convention}% +Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/Ring_constructions/R.var". + +(*#* +The multiplicative monoid of a ring is defined as follows. +*) + +inline procedural "cic:/CoRN/algebra/CRings/Build_multCMonoid.con". + +(* UNEXPORTED +End Ring_constructions +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Section Ring_unfolded +*) + +(*#* +** Ring unfolded +%\begin{convention}% Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/Ring_unfolded/R.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CRings/Ring_unfolded/mmR.con" "Ring_unfolded__". + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CRings/mult_assoc_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CRings/mult_commut_unfolded.con". + +(* UNEXPORTED +Hint Resolve mult_commut_unfolded: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/mult_one.con". + +inline procedural "cic:/CoRN/algebra/CRings/one_mult.con". + +inline procedural "cic:/CoRN/algebra/CRings/ring_dist_unfolded.con". + +(* UNEXPORTED +Hint Resolve ring_dist_unfolded: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/ring_distl_unfolded.con". + +(* UNEXPORTED +End Ring_unfolded +*) + +(* UNEXPORTED +Hint Resolve mult_assoc_unfolded: algebra. +*) + +(* UNEXPORTED +Hint Resolve ring_non_triv mult_one one_mult mult_commut_unfolded: algebra. +*) + +(* UNEXPORTED +Hint Resolve ring_dist_unfolded ring_distl_unfolded: algebra. +*) + +(* UNEXPORTED +Section Ring_basics +*) + +(*#* +** Ring basics +%\begin{convention}% Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/Ring_basics/R.var". + +inline procedural "cic:/CoRN/algebra/CRings/one_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CRings/is_zero_rht.con". + +inline procedural "cic:/CoRN/algebra/CRings/is_zero_lft.con". + +(* UNEXPORTED +Implicit Arguments is_zero_rht [S]. +*) + +(* UNEXPORTED +Implicit Arguments is_zero_lft [S]. +*) + +inline procedural "cic:/CoRN/algebra/CRings/cring_mult_zero.con". + +(* UNEXPORTED +Hint Resolve cring_mult_zero: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/x_mult_zero.con". + +inline procedural "cic:/CoRN/algebra/CRings/cring_mult_zero_op.con". + +(* UNEXPORTED +Hint Resolve cring_mult_zero_op: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/cring_inv_mult_lft.con". + +(* UNEXPORTED +Hint Resolve cring_inv_mult_lft: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/cring_inv_mult_rht.con". + +(* UNEXPORTED +Hint Resolve cring_inv_mult_rht: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/cring_mult_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CRings/cring_mult_ap_zero_op.con". + +inline procedural "cic:/CoRN/algebra/CRings/inv_mult_invol.con". + +inline procedural "cic:/CoRN/algebra/CRings/ring_dist_minus.con". + +(* UNEXPORTED +Hint Resolve ring_dist_minus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/ring_distl_minus.con". + +(* UNEXPORTED +Hint Resolve ring_distl_minus: algebra. +*) + +(* UNEXPORTED +End Ring_basics +*) + +(* UNEXPORTED +Hint Resolve cring_mult_zero cring_mult_zero_op: algebra. +*) + +(* UNEXPORTED +Hint Resolve inv_mult_invol: algebra. +*) + +(* UNEXPORTED +Hint Resolve cring_inv_mult_lft cring_inv_mult_rht: algebra. +*) + +(* UNEXPORTED +Hint Resolve ring_dist_minus: algebra. +*) + +(* UNEXPORTED +Hint Resolve ring_distl_minus: algebra. +*) + +(* Begin_SpecReals *) + +(*#* +** Ring Definitions +Some auxiliary functions and operations over a ring; +especially geared towards CReals. +*) + +(* UNEXPORTED +Section exponentiation +*) + +(*#* +*** Exponentiation +%\begin{convention}% +Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/exponentiation/R.var". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CRings/nexp.con". + +inline procedural "cic:/CoRN/algebra/CRings/nexp_well_def.con". + +inline procedural "cic:/CoRN/algebra/CRings/nexp_strong_ext.con". + +inline procedural "cic:/CoRN/algebra/CRings/nexp_op.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End exponentiation +*) + +(* End_SpecReals *) + +(* NOTATION +Notation "x [^] n" := (nexp_op _ n x) (at level 20). +*) + +(* UNEXPORTED +Implicit Arguments nexp_op [R]. +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Section nat_injection +*) + +(*#* +*** The injection of natural numbers into a ring +%\begin{convention}% Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/nat_injection/R.var". + +(*#* +The injection of Coq natural numbers into a ring is called [nring]. +Note that this need not really be an injection; when it is, the ring is said +to have characteristic [0]. +*) + +inline procedural "cic:/CoRN/algebra/CRings/nring.con". + +inline procedural "cic:/CoRN/algebra/CRings/Char0.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CRings/nring_comm_plus.con". + +inline procedural "cic:/CoRN/algebra/CRings/nring_comm_mult.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End nat_injection +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Hint Resolve nring_comm_plus nring_comm_mult: algebra. +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Implicit Arguments nring [R]. +*) + +(* End_SpecReals *) + +(* NOTATION +Notation Two := (nring 2). +*) + +(* NOTATION +Notation Three := (nring 3). +*) + +(* NOTATION +Notation Four := (nring 4). +*) + +(* NOTATION +Notation Six := (nring 6). +*) + +(* NOTATION +Notation Eight := (nring 8). +*) + +(* NOTATION +Notation Twelve := (nring 12). +*) + +(* NOTATION +Notation Sixteen := (nring 16). +*) + +(* NOTATION +Notation Nine := (nring 9). +*) + +(* NOTATION +Notation Eighteen := (nring 18). +*) + +(* NOTATION +Notation TwentyFour := (nring 24). +*) + +(* NOTATION +Notation FortyEight := (nring 48). +*) + +inline procedural "cic:/CoRN/algebra/CRings/one_plus_one.con". + +inline procedural "cic:/CoRN/algebra/CRings/x_plus_x.con". + +(* UNEXPORTED +Hint Resolve one_plus_one x_plus_x: algebra. +*) + +(*#* +In a ring of characteristic zero, [nring] is really an injection. +*) + +inline procedural "cic:/CoRN/algebra/CRings/nring_different.con". + +(* UNEXPORTED +Section int_injection +*) + +(*#* +*** The injection of integers into a ring +%\begin{convention}% +Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/int_injection/R.var". + +(*#* +The injection of Coq integers into a ring is called [zring]. Again, +this need not really be an injection. + +The first definition is now obsolete, having been replaced by a more efficient +one. It is kept to avoid having to redo all the proofs. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_zero.con". + +(* UNEXPORTED +Hint Resolve zring_old_zero: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_diff.con". + +(* UNEXPORTED +Hint Resolve zring_old_diff. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_plus_nat.con". + +(* UNEXPORTED +Hint Resolve zring_old_plus_nat: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_inv_nat.con". + +(* UNEXPORTED +Hint Resolve zring_old_inv_nat: algebra. +*) + +(* UNEXPORTED +Hint Resolve zring_old_diff: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_plus.con". + +(* UNEXPORTED +Hint Resolve zring_old_plus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_inv.con". + +(* UNEXPORTED +Hint Resolve zring_old_inv: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_minus.con". + +(* UNEXPORTED +Hint Resolve zring_old_minus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_mult.con". + +(* UNEXPORTED +Hint Resolve zring_old_mult: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_one.con". + +(* UNEXPORTED +Hint Resolve zring_old_one: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_old_inv_one.con". + +(*#************** new def of zring. ***********************) + +(*#* The [zring] function can be defined directly. This is done here. +*) + +inline procedural "cic:/CoRN/algebra/CRings/pring_aux.con". + +inline procedural "cic:/CoRN/algebra/CRings/pring.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring.con". + +inline procedural "cic:/CoRN/algebra/CRings/pring_aux_lemma.con". + +inline procedural "cic:/CoRN/algebra/CRings/double_nring.con". + +(* UNEXPORTED +Hint Resolve pring_aux_lemma double_nring: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/pring_aux_nring.con". + +(* UNEXPORTED +Hint Resolve pring_aux_nring: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/pring_convert.con". + +(* UNEXPORTED +Hint Resolve pring_convert: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_zring_old.con". + +(* UNEXPORTED +Hint Resolve zring_zring_old: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zring_zero.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_diff.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_plus_nat.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_inv_nat.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_plus.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_inv.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_minus.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_mult.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_one.con". + +inline procedural "cic:/CoRN/algebra/CRings/zring_inv_one.con". + +(* UNEXPORTED +End int_injection +*) + +(* UNEXPORTED +Implicit Arguments zring [R]. +*) + +(* UNEXPORTED +Hint Resolve pring_convert zring_zero zring_diff zring_plus_nat zring_inv_nat + zring_plus zring_inv zring_minus zring_mult zring_one zring_inv_one: + algebra. +*) + +(* UNEXPORTED +Section Ring_sums +*) + +(*#* +** Ring sums +%\begin{convention}% Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/Ring_sums/R.var". + +(*#* +*** Infinite Ring sums +*) + +(* UNEXPORTED +Section infinite_ring_sums +*) + +inline procedural "cic:/CoRN/algebra/CRings/Sum_upto.con". + +inline procedural "cic:/CoRN/algebra/CRings/sum_upto_O.con". + +inline procedural "cic:/CoRN/algebra/CRings/Sum_from_upto.con". + +(*#* +Here's an alternative def of [Sum_from_upto], with a lemma that +it's equivalent to the original. +*) + +inline procedural "cic:/CoRN/algebra/CRings/seq_from.con". + +inline procedural "cic:/CoRN/algebra/CRings/Sum_from_upto_alt.con". + +(* UNEXPORTED +End infinite_ring_sums +*) + +(* UNEXPORTED +Section ring_sums_over_lists +*) + +(*#* *** Ring Sums over Lists +*) + +inline procedural "cic:/CoRN/algebra/CRings/RList_Mem.con". + +inline procedural "cic:/CoRN/algebra/CRings/List_Sum_upto.con". + +inline procedural "cic:/CoRN/algebra/CRings/list_sum_upto_O.con". + +inline procedural "cic:/CoRN/algebra/CRings/List_Sum_from_upto.con". + +(* UNEXPORTED +End ring_sums_over_lists +*) + +(* UNEXPORTED +End Ring_sums +*) + +(*#* +** Distribution properties +%\begin{convention}% +Let [R] be a ring. +%\end{convention}% +*) + +(* UNEXPORTED +Section Dist_properties +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/Dist_properties/R.var". + +inline procedural "cic:/CoRN/algebra/CRings/dist_1b.con". + +(* UNEXPORTED +Hint Resolve dist_1b: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/dist_2a.con". + +(* UNEXPORTED +Hint Resolve dist_2a: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/dist_2b.con". + +(* UNEXPORTED +Hint Resolve dist_2b: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/mult_distr_sum0_lft.con". + +(* UNEXPORTED +Hint Resolve mult_distr_sum0_lft. +*) + +inline procedural "cic:/CoRN/algebra/CRings/mult_distr_sum_lft.con". + +(* UNEXPORTED +Hint Resolve mult_distr_sum_lft: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/mult_distr_sum_rht.con". + +inline procedural "cic:/CoRN/algebra/CRings/sumx_const.con". + +(* UNEXPORTED +End Dist_properties +*) + +(* UNEXPORTED +Hint Resolve dist_1b dist_2a dist_2b mult_distr_sum_lft mult_distr_sum_rht + sumx_const: algebra. +*) + +(*#* +** Properties of exponentiation (with the exponent in [nat]) +%\begin{convention}% +Let [R] be a ring. +%\end{convention}% +*) + +(* UNEXPORTED +Section NExp_properties +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/NExp_properties/R.var". + +inline procedural "cic:/CoRN/algebra/CRings/nexp_wd.con". + +inline procedural "cic:/CoRN/algebra/CRings/nexp_strext.con". + +inline procedural "cic:/CoRN/algebra/CRings/nexp_Sn.con". + +(* UNEXPORTED +Hint Resolve nexp_wd nexp_Sn: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/nexp_plus.con". + +(* UNEXPORTED +Hint Resolve nexp_plus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/one_nexp.con". + +(* UNEXPORTED +Hint Resolve one_nexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/mult_nexp.con". + +(* UNEXPORTED +Hint Resolve mult_nexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/nexp_mult.con". + +(* UNEXPORTED +Hint Resolve nexp_mult: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/zero_nexp.con". + +(* UNEXPORTED +Hint Resolve zero_nexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/inv_nexp_even.con". + +(* UNEXPORTED +Hint Resolve inv_nexp_even: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/inv_nexp_two.con". + +(* UNEXPORTED +Hint Resolve inv_nexp_two: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/inv_nexp_odd.con". + +(* UNEXPORTED +Hint Resolve inv_nexp_odd: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/nexp_one.con". + +(* UNEXPORTED +Hint Resolve nexp_one: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/nexp_two.con". + +(* UNEXPORTED +Hint Resolve nexp_two: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/inv_one_even_nexp.con". + +(* UNEXPORTED +Hint Resolve inv_one_even_nexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/inv_one_odd_nexp.con". + +(* UNEXPORTED +Hint Resolve inv_one_odd_nexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/square_plus.con". + +inline procedural "cic:/CoRN/algebra/CRings/square_minus.con". + +inline procedural "cic:/CoRN/algebra/CRings/nexp_funny.con". + +(* UNEXPORTED +Hint Resolve nexp_funny: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CRings/nexp_funny'.con". + +(* UNEXPORTED +Hint Resolve nexp_funny': algebra. +*) + +(* UNEXPORTED +End NExp_properties +*) + +(* UNEXPORTED +Hint Resolve nexp_wd nexp_Sn nexp_plus one_nexp mult_nexp nexp_mult zero_nexp + inv_nexp_even inv_nexp_two inv_nexp_odd nexp_one nexp_two nexp_funny + inv_one_even_nexp inv_one_odd_nexp nexp_funny' one_nexp square_plus + square_minus: algebra. +*) + +(* UNEXPORTED +Section CRing_Ops +*) + +(*#* +** Functional Operations + +Now for partial functions. + +%\begin{convention}% +Let [R] be a ring and let [F,G:(PartFunct R)] with predicates +respectively [P] and [Q]. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/CRing_Ops/R.var". + +alias id "F" = "cic:/CoRN/algebra/CRings/CRing_Ops/F.var". + +alias id "G" = "cic:/CoRN/algebra/CRings/CRing_Ops/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CRings/CRing_Ops/P.con" "CRing_Ops__". + +inline procedural "cic:/CoRN/algebra/CRings/CRing_Ops/Q.con" "CRing_Ops__". + +(* end hide *) + +(* UNEXPORTED +Section Part_Function_Mult +*) + +inline procedural "cic:/CoRN/algebra/CRings/part_function_mult_strext.con". + +inline procedural "cic:/CoRN/algebra/CRings/Fmult.con". + +(* UNEXPORTED +End Part_Function_Mult +*) + +(* UNEXPORTED +Section Part_Function_Nth_Power +*) + +alias id "n" = "cic:/CoRN/algebra/CRings/CRing_Ops/Part_Function_Nth_Power/n.var". + +inline procedural "cic:/CoRN/algebra/CRings/part_function_nth_strext.con". + +inline procedural "cic:/CoRN/algebra/CRings/Fnth.con". + +(* UNEXPORTED +End Part_Function_Nth_Power +*) + +(*#* +%\begin{convention}% Let [R':R->CProp]. +%\end{convention}% +*) + +alias id "R'" = "cic:/CoRN/algebra/CRings/CRing_Ops/R'.var". + +inline procedural "cic:/CoRN/algebra/CRings/included_FMult.con". + +inline procedural "cic:/CoRN/algebra/CRings/included_FMult'.con". + +inline procedural "cic:/CoRN/algebra/CRings/included_FMult''.con". + +alias id "n" = "cic:/CoRN/algebra/CRings/CRing_Ops/n.var". + +inline procedural "cic:/CoRN/algebra/CRings/included_FNth.con". + +inline procedural "cic:/CoRN/algebra/CRings/included_FNth'.con". + +(* UNEXPORTED +End CRing_Ops +*) + +inline procedural "cic:/CoRN/algebra/CRings/Fscalmult.con". + +(* UNEXPORTED +Implicit Arguments Fmult [R]. +*) + +(* NOTATION +Infix "{*}" := Fmult (at level 40, left associativity). +*) + +(* UNEXPORTED +Implicit Arguments Fscalmult [R]. +*) + +(* NOTATION +Infix "{**}" := Fscalmult (at level 40, left associativity). +*) + +(* UNEXPORTED +Implicit Arguments Fnth [R]. +*) + +(* NOTATION +Infix "{^}" := Fnth (at level 30, right associativity). +*) + +(* UNEXPORTED +Section ScalarMultiplication +*) + +alias id "R" = "cic:/CoRN/algebra/CRings/ScalarMultiplication/R.var". + +alias id "F" = "cic:/CoRN/algebra/CRings/ScalarMultiplication/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CRings/ScalarMultiplication/P.con" "ScalarMultiplication__". + +(* end hide *) + +alias id "R'" = "cic:/CoRN/algebra/CRings/ScalarMultiplication/R'.var". + +inline procedural "cic:/CoRN/algebra/CRings/included_FScalMult.con". + +inline procedural "cic:/CoRN/algebra/CRings/included_FScalMult'.con". + +(* UNEXPORTED +End ScalarMultiplication +*) + +(* UNEXPORTED +Hint Resolve included_FMult included_FScalMult included_FNth : included. +*) + +(* UNEXPORTED +Hint Immediate included_FMult' included_FMult'' included_FScalMult' + included_FNth' : included. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CSemiGroups.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSemiGroups.mma new file mode 100644 index 000000000..001974e55 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSemiGroups.mma @@ -0,0 +1,199 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CSemiGroups.v,v 1.8 2004/04/22 14:49:43 lcf Exp $ *) + +(*#* printing [+] %\ensuremath+% #+# *) + +(*#* printing {+} %\ensuremath+% #+# *) + +include "algebra/CSetoidInc.ma". + +(* Begin_SpecReals *) + +(*#* *Semigroups + +**Definition of the notion of semigroup +*) + +inline procedural "cic:/CoRN/algebra/CSemiGroups/is_CSemiGroup.con". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/CSemiGroup.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSemiGroups/csg_crr.con +*) + +(*#* +%\begin{nameconvention}% +In the %{\em %names%}% of lemmas, we will denote [[+]] with [plus]. +%\end{nameconvention}% +*) + +(* UNEXPORTED +Implicit Arguments csg_op [c]. +*) + +(* NOTATION +Infix "[+]" := csg_op (at level 50, left associativity). +*) + +(* End_SpecReals *) + +(*#* **Semigroup axioms +The axiomatic properties of a semi group. + +%\begin{convention}% Let [G] be a semi-group. +%\end{convention}% +*) + +(* UNEXPORTED +Section CSemiGroup_axioms +*) + +alias id "G" = "cic:/CoRN/algebra/CSemiGroups/CSemiGroup_axioms/G.var". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/CSemiGroup_is_CSemiGroup.con". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/plus_assoc.con". + +(* UNEXPORTED +End CSemiGroup_axioms +*) + +(* Begin_SpecReals *) + +(*#* **Semigroup basics + +%\begin{convention}% +Let [G] be a semi-group. +%\end{convention}% +*) + +(* UNEXPORTED +Section CSemiGroup_basics +*) + +alias id "G" = "cic:/CoRN/algebra/CSemiGroups/CSemiGroup_basics/G.var". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSemiGroups/plus_assoc_unfolded.con". + +(* UNEXPORTED +End CSemiGroup_basics +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Hint Resolve plus_assoc_unfolded: algebra. +*) + +(*#* **Functional operations +We can also define a similar addition operator, which will be denoted by [{+}], on partial functions. + +%\begin{convention}% Whenever possible, we will denote the functional construction corresponding to an algebraic operation by the same symbol enclosed in curly braces. +%\end{convention}% + +At this stage, we will always consider automorphisms; we %{\em %could%}% treat this in a more general setting, but we feel that it wouldn't really be a useful effort. + +%\begin{convention}% Let [G:CSemiGroup] and [F,F':(PartFunct G)] and denote by [P] and [Q], respectively, the predicates characterizing their domains. +%\end{convention}% +*) + +(* UNEXPORTED +Section Part_Function_Plus +*) + +alias id "G" = "cic:/CoRN/algebra/CSemiGroups/Part_Function_Plus/G.var". + +alias id "F" = "cic:/CoRN/algebra/CSemiGroups/Part_Function_Plus/F.var". + +alias id "F'" = "cic:/CoRN/algebra/CSemiGroups/Part_Function_Plus/F'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CSemiGroups/Part_Function_Plus/P.con" "Part_Function_Plus__". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/Part_Function_Plus/Q.con" "Part_Function_Plus__". + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CSemiGroups/part_function_plus_strext.con". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/Fplus.con". + +(*#* +%\begin{convention}% Let [R:G->CProp]. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/algebra/CSemiGroups/Part_Function_Plus/R.var". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/included_FPlus.con". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/included_FPlus'.con". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/included_FPlus''.con". + +(* UNEXPORTED +End Part_Function_Plus +*) + +(* UNEXPORTED +Implicit Arguments Fplus [G]. +*) + +(* NOTATION +Infix "{+}" := Fplus (at level 50, left associativity). +*) + +(* UNEXPORTED +Hint Resolve included_FPlus : included. +*) + +(* UNEXPORTED +Hint Immediate included_FPlus' included_FPlus'' : included. +*) + +(*#* **Subsemigroups +%\begin{convention}% +Let [csg] a semi-group and [P] a non-empty +predicate on the semi-group which is preserved by [[+]]. +%\end{convention}% +*) + +(* UNEXPORTED +Section SubCSemiGroups +*) + +alias id "csg" = "cic:/CoRN/algebra/CSemiGroups/SubCSemiGroups/csg.var". + +alias id "P" = "cic:/CoRN/algebra/CSemiGroups/SubCSemiGroups/P.var". + +alias id "op_pres_P" = "cic:/CoRN/algebra/CSemiGroups/SubCSemiGroups/op_pres_P.var". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/SubCSemiGroups/subcrr.con" "SubCSemiGroups__". + +inline procedural "cic:/CoRN/algebra/CSemiGroups/Build_SubCSemiGroup.con". + +(* UNEXPORTED +End SubCSemiGroups +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidFun.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidFun.mma new file mode 100644 index 000000000..89a477fde --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidFun.mma @@ -0,0 +1,621 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CSetoidFun.v,v 1.10 2004/04/23 10:00:53 lcf Exp $ *) + +include "algebra/CSetoids.ma". + +(* UNEXPORTED +Section unary_function_composition +*) + +(*#* ** Composition of Setoid functions + +Let [S1], [S2] and [S3] be setoids, [f] a +setoid function from [S1] to [S2], and [g] from [S2] +to [S3] in the following definition of composition. *) + +alias id "S1" = "cic:/CoRN/algebra/CSetoidFun/unary_function_composition/S1.var". + +alias id "S2" = "cic:/CoRN/algebra/CSetoidFun/unary_function_composition/S2.var". + +alias id "S3" = "cic:/CoRN/algebra/CSetoidFun/unary_function_composition/S3.var". + +alias id "f" = "cic:/CoRN/algebra/CSetoidFun/unary_function_composition/f.var". + +alias id "g" = "cic:/CoRN/algebra/CSetoidFun/unary_function_composition/g.var". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/compose_CSetoid_fun.con". + +(* UNEXPORTED +End unary_function_composition +*) + +(* UNEXPORTED +Section unary_and_binary_function_composition +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/compose_CSetoid_bin_un_fun.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/compose_CSetoid_bin_fun.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/compose_CSetoid_un_bin_fun.con". + +(* UNEXPORTED +End unary_and_binary_function_composition +*) + +(*#* ***Projections +*) + +(* UNEXPORTED +Section function_projection +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/proj_bin_fun.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/projected_bin_fun.con". + +(* UNEXPORTED +End function_projection +*) + +(* UNEXPORTED +Section BinProj +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoidFun/BinProj/S.var". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/binproj1.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/binproj1_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/cs_binproj1.con". + +(* UNEXPORTED +End BinProj +*) + +(*#* **Combining operations +%\begin{convention}% Let [S1], [S2] and [S3] be setoids. +%\end{convention}% +*) + +(* UNEXPORTED +Section CombiningOperations +*) + +alias id "S1" = "cic:/CoRN/algebra/CSetoidFun/CombiningOperations/S1.var". + +alias id "S2" = "cic:/CoRN/algebra/CSetoidFun/CombiningOperations/S2.var". + +alias id "S3" = "cic:/CoRN/algebra/CSetoidFun/CombiningOperations/S3.var". + +(*#* +In the following definition, we assume [f] is a setoid function from +[S1] to [S2], and [op] is an unary operation on [S2]. +Then [opOnFun] is the composition [op] after [f]. +*) + +(* UNEXPORTED +Section CombiningUnaryOperations +*) + +alias id "f" = "cic:/CoRN/algebra/CSetoidFun/CombiningOperations/CombiningUnaryOperations/f.var". + +alias id "op" = "cic:/CoRN/algebra/CSetoidFun/CombiningOperations/CombiningUnaryOperations/op.var". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/opOnFun.con". + +(* UNEXPORTED +End CombiningUnaryOperations +*) + +(* UNEXPORTED +End CombiningOperations +*) + +(*#* **Partial Functions + +In this section we define a concept of partial function for an +arbitrary setoid. Essentially, a partial function is what would be +expected---a predicate on the setoid in question and a total function +from the set of points satisfying that predicate to the setoid. There +is one important limitations to this approach: first, the record we +obtain has type [Type], meaning that we can't use, for instance, +elimination of existential quantifiers. + +Furthermore, for reasons we will explain ahead, partial functions will +not be defined via the [CSetoid_fun] record, but the whole structure +will be incorporated in a new record. + +Finally, notice that to be completely general the domains of the +functions have to be characterized by a [CProp]-valued predicate; +otherwise, the use you can make of a function will be %\emph{%##a +priori##%}% restricted at the moment it is defined. + +Before we state our definitions we need to do some work on domains. +*) + +(* UNEXPORTED +Section SubSets_of_G +*) + +(*#* ***Subsets of Setoids + +Subsets of a setoid will be identified with predicates from the +carrier set of the setoid into [CProp]. At this stage, we do not make +any assumptions about these predicates. + +We will begin by defining elementary operations on predicates, along +with their basic properties. In particular, we will work with well +defined predicates, so we will prove that these operations preserve +welldefinedness. + +%\begin{convention}% Let [S:CSetoid] and [P,Q:S->CProp]. +%\end{convention}% +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoidFun/SubSets_of_G/S.var". + +(* UNEXPORTED +Section Conjunction +*) + +alias id "P" = "cic:/CoRN/algebra/CSetoidFun/SubSets_of_G/Conjunction/P.var". + +alias id "Q" = "cic:/CoRN/algebra/CSetoidFun/SubSets_of_G/Conjunction/Q.var". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/conjP.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/prj1.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/prj2.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/conj_wd.con". + +(* UNEXPORTED +End Conjunction +*) + +(* UNEXPORTED +Section Disjunction +*) + +alias id "P" = "cic:/CoRN/algebra/CSetoidFun/SubSets_of_G/Disjunction/P.var". + +alias id "Q" = "cic:/CoRN/algebra/CSetoidFun/SubSets_of_G/Disjunction/Q.var". + +(*#* +Although at this stage we never use it, for completeness's sake we also treat disjunction (corresponding to union of subsets). +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/disj.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/inj1.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/inj2.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/disj_wd.con". + +(* UNEXPORTED +End Disjunction +*) + +(* UNEXPORTED +Section Extension +*) + +(*#* +The next definition is a bit tricky, and is useful for choosing among the elements that satisfy a predicate [P] those that also satisfy [R] in the case where [R] is only defined for elements satisfying [P]---consider [R] to be a condition on the image of an object via a function with domain [P]. We chose to call this operation [extension]. +*) + +alias id "P" = "cic:/CoRN/algebra/CSetoidFun/SubSets_of_G/Extension/P.var". + +alias id "R" = "cic:/CoRN/algebra/CSetoidFun/SubSets_of_G/Extension/R.var". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/extend.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/ext1.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/ext2_a.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/ext2.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/extension_wd.con". + +(* UNEXPORTED +End Extension +*) + +(* UNEXPORTED +End SubSets_of_G +*) + +(* NOTATION +Notation Conj := (conjP _). +*) + +(* UNEXPORTED +Implicit Arguments disj [S]. +*) + +(* UNEXPORTED +Implicit Arguments extend [S]. +*) + +(* UNEXPORTED +Implicit Arguments ext1 [S P R x]. +*) + +(* UNEXPORTED +Implicit Arguments ext2 [S P R x]. +*) + +(*#* ***Operations + +We are now ready to define the concept of partial function between arbitrary setoids. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/BinPartFunct.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoidFun/bpfpfun.con +*) + +(* NOTATION +Notation BDom := (bpfdom _ _). +*) + +(* UNEXPORTED +Implicit Arguments bpfpfun [S1 S2]. +*) + +(*#* +The next lemma states that every partial function is well defined. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/bpfwdef.con". + +(*#* Similar for automorphisms. *) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/PartFunct.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoidFun/pfpfun.con +*) + +(* NOTATION +Notation Dom := (pfdom _). +*) + +(* NOTATION +Notation Part := (pfpfun _). +*) + +(* UNEXPORTED +Implicit Arguments pfpfun [S]. +*) + +(*#* +The next lemma states that every partial function is well defined. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/pfwdef.con". + +(*#* +A few characteristics of this definition should be explained: + - The domain of the partial function is characterized by a predicate +that is required to be well defined but not strongly extensional. The +motivation for this choice comes from two facts: first, one very +important subset of real numbers is the compact interval +[[a,b]]---characterized by the predicate [ fun x : IR => a [<=] x /\ x +[<=] b], which is not strongly extensional; on the other hand, if we +can apply a function to an element [s] of a setoid [S] it seems +reasonable (and at some point we do have to do it) to apply that same +function to any element [s'] which is equal to [s] from the point of +view of the setoid equality. + - The last two conditions state that [pfpfun] is really a subsetoid +function. The reason why we do not write it that way is the +following: when applying a partial function [f] to an element [s] of +[S] we also need a proof object [H]; with this definition the object +we get is [f(s,H)], where the proof is kept separate from the object. +Using subsetoid notation, we would get $f(\langle +s,H\rangle)$#f(⟨s,H⟩)#; from this we need to apply two +projections to get either the original object or the proof, and we +need to apply an extra constructor to get $f(\langle +s,H\rangle)$#f(⟨s,H⟩)# from [s] and [H]. This amounts +to spending more resources when actually working with these objects. + - This record has type [Type], which is very unfortunate, because it +means in particular that we cannot use the well behaved set +existential quantification over partial functions; however, later on +we will manage to avoid this problem in a way that also justifies that +we don't really need to use that kind of quantification. Another +approach to this definition that completely avoid this complication +would be to make [PartFunct] a dependent type, receiving the predicate +as an argument. This does work in that it allows us to give +[PartFunct] type [Set] and do some useful stuff with it; however, we +are not able to define something as simple as an operator that gets a +function and returns its domain (because of the restrictions in the +type elimination rules). This sounds very unnatural, and soon gets us +into strange problems that yield very unlikely definitions, which is +why we chose to altogether do away with this approach. + +%\begin{convention}% All partial functions will henceforth be denoted by capital letters. +%\end{convention}% + +We now present some methods for defining partial functions. +*) + +(* UNEXPORTED +Hint Resolve CI: core. +*) + +(* UNEXPORTED +Section CSetoid_Ops +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoidFun/CSetoid_Ops/S.var". + +(*#* +To begin with, we want to be able to ``see'' each total function as a partial function. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/total_eq_part.con". + +(* UNEXPORTED +Section Part_Function_Const +*) + +(*#* +In any setoid we can also define constant functions (one for each element of the setoid) and an identity function: + +%\begin{convention}% Let [c:S]. +%\end{convention}% +*) + +alias id "c" = "cic:/CoRN/algebra/CSetoidFun/CSetoid_Ops/Part_Function_Const/c.var". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/Fconst.con". + +(* UNEXPORTED +End Part_Function_Const +*) + +(* UNEXPORTED +Section Part_Function_Id +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/Fid.con". + +(* UNEXPORTED +End Part_Function_Id +*) + +(*#* +(These happen to be always total functions, but that is more or less obvious, as we have no information on the setoid; however, we will be able to define partial functions just applying other operators to these ones.) + +If we have two setoid functions [F] and [G] we can always compose them. The domain of our new function will be the set of points [s] in the domain of [F] for which [F(s)] is in the domain of [G]#. #%\footnote{%Notice that the use of extension here is essential.%}.% The inversion in the order of the variables is done to maintain uniformity with the usual mathematical notation. + +%\begin{convention}% Let [G,F:(PartFunct S)] and denote by [Q] and [P], respectively, the predicates characterizing their domains. +%\end{convention}% +*) + +(* UNEXPORTED +Section Part_Function_Composition +*) + +alias id "G" = "cic:/CoRN/algebra/CSetoidFun/CSetoid_Ops/Part_Function_Composition/G.var". + +alias id "F" = "cic:/CoRN/algebra/CSetoidFun/CSetoid_Ops/Part_Function_Composition/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/CSetoid_Ops/Part_Function_Composition/P.con" "CSetoid_Ops__Part_Function_Composition__". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/CSetoid_Ops/Part_Function_Composition/Q.con" "CSetoid_Ops__Part_Function_Composition__". + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/CSetoid_Ops/Part_Function_Composition/R.con" "CSetoid_Ops__Part_Function_Composition__". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/part_function_comp_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/part_function_comp_dom_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/Fcomp.con". + +(* UNEXPORTED +End Part_Function_Composition +*) + +(* UNEXPORTED +End CSetoid_Ops +*) + +(*#* +%\begin{convention}% Let [F:(BinPartFunct S1 S2)] and [G:(PartFunct S2 S3)], and denote by [Q] and [P], respectively, the predicates characterizing their domains. +%\end{convention}% +*) + +(* UNEXPORTED +Section BinPart_Function_Composition +*) + +alias id "S1" = "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/S1.var". + +alias id "S2" = "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/S2.var". + +alias id "S3" = "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/S3.var". + +alias id "G" = "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/G.var". + +alias id "F" = "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/P.con" "BinPart_Function_Composition__". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/Q.con" "BinPart_Function_Composition__". + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/BinPart_Function_Composition/R.con" "BinPart_Function_Composition__". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/bin_part_function_comp_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/bin_part_function_comp_dom_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/BinFcomp.con". + +(* UNEXPORTED +End BinPart_Function_Composition +*) + +(* Different tokens for compatibility with coqdoc *) + +(* UNEXPORTED +Implicit Arguments Fconst [S]. +*) + +(* NOTATION +Notation "[-C-] x" := (Fconst x) (at level 2, right associativity). +*) + +(* NOTATION +Notation FId := (Fid _). +*) + +(* UNEXPORTED +Implicit Arguments Fcomp [S]. +*) + +(* NOTATION +Infix "[o]" := Fcomp (at level 65, no associativity). +*) + +(* UNEXPORTED +Hint Resolve pfwdef bpfwdef: algebra. +*) + +(* UNEXPORTED +Section bijections +*) + +(*#* **Bijections *) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/injective.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/injective_weak.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/surjective.con". + +(* UNEXPORTED +Implicit Arguments injective [A B]. +*) + +(* UNEXPORTED +Implicit Arguments injective_weak [A B]. +*) + +(* UNEXPORTED +Implicit Arguments surjective [A B]. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/injective_imp_injective_weak.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/bijective.con". + +(* UNEXPORTED +Implicit Arguments bijective [A B]. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/id_is_bij.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/comp_resp_bij.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/inv.con". + +(* UNEXPORTED +Implicit Arguments inv [A B]. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/invfun.con". + +(* UNEXPORTED +Implicit Arguments invfun [A B]. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/inv1.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/inv2.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/inv_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoidFun/Inv.con". + +(* UNEXPORTED +Implicit Arguments Inv [A B]. +*) + +inline procedural "cic:/CoRN/algebra/CSetoidFun/Inv_bij.con". + +(* UNEXPORTED +End bijections +*) + +(* UNEXPORTED +Implicit Arguments bijective [A B]. +*) + +(* UNEXPORTED +Implicit Arguments injective [A B]. +*) + +(* UNEXPORTED +Implicit Arguments injective_weak [A B]. +*) + +(* UNEXPORTED +Implicit Arguments surjective [A B]. +*) + +(* UNEXPORTED +Implicit Arguments inv [A B]. +*) + +(* UNEXPORTED +Implicit Arguments invfun [A B]. +*) + +(* UNEXPORTED +Implicit Arguments Inv [A B]. +*) + +(* UNEXPORTED +Implicit Arguments conj_wd [S P Q]. +*) + +(* NOTATION +Notation Prj1 := (prj1 _ _ _ _). +*) + +(* NOTATION +Notation Prj2 := (prj2 _ _ _ _). +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidInc.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidInc.mma new file mode 100644 index 000000000..c90a2d06a --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoidInc.mma @@ -0,0 +1,106 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CSetoidInc.v,v 1.3 2004/04/22 14:49:43 lcf Exp $ *) + +(*#* printing included %\ensuremath{\subseteq}% #⊆# *) + +include "algebra/CSetoidFun.ma". + +(* UNEXPORTED +Section inclusion +*) + +(*#* ** Inclusion + +Let [S] be a setoid, and [P], [Q], [R] be predicates on [S]. *) + +alias id "S" = "cic:/CoRN/algebra/CSetoidInc/inclusion/S.var". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included.con". + +(* UNEXPORTED +Section Basics +*) + +alias id "P" = "cic:/CoRN/algebra/CSetoidInc/inclusion/Basics/P.var". + +alias id "Q" = "cic:/CoRN/algebra/CSetoidInc/inclusion/Basics/Q.var". + +alias id "R" = "cic:/CoRN/algebra/CSetoidInc/inclusion/Basics/R.var". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_refl.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_trans.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_conj.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_conj'.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_conj''.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_conj_lft.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_conj_rht.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_extend.con". + +(* UNEXPORTED +End Basics +*) + +(*#* +%\begin{convention}% Let [I,R:S->CProp] and [F G:(PartFunct S)], and denote +by [P] and [Q], respectively, the domains of [F] and [G]. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/algebra/CSetoidInc/inclusion/F.var". + +alias id "G" = "cic:/CoRN/algebra/CSetoidInc/inclusion/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/algebra/CSetoidInc/inclusion/P.con" "inclusion__". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/inclusion/Q.con" "inclusion__". + +(* end hide *) + +alias id "R" = "cic:/CoRN/algebra/CSetoidInc/inclusion/R.var". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_FComp.con". + +inline procedural "cic:/CoRN/algebra/CSetoidInc/included_FComp'.con". + +(* UNEXPORTED +End inclusion +*) + +(* UNEXPORTED +Implicit Arguments included [S]. +*) + +(* UNEXPORTED +Hint Resolve included_refl included_FComp : included. +*) + +(* UNEXPORTED +Hint Immediate included_trans included_FComp' : included. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoids.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoids.mma new file mode 100644 index 000000000..7a2e9a0f0 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSetoids.mma @@ -0,0 +1,994 @@ +(**************************************************************************) +(* ___ *) +(* ||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.v,v 1.18 2002/11/25 14:43:42 lcf Exp $ *) + +(*#* printing [=] %\ensuremath{\equiv}% #≡# *) + +(*#* printing [~=] %\ensuremath{\mathrel{\not\equiv}}% #≠# *) + +(*#* printing [#] %\ensuremath{\mathrel\#}% *) + +(*#* printing ex_unq %\ensuremath{\exists^1}% #∃1# *) + +(*#* printing [o] %\ensuremath\circ% #⋅# *) + +(*#* printing [-C-] %\ensuremath\diamond% *) + +(* Begin_SpecReals *) + +(*#* *Setoids +Definition of a constructive setoid with apartness, +i.e.%\% a set with an equivalence relation and an apartness relation compatible with it. +*) + +include "algebra/CLogic.ma". + +include "tactics/Step.ma". + +inline procedural "cic:/CoRN/algebra/CSetoids/Relation.con". + +(* End_SpecReals *) + +(* UNEXPORTED +Implicit Arguments Treflexive [A]. +*) + +(* UNEXPORTED +Implicit Arguments Creflexive [A]. +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Implicit Arguments Tsymmetric [A]. +*) + +(* UNEXPORTED +Implicit Arguments Csymmetric [A]. +*) + +(* UNEXPORTED +Implicit Arguments Ttransitive [A]. +*) + +(* UNEXPORTED +Implicit Arguments Ctransitive [A]. +*) + +(* begin hide *) + +(* UNEXPORTED +Set Implicit Arguments. +*) + +(* UNEXPORTED +Unset Strict Implicit. +*) + +(* end hide *) + +(*#* **Relations necessary for Setoids +%\begin{convention}% Let [A:Type]. +%\end{convention}% + +Notice that their type depends on the main logical connective. +*) + +(* UNEXPORTED +Section Properties_of_relations +*) + +alias id "A" = "cic:/CoRN/algebra/CSetoids/Properties_of_relations/A.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/irreflexive.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/cotransitive.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/tight_apart.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/antisymmetric.con". + +(* UNEXPORTED +End Properties_of_relations +*) + +(* begin hide *) + +(* UNEXPORTED +Set Strict Implicit. +*) + +(* UNEXPORTED +Unset Implicit Arguments. +*) + +(* end hide *) + +(*#* **Definition of Setoid + +Apartness, being the main relation, needs to be [CProp]-valued. Equality, +as it is characterized by a negative statement, lives in [Prop]. *) + +inline procedural "cic:/CoRN/algebra/CSetoids/is_CSetoid.ind". + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/cs_crr.con +*) + +(* UNEXPORTED +Implicit Arguments cs_eq [c]. +*) + +(* UNEXPORTED +Implicit Arguments cs_ap [c]. +*) + +(* NOTATION +Infix "[=]" := cs_eq (at level 70, no associativity). +*) + +(* NOTATION +Infix "[#]" := cs_ap (at level 70, no associativity). +*) + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/cs_neq.con". + +(* UNEXPORTED +Implicit Arguments cs_neq [S]. +*) + +(* NOTATION +Infix "[~=]" := cs_neq (at level 70, no associativity). +*) + +(*#* +%\begin{nameconvention}% +In the names of lemmas, we refer to [ [=] ] by [eq], [ [~=] ] by +[neq], and [ [#] ] by [ap]. +%\end{nameconvention}% + +** Setoid axioms +We want concrete lemmas that state the axiomatic properties of a setoid. +%\begin{convention}% +Let [S] be a setoid. +%\end{convention}% +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Section CSetoid_axioms +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoids/CSetoid_axioms/S.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_is_CSetoid.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_irreflexive.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_symmetric.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_cotransitive.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_tight.con". + +(* UNEXPORTED +End CSetoid_axioms +*) + +(* End_SpecReals *) + +(*#* **Setoid basics%\label{section:setoid-basics}% +%\begin{convention}% Let [S] be a setoid. +%\end{convention}% +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Section CSetoid_basics +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoids/CSetoid_basics/S.var". + +(* End_SpecReals *) + +(*#* +In `there exists a unique [a:S] such that %\ldots%#...#', we now mean unique with respect to the setoid equality. We use [ex_unq] to denote unique existence. +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/ex_unq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_reflexive.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_symmetric.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_transitive.con". + +(*#* +%\begin{shortcoming}% +The lemma [eq_reflexive] above is convertible to +[eq_reflexive_unfolded] below. We need the second version too, +because the first cannot be applied when an instance of reflexivity is needed. +(``I have complained bitterly about this.'' RP) +%\end{shortcoming}% + +%\begin{nameconvention}% +If lemma [a] is just an unfolding of lemma [b], the name of [a] is the name +[b] with the suffix ``[_unfolded]''. +%\end{nameconvention}% +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_reflexive_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_symmetric_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_transitive_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_wdl.con". + +(* Begin_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_irreflexive_unfolded.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_cotransitive_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_symmetric_unfolded.con". + +(*#* +%\begin{shortcoming}% +We would like to write +[[ +Lemma eq_equiv_not_ap : forall (x y:S), x [=] y Iff ~(x [#] y). +]] +In Coq, however, this lemma cannot be easily applied. +Therefore we have to split the lemma into the following two lemmas [eq_imp_not_ap] and [not_ap_imp_eq]. +%\end{shortcoming}% +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_imp_not_ap.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/not_ap_imp_eq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/neq_imp_notnot_ap.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/notnot_ap_imp_neq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_imp_neq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/not_neq_imp_eq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/eq_imp_not_neq.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End CSetoid_basics +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Section product_csetoid +*) + +(*#* **The product of setoids *) + +inline procedural "cic:/CoRN/algebra/CSetoids/prod_ap.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/prod_eq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/prodcsetoid_is_CSetoid.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ProdCSetoid.con". + +(* UNEXPORTED +End product_csetoid +*) + +(* UNEXPORTED +Implicit Arguments ex_unq [S]. +*) + +(* UNEXPORTED +Hint Resolve eq_reflexive_unfolded: algebra_r. +*) + +(* UNEXPORTED +Hint Resolve eq_symmetric_unfolded: algebra_s. +*) + +(* UNEXPORTED +Declare Left Step eq_wdl. +*) + +(* UNEXPORTED +Declare Right Step eq_transitive_unfolded. +*) + +(* Begin_SpecReals *) + +(*#* **Relations and predicates +Here we define the notions of well-definedness and strong extensionality +on predicates and relations. + +%\begin{convention}% Let [S] be a setoid. +%\end{convention}% + +%\begin{nameconvention}% +- ``well-defined'' is abbreviated to [well_def] (or [wd]). +- ``strongly extensional'' is abbreviated to [strong_ext] (or [strext]). + +%\end{nameconvention}% +*) + +(* UNEXPORTED +Section CSetoid_relations_and_predicates +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoids/CSetoid_relations_and_predicates/S.var". + +(* End_SpecReals *) + +(*#* ***Predicates + +At this stage, we consider [CProp]- and [Prop]-valued predicates on setoids. + +%\begin{convention}% Let [P] be a predicate on (the carrier of) [S]. +%\end{convention}% +*) + +(* UNEXPORTED +Section CSetoidPredicates +*) + +alias id "P" = "cic:/CoRN/algebra/CSetoids/CSetoid_relations_and_predicates/CSetoidPredicates/P.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/pred_strong_ext.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/pred_wd.con". + +(* UNEXPORTED +End CSetoidPredicates +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_predicate.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/csp_pred.con +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/csp_wd.con". + +(*#* Similar, with [Prop] instead of [CProp]. *) + +(* UNEXPORTED +Section CSetoidPPredicates +*) + +alias id "P" = "cic:/CoRN/algebra/CSetoids/CSetoid_relations_and_predicates/CSetoidPPredicates/P.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/pred_strong_ext'.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/pred_wd'.con". + +(* UNEXPORTED +End CSetoidPPredicates +*) + +(*#* ***Definition of a setoid predicate *) + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_predicate'.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/csp'_pred.con +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/csp'_wd.con". + +(* Begin_SpecReals *) + +(*#* ***Relations +%\begin{convention}% +Let [R] be a relation on (the carrier of) [S]. +%\end{convention}% *) + +(* UNEXPORTED +Section CsetoidRelations +*) + +alias id "R" = "cic:/CoRN/algebra/CSetoids/CSetoid_relations_and_predicates/CsetoidRelations/R.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_wdr.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_wdl.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_strext.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_strext_lft.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_strext_rht.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_strext_imp_lftarg.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_strext_imp_rhtarg.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/rel_strextarg_imp_strext.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End CsetoidRelations +*) + +(*#* ***Definition of a setoid relation +The type of relations over a setoid. *) + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_relation.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/csr_rel.con +*) + +(*#* ***[CProp] Relations +%\begin{convention}% +Let [R] be a relation on (the carrier of) [S]. +%\end{convention}% +*) + +(* UNEXPORTED +Section CCsetoidRelations +*) + +alias id "R" = "cic:/CoRN/algebra/CSetoids/CSetoid_relations_and_predicates/CCsetoidRelations/R.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_wdr.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_wdl.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_strext.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_strext_lft.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_strext_rht.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_strext_imp_lftarg.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_strext_imp_rhtarg.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crel_strextarg_imp_strext.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End CCsetoidRelations +*) + +(*#* ***Definition of a [CProp] setoid relation + +The type of relations over a setoid. *) + +inline procedural "cic:/CoRN/algebra/CSetoids/CCSetoid_relation.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/Ccsr_rel.con +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/Ccsr_wdr.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Ccsr_wdl.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_wdr.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_wdl.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_wdr_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_wdl_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/ap_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/predS_well_def.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End CSetoid_relations_and_predicates +*) + +(* UNEXPORTED +Declare Left Step ap_wdl_unfolded. +*) + +(* UNEXPORTED +Declare Right Step ap_wdr_unfolded. +*) + +(* End_SpecReals *) + +(*#* **Functions between setoids +Such functions must preserve the setoid equality +and be strongly extensional w.r.t.%\% the apartness, i.e.%\% +if [f(x,y) [#] f(x1,y1)], then [x [#] x1 + y [#] y1]. +For every arity this has to be defined separately. +%\begin{convention}% +Let [S1], [S2] and [S3] be setoids. +%\end{convention}% + +First we consider unary functions. *) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Section CSetoid_functions +*) + +alias id "S1" = "cic:/CoRN/algebra/CSetoids/CSetoid_functions/S1.var". + +alias id "S2" = "cic:/CoRN/algebra/CSetoids/CSetoid_functions/S2.var". + +alias id "S3" = "cic:/CoRN/algebra/CSetoids/CSetoid_functions/S3.var". + +(* UNEXPORTED +Section unary_functions +*) + +(*#* +In the following two definitions, +[f] is a function from (the carrier of) [S1] to +(the carrier of) [S2]. *) + +alias id "f" = "cic:/CoRN/algebra/CSetoids/CSetoid_functions/unary_functions/f.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/fun_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/fun_strext.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/fun_strext_imp_wd.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End unary_functions +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_fun.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/csf_fun.con +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/csf_wd.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/Const_CSetoid_fun.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +Section binary_functions +*) + +(*#* +Now we consider binary functions. +In the following two definitions, +[f] is a function from [S1] and [S2] to [S3]. +*) + +alias id "f" = "cic:/CoRN/algebra/CSetoids/CSetoid_functions/binary_functions/f.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_fun_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_fun_strext.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_fun_strext_imp_wd.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End binary_functions +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_bin_fun.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/csbf_fun.con +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/csbf_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/csf_wd_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/csf_strext_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/csbf_wd_unfolded.con". + +(* UNEXPORTED +End CSetoid_functions +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Hint Resolve csf_wd_unfolded csbf_wd_unfolded: algebra_c. +*) + +(* UNEXPORTED +Implicit Arguments fun_wd [S1 S2]. +*) + +(* UNEXPORTED +Implicit Arguments fun_strext [S1 S2]. +*) + +(* Begin_SpecReals *) + +(*#* **The unary and binary (inner) operations on a csetoid +An operation is a function with domain(s) and co-domain equal. + +%\begin{nameconvention}% +The word ``unary operation'' is abbreviated to [un_op]; +``binary operation'' is abbreviated to [bin_op]. +%\end{nameconvention}% + +%\begin{convention}% +Let [S] be a setoid. +%\end{convention}% +*) + +(* UNEXPORTED +Section csetoid_inner_ops +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoids/csetoid_inner_ops/S.var". + +(*#* Properties of binary operations *) + +inline procedural "cic:/CoRN/algebra/CSetoids/commutes.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/associative.con". + +(*#* Well-defined unary operations on a setoid. *) + +inline procedural "cic:/CoRN/algebra/CSetoids/un_op_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/un_op_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_un_op.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Build_CSetoid_un_op.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/id_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/id_pres_eq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/id_un_op.con". + +(* begin hide *) + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/un_op_fun.con +*) + +(* end hide *) + +(* Begin_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/cs_un_op_strext.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/un_op_wd_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/un_op_strext_unfolded.con". + +(*#* Well-defined binary operations on a setoid. *) + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_strext.con". + +(* Begin_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_bin_op.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Build_CSetoid_bin_op.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/cs_bin_op_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/cs_bin_op_strext.con". + +(* Begin_SpecReals *) + +(* begin hide *) + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/bin_op_bin_fun.con +*) + +(* end hide *) + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_wd_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_strext_unfolded.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_is_wd_un_op_lft.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_is_wd_un_op_rht.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_is_strext_un_op_lft.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_is_strext_un_op_rht.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op2un_op_rht.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op2un_op_lft.con". + +(* Begin_SpecReals *) + +(* UNEXPORTED +End csetoid_inner_ops +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Implicit Arguments commutes [S]. +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +Implicit Arguments associative [S]. +*) + +(* End_SpecReals *) + +(* UNEXPORTED +Hint Resolve bin_op_wd_unfolded un_op_wd_unfolded: algebra_c. +*) + +(*#* **The binary outer operations on a csetoid +%\begin{convention}% +Let [S1] and [S2] be setoids. +%\end{convention}% +*) + +(* UNEXPORTED +Section csetoid_outer_ops +*) + +alias id "S1" = "cic:/CoRN/algebra/CSetoids/csetoid_outer_ops/S1.var". + +alias id "S2" = "cic:/CoRN/algebra/CSetoids/csetoid_outer_ops/S2.var". + +(*#* +Well-defined outer operations on a setoid. +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/outer_op_well_def.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/outer_op_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/CSetoid_outer_op.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Build_CSetoid_outer_op.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/csoo_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/csoo_strext.con". + +(* begin hide *) + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/outer_op_bin_fun.con +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CSetoids/csoo_wd_unfolded.con". + +(* UNEXPORTED +End csetoid_outer_ops +*) + +(* UNEXPORTED +Hint Resolve csoo_wd_unfolded: algebra_c. +*) + +(* Begin_SpecReals *) + +(*#* **Subsetoids +%\begin{convention}% +Let [S] be a setoid, and [P] a predicate on the carrier of [S]. +%\end{convention}% +*) + +(* UNEXPORTED +Section SubCSetoids +*) + +alias id "S" = "cic:/CoRN/algebra/CSetoids/SubCSetoids/S.var". + +alias id "P" = "cic:/CoRN/algebra/CSetoids/SubCSetoids/P.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/subcsetoid_crr.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CSetoids/scs_elem.con +*) + +(*#* Though [scs_elem] is declared as a coercion, it does not satisfy the +uniform inheritance condition and will not be inserted. However it will +also not be printed, which is handy. +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/restrict_relation.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Crestrict_relation.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/subcsetoid_eq.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/subcsetoid_ap.con". + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/subcsetoid_equiv.con". + +(* Begin_SpecReals *) + +inline procedural "cic:/CoRN/algebra/CSetoids/subcsetoid_is_CSetoid.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Build_SubCSetoid.con". + +(* End_SpecReals *) + +(*#* ***Subsetoid unary operations +%\begin{convention}% +Let [f] be a unary setoid operation on [S]. +%\end{convention}% +*) + +(* UNEXPORTED +Section SubCSetoid_unary_operations +*) + +alias id "f" = "cic:/CoRN/algebra/CSetoids/SubCSetoids/SubCSetoid_unary_operations/f.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/un_op_pres_pred.con". + +(*#* +%\begin{convention}% +Assume [pr:un_op_pres_pred]. +%\end{convention}% *) + +alias id "pr" = "cic:/CoRN/algebra/CSetoids/SubCSetoids/SubCSetoid_unary_operations/pr.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/restr_un_op.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/restr_un_op_wd.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/restr_un_op_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Build_SubCSetoid_un_op.con". + +(* UNEXPORTED +End SubCSetoid_unary_operations +*) + +(*#* ***Subsetoid binary operations +%\begin{convention}% +Let [f] be a binary setoid operation on [S]. +%\end{convention}% +*) + +(* UNEXPORTED +Section SubCSetoid_binary_operations +*) + +alias id "f" = "cic:/CoRN/algebra/CSetoids/SubCSetoids/SubCSetoid_binary_operations/f.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/bin_op_pres_pred.con". + +(*#* +%\begin{convention}% +Assume [bin_op_pres_pred]. +%\end{convention}% +*) + +alias id "pr" = "cic:/CoRN/algebra/CSetoids/SubCSetoids/SubCSetoid_binary_operations/pr.var". + +inline procedural "cic:/CoRN/algebra/CSetoids/restr_bin_op.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/restr_bin_op_well_def.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/restr_bin_op_strext.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/Build_SubCSetoid_bin_op.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/restr_f_assoc.con". + +(* UNEXPORTED +End SubCSetoid_binary_operations +*) + +(* Begin_SpecReals *) + +(* UNEXPORTED +End SubCSetoids +*) + +(* End_SpecReals *) + +(* begin hide *) + +(* UNEXPORTED +Ltac Step_final x := apply eq_transitive_unfolded with x; Algebra. +*) + +(* end hide *) + +(* UNEXPORTED +Tactic Notation "Step_final" constr(c) := Step_final c. +*) + +(*#* **Miscellaneous +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/proper_caseZ_diff_CS.con". + +(*#* +Finally, we characterize functions defined on the natural numbers also as setoid functions, similarly to what we already did for predicates. +*) + +inline procedural "cic:/CoRN/algebra/CSetoids/nat_less_n_fun.con". + +inline procedural "cic:/CoRN/algebra/CSetoids/nat_less_n_fun'.con". + +(* UNEXPORTED +Implicit Arguments nat_less_n_fun [S n]. +*) + +(* UNEXPORTED +Implicit Arguments nat_less_n_fun' [S n]. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CSums.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSums.mma new file mode 100644 index 000000000..5bb30914e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CSums.mma @@ -0,0 +1,242 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CSums.v,v 1.8 2004/04/23 10:00:54 lcf Exp $ *) + +(*#* printing Sum0 %\ensuremath{\sum_0}% #∑0# *) + +(*#* printing Sum1 %\ensuremath{\sum_1}% #∑1# *) + +(*#* printing Sum2 %\ensuremath{\sum_2}% #∑2# *) + +(*#* printing Sum %\ensuremath{\sum}% #∑# *) + +(*#* printing Sumx %\ensuremath{\sum'}% #∑'&*) + +include "algebra/CAbGroups.ma". + +(*#* * Sums + +%\begin{convention}% Let [G] be an abelian group. +%\end{convention}% +*) + +(* UNEXPORTED +Section Sums +*) + +alias id "G" = "cic:/CoRN/algebra/CSums/Sums/G.var". + +(* Sum1 and Sum use subtraction *) + +inline procedural "cic:/CoRN/algebra/CSums/Sumlist.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sumx.con". + +(*#* +It is sometimes useful to view a function defined on $\{0,\ldots,i-1\}$ +#{0, ... i-1}# as a function on the natural numbers which evaluates to +[Zero] when the input is greater than or equal to [i]. +*) + +inline procedural "cic:/CoRN/algebra/CSums/part_tot_nat_fun.con". + +inline procedural "cic:/CoRN/algebra/CSums/part_tot_nat_fun_ch1.con". + +inline procedural "cic:/CoRN/algebra/CSums/part_tot_nat_fun_ch2.con". + +(*#* [Sum0] defines the sum for [i=0..(n-1)] *) + +inline procedural "cic:/CoRN/algebra/CSums/Sum0.con". + +(*#* [Sum1] defines the sum for [i=m..(n-1)] *) + +inline procedural "cic:/CoRN/algebra/CSums/Sum1.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum.con". + +(* Sum i=m..n *) + +(*#* [Sum2] is similar to [Sum1], but does not require the summand to be +defined outside where it is being added. *) + +inline procedural "cic:/CoRN/algebra/CSums/Sum2.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_one.con". + +(* UNEXPORTED +Hint Resolve Sum_one: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sum_empty.con". + +(* UNEXPORTED +Hint Resolve Sum_empty: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sum_Sum.con". + +(* UNEXPORTED +Hint Resolve Sum_Sum: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sum_first.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_last.con". + +(* UNEXPORTED +Hint Resolve Sum_last: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sum_last'.con". + +(*#* +We add some extensionality results which will be quite useful +when working with integration. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sum0_strext.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_strext.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sumx_strext.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum0_strext'.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_strext'.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum0_wd.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_wd.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sumx_wd.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_wd'.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum2_wd.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum0_plus_Sum0.con". + +(* UNEXPORTED +Hint Resolve Sum0_plus_Sum0: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sum_plus_Sum.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sumx_plus_Sumx.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum2_plus_Sum2.con". + +inline procedural "cic:/CoRN/algebra/CSums/inv_Sum0.con". + +(* UNEXPORTED +Hint Resolve inv_Sum0: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/inv_Sum.con". + +(* UNEXPORTED +Hint Resolve inv_Sum: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/inv_Sumx.con". + +inline procedural "cic:/CoRN/algebra/CSums/inv_Sum2.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_minus_Sum.con". + +(* UNEXPORTED +Hint Resolve Sum_minus_Sum: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sumx_minus_Sumx.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum2_minus_Sum2.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_apzero.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_zero.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_term.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum0_shift.con". + +(* UNEXPORTED +Hint Resolve Sum0_shift: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CSums/Sum_shift.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sum_big_shift.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sumx_Sum0.con". + +(* UNEXPORTED +End Sums +*) + +(* UNEXPORTED +Implicit Arguments Sum [G]. +*) + +(* UNEXPORTED +Implicit Arguments Sum0 [G]. +*) + +(* UNEXPORTED +Implicit Arguments Sumx [G n]. +*) + +(* UNEXPORTED +Implicit Arguments Sum2 [G m n]. +*) + +(*#* +The next results are useful for calculating some special sums, +often referred to as ``Mengolli Sums''. +%\begin{convention}% Let [G] be an abelian group. +%\end{convention}% +*) + +(* UNEXPORTED +Section More_Sums +*) + +alias id "G" = "cic:/CoRN/algebra/CSums/More_Sums/G.var". + +inline procedural "cic:/CoRN/algebra/CSums/Mengolli_Sum.con". + +inline procedural "cic:/CoRN/algebra/CSums/Mengolli_Sum_gen.con". + +inline procedural "cic:/CoRN/algebra/CSums/str_Mengolli_Sum_gen.con". + +inline procedural "cic:/CoRN/algebra/CSums/Sumx_to_Sum.con". + +(* UNEXPORTED +End More_Sums +*) + +(* UNEXPORTED +Hint Resolve Sum_one Sum_Sum Sum_first Sum_last Sum_last' Sum_wd + Sum_plus_Sum: algebra. +*) + +(* UNEXPORTED +Hint Resolve Sum_minus_Sum inv_Sum inv_Sum0: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/CVectorSpace.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/CVectorSpace.mma new file mode 100644 index 000000000..0d983cca9 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/CVectorSpace.mma @@ -0,0 +1,128 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CVectorSpace.v,v 1.4 2004/04/23 10:00:54 lcf Exp $ *) + +(*#* printing ['] %{'}% #'# *) + +include "algebra/CFields.ma". + +(*#* +* Vector Spaces + +Obsolete but maintained. +*) + +(* begin hide *) + +(* UNEXPORTED +Set Implicit Arguments. +*) + +(* UNEXPORTED +Unset Strict Implicit. +*) + +(* end hide *) + +inline procedural "cic:/CoRN/algebra/CVectorSpace/VSpace.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/algebra/CVectorSpace/vs_vs.con +*) + +(* begin hide *) + +(* UNEXPORTED +Set Strict Implicit. +*) + +(* UNEXPORTED +Unset Implicit Arguments. +*) + +(* end hide *) + +(* UNEXPORTED +Hint Resolve vs_assoc vs_unit vs_distl vs_distr: algebra. +*) + +(* UNEXPORTED +Implicit Arguments vs_op [F v]. +*) + +(* NOTATION +Infix "[']" := vs_op (at level 30, no associativity). +*) + +(*#* +%\begin{convention}% +Let [F] be a fiels and let [V] be a vector space over [F] +%\end{convention}% +*) + +(* UNEXPORTED +Section VS_basics +*) + +alias id "F" = "cic:/CoRN/algebra/CVectorSpace/VS_basics/F.var". + +alias id "V" = "cic:/CoRN/algebra/CVectorSpace/VS_basics/V.var". + +inline procedural "cic:/CoRN/algebra/CVectorSpace/vs_op_zero.con". + +inline procedural "cic:/CoRN/algebra/CVectorSpace/zero_vs_op.con". + +(* UNEXPORTED +Hint Resolve vs_op_zero zero_vs_op: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CVectorSpace/vs_op_inv_V.con". + +inline procedural "cic:/CoRN/algebra/CVectorSpace/vs_op_inv_S.con". + +(* UNEXPORTED +Hint Resolve vs_op_inv_V vs_op_inv_S: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CVectorSpace/vs_inv_assoc.con". + +(* UNEXPORTED +Hint Resolve vs_inv_assoc: algebra. +*) + +inline procedural "cic:/CoRN/algebra/CVectorSpace/ap_zero_vs_op_l.con". + +inline procedural "cic:/CoRN/algebra/CVectorSpace/ap_zero_vs_op_r.con". + +(* note this is the same proof as mult_resp_ap_zero *) + +inline procedural "cic:/CoRN/algebra/CVectorSpace/vs_op_resp_ap_rht.con". + +inline procedural "cic:/CoRN/algebra/CVectorSpace/vs_op_resp_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/CVectorSpace/vs_op_resp_ap_lft.con". + +(* UNEXPORTED +End VS_basics +*) + +(* UNEXPORTED +Hint Resolve vs_op_zero zero_vs_op: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/Cauchy_COF.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/Cauchy_COF.mma new file mode 100644 index 000000000..2ee126f6f --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/Cauchy_COF.mma @@ -0,0 +1,242 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Cauchy_COF.v,v 1.8 2004/04/23 10:00:54 lcf Exp $ *) + +include "algebra/COrdCauchy.ma". + +include "tactics/RingReflection.ma". + +(*#* +* The Field of Cauchy Sequences + +In this chapter we will prove that whenever we start from an ordered +field [F], we can define a new ordered field of Cauchy sequences over [F]. + +%\begin{convention}% Let [F] be an ordered field. +%\end{convention}% +*) + +(* UNEXPORTED +Section Structure +*) + +alias id "F" = "cic:/CoRN/algebra/Cauchy_COF/Structure/F.var". + +(*#* +** Setoid Structure + +[R_Set] is the setoid of Cauchy sequences over [F]; given two sequences +[x,y] over [F], we say that [x] is smaller than [y] if from some point +onwards [(y n) [-] (x n)] is greater than some fixed, positive +[e]. Apartness of two sequences means that one of them is smaller +than the other, equality is the negation of the apartness. +*) + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_Set.con". + +(* UNEXPORTED +Section CSetoid_Structure +*) + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_lt.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_ap.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_eq.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_lt_cotrans.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_ap_cotrans.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_ap_symmetric.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_lt_irreflexive.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_ap_irreflexive.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_ap_eq_tight.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_CSetoid.con". + +(* UNEXPORTED +End CSetoid_Structure +*) + +(* UNEXPORTED +Section Group_Structure +*) + +(*#* +** Group Structure +The group structure is just the expected one; the lemmas which +are specifically proved are just the necessary ones to get the group axioms. +*) + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_plus.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_zero.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_plus_lft_ext.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_plus_assoc.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_zero_lft_unit.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_plus_comm.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_inv.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_inv_is_inv.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_inv_ext.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Rinv.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_CAbGroup.con". + +(* UNEXPORTED +End Group_Structure +*) + +(* UNEXPORTED +Section Ring_Structure +*) + +(*#* ** Ring Structure +Same comments as previously. +*) + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_one.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_one_ap_zero.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_dist_plus.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_dist_minus.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_one_rht_unit.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_comm.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_ap_zero'.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_lft_ext.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_rht_ext.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_strext.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Rmult.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_assoc.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_one_lft_unit.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_CRing.con". + +(* UNEXPORTED +End Ring_Structure +*) + +(* UNEXPORTED +Section Field_Structure +*) + +(*#* ** Field Structure +For the field structure, it is technically easier to first prove +that our ring is actually an integral domain. The rest then follows +quite straightforwardly. +*) + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_integral_domain.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_recip.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_recip_inverse.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_recip_strext.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_recip_inverse'.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_CField.con". + +(* UNEXPORTED +End Field_Structure +*) + +(* UNEXPORTED +Section Order +*) + +(*#* ** Order Structure +Finally, we extend the field structure with the ordering we +defined at the beginning. +*) + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_lt_strext.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Rlt.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Rlt_transitive.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Rlt_strict.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_plus_resp_lt.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_mult_resp_lt.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_COrdField.con". + +(* UNEXPORTED +End Order +*) + +(*#* +** Other Results +Auxiliary characterizations of the main relations on [R_Set]. +*) + +(* UNEXPORTED +Section Auxiliary +*) + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Rlt_alt_1.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Rlt_alt_2.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_ap_alt_1.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Eq_alt_1.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/R_ap_alt_2.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Eq_alt_2_1.con". + +inline procedural "cic:/CoRN/algebra/Cauchy_COF/Eq_alt_2_2.con". + +(* UNEXPORTED +End Auxiliary +*) + +(* UNEXPORTED +End Structure +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/Expon.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/Expon.mma new file mode 100644 index 000000000..cbdb42802 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/Expon.mma @@ -0,0 +1,286 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Expon.v,v 1.5 2004/04/23 10:00:54 lcf Exp $ *) + +(*#* printing [^^] %\ensuremath{\hat{\ }}% #^# *) + +include "algebra/COrdCauchy.ma". + +include "tactics/Transparent_algebra.ma". + +(*#* *Exponentiation +**More properties about [nexp] +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +(* UNEXPORTED +Section More_Nexp +*) + +alias id "R" = "cic:/CoRN/algebra/Expon/More_Nexp/R.var". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_resp_ap_zero.con". + +(* UNEXPORTED +Hint Resolve nexp_resp_ap_zero: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/nexp_distr_div.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_distr_div'.con". + +inline procedural "cic:/CoRN/algebra/Expon/small_nexp_resp_lt.con". + +inline procedural "cic:/CoRN/algebra/Expon/great_nexp_resp_lt.con". + +inline procedural "cic:/CoRN/algebra/Expon/small_nexp_resp_le.con". + +inline procedural "cic:/CoRN/algebra/Expon/great_nexp_resp_le.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_resp_leEq.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_resp_leEq_one.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_resp_leEq_neg_even.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_resp_leEq_neg_odd.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_distr_recip.con". + +(* UNEXPORTED +Hint Resolve nexp_distr_recip: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/nexp_even_nonneg.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_resp_le'.con". + +inline procedural "cic:/CoRN/algebra/Expon/nexp_resp_le.con". + +inline procedural "cic:/CoRN/algebra/Expon/bin_less_un.con". + +(* UNEXPORTED +End More_Nexp +*) + +(* UNEXPORTED +Hint Resolve nexp_distr_div nexp_distr_recip: algebra. +*) + +(* UNEXPORTED +Implicit Arguments nexp_resp_ap_zero [R x]. +*) + +(*#* **Definition of [zexp]: integer exponentiation +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +(* UNEXPORTED +Section Zexp_def +*) + +alias id "R" = "cic:/CoRN/algebra/Expon/Zexp_def/R.var". + +(*#* +It would be nicer to define [zexp] using [caseZdiff], but we already +have most properties now. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp.con". + +(* UNEXPORTED +End Zexp_def +*) + +(* UNEXPORTED +Implicit Arguments zexp [R]. +*) + +(* NOTATION +Notation "( x [//] Hx ) [^^] n" := (zexp x Hx n) (at level 0). +*) + +(*#* **Properties of [zexp] +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +(* UNEXPORTED +Section Zexp_properties +*) + +alias id "R" = "cic:/CoRN/algebra/Expon/Zexp_properties/R.var". + +inline procedural "cic:/CoRN/algebra/Expon/zexp_zero.con". + +(* UNEXPORTED +Hint Resolve zexp_zero: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_nexp.con". + +(* UNEXPORTED +Hint Resolve zexp_nexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_inv_nexp.con". + +(* UNEXPORTED +Hint Resolve zexp_inv_nexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_inv_nexp'.con". + +(* UNEXPORTED +Hint Resolve zexp_inv_nexp': algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_strext.con". + +inline procedural "cic:/CoRN/algebra/Expon/zexp_wd.con". + +(* UNEXPORTED +Hint Resolve zexp_wd: algebra_c. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_plus1.con". + +(* UNEXPORTED +Hint Resolve zexp_plus1: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_resp_ap_zero.con". + +(* UNEXPORTED +Hint Resolve zexp_resp_ap_zero: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_inv.con". + +(* UNEXPORTED +Hint Resolve zexp_inv: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_inv1.con". + +(* UNEXPORTED +Hint Resolve zexp_inv1: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_plus.con". + +(* UNEXPORTED +Hint Resolve zexp_plus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_minus.con". + +(* UNEXPORTED +Hint Resolve zexp_minus: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/one_zexp.con". + +(* UNEXPORTED +Hint Resolve one_zexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/mult_zexp.con". + +(* UNEXPORTED +Hint Resolve mult_zexp: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_mult.con". + +(* UNEXPORTED +Hint Resolve zexp_mult: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_two.con". + +(* UNEXPORTED +Hint Resolve zexp_two: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/inv_zexp_even.con". + +(* UNEXPORTED +Hint Resolve inv_zexp_even: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/inv_zexp_two.con". + +(* UNEXPORTED +Hint Resolve inv_zexp_two: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/inv_zexp_odd.con". + +inline procedural "cic:/CoRN/algebra/Expon/zexp_one.con". + +(* UNEXPORTED +Hint Resolve zexp_one: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_funny.con". + +(* UNEXPORTED +Hint Resolve zexp_funny: algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_funny'.con". + +(* UNEXPORTED +Hint Resolve zexp_funny': algebra. +*) + +inline procedural "cic:/CoRN/algebra/Expon/zexp_pos.con". + +(* UNEXPORTED +End Zexp_properties +*) + +(* UNEXPORTED +Hint Resolve nexp_resp_ap_zero zexp_zero zexp_nexp zexp_inv_nexp + zexp_inv_nexp' zexp_plus1 zexp_resp_ap_zero zexp_inv zexp_inv1 zexp_plus + zexp_minus one_zexp mult_zexp zexp_mult zexp_two inv_zexp_even inv_zexp_two + zexp_one zexp_funny zexp_funny': algebra. +*) + +(* UNEXPORTED +Hint Resolve zexp_wd: algebra_c. +*) + +(* UNEXPORTED +Section Root_Unique +*) + +alias id "R" = "cic:/CoRN/algebra/Expon/Root_Unique/R.var". + +inline procedural "cic:/CoRN/algebra/Expon/root_unique.con". + +inline procedural "cic:/CoRN/algebra/Expon/root_one.con". + +(* UNEXPORTED +End Root_Unique +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/algebra/ListType.mma b/helm/software/matita/contribs/CoRN-Procedural/algebra/ListType.mma new file mode 100644 index 000000000..51a20cf6e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/algebra/ListType.mma @@ -0,0 +1,243 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +(*#**********************************************************************) + +(* v * The Coq Proof Assistant / The Coq Development Team *) + +(* C# *) + +(*#* printing II %\ensuremath{\imath}% #i# *) + +(*#* printing [+I*] %\ensuremath{+\imath}% *) + +(*#* printing AbsCC %\ensuremath{|\cdot|_{\mathbb C}}% *) + +(*#* printing CCX %\ensuremath{\mathbb C[X]}% #C[X]# *) + +include "reals/NRootIR.ma". + +(*#* * Complex Numbers +** Algebraic structure +*) + +(* UNEXPORTED +Section Complex_Numbers +*) + +inline procedural "cic:/CoRN/complex/CComplex/CC_set.ind". + +inline procedural "cic:/CoRN/complex/CComplex/cc_ap.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_eq.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_is_CSetoid.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_csetoid.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_plus.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_mult.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_zero.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_one.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_i.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_inv.con". + +(* not needed anymore +Lemma cc_plus_op_proof : (bin_op_wd cc_csetoid cc_plus). +Unfold bin_op_wd. Unfold bin_fun_wd. +Intros x1 x2 y1 y2. Elim x1. Elim x2. Elim y1. Elim y2. +Simpl. Unfold cc_eq. Simpl. Intros. +Elim H. Clear H. Intros. Elim H0. Clear H0. Intros. +Split; Algebra. +Qed. + +Lemma cc_mult_op_proof : (bin_op_wd cc_csetoid cc_mult). +Unfold bin_op_wd. Unfold bin_fun_wd. +Intros x1 x2 y1 y2. Elim x1. Elim x2. Elim y1. Elim y2. +Simpl. Unfold cc_eq. Simpl. Intros. +Elim H. Clear H. Intros. Elim H0. Clear H0. Intros. +Split; Algebra. +Qed. + +Lemma cc_inv_op_proof : (un_op_wd cc_csetoid cc_inv). +Unfold un_op_wd. Unfold fun_wd. +Intros x y. Elim x. Elim y. +Simpl. Unfold cc_eq. Simpl. Intros. +Elim H. Clear H. Intros. +Split; Algebra. +Qed. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_inv_strext.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_plus_strext.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_mult_strext.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_inv_op.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_plus_op.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_mult_op.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_csg_associative.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cr_mult_associative.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_csemi_grp.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cm_proof.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cmonoid.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cg_proof.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cr_dist.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cr_non_triv.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cgroup.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cabgroup.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cr_mult_mon.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_mult_commutes.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_isCRing.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cring.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_ap_zero.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_inv_aid.con". + +(*#* +If [x [~=] Zero] or [y [~=] Zero], then [x [/] x[^]2 [+] y[^]2 [~=] Zero] or +[[--]y[/]x[^]2[+]y[^]2 [~=] Zero]. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_inv_aid2.con". + +(* +REMARK KEPT FOR SENTIMENTAL REASONS... + +This definition seems clever. Even though we *cannot* construct an +element of (NonZeros cc_cring) (a Set) by deciding which part of the +input (Re or Im) is NonZero (a Prop), we manage to construct the +actual function. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_recip.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_cfield_proof.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_Recip_proof.con". + +(* UNEXPORTED +Opaque cc_recip. +*) + +(* UNEXPORTED +Opaque cc_inv. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_cfield.con". + +inline procedural "cic:/CoRN/complex/CComplex/CC.con". + +(*#* +Maps from reals to complex and vice-versa are defined, as well as conjugate, +absolute value and the imaginary unit [I] *) + +inline procedural "cic:/CoRN/complex/CComplex/cc_set_CC.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR.con". + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj.con". + +(* old def +Definition CC_conj' : CC->CC := [z:CC_set] (CC_set_rec [_:CC_set]CC_set [Re0,Im0:IR] (Build_CC_set Re0 [--]Im0) z). +*) + +inline procedural "cic:/CoRN/complex/CComplex/AbsCC.con". + +inline procedural "cic:/CoRN/complex/CComplex/TwoCC_ap_zero.con". + +(* UNEXPORTED +End Complex_Numbers +*) + +(* begin hide *) + +(* NOTATION +Notation CCX := (cpoly_cring CC). +*) + +(* end hide *) + +inline procedural "cic:/CoRN/complex/CComplex/II.con". + +(* NOTATION +Infix "[+I*]" := cc_set_CC (at level 48, no associativity). +*) + +(*#* ** Properties of [II] *) + +(* UNEXPORTED +Section I_properties +*) + +inline procedural "cic:/CoRN/complex/CComplex/I_square.con". + +(* UNEXPORTED +Hint Resolve I_square: algebra. +*) + +inline procedural "cic:/CoRN/complex/CComplex/I_square'.con". + +inline procedural "cic:/CoRN/complex/CComplex/I_recip_lft.con". + +inline procedural "cic:/CoRN/complex/CComplex/I_recip_rht.con". + +inline procedural "cic:/CoRN/complex/CComplex/mult_I.con". + +inline procedural "cic:/CoRN/complex/CComplex/I_wd.con". + +(*#* ** Properties of [Re] and [Im] *) + +inline procedural "cic:/CoRN/complex/CComplex/calculate_norm.con". + +inline procedural "cic:/CoRN/complex/CComplex/calculate_Re.con". + +inline procedural "cic:/CoRN/complex/CComplex/calculate_Im.con". + +inline procedural "cic:/CoRN/complex/CComplex/Re_wd.con". + +inline procedural "cic:/CoRN/complex/CComplex/Im_wd.con". + +inline procedural "cic:/CoRN/complex/CComplex/Re_resp_plus.con". + +inline procedural "cic:/CoRN/complex/CComplex/Re_resp_inv.con". + +inline procedural "cic:/CoRN/complex/CComplex/Im_resp_plus.con". + +inline procedural "cic:/CoRN/complex/CComplex/Im_resp_inv.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_calculate_square.con". + +(* UNEXPORTED +End I_properties +*) + +(* UNEXPORTED +Hint Resolve I_square I_square' I_recip_lft I_recip_rht mult_I calculate_norm + cc_calculate_square: algebra. +*) + +(* UNEXPORTED +Hint Resolve I_wd Re_wd Im_wd: algebra_c. +*) + +(*#* ** Properties of conjugation *) + +(* UNEXPORTED +Section Conj_properties +*) + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj_plus.con". + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj_mult.con". + +(* UNEXPORTED +Hint Resolve CC_conj_mult: algebra. +*) + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj_strext.con". + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj_conj.con". + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj_zero.con". + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj_one.con". + +(* UNEXPORTED +Hint Resolve CC_conj_one: algebra. +*) + +inline procedural "cic:/CoRN/complex/CComplex/CC_conj_nexp.con". + +(* UNEXPORTED +End Conj_properties +*) + +(* UNEXPORTED +Hint Resolve CC_conj_plus CC_conj_mult CC_conj_nexp CC_conj_conj + CC_conj_zero: algebra. +*) + +(*#* ** Properties of the real axis *) + +(* UNEXPORTED +Section cc_IR_properties +*) + +inline procedural "cic:/CoRN/complex/CComplex/Re_cc_IR.con". + +inline procedural "cic:/CoRN/complex/CComplex/Im_cc_IR.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_wd.con". + +(* UNEXPORTED +Hint Resolve cc_IR_wd: algebra_c. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_resp_ap.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_mult.con". + +(* UNEXPORTED +Hint Resolve cc_IR_mult: algebra. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_mult_lft.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_mult_rht.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_plus.con". + +(* UNEXPORTED +Hint Resolve cc_IR_plus: algebra. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_minus.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_zero.con". + +(* UNEXPORTED +Hint Resolve cc_IR_zero: algebra. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_one.con". + +(* UNEXPORTED +Hint Resolve cc_IR_one: algebra. +*) + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_nring.con". + +inline procedural "cic:/CoRN/complex/CComplex/cc_IR_nexp.con". + +(* UNEXPORTED +End cc_IR_properties +*) + +(* UNEXPORTED +Hint Resolve Re_cc_IR Im_cc_IR: algebra. +*) + +(* UNEXPORTED +Hint Resolve cc_IR_wd: algebra_c. +*) + +(* UNEXPORTED +Hint Resolve cc_IR_mult cc_IR_nexp cc_IR_mult_lft cc_IR_mult_rht cc_IR_plus + cc_IR_minus: algebra. +*) + +(* UNEXPORTED +Hint Resolve cc_IR_nring cc_IR_zero: algebra. +*) + +(*#* ** [CC] has characteristic zero *) + +include "tactics/Transparent_algebra.ma". + +inline procedural "cic:/CoRN/complex/CComplex/char0_CC.con". + +include "tactics/Opaque_algebra.ma". + +inline procedural "cic:/CoRN/complex/CComplex/poly_apzero_CC.con". + +inline procedural "cic:/CoRN/complex/CComplex/poly_CC_extensional.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/complex/Complex_Exponential.mma b/helm/software/matita/contribs/CoRN-Procedural/complex/Complex_Exponential.mma new file mode 100644 index 000000000..b5cabd4a0 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/complex/Complex_Exponential.mma @@ -0,0 +1,102 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Complex_Exponential.v,v 1.4 2004/04/23 10:00:55 lcf Exp $ *) + +(*#* printing ExpCC %\ensuremath{\exp_{\mathbb C}}% *) + +include "complex/AbsCC.ma". + +include "transc/Exponential.ma". + +include "transc/Pi.ma". + +(*#* ** The Complex Exponential *) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC.con". + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_wd.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_equation_aid_1.con". + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_equation_aid_2.con". + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_equation_aid_3.con". + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_equation_aid_4.con". + +(* end hide *) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_plus.con". + +(* UNEXPORTED +Hint Resolve ExpCC_plus: algebra. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_Zero.con". + +(* UNEXPORTED +Hint Resolve ExpCC_Zero: algebra. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_inv_aid.con". + +(* UNEXPORTED +Hint Resolve ExpCC_inv_aid: algebra. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_ap_zero.con". + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_inv.con". + +(* UNEXPORTED +Hint Resolve ExpCC_inv: algebra. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_pow.con". + +(* UNEXPORTED +Hint Resolve ExpCC_pow: algebra. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/AbsCC_ExpCC.con". + +(* UNEXPORTED +Hint Resolve AbsCC_ExpCC: algebra. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_Periodic.con". + +(* UNEXPORTED +Hint Resolve ExpCC_Periodic: algebra. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/ExpCC_Exp.con". + +(* UNEXPORTED +Hint Resolve ExpCC_Exp: algebra. +*) + +(* UNEXPORTED +Opaque Sin Cos Exp. +*) + +inline procedural "cic:/CoRN/complex/Complex_Exponential/Euler.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/complex/NRootCC.mma b/helm/software/matita/contribs/CoRN-Procedural/complex/NRootCC.mma new file mode 100644 index 000000000..57f1f1a91 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/complex/NRootCC.mma @@ -0,0 +1,574 @@ +(**************************************************************************) +(* ___ *) +(* ||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: NRootCC.v,v 1.9 2004/04/23 10:00:55 lcf Exp $ *) + +(*#* printing sqrt_Half %\ensuremath{\sqrt{\frac12}}% *) + +(*#* printing sqrt_I %\ensuremath{\sqrt{\imath}}% *) + +(*#* printing nroot_I %\ensuremath{\sqrt[n]{\imath}}% *) + +(*#* printing nroot_minus_I %\ensuremath{\sqrt[n]{-\imath}}% *) + +include "complex/CComplex.ma". + +(*#* * Roots of Complex Numbers + +Properties of non-zero complex numbers +*) + +(* UNEXPORTED +Section CC_ap_zero +*) + +inline procedural "cic:/CoRN/complex/NRootCC/cc_ap_zero.con". + +inline procedural "cic:/CoRN/complex/NRootCC/C_cc_ap_zero.con". + +(* UNEXPORTED +End CC_ap_zero +*) + +(*#* Weird lemma. *) + +(* UNEXPORTED +Section Imag_to_Real +*) + +inline procedural "cic:/CoRN/complex/NRootCC/imag_to_real.con". + +(* UNEXPORTED +End Imag_to_Real +*) + +(*#* ** Roots of the imaginary unit *) + +(* UNEXPORTED +Section NRootI +*) + +inline procedural "cic:/CoRN/complex/NRootCC/sqrt_Half.con". + +inline procedural "cic:/CoRN/complex/NRootCC/sqrt_I.con". + +inline procedural "cic:/CoRN/complex/NRootCC/sqrt_I_nexp.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nroot_I_nexp_aux.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nroot_I.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nroot_I_nexp.con". + +(* UNEXPORTED +Hint Resolve nroot_I_nexp: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nroot_minus_I.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nroot_minus_I_nexp.con". + +(* UNEXPORTED +End NRootI +*) + +(*#* ** Roots of complex numbers *) + +(* UNEXPORTED +Section NRootCC_1 +*) + +(*#* We define the nth root of a complex number with a non zero imaginary part. +*) + +(* UNEXPORTED +Section NRootCC_1_ap_real +*) + +(*#* +%\begin{convention}% Let [a,b : IR] and [b_ : (b [#] Zero)]. +Define [c2 := a[^]2[+]b[^]2], [c := sqrt c2], [a'2 := (c[+]a) [*]Half], +[a' := sqrt a'2], [b'2 := (c[-]a) [*]Half] and [b' := sqrt b'2]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/a.var". + +alias id "b" = "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/b.var". + +alias id "b_" = "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/b_.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/c2.con" "NRootCC_1__NRootCC_1_ap_real__". + +(* end hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_c2pos.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/c.con" "NRootCC_1__NRootCC_1_ap_real__". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/a'2.con" "NRootCC_1__NRootCC_1_ap_real__". + +(* end hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a'2pos.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/a'.con" "NRootCC_1__NRootCC_1_ap_real__". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/b'2.con" "NRootCC_1__NRootCC_1_ap_real__". + +(* end hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_b'2pos.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_real/b'.con" "NRootCC_1__NRootCC_1_ap_real__". + +(* end hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a3.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a4.con". + +(* UNEXPORTED +Hint Resolve nrCC1_a4: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a5.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a6.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a6'.con". + +(* UNEXPORTED +Hint Resolve nrCC1_a5: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a7_upper.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC1_a7_lower.con". + +(* UNEXPORTED +Hint Resolve nrCC1_a3 nrCC1_a7_upper nrCC1_a7_lower: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_1_upper.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_1_lower.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_1_ap_real.con". + +(* UNEXPORTED +End NRootCC_1_ap_real +*) + +(*#* We now define the nth root of a complex number with a non zero real part. +*) + +(* UNEXPORTED +Section NRootCC_1_ap_imag +*) + +(*#* +%\begin{convention}% Let [a,b : IR] and [a_ : (a [#] Zero)] and define +[c' := (a[+I*]b) [*][--]II := a'[+I*]b']. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_imag/a.var". + +alias id "b" = "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_imag/b.var". + +alias id "a_" = "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_imag/a_.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_imag/c'.con" "NRootCC_1__NRootCC_1_ap_imag__". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_imag/a'.con" "NRootCC_1__NRootCC_1_ap_imag__". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_1/NRootCC_1_ap_imag/b'.con" "NRootCC_1__NRootCC_1_ap_imag__". + +(* end hide *) + +(* UNEXPORTED +Hint Resolve sqrt_I_nexp: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_1_ap_imag.con". + +(* UNEXPORTED +End NRootCC_1_ap_imag +*) + +(*#* We now define the roots of arbitrary non zero complex numbers. *) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_1.con". + +(* UNEXPORTED +End NRootCC_1 +*) + +(* UNEXPORTED +Section NRootCC_2 +*) + +(*#* +%\begin{convention}% Let [n : nat] and [c,z : CC] and [c_:(c [#] Zero)]. +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/complex/NRootCC/NRootCC_2/n.var". + +alias id "c" = "cic:/CoRN/complex/NRootCC/NRootCC_2/c.var". + +alias id "z" = "cic:/CoRN/complex/NRootCC/NRootCC_2/z.var". + +alias id "c_" = "cic:/CoRN/complex/NRootCC/NRootCC_2/c_.var". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_2'.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_2.con". + +(* UNEXPORTED +End NRootCC_2 +*) + +(* UNEXPORTED +Section NRootCC_3 +*) + +inline procedural "cic:/CoRN/complex/NRootCC/Im_poly.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a1.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a2.con". + +(*#* +%\begin{convention}% Let [a,b : IR], [b_ : (b [#] Zero)] and [n : nat]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/complex/NRootCC/NRootCC_3/a.var". + +alias id "b" = "cic:/CoRN/complex/NRootCC/NRootCC_3/b.var". + +alias id "b_" = "cic:/CoRN/complex/NRootCC/NRootCC_3/b_.var". + +alias id "n" = "cic:/CoRN/complex/NRootCC/NRootCC_3/n.var". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_poly''.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a3.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a4.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a5.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a6.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_poly'.con". + +(* UNEXPORTED +Hint Resolve nrCC3_a3: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a7.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a8.con". + +(* UNEXPORTED +Hint Resolve nth_coeff_p_mult_c_: algebra. +*) + +(* UNEXPORTED +Hint Resolve nrCC3_a6: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC3_a9.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_3_poly.con". + +(* UNEXPORTED +Hint Resolve nrCC3_a1 nrCC3_a7: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_3_.con". + +(* UNEXPORTED +Hint Resolve nrootCC_3_: algebra. +*) + +(* UNEXPORTED +Hint Resolve calculate_Im: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_3.con". + +(* UNEXPORTED +Hint Resolve nrCC3_a2: algebra. +*) + +(* UNEXPORTED +Hint Resolve nrCC3_a9: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_3_degree.con". + +(* UNEXPORTED +End NRootCC_3 +*) + +(* UNEXPORTED +Section NRootCC_3' +*) + +(*#* +%\begin{convention}% Let [c:IR], [n:nat] and [n_:(lt (0) n)]. +%\end{convention}% +*) + +alias id "c" = "cic:/CoRN/complex/NRootCC/NRootCC_3'/c.var". + +alias id "n" = "cic:/CoRN/complex/NRootCC/NRootCC_3'/n.var". + +alias id "n_" = "cic:/CoRN/complex/NRootCC/NRootCC_3'/n_.var". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_3'_poly.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_3'.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_3'_degree.con". + +(* UNEXPORTED +End NRootCC_3' +*) + +(* UNEXPORTED +Section NRootCC_4 +*) + +(* UNEXPORTED +Section NRootCC_4_ap_real +*) + +(*#* +%\begin{convention}% Let [a,b : IR], [b_ : (b [#] Zero)], [n : nat] and +[n_:(odd n)]; define [c := a[+I*]b]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/a.var". + +alias id "b" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/b.var". + +alias id "b_" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/b_.var". + +alias id "n" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/n.var". + +alias id "n_" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/n_.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/c.con" "NRootCC_4__NRootCC_4_ap_real__". + +(* end hide *) + +(* UNEXPORTED +Section NRootCC_4_solutions +*) + +(* UNEXPORTED +Hint Resolve nrootCC_3: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a1.con". + +(*#* +%\begin{convention}% Let [r2',c2 : IR] and [r2'_ : (r2' [#] Zero)]. +%\end{convention}% +*) + +alias id "r2'" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_solutions/r2'.var". + +alias id "c2" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_solutions/c2.var". + +alias id "r2'_" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_solutions/r2'_.var". + +(* UNEXPORTED +Hint Resolve nrootCC_3': algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a1'.con". + +(* UNEXPORTED +End NRootCC_4_solutions +*) + +(* UNEXPORTED +Section NRootCC_4_equations +*) + +(*#* +%\begin{convention}% Let [r,y2 : IR] be such that +[(r[+I*]One) [^]n[*] (CC_conj c) [-] (r[+I*][--]One) [^]n[*]c [=] Zero] +and [(y2[*] (r[^] (2) [+]One)) [^]n [=] a[^] (2) [+]b[^] (2)]. +%\end{convention}% +*) + +alias id "r" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_equations/r.var". + +alias id "r_property" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_equations/r_property.var". + +alias id "y2" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_equations/y2.var". + +alias id "y2_property" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_equations/y2_property.var". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a2.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a3.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a4.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_y.con". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_equations/y.con" "NRootCC_4__NRootCC_4_ap_real__NRootCC_4_equations__". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_x.con". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_equations/x.con" "NRootCC_4__NRootCC_4_ap_real__NRootCC_4_equations__". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a5.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a6.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_z.con". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_real/NRootCC_4_equations/z.con" "NRootCC_4__NRootCC_4_ap_real__NRootCC_4_equations__". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a7.con". + +(* UNEXPORTED +Hint Resolve nrCC4_a6: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a8.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a9.con". + +(* UNEXPORTED +End NRootCC_4_equations +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC4_a10.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_4_ap_real.con". + +(* UNEXPORTED +End NRootCC_4_ap_real +*) + +(* UNEXPORTED +Section NRootCC_4_ap_imag +*) + +(*#* +%\begin{convention}% Let [a,b : IR] and [n : nat] with [a [#] Zero] +and [(odd n)]; define [c' := (a[+I*]b) [*]II := a'[+I*]b']. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/a.var". + +alias id "b" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/b.var". + +alias id "a_" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/a_.var". + +alias id "n" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/n.var". + +alias id "n_" = "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/n_.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/c'.con" "NRootCC_4__NRootCC_4_ap_imag__". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/a'.con" "NRootCC_4__NRootCC_4_ap_imag__". + +inline procedural "cic:/CoRN/complex/NRootCC/NRootCC_4/NRootCC_4_ap_imag/b'.con" "NRootCC_4__NRootCC_4_ap_imag__". + +(* end hide *) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_4_ap_real'.con". + +(* UNEXPORTED +Hint Resolve nroot_minus_I_nexp: algebra. +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_4_ap_imag.con". + +(* UNEXPORTED +End NRootCC_4_ap_imag +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_4.con". + +(* UNEXPORTED +End NRootCC_4 +*) + +(*#* Finally, the general definition of nth root. *) + +(* UNEXPORTED +Section NRootCC_5 +*) + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC_5a2.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC_5a3.con". + +(* UNEXPORTED +Hint Resolve nrCC_5a3: algebra. +*) + +(*#* +%\begin{convention}% Let [c : CC] with [c [#] Zero]. +%\end{convention}% +*) + +alias id "c" = "cic:/CoRN/complex/NRootCC/NRootCC_5/c.var". + +alias id "c_" = "cic:/CoRN/complex/NRootCC/NRootCC_5/c_.var". + +inline procedural "cic:/CoRN/complex/NRootCC/nrCC_5a4.con". + +inline procedural "cic:/CoRN/complex/NRootCC/nrootCC_5.con". + +(* UNEXPORTED +End NRootCC_5 +*) + +(*#* Final definition *) + +inline procedural "cic:/CoRN/complex/NRootCC/CnrootCC.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/depends b/helm/software/matita/contribs/CoRN-Procedural/depends new file mode 100644 index 000000000..eea15ae05 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/depends @@ -0,0 +1,315 @@ +model/rings/Zring.mma CoRN.ma algebra/CRings.ma model/abgroups/Zabgroup.ma +algebra/Cauchy_COF.ma algebra/Cauchy_COF.mma +reals/RealFuncts.ma reals/RealFuncts.mma +tactics/Step.ma tactics/Step.mma +algebra/CSemiGroups.ma algebra/CSemiGroups.mma +reals/OddPolyRootIR.mma CoRN.ma reals/IVT.ma +ftc/Composition.mma CoRN.ma ftc/MoreFunctions.ma +tactics/FieldReflection.ma tactics/FieldReflection.mma +algebra/Expon.mma CoRN.ma algebra/COrdCauchy.ma tactics/Transparent_algebra.ma +ftc/TaylorLemma.mma CoRN.ma ftc/Rolle.ma +model/non_examples/N_no_group.mma CoRN.ma algebra/CGroups.ma model/monoids/Nmonoid.ma +algebra/CVectorSpace.mma CoRN.ma algebra/CFields.ma +reals/CReals.ma reals/CReals.mma +CoRN.ma preamble.ma +devel/loeb/per/lst2fun.ma devel/loeb/per/lst2fun.mma +algebra/CSemiGroups.mma CoRN.ma algebra/CSetoidInc.ma +model/setoids/Nsetoid.mma CoRN.ma algebra/CSetoidFun.ma model/structures/Nsec.ma +ftc/Partitions.ma ftc/Partitions.mma +metrics/IR_CPMSpace.mma CoRN.ma metrics/ContFunctions.ma +model/abgroups/QSposabgroup.mma CoRN.ma algebra/CAbGroups.ma model/groups/QSposgroup.ma +model/structures/Npossec.ma model/structures/Npossec.mma +model/structures/Qsec.ma model/structures/Qsec.mma +fta/CC_Props.ma fta/CC_Props.mma +algebra/CPoly_Degree.ma algebra/CPoly_Degree.mma +ftc/MoreIntegrals.mma CoRN.ma ftc/Integral.ma ftc/MoreFunctions.ma +algebra/CRings.ma algebra/CRings.mma +transc/Pi.mma CoRN.ma transc/SinCos.ma +algebra/CPolynomials.mma CoRN.ma tactics/RingReflection.ma +ftc/Rolle.ma ftc/Rolle.mma +reals/CSumsReals.ma reals/CSumsReals.mma +ftc/NthDerivative.mma CoRN.ma ftc/Differentiability.ma +ftc/FunctSums.mma CoRN.ma ftc/PartFunEquality.ma reals/CSumsReals.ma +ftc/RefSeparated.ma ftc/RefSeparated.mma +ftc/FTC.ma ftc/FTC.mma +model/monoids/Nposmonoid.mma CoRN.ma algebra/CMonoids.ma model/semigroups/Npossemigroup.ma +ftc/IntervalFunct.mma CoRN.ma ftc/PartFunEquality.ma +algebra/ListType.ma algebra/ListType.mma +reals/RealLists.mma CoRN.ma reals/CReals1.ma +model/ordfields/Qordfield.ma model/ordfields/Qordfield.mma +metrics/ContFunctions.ma metrics/ContFunctions.mma +algebra/Cauchy_COF.mma CoRN.ma algebra/COrdCauchy.ma tactics/RingReflection.ma +transc/Trigonometric.ma transc/Trigonometric.mma +reals/CMetricFields.ma reals/CMetricFields.mma +complex/NRootCC.ma complex/NRootCC.mma +ftc/RefLemma.mma CoRN.ma ftc/RefSepRef.ma ftc/RefSeparated.ma ftc/RefSeparating.ma +model/monoids/Nposmonoid.ma model/monoids/Nposmonoid.mma +tactics/DiffTactics2.ma tactics/DiffTactics2.mma +model/structures/Npossec.mma CoRN.ma model/structures/Nsec.ma +ftc/PartInterval.mma CoRN.ma ftc/IntervalFunct.ma +transc/Pi.ma transc/Pi.mma +metrics/IR_CPMSpace.ma metrics/IR_CPMSpace.mma +model/fields/Qfield.ma model/fields/Qfield.mma +reals/Q_in_CReals.mma CoRN.ma model/monoids/Nmonoid.ma model/reals/Cauchy_IR.ma model/rings/Zring.ma +algebra/CPoly_NthCoeff.mma CoRN.ma algebra/CPolynomials.ma +algebra/CPoly_ApZero.ma algebra/CPoly_ApZero.mma +metrics/CMetricSpaces.ma metrics/CMetricSpaces.mma +model/semigroups/Zsemigroup.ma model/semigroups/Zsemigroup.mma +model/semigroups/Npossemigroup.ma model/semigroups/Npossemigroup.mma +model/monoids/Qmonoid.mma CoRN.ma algebra/CMonoids.ma model/semigroups/Qsemigroup.ma +algebra/CVectorSpace.ma algebra/CVectorSpace.mma +tactics/FieldReflection.mma CoRN.ma algebra/CFields.ma tactics/AlgReflection.ma tactics/Opaque_algebra.ma +reals/Bridges_iso.ma reals/Bridges_iso.mma +ftc/StrongIVT.ma ftc/StrongIVT.mma +tactics/AlgReflection.mma CoRN.ma algebra/CLogic.ma +algebra/CSetoids.mma CoRN.ma algebra/CLogic.ma tactics/Step.ma +reals/Bridges_LUB.ma reals/Bridges_LUB.mma +fta/FTA.ma fta/FTA.mma +ftc/MoreFunctions.ma ftc/MoreFunctions.mma +algebra/CLogic.ma algebra/CLogic.mma +model/abgroups/Qabgroup.ma model/abgroups/Qabgroup.mma +ftc/RefSepRef.ma ftc/RefSepRef.mma +ftc/FunctSeries.mma CoRN.ma ftc/FunctSequence.ma reals/Series.ma +ftc/Differentiability.mma CoRN.ma ftc/DerivativeOps.ma ftc/PartInterval.ma +reals/iso_CReals.ma reals/iso_CReals.mma +model/semigroups/QSpossemigroup.ma model/semigroups/QSpossemigroup.mma +ftc/MoreFunctions.mma CoRN.ma ftc/MoreIntervals.ma +model/ordfields/Qordfield.mma CoRN.ma algebra/COrdFields.ma model/fields/Qfield.ma +metrics/CPMSTheory.ma metrics/CPMSTheory.mma +ftc/FTC.mma CoRN.ma ftc/CalculusTheorems.ma ftc/MoreIntegrals.ma +model/non_examples/Npos_no_monoid.ma model/non_examples/Npos_no_monoid.mma +ftc/Rolle.mma CoRN.ma ftc/MoreFunctions.ma tactics/DiffTactics2.ma +reals/Cauchy_CReals.ma reals/Cauchy_CReals.mma +ftc/IntervalFunct.ma ftc/IntervalFunct.mma +model/semigroups/Qpossemigroup.ma model/semigroups/Qpossemigroup.mma +algebra/CSetoidInc.mma CoRN.ma algebra/CSetoidFun.ma +algebra/CSetoids.ma algebra/CSetoids.mma +model/monoids/Qposmonoid.mma CoRN.ma algebra/CMonoids.ma model/semigroups/Qpossemigroup.ma +algebra/CSetoidFun.mma CoRN.ma algebra/CSetoids.ma +transc/TaylorSeries.ma transc/TaylorSeries.mma +model/semigroups/Npossemigroup.mma CoRN.ma algebra/CSemiGroups.ma model/semigroups/Nsemigroup.ma model/setoids/Npossetoid.ma +algebra/CAbGroups.ma algebra/CAbGroups.mma +fta/KeyLemma.mma CoRN.ma reals/NRootIR.ma +algebra/CPoly_ApZero.mma CoRN.ma algebra/COrdFields2.ma algebra/CPoly_Degree.ma tactics/Opaque_algebra.ma tactics/Transparent_algebra.ma +complex/Complex_Exponential.mma CoRN.ma complex/AbsCC.ma transc/Exponential.ma transc/Pi.ma +model/groups/Qposgroup.ma model/groups/Qposgroup.mma +reals/CReals1.mma CoRN.ma algebra/CPoly_ApZero.ma algebra/Expon.ma reals/Max_AbsIR.ma +algebra/COrdFields.ma algebra/COrdFields.mma +model/monoids/QSposmonoid.ma model/monoids/QSposmonoid.mma +ftc/Integral.mma CoRN.ma ftc/RefLemma.ma +ftc/MoreIntervals.ma ftc/MoreIntervals.mma +tactics/Transparent_algebra.ma tactics/Transparent_algebra.mma +model/setoids/Nsetoid.ma model/setoids/Nsetoid.mma +algebra/CLogic.mma CoRN.ma algebra/Basics.ma +model/semigroups/Qpossemigroup.mma CoRN.ma algebra/CSemiGroups.ma model/setoids/Qpossetoid.ma +complex/AbsCC.mma CoRN.ma complex/CComplex.ma +tactics/Opaque_algebra.ma tactics/Opaque_algebra.mma +reals/CPoly_Contin.mma CoRN.ma reals/RealFuncts.ma +reals/IVT.ma reals/IVT.mma +tactics/Transparent_algebra.mma CoRN.ma +reals/CauchySeq.ma reals/CauchySeq.mma +complex/CComplex.mma CoRN.ma reals/NRootIR.ma tactics/Opaque_algebra.ma tactics/Transparent_algebra.ma +transc/Trigonometric.mma CoRN.ma transc/TaylorSeries.ma +reals/RealLists.ma reals/RealLists.mma +ftc/CalculusTheorems.ma ftc/CalculusTheorems.mma +ftc/Differentiability.ma ftc/Differentiability.mma +model/groups/QSposgroup.mma CoRN.ma algebra/CGroups.ma model/monoids/QSposmonoid.ma +devel/loeb/per/lst2fun.mma CoRN.ma algebra/CSetoids.ma +transc/TrigMon.ma transc/TrigMon.mma +ftc/StrongIVT.mma CoRN.ma ftc/CalculusTheorems.ma ftc/WeakIVT.ma +tactics/DiffTactics3.mma CoRN.ma ftc/Composition.ma ftc/MoreFunSeries.ma tactics/DiffTactics2.ma +model/setoids/Zsetoid.ma model/setoids/Zsetoid.mma +metrics/CPseudoMSpaces.ma metrics/CPseudoMSpaces.mma +model/groups/Qgroup.ma model/groups/Qgroup.mma +fta/CPoly_Shift.ma fta/CPoly_Shift.mma +algebra/COrdAbs.mma CoRN.ma algebra/COrdFields2.ma +ftc/RefSeparated.mma CoRN.ma ftc/COrdLemmas.ma ftc/Partitions.ma +ftc/NthDerivative.ma ftc/NthDerivative.mma +ftc/Taylor.ma ftc/Taylor.mma +model/setoids/Qsetoid.ma model/setoids/Qsetoid.mma +metrics/Prod_Sub.mma CoRN.ma metrics/IR_CPMSpace.ma +metrics/CPseudoMSpaces.mma CoRN.ma reals/Intervals.ma +algebra/CSums.ma algebra/CSums.mma +reals/CMetricFields.mma CoRN.ma reals/CReals1.ma +tactics/DiffTactics1.ma tactics/DiffTactics1.mma +reals/Bridges_iso.mma CoRN.ma reals/Bridges_LUB.ma +fta/CPoly_Shift.mma CoRN.ma complex/CComplex.ma +model/rings/Zring.ma model/rings/Zring.mma +ftc/Derivative.ma ftc/Derivative.mma +complex/AbsCC.ma complex/AbsCC.mma +ftc/MoreIntervals.mma CoRN.ma ftc/NthDerivative.ma +transc/InvTrigonom.mma CoRN.ma ftc/StrongIVT.ma transc/RealPowers.ma transc/TrigMon.ma +ftc/CalculusTheorems.mma CoRN.ma ftc/Rolle.ma tactics/DiffTactics3.ma +algebra/CPoly_Degree.mma CoRN.ma algebra/CFields.ma algebra/CPoly_NthCoeff.ma +model/groups/Zgroup.ma model/groups/Zgroup.mma +transc/SinCos.ma transc/SinCos.mma +tactics/Opaque_algebra.mma CoRN.ma +reals/iso_CReals.mma CoRN.ma reals/Q_dense.ma reals/R_morphism.ma +algebra/COrdCauchy.ma algebra/COrdCauchy.mma +model/rings/Qring.ma model/rings/Qring.mma +reals/Max_AbsIR.mma CoRN.ma reals/CauchySeq.ma +model/setoids/Qsetoid.mma CoRN.ma algebra/CSetoidFun.ma model/structures/Qsec.ma +algebra/COrdCauchy.mma CoRN.ma algebra/COrdAbs.ma +model/monoids/Zmonoid.mma CoRN.ma algebra/CMonoids.ma model/semigroups/Zsemigroup.ma +ftc/COrdLemmas.mma CoRN.ma algebra/COrdCauchy.ma +ftc/PartFunEquality.mma CoRN.ma reals/Intervals.ma tactics/DiffTactics1.ma +ftc/DerivativeOps.ma ftc/DerivativeOps.mma +algebra/ListType.mma CoRN.ma +metrics/Equiv.ma metrics/Equiv.mma +ftc/RefLemma.ma ftc/RefLemma.mma +model/reals/Cauchy_IR.ma model/reals/Cauchy_IR.mma +fta/CPoly_Contin1.ma fta/CPoly_Contin1.mma +fta/KeyLemma.ma fta/KeyLemma.mma +model/fields/Qfield.mma CoRN.ma algebra/CFields.ma model/rings/Qring.ma +ftc/Continuity.mma CoRN.ma ftc/FunctSums.ma reals/NRootIR.ma +model/abgroups/Zabgroup.ma model/abgroups/Zabgroup.mma +algebra/COrdFields2.mma CoRN.ma algebra/COrdFields.ma tactics/Opaque_algebra.ma tactics/Transparent_algebra.ma +reals/Bridges_LUB.mma CoRN.ma algebra/Expon.ma reals/iso_CReals.ma +ftc/FunctSeries.ma ftc/FunctSeries.mma +preamble.ma coq.ma +algebra/CAbMonoids.mma CoRN.ma algebra/CMonoids.ma +ftc/FunctSequence.ma ftc/FunctSequence.mma +model/groups/Zgroup.mma CoRN.ma algebra/CGroups.ma model/monoids/Zmonoid.ma +tactics/AlgReflection.ma tactics/AlgReflection.mma +algebra/CSetoidInc.ma algebra/CSetoidInc.mma +reals/CReals.mma CoRN.ma algebra/COrdCauchy.ma +devel/loeb/IDA/Ch6.mma CoRN.ma algebra/CMonoids.ma algebra/CSemiGroups.ma devel/loeb/per/csetfun.ma devel/loeb/per/lst2fun.ma model/monoids/Nmonoid.ma model/monoids/Zmonoid.ma model/semigroups/Zsemigroup.ma model/setoids/Nsetoid.ma model/setoids/Qsetoid.ma model/setoids/Zsetoid.ma +ftc/DerivativeOps.mma CoRN.ma ftc/Derivative.ma +model/semigroups/QSpossemigroup.mma CoRN.ma algebra/CSemiGroups.ma model/setoids/Qpossetoid.ma +algebra/CRings.mma CoRN.ma algebra/CSums.ma +transc/Exponential.ma transc/Exponential.mma +model/groups/Qgroup.mma CoRN.ma algebra/CGroups.ma model/monoids/Qmonoid.ma +tactics/DiffTactics1.mma CoRN.ma +complex/CComplex.ma complex/CComplex.mma +transc/Exponential.mma CoRN.ma transc/TaylorSeries.ma +reals/Q_in_CReals.ma reals/Q_in_CReals.mma +fta/FTAreg.ma fta/FTAreg.mma +fta/MainLemma.ma fta/MainLemma.mma +tactics/GroupReflection.ma tactics/GroupReflection.mma +algebra/CSums.mma CoRN.ma algebra/CAbGroups.ma +model/semigroups/Qsemigroup.ma model/semigroups/Qsemigroup.mma +metrics/CMetricSpaces.mma CoRN.ma metrics/Equiv.ma metrics/Prod_Sub.ma +tactics/RingReflection.mma CoRN.ma algebra/CRings.ma tactics/AlgReflection.ma +ftc/Composition.ma ftc/Composition.mma +metrics/CPMSTheory.mma CoRN.ma metrics/Prod_Sub.ma +ftc/MoreFunSeries.ma ftc/MoreFunSeries.mma +tactics/GroupReflection.mma CoRN.ma algebra/CAbGroups.ma tactics/AlgReflection.ma +transc/RealPowers.mma CoRN.ma transc/Exponential.ma +algebra/CFields.ma algebra/CFields.mma +model/monoids/QSposmonoid.mma CoRN.ma algebra/CMonoids.ma model/semigroups/QSpossemigroup.ma +model/structures/Qpossec.mma CoRN.ma algebra/CLogic.ma model/structures/Qsec.ma +ftc/PartInterval.ma ftc/PartInterval.mma +tactics/RingReflection.ma tactics/RingReflection.mma +reals/Intervals.ma reals/Intervals.mma +model/non_examples/Npos_no_monoid.mma CoRN.ma algebra/CMonoids.ma model/semigroups/Npossemigroup.ma +transc/SinCos.mma CoRN.ma transc/Trigonometric.ma +reals/CPoly_Contin.ma reals/CPoly_Contin.mma +reals/R_morphism.mma CoRN.ma reals/CReals.ma +model/non_examples/Npos_no_group.mma CoRN.ma algebra/CGroups.ma model/monoids/Nposmonoid.ma +tactics/Step.mma CoRN.ma +model/abgroups/Qabgroup.mma CoRN.ma algebra/CAbGroups.ma model/groups/Qgroup.ma +ftc/RefSepRef.mma CoRN.ma ftc/COrdLemmas.ma ftc/Partitions.ma +model/structures/Zsec.mma CoRN.ma algebra/CLogic.ma +fta/FTA.mma CoRN.ma fta/CPoly_Rev.ma fta/FTAreg.ma +model/semigroups/Nsemigroup.mma CoRN.ma algebra/CSemiGroups.ma model/setoids/Nsetoid.ma +ftc/WeakIVT.mma CoRN.ma ftc/Continuity.ma +ftc/Derivative.mma CoRN.ma ftc/Continuity.ma +ftc/Taylor.mma CoRN.ma ftc/TaylorLemma.ma +ftc/MoreFunSeries.mma CoRN.ma ftc/FunctSeries.ma ftc/MoreFunctions.ma +model/monoids/Zmonoid.ma model/monoids/Zmonoid.mma +ftc/COrdLemmas.ma ftc/COrdLemmas.mma +reals/Intervals.mma CoRN.ma algebra/CSetoidInc.ma reals/RealLists.ma +model/groups/QSposgroup.ma model/groups/QSposgroup.mma +model/non_examples/Npos_no_group.ma model/non_examples/Npos_no_group.mma +model/structures/Qsec.mma CoRN.ma algebra/CLogic.ma model/structures/Zsec.ma +transc/RealPowers.ma transc/RealPowers.mma +algebra/COrdAbs.ma algebra/COrdAbs.mma +fta/CPoly_Contin1.mma CoRN.ma fta/CC_Props.ma +model/monoids/Qmonoid.ma model/monoids/Qmonoid.mma +complex/Complex_Exponential.ma complex/Complex_Exponential.mma +algebra/CFields.mma CoRN.ma algebra/CRings.ma +reals/NRootIR.mma CoRN.ma reals/OddPolyRootIR.ma +transc/PowerSeries.mma CoRN.ma ftc/FTC.ma +algebra/CMonoids.mma CoRN.ma algebra/CSemiGroups.ma +reals/Series.mma CoRN.ma reals/CSumsReals.ma reals/NRootIR.ma +reals/NRootIR.ma reals/NRootIR.mma +model/structures/Zsec.ma model/structures/Zsec.mma +model/setoids/Zsetoid.mma CoRN.ma algebra/CSetoidFun.ma model/structures/Zsec.ma +transc/TaylorSeries.mma CoRN.ma ftc/Taylor.ma transc/PowerSeries.ma +model/non_examples/N_no_group.ma model/non_examples/N_no_group.mma +fta/CPoly_Rev.mma CoRN.ma algebra/CPoly_Degree.ma +devel/loeb/IDA/Ch6.ma devel/loeb/IDA/Ch6.mma +reals/Q_dense.ma reals/Q_dense.mma +model/monoids/Nmonoid.mma CoRN.ma algebra/CMonoids.ma model/semigroups/Nsemigroup.ma +model/reals/Cauchy_IR.mma CoRN.ma model/ordfields/Qordfield.ma reals/Cauchy_CReals.ma +algebra/CGroups.ma algebra/CGroups.mma +reals/OddPolyRootIR.ma reals/OddPolyRootIR.mma +model/setoids/Npossetoid.mma CoRN.ma algebra/CSetoidFun.ma model/setoids/Nsetoid.ma model/structures/Npossec.ma +reals/IVT.mma CoRN.ma reals/CPoly_Contin.ma +complex/NRootCC.mma CoRN.ma complex/CComplex.ma +model/semigroups/Nsemigroup.ma model/semigroups/Nsemigroup.mma +devel/loeb/per/csetfun.mma CoRN.ma algebra/CGroups.ma algebra/CMonoids.ma algebra/CSemiGroups.ma algebra/CSetoidFun.ma algebra/CSetoids.ma +ftc/RefSeparating.mma CoRN.ma ftc/COrdLemmas.ma ftc/Partitions.ma +model/abgroups/QSposabgroup.ma model/abgroups/QSposabgroup.mma +ftc/Continuity.ma ftc/Continuity.mma +algebra/Basics.ma algebra/Basics.mma +transc/PowerSeries.ma transc/PowerSeries.mma +reals/CauchySeq.mma CoRN.ma reals/CReals.ma tactics/Transparent_algebra.ma +reals/Q_dense.mma CoRN.ma reals/Q_in_CReals.ma tactics/Opaque_algebra.ma +ftc/FunctSequence.mma CoRN.ma ftc/Continuity.ma ftc/PartInterval.ma +ftc/TaylorLemma.ma ftc/TaylorLemma.mma +model/groups/Qposgroup.mma CoRN.ma algebra/CGroups.ma model/monoids/Qposmonoid.ma +reals/CReals1.ma reals/CReals1.mma +model/structures/Nsec.ma model/structures/Nsec.mma +model/setoids/Npossetoid.ma model/setoids/Npossetoid.mma +model/semigroups/Qsemigroup.mma CoRN.ma algebra/CSemiGroups.ma model/setoids/Qsetoid.ma +algebra/COrdFields.mma CoRN.ma tactics/FieldReflection.ma tactics/Opaque_algebra.ma tactics/Transparent_algebra.ma +fta/MainLemma.mma CoRN.ma fta/KeyLemma.ma reals/CSumsReals.ma +fta/FTAreg.mma CoRN.ma fta/CPoly_Contin1.ma fta/CPoly_Shift.ma fta/KneserLemma.ma +transc/TrigMon.mma CoRN.ma transc/Pi.ma +algebra/CAbGroups.mma CoRN.ma algebra/CGroups.ma +algebra/CPoly_NthCoeff.ma algebra/CPoly_NthCoeff.mma +model/structures/Nsec.mma CoRN.ma algebra/CLogic.ma +model/abgroups/Qposabgroup.mma CoRN.ma algebra/CAbGroups.ma model/groups/Qposgroup.ma +ftc/FunctSums.ma ftc/FunctSums.mma +model/setoids/Qpossetoid.ma model/setoids/Qpossetoid.mma +reals/Series.ma reals/Series.mma +model/monoids/Nmonoid.ma model/monoids/Nmonoid.mma +reals/R_morphism.ma reals/R_morphism.mma +model/semigroups/Zsemigroup.mma CoRN.ma algebra/CSemiGroups.ma model/setoids/Zsetoid.ma +ftc/WeakIVT.ma ftc/WeakIVT.mma +model/structures/Qpossec.ma model/structures/Qpossec.mma +algebra/COrdFields2.ma algebra/COrdFields2.mma +metrics/Equiv.mma CoRN.ma metrics/IR_CPMSpace.ma +ftc/Integral.ma ftc/Integral.mma +algebra/CPolynomials.ma algebra/CPolynomials.mma +model/abgroups/Qposabgroup.ma model/abgroups/Qposabgroup.mma +metrics/Prod_Sub.ma metrics/Prod_Sub.mma +reals/Max_AbsIR.ma reals/Max_AbsIR.mma +algebra/CAbMonoids.ma algebra/CAbMonoids.mma +fta/CC_Props.mma CoRN.ma complex/AbsCC.ma +algebra/CGroups.mma CoRN.ma algebra/CMonoids.ma +ftc/MoreIntegrals.ma ftc/MoreIntegrals.mma +model/rings/Qring.mma CoRN.ma algebra/CRings.ma model/abgroups/Qabgroup.ma model/rings/Zring.ma +fta/KneserLemma.ma fta/KneserLemma.mma +transc/InvTrigonom.ma transc/InvTrigonom.mma +algebra/CSetoidFun.ma algebra/CSetoidFun.mma +ftc/RefSeparating.ma ftc/RefSeparating.mma +algebra/Basics.mma CoRN.ma algebra/ListType.ma +reals/CSumsReals.mma CoRN.ma reals/CReals1.ma +tactics/DiffTactics3.ma tactics/DiffTactics3.mma +metrics/ContFunctions.mma CoRN.ma metrics/CPseudoMSpaces.ma +ftc/PartFunEquality.ma ftc/PartFunEquality.mma +model/abgroups/Zabgroup.mma CoRN.ma algebra/CAbGroups.ma model/groups/Zgroup.ma +reals/Cauchy_CReals.mma CoRN.ma algebra/Cauchy_COF.ma reals/CReals.ma +algebra/Expon.ma algebra/Expon.mma +devel/loeb/per/csetfun.ma devel/loeb/per/csetfun.mma +algebra/CMonoids.ma algebra/CMonoids.mma +ftc/Partitions.mma CoRN.ma ftc/Continuity.ma +model/setoids/Qpossetoid.mma CoRN.ma algebra/CSetoidFun.ma model/setoids/Qsetoid.ma model/structures/Qpossec.ma +fta/CPoly_Rev.ma fta/CPoly_Rev.mma +tactics/DiffTactics2.mma CoRN.ma ftc/Differentiability.ma +reals/RealFuncts.mma CoRN.ma reals/CReals1.ma +model/monoids/Qposmonoid.ma model/monoids/Qposmonoid.mma +fta/KneserLemma.mma CoRN.ma complex/AbsCC.ma complex/NRootCC.ma fta/MainLemma.ma +coq.ma diff --git a/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/IDA/Ch6.mma b/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/IDA/Ch6.mma new file mode 100644 index 000000000..39953fa3b --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/IDA/Ch6.mma @@ -0,0 +1,625 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "algebra/CSemiGroups.ma". + +(* Remark blz 65 1 *) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/is_nullary_operation.con". + +include "model/setoids/Zsetoid.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/is_nullary_operation_Z_0.con". + +(* Remark blz 65 2 *) + +include "devel/loeb/per/csetfun.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/n_ary_operation.con". + +include "model/setoids/Nsetoid.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/plus1.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/to_plus1_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/plus2.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/to_plus2_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/plus3.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/on.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ex_3_ary.con" "__". + +(* blz 65 Example 1 *) + +(* Print Zopp_is_fun.*) + +(* Print Inv_as_un_op. +Geen goed voorbeeld: monoids komen hier al in voor en het is een heel onoverzichtelijk bewijs *) + +(* blz 65 Example 2 *) + +(* Print plus_is_bin_fun.*) + +(* Print mult_as_bin_fun.*) + +(* blz 66 Example 1 *) + +(* Print plus_is_assoc.*) + +(* Print Zplus_is_assoc.*) + +(* Print Zmult_is_assoc.*) + +include "model/setoids/Qsetoid.ma". + +(* Print Qplus_is_assoc.*) + +(* Print Qmult_is_assoc.*) + +(* blz 66 Examples 2 *) + +(* UNEXPORTED +Section p66E2 +*) + +alias id "X" = "cic:/CoRN/devel/loeb/IDA/Ch6/p66E2/X.var". + +alias id "f" = "cic:/CoRN/devel/loeb/IDA/Ch6/p66E2/f.var". + +alias id "g" = "cic:/CoRN/devel/loeb/IDA/Ch6/p66E2/g.var". + +alias id "h" = "cic:/CoRN/devel/loeb/IDA/Ch6/p66E2/h.var". + +(* Check comp_as_bin_op.*) + +(* Check assoc_comp.*) + +(* UNEXPORTED +End p66E2 +*) + +(* blz 66 Example 2eblok 1 *) + +include "model/semigroups/Zsemigroup.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Zplus_is_CSemiGroup.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Zmult_is_CSemiGroup.con". + +(* blz 66 Example % 3 *) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/FS_is_CSemiGroup.con". + +(* blz 66 Example % 4 *) + +(* UNEXPORTED +Section p66E2b4 +*) + +alias id "A" = "cic:/CoRN/devel/loeb/IDA/Ch6/p66E2b4/A.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Astar.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/empty_word.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/app.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/eq_fm.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ap_fm.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ap_fm_irreflexive.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ap_fm_symmetric.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ap_fm_cotransitive.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ap_fm_tight.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/free_csetoid_is_CSetoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/free_csetoid_as_csetoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/app_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/app_as_csb_fun.con". + +include "algebra/CSemiGroups.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/eq_fm_reflexive.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Astar_is_CSemiGroup.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Astar_as_CSemiGroup.con". + +(* UNEXPORTED +End p66E2b4 +*) + +(* Definition 5 *) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/is_unit.con". + +(* blz 67 Remark 1 *) + +include "model/monoids/Zmonoid.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/is_unit_Z_0.con". + +(* blz 67 Remark 2 *) + +(* UNEXPORTED +Section p67R2 +*) + +alias id "X" = "cic:/CoRN/devel/loeb/IDA/Ch6/p67R2/X.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/is_unit_FS_id.con". + +(* UNEXPORTED +End p67R2 +*) + +(* blz 67 Remark 3 *) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/is_unit_Astar_empty_word.con". + +(* Lemma 6 *) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/unique_unit.con". + +(* blz 67 Example 1 *) + +include "model/monoids/Nmonoid.ma". + +(* Print nat_is_CMonoid.*) + +include "model/monoids/Zmonoid.ma". + +(* Print Z_is_CMonoid.*) + +(* Print Z_mul_is_CMonoid.*) + +(* blz 67 Example 3 *) + +(* Print FS_is_CMonoid.*) + +(* blz 68 Example blok1 1 *) + +(* UNEXPORTED +Section p68E1b1 +*) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1.ind". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_eq.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_ap.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_ap_irreflexive.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_ap_symmetric.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_ap_cotransitive.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_eq_dec.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/is_e1.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/not_M1_eq_e1_u.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_ap_tight.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_is_CSetoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_as_CSetoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_mult.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_CS_mult.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_CS_mult_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_mult_as_bin_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_is_CSemiGroup.con". + +include "algebra/CMonoids.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/e1_is_lft_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/e1_is_rht_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_as_CSemiGroup.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_is_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_as_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_mult.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_CS_mult.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_CS_mult_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_mult_as_bin_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_is_CSemiGroup.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_as_CSemiGroup.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/e1_is_lft_unit_M2.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/e1_is_rht_unit_M2.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_is_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M2_as_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/two_element_CMonoids.con". + +(* UNEXPORTED +End p68E1b1 +*) + +(* blz 68 Example blok2 1 *) + +(* Print Zplus_is_commut.*) + +(* Print Zmult_is_commut. *) + +(* Print Qplus_is_commut1. *) + +(* Print Qmult_is_commut. *) + +(* Definition 9 *) + +include "algebra/CMonoids.ma". + +(* UNEXPORTED +Section D9S +*) + +alias id "M1" = "cic:/CoRN/devel/loeb/IDA/Ch6/D9S/M1.var". + +alias id "M2" = "cic:/CoRN/devel/loeb/IDA/Ch6/D9S/M2.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/dprod.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/dprod_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/dprod_as_csb_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/direct_product_is_CSemiGroup.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/direct_product_as_CSemiGroup.con". + +(* UNEXPORTED +End D9S +*) + +(* UNEXPORTED +Section D9M +*) + +alias id "M1" = "cic:/CoRN/devel/loeb/IDA/Ch6/D9M/M1.var". + +alias id "M2" = "cic:/CoRN/devel/loeb/IDA/Ch6/D9M/M2.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/e1e2_is_rht_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/e1e2_is_lft_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/direct_product_is_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/direct_product_as_CMonoid.con". + +(* UNEXPORTED +End D9M +*) + +(* blz 69 Example *) + +(* UNEXPORTED +Section p69E1 +*) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/p69E1/PM1M2.con" "p69E1__". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/p69E1/uu.con" "p69E1__". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/p69E1/e1u.con" "p69E1__". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ex_69.con". + +(* UNEXPORTED +End p69E1 +*) + +(* Theorem 11 *) + +(* UNEXPORTED +Section Th11 +*) + +alias id "M" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th11/M.var". + +alias id "I" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th11/I.var". + +alias id "C" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th11/C.var". + +alias id "Cunit" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th11/Cunit.var". + +alias id "op_pres_C" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th11/op_pres_C.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/K.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/op_pres_K.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/K_is_Monoid.con". + +(* UNEXPORTED +End Th11 +*) + +(* Theorem 12 *) + +(* UNEXPORTED +Section Th12 +*) + +alias id "A" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th12/A.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/nil_is_rht_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/nil_is_lft_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/free_monoid_is_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/free_monoid_as_CMonoid.con". + +(* UNEXPORTED +End Th12 +*) + +(* blz 70 text *) + +(* UNEXPORTED +Section p70text +*) + +include "devel/loeb/per/lst2fun.ma". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/p70text/A.con" "p70text__". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/ZerolessOne.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/to_word.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/to_word'.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/to_word'_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/to_word_as_CSetoid_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/to_word_bijective.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/pres_plus_to_word.con". + +(* UNEXPORTED +End p70text +*) + +(* Definition 13 *) + +(* UNEXPORTED +Section Th13 +*) + +alias id "M1" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th13/M1.var". + +alias id "M2" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th13/M2.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/morphism.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/isomorphism.con". + +(* UNEXPORTED +End Th13 +*) + +(* blz 71 Example 1 *) + +(* UNEXPORTED +Section p71E1 +*) + +alias id "M" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71E1/M.var". + +alias id "c" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71E1/c.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/power_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/power_CMonoid_CSetoid.con". + +alias id "is_generated_by" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71E1/is_generated_by.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/p71E1/f.con" "p71E1__". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/f_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/f_as_CSetoid_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/surjective_f.con". + +(* UNEXPORTED +End p71E1 +*) + +(* UNEXPORTED +Section p71E1' +*) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/M1_is_generated_by_u.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/not_injective_f.con". + +(* UNEXPORTED +End p71E1' +*) + +(* Print to_word_bijective.*) + +(* UNEXPORTED +Section p71E2 +*) + +alias id "A" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71E2/A.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/p71E2/L.con" "p71E2__". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/L_strext.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/L_as_CSetoid_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/L_is_morphism.con". + +(* UNEXPORTED +End p71E2 +*) + +(* blz 71 Remark 1 *) + +(* UNEXPORTED +Section p71R1 +*) + +alias id "S1" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71R1/S1.var". + +alias id "S2" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71R1/S2.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/morphism_of_CSemiGroups.con". + +(* UNEXPORTED +End p71R1 +*) + +(* UNEXPORTED +Section p71R2 +*) + +alias id "M" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71R2/M.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/automorphism.con". + +(* UNEXPORTED +End p71R2 +*) + +(* Theorem 14 *) + +(* UNEXPORTED +Section Th14 +*) + +alias id "M1" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th14/M1.var". + +alias id "M2" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th14/M2.var". + +alias id "f" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th14/f.var". + +alias id "isof" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th14/isof.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/iso_imp_bij.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/iso_inv.con". + +(* UNEXPORTED +End Th14 +*) + +(* blz 71 Examples 2eblok 1 *) + +(* UNEXPORTED +Section p71E2b1 +*) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/isomorphic.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/not_isomorphic_M1_M2.con". + +(* UNEXPORTED +End p71E2b1 +*) + +(* UNEXPORTED +Section p71E2b2 +*) + +alias id "M1" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71E2b2/M1.var". + +alias id "M2" = "cic:/CoRN/devel/loeb/IDA/Ch6/p71E2b2/M2.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/p71E2b2/f.con" "p71E2b2__". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/f_strext'.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/f_as_CSetoid_fun'.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/isomorphic_PM1M2_PM2M1.con". + +(* UNEXPORTED +End p71E2b2 +*) + +(* UNEXPORTED +Section Th15 +*) + +alias id "M" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th15/M.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/cm_Sum.con". + +alias id "D" = "cic:/CoRN/devel/loeb/IDA/Ch6/Th15/D.var". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/member.con". + +(* UNEXPORTED +Implicit Arguments member [A]. +*) + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Dbrack.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Dbrack_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/member_app.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/cm_Sum_app.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/op_pres_Dbrack.con". + +inline procedural "cic:/CoRN/devel/loeb/IDA/Ch6/Dbrack_as_CMonoid.con". + +(* UNEXPORTED +End Th15 +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/csetfun.mma b/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/csetfun.mma new file mode 100644 index 000000000..d5827f8f4 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/csetfun.mma @@ -0,0 +1,132 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "algebra/CSetoids.ma". + +include "algebra/CSetoidFun.ma". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/ap_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/eq_fun.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/irrefl_apfun.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/cotrans_apfun.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/ta_apfun.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/sym_apfun.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/FS_is_CSetoid.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/FS_as_CSetoid.con". + +(* UNEXPORTED +Print associative. +*) + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/comp.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/comp_as_bin_op.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/assoc_comp.con". + +include "algebra/CSemiGroups.ma". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/FS_as_CSemiGroup.con". + +include "algebra/CMonoids.ma". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/FS_id.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/id_is_rht_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/id_is_lft_unit.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/FS_is_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/FS_as_CMonoid.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/PS_as_CMonoid.con". + +include "algebra/CGroups.ma". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/Inv_is_bij.con". + +(* Lemma Inv_is_bij : + forall (A B : CSetoid) (f : CSetoid_fun A B) (H : bijective f), + bijective (Inv f H). +intros A B f. +case f. +unfold fun_strext in |- *. +intros f0 H5. +unfold bijective in |- *. +intro H. +elim H. +clear H. +unfold injective in |- *. +unfold surjective in |- *. +intros H0 H1. +split. +unfold Inv in |- *. +simpl in |- *. +unfold invfun in |- *. +simpl in |- *. +unfold sigT_rect in |- *. +intros a0 a1 H2. +case H1. +case (H1 a1). +intros x H3 y H4. +simpl in H3. +simpl in H4. +simpl in H0. +simpl in H1. +apply H5. +astepl a0. +astepr a1. +exact H2. + +simpl in |- *. +unfold invfun in |- *. +simpl in |- *. +unfold sigT_rect in |- *. +intros b. +exists (f0 b). +case (H1 (f0 b)). +simpl in |- *. +intros x H2. +simpl in H0. +simpl in H1. +apply not_ap_imp_eq. +red in |- *. +intro H3. +set (H4 := H0 x b H3) in *. +set (H6 := ap_imp_neq B (f0 x) (f0 b) H4) in *. +intuition. +Qed.*) + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/PS_Inv.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/Inv_as_un_op.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/PS_is_CGroup.con". + +inline procedural "cic:/CoRN/devel/loeb/per/csetfun/PS_as_CGroup.con". + +(* In het algemeen niet Abels! *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/lst2fun.mma b/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/lst2fun.mma new file mode 100644 index 000000000..a859e2c18 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/devel/loeb/per/lst2fun.mma @@ -0,0 +1,54 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/F'.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/F.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/devel/loeb/per/lst2fun/F_crr.con +*) + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/to_nat.con". + +(* UNEXPORTED +Implicit Arguments to_nat [n]. +*) + +(* COERCION +cic:/matita/CoRN-Procedural/devel/loeb/per/lst2fun/to_nat.con +*) + +include "algebra/CSetoids.ma". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/Feq.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/Fap.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/Fap_irreflexive.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/Fap_symmetric.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/Fap_cotransitive.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/Fap_tight.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/less.con". + +inline procedural "cic:/CoRN/devel/loeb/per/lst2fun/CSetoid_of_less.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/CC_Props.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/CC_Props.mma new file mode 100644 index 000000000..a9ca19cfe --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/CC_Props.mma @@ -0,0 +1,101 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CC_Props.v,v 1.3 2004/04/23 10:00:56 lcf Exp $ *) + +include "complex/AbsCC.ma". + +(*#* * More properties of complex numbers +** Sequences and limits *) + +(* UNEXPORTED +Hint Resolve AbsIR_sqrt_sqr: algebra. +*) + +inline procedural "cic:/CoRN/fta/CC_Props/absCC_absIR_re.con". + +inline procedural "cic:/CoRN/fta/CC_Props/absCC_absIR_im.con". + +inline procedural "cic:/CoRN/fta/CC_Props/seq_re.con". + +inline procedural "cic:/CoRN/fta/CC_Props/seq_im.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CC_Cauchy_prop.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CC_CauchySeq.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/fta/CC_Props/CC_seq.con +*) + +inline procedural "cic:/CoRN/fta/CC_Props/re_is_Cauchy.con". + +inline procedural "cic:/CoRN/fta/CC_Props/im_is_Cauchy.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CC_Cauchy2re.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CC_Cauchy2im.con". + +inline procedural "cic:/CoRN/fta/CC_Props/LimCC.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CC_SeqLimit.con". + +inline procedural "cic:/CoRN/fta/CC_Props/AbsSmall_sqr.con". + +inline procedural "cic:/CoRN/fta/CC_Props/AbsSmall_AbsCC.con". + +inline procedural "cic:/CoRN/fta/CC_Props/LimCC_is_lim.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CC_SeqLimit_uniq.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CC_SeqLimit_unq.con". + +(*#* ** Continuity for [CC] +*) + +(* UNEXPORTED +Section Continuity_for_CC +*) + +(*#* +%\begin{convention}% Let [f : CC->CC]. +%\end{convention}% +*) + +alias id "f" = "cic:/CoRN/fta/CC_Props/Continuity_for_CC/f.var". + +(* (CSetoid_un_op CC). *) + +inline procedural "cic:/CoRN/fta/CC_Props/CCfunLim.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CCcontinAt.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CCcontin.con". + +inline procedural "cic:/CoRN/fta/CC_Props/CCfunLim_SeqLimit.con". + +inline procedural "cic:/CoRN/fta/CC_Props/f_seq.con". + +inline procedural "cic:/CoRN/fta/CC_Props/poly_pres_lim.con". + +(* UNEXPORTED +End Continuity_for_CC +*) + +inline procedural "cic:/CoRN/fta/CC_Props/seq_yields_zero.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Contin1.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Contin1.mma new file mode 100644 index 000000000..ace7f60a2 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Contin1.mma @@ -0,0 +1,58 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPoly_Contin1.v,v 1.3 2004/04/23 10:00:56 lcf Exp $ *) + +include "fta/CC_Props.ma". + +(*#* * Continuity of complex polynomials +*) + +(* UNEXPORTED +Section Mult_CC_Continuous +*) + +inline procedural "cic:/CoRN/fta/CPoly_Contin1/mult_absCC.con". + +inline procedural "cic:/CoRN/fta/CPoly_Contin1/estimate_absCC.con". + +inline procedural "cic:/CoRN/fta/CPoly_Contin1/mult_CC_contin.con". + +(* UNEXPORTED +End Mult_CC_Continuous +*) + +(* UNEXPORTED +Section CPoly_CC_Continuous +*) + +(*#* +%\begin{convention}% Let [g] be a polynomial over the complex numbers. +%\end{convention}% +*) + +alias id "g" = "cic:/CoRN/fta/CPoly_Contin1/CPoly_CC_Continuous/g.var". + +inline procedural "cic:/CoRN/fta/CPoly_Contin1/cpoly_CC_contin.con". + +inline procedural "cic:/CoRN/fta/CPoly_Contin1/contin_polyCC.con". + +(* UNEXPORTED +End CPoly_CC_Continuous +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Rev.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Rev.mma new file mode 100644 index 000000000..695052340 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Rev.mma @@ -0,0 +1,177 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPoly_Rev.v,v 1.3 2004/04/23 10:00:56 lcf Exp $ *) + +include "algebra/CPoly_Degree.ma". + +(*#* * Reverse of polynomials +*) + +(* UNEXPORTED +Section Monomials +*) + +(*#* +%\begin{convention}% Let [R] be a ring, and let [RX] be the +polynomials over this ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/fta/CPoly_Rev/Monomials/R.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Monomials/RX.con" "Monomials__". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_coeff.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_coeff'.con". + +(* UNEXPORTED +Hint Resolve monom_coeff monom_coeff': algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_degree.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_S.con". + +(* UNEXPORTED +Hint Resolve monom_S: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_wd_lft.con". + +(* UNEXPORTED +Hint Resolve monom_wd_lft: algebra_c. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_mult'.con". + +(* UNEXPORTED +Hint Resolve monom_mult': algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_mult.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/monom_sum.con". + +(* UNEXPORTED +End Monomials +*) + +(* UNEXPORTED +Hint Resolve monom_coeff monom_coeff' monom_mult monom_sum: algebra. +*) + +(* UNEXPORTED +Implicit Arguments monom [R]. +*) + +(* UNEXPORTED +Section Poly_Reverse +*) + +alias id "R" = "cic:/CoRN/fta/CPoly_Rev/Poly_Reverse/R.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Poly_Reverse/RX.con" "Poly_Reverse__". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_coeff.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_coeff'.con". + +(* UNEXPORTED +Hint Resolve Rev_coeff Rev_coeff': algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_wd.con". + +(* UNEXPORTED +Hint Resolve Rev_wd: algebra_c. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_rev.con". + +(* UNEXPORTED +Hint Resolve Rev_rev: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_degree_le.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_degree.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_monom.con". + +(* UNEXPORTED +Hint Resolve Rev_monom: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_zero.con". + +(* UNEXPORTED +Hint Resolve Rev_zero: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_plus.con". + +(* UNEXPORTED +Hint Resolve Rev_plus: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_minus.con". + +(* UNEXPORTED +Hint Resolve Rev_minus: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_sum0.con". + +(* UNEXPORTED +Hint Resolve Rev_sum0: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_sum.con". + +inline procedural "cic:/CoRN/fta/CPoly_Rev/Rev_mult.con". + +(* UNEXPORTED +End Poly_Reverse +*) + +(* UNEXPORTED +Hint Resolve Rev_wd: algebra_c. +*) + +(* UNEXPORTED +Hint Resolve Rev_rev Rev_mult: algebra. +*) + +(* UNEXPORTED +Implicit Arguments Rev [R]. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Shift.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Shift.mma new file mode 100644 index 000000000..00ce892b4 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/CPoly_Shift.mma @@ -0,0 +1,62 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPoly_Shift.v,v 1.4 2004/04/23 10:00:56 lcf Exp $ *) + +include "complex/CComplex.ma". + +(*#* * Shifting polynomials +This can be done for [CRings] in general, but we do it here +only for [CC] because extensionality makes everything much easier, +and we only need it for [CC]. +*) + +(* UNEXPORTED +Section Poly_Shifted +*) + +inline procedural "cic:/CoRN/fta/CPoly_Shift/Shift.con". + +inline procedural "cic:/CoRN/fta/CPoly_Shift/Shift_apply.con". + +(* UNEXPORTED +Hint Resolve Shift_apply: algebra. +*) + +inline procedural "cic:/CoRN/fta/CPoly_Shift/Shift_wdr.con". + +inline procedural "cic:/CoRN/fta/CPoly_Shift/Shift_shift.con". + +inline procedural "cic:/CoRN/fta/CPoly_Shift/Shift_mult.con". + +inline procedural "cic:/CoRN/fta/CPoly_Shift/Shift_degree_le.con". + +inline procedural "cic:/CoRN/fta/CPoly_Shift/Shift_monic.con". + +(* UNEXPORTED +End Poly_Shifted +*) + +(* UNEXPORTED +Hint Resolve Shift_wdr: algebra_c. +*) + +(* UNEXPORTED +Hint Resolve Shift_apply Shift_shift Shift_mult: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/FTA.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/FTA.mma new file mode 100644 index 000000000..acdca7ba0 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/FTA.mma @@ -0,0 +1,95 @@ +(**************************************************************************) +(* ___ *) +(* ||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: FTA.v,v 1.6 2004/04/23 10:00:57 lcf Exp $ *) + +include "fta/CPoly_Rev.ma". + +include "fta/FTAreg.ma". + +(*#* * Fundamental Theorem of Algebra +%\begin{convention}% Let [n:nat] and [f] be a complex polynomial of +degree [(S n)]. +%\end{convention}% +*) + +(* UNEXPORTED +Section FTA_reg' +*) + +alias id "f" = "cic:/CoRN/fta/FTA/FTA_reg'/f.var". + +alias id "n" = "cic:/CoRN/fta/FTA/FTA_reg'/n.var". + +alias id "f_degree" = "cic:/CoRN/fta/FTA/FTA_reg'/f_degree.var". + +inline procedural "cic:/CoRN/fta/FTA/FTA_reg'.con". + +(* UNEXPORTED +End FTA_reg' +*) + +(*#* +%\begin{convention}% Let [n:nat], [f] be a complex polynomial of degree +less than or equal to [(S n)] and [c] be a complex number such that +[f!c [#] Zero]. +%\end{convention}% +*) + +(* UNEXPORTED +Section FTA_1 +*) + +alias id "f" = "cic:/CoRN/fta/FTA/FTA_1/f.var". + +alias id "n" = "cic:/CoRN/fta/FTA/FTA_1/n.var". + +alias id "f_degree" = "cic:/CoRN/fta/FTA/FTA_1/f_degree.var". + +alias id "c" = "cic:/CoRN/fta/FTA/FTA_1/c.var". + +alias id "f_c" = "cic:/CoRN/fta/FTA/FTA_1/f_c.var". + +inline procedural "cic:/CoRN/fta/FTA/FTA_1a.con". + +inline procedural "cic:/CoRN/fta/FTA/FTA_1/g.con" "FTA_1__". + +inline procedural "cic:/CoRN/fta/FTA/FTA_1b.con". + +inline procedural "cic:/CoRN/fta/FTA/FTA_1.con". + +inline procedural "cic:/CoRN/fta/FTA/FTA_1'.con". + +(* UNEXPORTED +End FTA_1 +*) + +(* UNEXPORTED +Section Fund_Thm_Alg +*) + +inline procedural "cic:/CoRN/fta/FTA/FTA'.con". + +inline procedural "cic:/CoRN/fta/FTA/FTA.con". + +inline procedural "cic:/CoRN/fta/FTA/FTA_a_la_Henk.con". + +(* UNEXPORTED +End Fund_Thm_Alg +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/FTAreg.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/FTAreg.mma new file mode 100644 index 000000000..58c776f63 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/FTAreg.mma @@ -0,0 +1,221 @@ +(**************************************************************************) +(* ___ *) +(* ||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: FTAreg.v,v 1.4 2004/04/23 10:00:57 lcf Exp $ *) + +include "fta/KneserLemma.ma". + +include "fta/CPoly_Shift.ma". + +include "fta/CPoly_Contin1.ma". + +(*#* * FTA for regular polynomials +** The Kneser sequence +%\begin{convention}% Let [n] be a positive natural number. +%\end{convention}% +*) + +(* UNEXPORTED +Section Seq_Exists +*) + +alias id "n" = "cic:/CoRN/fta/FTAreg/Seq_Exists/n.var". + +alias id "lt0n" = "cic:/CoRN/fta/FTAreg/Seq_Exists/lt0n.var". + +(*#* +%\begin{convention}% Let [qK] be a real between 0 and 1, with +[[ +forall (p : CCX), (monic n p) -> forall (c : IR), ((AbsCC (p!Zero)) [<] c) -> + {z:CC | ((AbsCC z) [^]n [<] c) | ((AbsCC (p!z)) [<] qK[*]c)}. +]] +Let [p] be a monic polynomial over the complex numbers with degree +[n], and let [c0] be such that [(AbsCC (p!Zero)) [<] c0]. +%\end{convention}% +*) + +(* UNEXPORTED +Section Kneser_Sequence +*) + +alias id "qK" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/qK.var". + +alias id "zltq" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/zltq.var". + +alias id "qlt1" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/qlt1.var". + +alias id "q_prop" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/q_prop.var". + +alias id "p" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/p.var". + +alias id "mp" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/mp.var". + +alias id "c0" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/c0.var". + +alias id "p0ltc0" = "cic:/CoRN/fta/FTAreg/Seq_Exists/Kneser_Sequence/p0ltc0.var". + +inline procedural "cic:/CoRN/fta/FTAreg/Knes_tup.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/fta/FTAreg/z_el.con +*) + +inline procedural "cic:/CoRN/fta/FTAreg/Knes_tupp.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/fta/FTAreg/Kntup.con +*) + +inline procedural "cic:/CoRN/fta/FTAreg/Knes_fun.con". + +inline procedural "cic:/CoRN/fta/FTAreg/Knes_fun_it.con". + +inline procedural "cic:/CoRN/fta/FTAreg/sK.con". + +inline procedural "cic:/CoRN/fta/FTAreg/sK_c.con". + +inline procedural "cic:/CoRN/fta/FTAreg/sK_c0.con". + +inline procedural "cic:/CoRN/fta/FTAreg/sK_prop1.con". + +inline procedural "cic:/CoRN/fta/FTAreg/sK_it.con". + +inline procedural "cic:/CoRN/fta/FTAreg/sK_prop2.con". + +(* UNEXPORTED +End Kneser_Sequence +*) + +(* UNEXPORTED +Section Seq_Exists_Main +*) + +(*#* **Main results +*) + +inline procedural "cic:/CoRN/fta/FTAreg/seq_exists.con". + +(* UNEXPORTED +End Seq_Exists_Main +*) + +(* UNEXPORTED +End Seq_Exists +*) + +(* UNEXPORTED +Section N_Exists +*) + +alias id "n" = "cic:/CoRN/fta/FTAreg/N_Exists/n.var". + +alias id "lt0n" = "cic:/CoRN/fta/FTAreg/N_Exists/lt0n.var". + +alias id "q" = "cic:/CoRN/fta/FTAreg/N_Exists/q.var". + +alias id "zleq" = "cic:/CoRN/fta/FTAreg/N_Exists/zleq.var". + +alias id "qlt1" = "cic:/CoRN/fta/FTAreg/N_Exists/qlt1.var". + +alias id "c" = "cic:/CoRN/fta/FTAreg/N_Exists/c.var". + +alias id "zltc" = "cic:/CoRN/fta/FTAreg/N_Exists/zltc.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/FTAreg/N_Exists/q_.con" "N_Exists__". + +(* end hide *) + +alias id "e" = "cic:/CoRN/fta/FTAreg/N_Exists/e.var". + +alias id "zlte" = "cic:/CoRN/fta/FTAreg/N_Exists/zlte.var". + +inline procedural "cic:/CoRN/fta/FTAreg/N_exists.con". + +(* UNEXPORTED +End N_Exists +*) + +(* UNEXPORTED +Section Seq_is_CC_CAuchy +*) + +(*#* ** The Kneser sequence is Cauchy in [CC] *) + +alias id "n" = "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/n.var". + +alias id "lt0n" = "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/lt0n.var". + +alias id "q" = "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/q.var". + +alias id "zleq" = "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/zleq.var". + +alias id "qlt1" = "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/qlt1.var". + +alias id "c" = "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/c.var". + +alias id "zltc" = "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/zltc.var". + +(*#* %\begin{convention}% Let: + - [q_] prove [q[-]One [#] Zero] + - [nrtq := NRoot q n] + - [nrtc := Nroot c n] + - [nrtqlt1] prove [nrtq [<] One] + - [nrtq_] prove [nrtq[-]One [#] Zero] + +%\end{convention}% *) + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/q_.con" "Seq_is_CC_CAuchy__". + +inline procedural "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/nrtq.con" "Seq_is_CC_CAuchy__". + +inline procedural "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/nrtc.con" "Seq_is_CC_CAuchy__". + +inline procedural "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/nrtqlt1.con" "Seq_is_CC_CAuchy__". + +inline procedural "cic:/CoRN/fta/FTAreg/Seq_is_CC_CAuchy/nrtq_.con" "Seq_is_CC_CAuchy__". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/FTAreg/zlt_nrtq.con". + +inline procedural "cic:/CoRN/fta/FTAreg/zlt_nrtc.con". + +inline procedural "cic:/CoRN/fta/FTAreg/nrt_pow.con". + +inline procedural "cic:/CoRN/fta/FTAreg/abs_pow_ltRe.con". + +inline procedural "cic:/CoRN/fta/FTAreg/abs_pow_ltIm.con". + +inline procedural "cic:/CoRN/fta/FTAreg/SublemmaRe.con". + +inline procedural "cic:/CoRN/fta/FTAreg/SublemmaIm.con". + +inline procedural "cic:/CoRN/fta/FTAreg/seq_is_CC_Cauchy.con". + +(* UNEXPORTED +End Seq_is_CC_CAuchy +*) + +inline procedural "cic:/CoRN/fta/FTAreg/FTA_monic.con". + +inline procedural "cic:/CoRN/fta/FTAreg/FTA_reg.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/KeyLemma.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/KeyLemma.mma new file mode 100644 index 000000000..a49f0f47e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/KeyLemma.mma @@ -0,0 +1,165 @@ +(**************************************************************************) +(* ___ *) +(* ||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: KeyLemma.v,v 1.5 2004/04/23 10:00:57 lcf Exp $ *) + +include "reals/NRootIR.ma". + +(*#* printing p3m %\ensuremath{\frac13\hat{\ }}% *) + +(*#* printing Halfeps %\ensuremath{\frac\varepsilon2}% *) + +(*#* * Technical lemmas for the FTA +** Key Lemma +*) + +(* UNEXPORTED +Section Key_Lemma +*) + +(*#* +%\begin{convention}% Let [a:nat->IR] and [n:nat] such that [0 < n], +[forall (k : nat) (Zero [<=] (a k))], [(a n) [=] One] and [a_0 : IR], +and [eps : IR] such that [(Zero [<] eps)] and [(eps [<=] a_0)]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/a.var". + +alias id "n" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/n.var". + +alias id "gt_n_0" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/gt_n_0.var". + +alias id "eps" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/eps.var". + +alias id "eps_pos" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/eps_pos.var". + +alias id "a_nonneg" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/a_nonneg.var". + +alias id "a_n_1" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/a_n_1.var". + +alias id "a_0" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/a_0.var". + +alias id "eps_le_a_0" = "cic:/CoRN/fta/KeyLemma/Key_Lemma/eps_le_a_0.var". + +inline procedural "cic:/CoRN/fta/KeyLemma/a_0_eps_nonneg.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/a_0_eps_fuzz.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/lem_1a.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/lem_1b.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/lem_1c.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/lem_1.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_pos.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_S.con". + +(* UNEXPORTED +Hint Resolve p3m_S: algebra. +*) + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_P.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_aux.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_pow.con". + +(* UNEXPORTED +Hint Resolve p3m_aux: algebra. +*) + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_0.con". + +(* UNEXPORTED +Hint Resolve p3m_0: algebra. +*) + +inline procedural "cic:/CoRN/fta/KeyLemma/third_pos.con". + +(* UNEXPORTED +Hint Resolve third_pos: algebra. +*) + +inline procedural "cic:/CoRN/fta/KeyLemma/third_less_one.con". + +(* UNEXPORTED +Hint Resolve third_less_one: algebra. +*) + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_mon.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_mon'.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_small.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/p3m_smaller.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/chfun.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/chfun_1.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/chfun_2.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/chfun_3.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/chfun_4.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Halfeps.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Halfeps_pos.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Halfeps_Halfeps.con". + +(* UNEXPORTED +Hint Resolve Halfeps_Halfeps: algebra. +*) + +inline procedural "cic:/CoRN/fta/KeyLemma/Halfeps_eps.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Halfeps_trans.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Key_1a.con". + +(* UNEXPORTED +Hint Resolve Key_1a: algebra. +*) + +inline procedural "cic:/CoRN/fta/KeyLemma/Key_1b.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Key_1.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Key_2.con". + +inline procedural "cic:/CoRN/fta/KeyLemma/Key.con". + +(* end hide *) + +(* UNEXPORTED +End Key_Lemma +*) + +(* UNEXPORTED +Hint Resolve p3m_S p3m_P p3m_pow: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/KneserLemma.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/KneserLemma.mma new file mode 100644 index 000000000..1df1bc9cc --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/KneserLemma.mma @@ -0,0 +1,143 @@ +(**************************************************************************) +(* ___ *) +(* ||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: KneserLemma.v,v 1.7 2004/04/23 10:00:57 lcf Exp $ *) + +(*#* printing Smallest %\ensuremath{\frac13^{2n^2+n}}% *) + +(*#* printing eta_0 %\ensuremath{\eta_0}% #η0# *) + +include "complex/NRootCC.ma". + +include "complex/AbsCC.ma". + +include "fta/MainLemma.ma". + +(*#* ** Kneser Lemma *) + +(* UNEXPORTED +Section Kneser_Lemma +*) + +(*#* +%\begin{convention}% Let [b : nat->CC], [n : nat] and [c : IR] +such that [0 < n], [b_0 := b 0], [b_n := (b n) [=] One] and +[(AbsCC b_0) [<] c]. +%\end{convention}% +*) + +alias id "b" = "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/b.var". + +alias id "n" = "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/n.var". + +alias id "gt_n_0" = "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/gt_n_0.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/b_0.con" "Kneser_Lemma__". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/b_n.con" "Kneser_Lemma__". + +(* end hide *) + +alias id "b_n_1" = "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/b_n_1.var". + +alias id "c" = "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/c.var". + +alias id "b_0_lt_c" = "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/b_0_lt_c.var". + +(*#* +%\begin{convention}% We define the following local abbreviations: + - [two_n := 2 * n] + - [Small := p3m n] + - [Smaller := p3m (two_n * n)] + - [Smallest := Small[*]Smaller] + - [q := One[-]Smallest] + - [a i := AbsCC (b i)] + +%\end{convention}% +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/two_n.con" "Kneser_Lemma__". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/Small.con" "Kneser_Lemma__". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/Smaller.con" "Kneser_Lemma__". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/Smallest.con" "Kneser_Lemma__". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/q.con" "Kneser_Lemma__". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/b_0'_exists.con". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/eta_0.con" "Kneser_Lemma__". + +inline procedural "cic:/CoRN/fta/KneserLemma/eta_0_pos.con". + +inline procedural "cic:/CoRN/fta/KneserLemma/eta_exists.con". + +inline procedural "cic:/CoRN/fta/KneserLemma/eps_exists_1.con". + +(* less_cotransitive_unfolded on + {Zero [<] y[/]x[//]H3[-]Half[*]eps} + + {y[/]x[//]H3[-]Half[*]eps [<] Half[*]eps}. *) + +inline procedural "cic:/CoRN/fta/KneserLemma/eps_exists.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_Lemma/a.con" "Kneser_Lemma__". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/z_exists.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_1'.con". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_1''.con". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_1.con". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_2a.con". + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_2b.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_2c.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_2.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser_3.con". + +(* UNEXPORTED +End Kneser_Lemma +*) + +inline procedural "cic:/CoRN/fta/KneserLemma/Kneser.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/fta/MainLemma.mma b/helm/software/matita/contribs/CoRN-Procedural/fta/MainLemma.mma new file mode 100644 index 000000000..c3c9669c5 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/fta/MainLemma.mma @@ -0,0 +1,126 @@ +(**************************************************************************) +(* ___ *) +(* ||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: MainLemma.v,v 1.3 2004/04/23 10:00:57 lcf Exp $ *) + +(*#* printing two_n %\ensuremath{2n}% #2n# *) + +(*#* printing Small %\ensuremath{\frac13^n}% *) + +(*#* printing Smaller %\ensuremath{\frac13^{2n^2}}% *) + +include "reals/CSumsReals.ma". + +include "fta/KeyLemma.ma". + +(*#* ** Main Lemma +*) + +(* UNEXPORTED +Section Main_Lemma +*) + +(*#* +%\begin{convention}% +Let [a : nat->IR], [n : nat], [a_0 : IR] and [eps : IR] such that [0 < n], +[(Zero [<] eps)], [forall (k : nat)(Zero [<=] (a k))], [(a n) [=] One], and +[(eps [<=] a_0)]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/fta/MainLemma/Main_Lemma/a.var". + +alias id "n" = "cic:/CoRN/fta/MainLemma/Main_Lemma/n.var". + +alias id "gt_n_0" = "cic:/CoRN/fta/MainLemma/Main_Lemma/gt_n_0.var". + +alias id "eps" = "cic:/CoRN/fta/MainLemma/Main_Lemma/eps.var". + +alias id "eps_pos" = "cic:/CoRN/fta/MainLemma/Main_Lemma/eps_pos.var". + +alias id "a_nonneg" = "cic:/CoRN/fta/MainLemma/Main_Lemma/a_nonneg.var". + +alias id "a_n_1" = "cic:/CoRN/fta/MainLemma/Main_Lemma/a_n_1.var". + +alias id "a_0" = "cic:/CoRN/fta/MainLemma/Main_Lemma/a_0.var". + +alias id "eps_le_a_0" = "cic:/CoRN/fta/MainLemma/Main_Lemma/eps_le_a_0.var". + +inline procedural "cic:/CoRN/fta/MainLemma/a_0_pos.con". + +(*#* +%\begin{convention}% We define the following local abbreviations: + - [two_n := 2 * n] + - [Small := p3m n] + - [Smaller := p3m (two_n * n)] + +%\end{convention}% +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_Lemma/two_n.con" "Main_Lemma__". + +inline procedural "cic:/CoRN/fta/MainLemma/Main_Lemma/Small.con" "Main_Lemma__". + +inline procedural "cic:/CoRN/fta/MainLemma/Main_Lemma/Smaller.con" "Main_Lemma__". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_1a'.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_1b'.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_1a.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_1b.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_1.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_2'.con". + +inline procedural "cic:/CoRN/fta/MainLemma/Main_2.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_3a.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main_3.con". + +(* end hide *) + +inline procedural "cic:/CoRN/fta/MainLemma/Main.con". + +(* end hide *) + +(* UNEXPORTED +End Main_Lemma +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/COrdLemmas.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/COrdLemmas.mma new file mode 100644 index 000000000..185700c77 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/COrdLemmas.mma @@ -0,0 +1,121 @@ +(**************************************************************************) +(* ___ *) +(* ||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: COrdLemmas.v,v 1.2 2004/04/23 10:00:57 lcf Exp $ *) + +include "algebra/COrdCauchy.ma". + +(* UNEXPORTED +Section Lemmas +*) + +(*#* *Lemmas for Integration + +Here we include several lemmas valid in any ordered field [F] which +are useful for integration. + +** Merging orders + +We first prove that any two strictly ordered sets of points which have +an empty intersection can be ordered as one (this will be the core of +the proof that any two partitions with no common point have a common +refinement). +*) + +alias id "F" = "cic:/CoRN/ftc/COrdLemmas/Lemmas/F.var". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_lt.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_1.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_2a.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_2.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_3a.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_3b.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_4a.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_4b.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_4c.con". + +inline procedural "cic:/CoRN/ftc/COrdLemmas/om_fun_4d.con". + +(* begin hide *) + +alias id "f" = "cic:/CoRN/ftc/COrdLemmas/Lemmas/f.var". + +alias id "f0" = "cic:/CoRN/ftc/COrdLemmas/Lemmas/f0.var". + +alias id "f_mon" = "cic:/CoRN/ftc/COrdLemmas/Lemmas/f_mon.var". + +alias id "h" = "cic:/CoRN/ftc/COrdLemmas/Lemmas/h.var". + +(* end hide *) + +(*#* ** Summations +Also, some technical stuff on sums. The first lemma relates two +different kinds of sums; the other two ones are variations, where the +structure of the arguments is analyzed in more detail. +*) + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/COrdLemmas/Sumx_Sum_Sum + (* end show *) + (* begin hide *).con". + +(* end hide *) + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/COrdLemmas/str_Sumx_Sum_Sum + (* end show *) + (* begin hide *).con". + +(* UNEXPORTED +End Lemmas +*) + +(* UNEXPORTED +Section More_Lemmas +*) + +inline procedural "cic:/CoRN/ftc/COrdLemmas/More_Lemmas/f'.con" "More_Lemmas__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/COrdLemmas/More_Lemmas/F.var". + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/COrdLemmas/str_Sumx_Sum_Sum' + (* end show *) + (* begin hide *).con". + +(* end hide *) + +(* UNEXPORTED +End More_Lemmas +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/CalculusTheorems.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/CalculusTheorems.mma new file mode 100644 index 000000000..5626821f4 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/CalculusTheorems.mma @@ -0,0 +1,121 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CalculusTheorems.v,v 1.6 2004/04/23 10:00:57 lcf Exp $ *) + +include "ftc/Rolle.ma". + +include "tactics/DiffTactics3.ma". + +(* UNEXPORTED +Opaque Min Max. +*) + +(* UNEXPORTED +Section Various_Theorems +*) + +(*#* *Calculus Theorems + +This file is intended to present a collection of miscellaneous, mostly +technical results in differential calculus that are interesting or +useful in future work. + +We begin with some properties of continuous functions. Every +continuous function commutes with the limit of a numerical sequence +(sometimes called Heine continuity). +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/Continuous_imp_comm_Lim.con". + +(*#* +This is a tricky result: if [F] is continuous and positive in both [[a,b]] +and [(b,c]], then it is positive in [[a,c]]. +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/Continuous_imp_pos.con". + +(*#* +Similar results for increasing functions: +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/strict_inc_glues.con". + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/strict_inc_glues'.con". + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/strict_dec_glues.con". + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/strict_dec_glues'.con". + +(*#* More on glueing intervals. *) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/olor_pos_clor_nonneg.con". + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/olor_pos_olcr_nonneg.con". + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/olor_pos_clcr_nonneg.con". + +(*#* +Any function that has the null function as its derivative must be constant. +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/FConst_prop.con". + +(*#* As a corollary, two functions with the same derivative must differ +by a constant. +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/Feq_crit_with_const.con". + +(*#* This yields the following known result: any differential equation +of the form [f'=g] with initial condition [f(a) [=] b] has a unique solution. +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/Feq_criterium.con". + +(*#* +Finally, a well known result: any function with a (strictly) positive +derivative is (strictly) increasing. Although the two lemmas look +quite similar the proofs are completely different, both from the +formalization and from the mathematical point of view. +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/Derivative_imp_resp_less.con". + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/Derivative_imp_resp_leEq.con". + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/Derivative_imp_resp_less'.con". + +(*#* From these results we can finally prove that exponentiation to a +real power preserves the less or equal than relation! +*) + +(* UNEXPORTED +Opaque nring. +*) + +(* UNEXPORTED +Transparent nring. +*) + +inline procedural "cic:/CoRN/ftc/CalculusTheorems/nexp_resp_leEq_odd.con". + +(* UNEXPORTED +End Various_Theorems +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Composition.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Composition.mma new file mode 100644 index 000000000..2d2ebfbab --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Composition.mma @@ -0,0 +1,401 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Composition.v,v 1.4 2004/04/23 10:00:58 lcf Exp $ *) + +include "ftc/MoreFunctions.ma". + +(* UNEXPORTED +Section Maps_into_Compacts +*) + +(* UNEXPORTED +Section Part_Funct +*) + +(*#* *Composition + +Preservation results for functional composition are treated in this +separate file. We start by defining some auxiliary predicates, and +then prove the preservation of continuity through composition and the +chain rule for differentiation, both for compact and arbitrary +intervals. + +%\begin{convention}% Throughout this section: +- [a, b : IR] and [I] will denote [[a,b]]; +- [c, d : IR] and [J] will denote [[c,d]]; +- [F, F', G, G'] will be partial functions. + +%\end{convention}% + +** Maps into Compacts + +Both continuity and differentiability proofs require extra hypothesis +on the functions involved---namely, that every compact interval is +mapped into another compact interval. We define this concept for +partial functions, and prove some trivial results. +*) + +alias id "F" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/F.var". + +alias id "G" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/G.var". + +alias id "a" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/a.var". + +alias id "b" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/Hab.var". + +alias id "c" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/c.var". + +alias id "d" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/d.var". + +alias id "Hcd" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/Hcd.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/I.con" "Maps_into_Compacts__Part_Funct__". + +(* end hide *) + +(* begin show *) + +alias id "Hf" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/Hf.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/maps_into_compacts.con". + +(* begin show *) + +alias id "maps" = "cic:/CoRN/ftc/Composition/Maps_into_Compacts/Part_Funct/maps.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/maps_lemma'.con". + +inline procedural "cic:/CoRN/ftc/Composition/maps_lemma.con". + +inline procedural "cic:/CoRN/ftc/Composition/maps_lemma_less.con". + +inline procedural "cic:/CoRN/ftc/Composition/maps_lemma_inc.con". + +(* UNEXPORTED +End Part_Funct +*) + +(* UNEXPORTED +End Maps_into_Compacts +*) + +(* UNEXPORTED +Section Mapping +*) + +(*#* +As was the case for division of partial functions, this condition +completely characterizes the domain of the composite function. +*) + +alias id "F" = "cic:/CoRN/ftc/Composition/Mapping/F.var". + +alias id "G" = "cic:/CoRN/ftc/Composition/Mapping/G.var". + +alias id "a" = "cic:/CoRN/ftc/Composition/Mapping/a.var". + +alias id "b" = "cic:/CoRN/ftc/Composition/Mapping/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Composition/Mapping/Hab.var". + +alias id "c" = "cic:/CoRN/ftc/Composition/Mapping/c.var". + +alias id "d" = "cic:/CoRN/ftc/Composition/Mapping/d.var". + +alias id "Hcd" = "cic:/CoRN/ftc/Composition/Mapping/Hcd.var". + +(* begin show *) + +alias id "Hf" = "cic:/CoRN/ftc/Composition/Mapping/Hf.var". + +alias id "Hg" = "cic:/CoRN/ftc/Composition/Mapping/Hg.var". + +alias id "maps" = "cic:/CoRN/ftc/Composition/Mapping/maps.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/included_comp.con". + +(* UNEXPORTED +End Mapping +*) + +(* UNEXPORTED +Section Interval_Continuity +*) + +(*#* **Continuity + +We now prove that the composition of two continuous partial functions is continuous. +*) + +alias id "a" = "cic:/CoRN/ftc/Composition/Interval_Continuity/a.var". + +alias id "b" = "cic:/CoRN/ftc/Composition/Interval_Continuity/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Composition/Interval_Continuity/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Composition/Interval_Continuity/I.con" "Interval_Continuity__". + +(* end hide *) + +alias id "c" = "cic:/CoRN/ftc/Composition/Interval_Continuity/c.var". + +alias id "d" = "cic:/CoRN/ftc/Composition/Interval_Continuity/d.var". + +alias id "Hcd" = "cic:/CoRN/ftc/Composition/Interval_Continuity/Hcd.var". + +alias id "F" = "cic:/CoRN/ftc/Composition/Interval_Continuity/F.var". + +alias id "G" = "cic:/CoRN/ftc/Composition/Interval_Continuity/G.var". + +(* begin show *) + +alias id "contF" = "cic:/CoRN/ftc/Composition/Interval_Continuity/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/Composition/Interval_Continuity/contG.var". + +alias id "Hmap" = "cic:/CoRN/ftc/Composition/Interval_Continuity/Hmap.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/Continuous_I_comp.con". + +(* UNEXPORTED +End Interval_Continuity +*) + +(* UNEXPORTED +Section Derivative +*) + +(*#* **Derivative + +We now work with the derivative relation and prove the chain rule for partial functions. +*) + +alias id "F" = "cic:/CoRN/ftc/Composition/Derivative/F.var". + +alias id "F'" = "cic:/CoRN/ftc/Composition/Derivative/F'.var". + +alias id "G" = "cic:/CoRN/ftc/Composition/Derivative/G.var". + +alias id "G'" = "cic:/CoRN/ftc/Composition/Derivative/G'.var". + +alias id "a" = "cic:/CoRN/ftc/Composition/Derivative/a.var". + +alias id "b" = "cic:/CoRN/ftc/Composition/Derivative/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Composition/Derivative/Hab'.var". + +alias id "c" = "cic:/CoRN/ftc/Composition/Derivative/c.var". + +alias id "d" = "cic:/CoRN/ftc/Composition/Derivative/d.var". + +alias id "Hcd'" = "cic:/CoRN/ftc/Composition/Derivative/Hcd'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Composition/Derivative/Hab.con" "Derivative__". + +inline procedural "cic:/CoRN/ftc/Composition/Derivative/Hcd.con" "Derivative__". + +inline procedural "cic:/CoRN/ftc/Composition/Derivative/I.con" "Derivative__". + +(* end hide *) + +(* begin show *) + +alias id "derF" = "cic:/CoRN/ftc/Composition/Derivative/derF.var". + +alias id "derG" = "cic:/CoRN/ftc/Composition/Derivative/derG.var". + +alias id "Hmap" = "cic:/CoRN/ftc/Composition/Derivative/Hmap.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/included_comp'.con". + +inline procedural "cic:/CoRN/ftc/Composition/maps'.con". + +inline procedural "cic:/CoRN/ftc/Composition/Derivative_I_comp.con". + +(*#* +The next lemma will be useful when we move on to differentiability. +*) + +inline procedural "cic:/CoRN/ftc/Composition/Diffble_I_comp_aux.con". + +(* UNEXPORTED +End Derivative +*) + +(* UNEXPORTED +Section Differentiability +*) + +(*#* **Differentiability + +Finally, we move on to differentiability. +*) + +alias id "F" = "cic:/CoRN/ftc/Composition/Differentiability/F.var". + +alias id "G" = "cic:/CoRN/ftc/Composition/Differentiability/G.var". + +alias id "a" = "cic:/CoRN/ftc/Composition/Differentiability/a.var". + +alias id "b" = "cic:/CoRN/ftc/Composition/Differentiability/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Composition/Differentiability/Hab'.var". + +alias id "c" = "cic:/CoRN/ftc/Composition/Differentiability/c.var". + +alias id "d" = "cic:/CoRN/ftc/Composition/Differentiability/d.var". + +alias id "Hcd'" = "cic:/CoRN/ftc/Composition/Differentiability/Hcd'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Composition/Differentiability/Hab.con" "Differentiability__". + +inline procedural "cic:/CoRN/ftc/Composition/Differentiability/Hcd.con" "Differentiability__". + +inline procedural "cic:/CoRN/ftc/Composition/Differentiability/I.con" "Differentiability__". + +(* end hide *) + +(* begin show *) + +alias id "diffF" = "cic:/CoRN/ftc/Composition/Differentiability/diffF.var". + +alias id "diffG" = "cic:/CoRN/ftc/Composition/Differentiability/diffG.var". + +alias id "Hmap" = "cic:/CoRN/ftc/Composition/Differentiability/Hmap.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/Diffble_I_comp.con". + +(* UNEXPORTED +End Differentiability +*) + +(* UNEXPORTED +Section Generalized_Intervals +*) + +(*#* **Generalizations + +We now generalize this results to arbitrary intervals. We begin by generalizing the notion of mapping compacts into compacts. + +%\begin{convention}% We assume [I,J] to be proper intervals. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/I.var". + +alias id "J" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/J.var". + +alias id "pI" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/pI.var". + +alias id "pJ" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/pJ.var". + +inline procedural "cic:/CoRN/ftc/Composition/maps_compacts_into.con". + +(*#* +Now everything comes naturally: +*) + +inline procedural "cic:/CoRN/ftc/Composition/comp_inc_lemma.con". + +alias id "F" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/F.var". + +alias id "F'" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/F'.var". + +alias id "G" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/G.var". + +alias id "G'" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/G'.var". + +(* begin show *) + +alias id "Hmap" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/Hmap.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/Continuous_comp.con". + +(* begin show *) + +alias id "Hmap'" = "cic:/CoRN/ftc/Composition/Generalized_Intervals/Hmap'.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Composition/Derivative_comp.con". + +(* UNEXPORTED +End Generalized_Intervals +*) + +(* UNEXPORTED +Section Corollaries +*) + +(*#* +Finally, some criteria to prove that a function with a specific domain maps compacts into compacts: +*) + +inline procedural "cic:/CoRN/ftc/Composition/positive_fun.con". + +inline procedural "cic:/CoRN/ftc/Composition/negative_fun.con". + +inline procedural "cic:/CoRN/ftc/Composition/positive_imp_maps_compacts_into.con". + +inline procedural "cic:/CoRN/ftc/Composition/negative_imp_maps_compacts_into.con". + +inline procedural "cic:/CoRN/ftc/Composition/Continuous_imp_maps_compacts_into.con". + +(*#* +As a corollary, we get the generalization of differentiability property. +*) + +inline procedural "cic:/CoRN/ftc/Composition/Diffble_comp.con". + +(* UNEXPORTED +End Corollaries +*) + +(* UNEXPORTED +Hint Immediate included_comp: included. +*) + +(* UNEXPORTED +Hint Immediate Continuous_I_comp Continuous_comp: continuous. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Continuity.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Continuity.mma new file mode 100644 index 000000000..28b8c5efa --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Continuity.mma @@ -0,0 +1,405 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Continuity.v,v 1.6 2004/04/23 10:00:58 lcf Exp $ *) + +(*#* printing Norm_Funct %\ensuremath{\|\cdot\|}% *) + +include "reals/NRootIR.ma". + +include "ftc/FunctSums.ma". + +(* UNEXPORTED +Section Definitions_and_Basic_Results +*) + +(*#* *Continuity + +Constructively, continuity is the most fundamental property of any +function---so strongly that no example is known of a constructive +function that is not continuous. However, the classical definition of +continuity is not good for our purposes, as it is not true, for +example, that a function which is continuous in a compact interval is +uniformly continuous in that same interval (for a discussion of this +see Bishop 1967). Thus, our notion of continuity will be the uniform +one#. #%\footnote{%Similar remarks apply to convergence of sequences +of functions, which we will define ahead, and elsewhere; we will +refrain from discussing this issue at those places.%}.% + +%\begin{convention}% Throughout this section, [a] and [b] will be real +numbers, [I] will denote the compact interval [[a,b]] and +[F, G, H] will denote arbitrary partial functions with domains +respectively [P, Q] and [R]. +%\end{convention}% + +** Definitions and Basic Results + +Here we define continuity and prove some basic properties of continuous functions. +*) + +alias id "a" = "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/a.var". + +alias id "b" = "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/I.con" "Definitions_and_Basic_Results__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/P.con" "Definitions_and_Basic_Results__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I.con". + +(*#* +For convenience, we distinguish the two properties of continuous functions. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/contin_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/Continuity/contin_prop.con". + +(*#* +Assume [F] to be continuous in [I]. Then it has a least upper bound and a greater lower bound on [I]. +*) + +alias id "contF" = "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/contF.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Definitions_and_Basic_Results/Hinc'.con" "Definitions_and_Basic_Results__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_imp_tb_image.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_imp_lub.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_imp_glb.con". + +(*#* +We now make this glb and lub into operators. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/lub_funct.con". + +inline procedural "cic:/CoRN/ftc/Continuity/glb_funct.con". + +(*#* +These operators have the expected properties. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/lub_is_lub.con". + +inline procedural "cic:/CoRN/ftc/Continuity/glb_is_glb.con". + +inline procedural "cic:/CoRN/ftc/Continuity/glb_prop.con". + +inline procedural "cic:/CoRN/ftc/Continuity/lub_prop.con". + +(*#* +The norm of a function is defined as being the supremum of its absolute value; that is equivalent to the following definition (which is often more convenient to use). +*) + +inline procedural "cic:/CoRN/ftc/Continuity/Norm_Funct.con". + +(*#* +The norm effectively bounds the absolute value of a function. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/norm_bnd_AbsIR.con". + +(*#* +The following is another way of characterizing the norm: +*) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_imp_abs_lub.con". + +(*#* +We now prove some basic properties of the norm---namely that it is positive, and that it provides a least upper bound for the absolute value of its argument. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/positive_norm.con". + +inline procedural "cic:/CoRN/ftc/Continuity/norm_fun_lub.con". + +inline procedural "cic:/CoRN/ftc/Continuity/leEq_Norm_Funct.con". + +inline procedural "cic:/CoRN/ftc/Continuity/less_Norm_Funct.con". + +(* UNEXPORTED +End Definitions_and_Basic_Results +*) + +(* UNEXPORTED +Implicit Arguments Continuous_I [a b]. +*) + +(* UNEXPORTED +Implicit Arguments Norm_Funct [a b Hab F]. +*) + +(* UNEXPORTED +Section Local_Results +*) + +(*#* **Algebraic Properties + +We now state and prove some results about continuous functions. Assume that [I] is included in the domain of both [F] and [G]. +*) + +alias id "a" = "cic:/CoRN/ftc/Continuity/Local_Results/a.var". + +alias id "b" = "cic:/CoRN/ftc/Continuity/Local_Results/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Continuity/Local_Results/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Local_Results/I.con" "Local_Results__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/Continuity/Local_Results/F.var". + +alias id "G" = "cic:/CoRN/ftc/Continuity/Local_Results/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Local_Results/P.con" "Local_Results__". + +inline procedural "cic:/CoRN/ftc/Continuity/Local_Results/Q.con" "Local_Results__". + +(* end hide *) + +alias id "incF" = "cic:/CoRN/ftc/Continuity/Local_Results/incF.var". + +alias id "incG" = "cic:/CoRN/ftc/Continuity/Local_Results/incG.var". + +(*#* +The first result does not require the function to be continuous; however, its preconditions are easily verified by continuous functions, which justifies its inclusion in this section. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/cont_no_sign_change.con". + +inline procedural "cic:/CoRN/ftc/Continuity/cont_no_sign_change_pos.con". + +inline procedural "cic:/CoRN/ftc/Continuity/cont_no_sign_change_neg.con". + +(*#* +Being continuous is an extensional property. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_wd.con". + +(*#* +A continuous function remains continuous if you restrict its domain. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/included_imp_contin.con". + +(*#* +Constant functions and identity are continuous. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_const.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_id.con". + +(*#* +Assume [F] and [G] are continuous in [I]. Then functions derived from these through algebraic operations are also continuous, provided (in the case of reciprocal and division) some extra conditions are met. +*) + +alias id "contF" = "cic:/CoRN/ftc/Continuity/Local_Results/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/Continuity/Local_Results/contG.var". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_plus.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_inv.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_mult.con". + +(* UNEXPORTED +Opaque AbsIR Max. +*) + +(* UNEXPORTED +Transparent AbsIR Max. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_max.con". + +(* begin show *) + +alias id "Hg'" = "cic:/CoRN/ftc/Continuity/Local_Results/Hg'.var". + +alias id "Hg''" = "cic:/CoRN/ftc/Continuity/Local_Results/Hg''.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_recip.con". + +(* UNEXPORTED +End Local_Results +*) + +(* UNEXPORTED +Hint Resolve contin_imp_inc: included. +*) + +(* UNEXPORTED +Section Corolaries +*) + +alias id "a" = "cic:/CoRN/ftc/Continuity/Corolaries/a.var". + +alias id "b" = "cic:/CoRN/ftc/Continuity/Corolaries/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Continuity/Corolaries/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Corolaries/I.con" "Corolaries__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/Continuity/Corolaries/F.var". + +alias id "G" = "cic:/CoRN/ftc/Continuity/Corolaries/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Corolaries/P.con" "Corolaries__". + +inline procedural "cic:/CoRN/ftc/Continuity/Corolaries/Q.con" "Corolaries__". + +(* end hide *) + +alias id "contF" = "cic:/CoRN/ftc/Continuity/Corolaries/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/Continuity/Corolaries/contG.var". + +(*#* +The corresponding properties for subtraction, division and +multiplication by a scalar are easily proved as corollaries; +exponentiation is proved by induction, appealing to the results on +product and constant functions. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_minus.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_scal.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_nth.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_min.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_abs.con". + +alias id "Hg'" = "cic:/CoRN/ftc/Continuity/Corolaries/Hg'.var". + +alias id "Hg''" = "cic:/CoRN/ftc/Continuity/Corolaries/Hg''.var". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_div.con". + +(* UNEXPORTED +End Corolaries +*) + +(* UNEXPORTED +Section Other +*) + +(* UNEXPORTED +Section Sums +*) + +(*#* +We finally prove that the sum of an arbitrary family of continuous functions is still a continuous function. +*) + +alias id "a" = "cic:/CoRN/ftc/Continuity/Other/Sums/a.var". + +alias id "b" = "cic:/CoRN/ftc/Continuity/Other/Sums/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Continuity/Other/Sums/Hab.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Continuity/Other/Sums/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Other/Sums/I.con" "Other__Sums__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_Sum0.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_Sumx.con". + +inline procedural "cic:/CoRN/ftc/Continuity/Continuous_I_Sum.con". + +(* UNEXPORTED +End Sums +*) + +(*#* +For practical purposes, these characterization results are useful: +*) + +inline procedural "cic:/CoRN/ftc/Continuity/lub_charact.con". + +inline procedural "cic:/CoRN/ftc/Continuity/glb_charact.con". + +(*#* +The following result is also extremely useful, as it allows us to set a lower bound on the glb of a function. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/leEq_glb.con". + +(*#* +The norm is also an extensional property. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/Norm_Funct_wd.con". + +(*#* +The value of the norm is covariant with the length of the interval. +*) + +inline procedural "cic:/CoRN/ftc/Continuity/included_imp_norm_leEq.con". + +(* UNEXPORTED +End Other +*) + +(* UNEXPORTED +Hint Resolve Continuous_I_const Continuous_I_id Continuous_I_plus + Continuous_I_inv Continuous_I_minus Continuous_I_mult Continuous_I_scal + Continuous_I_recip Continuous_I_max Continuous_I_min Continuous_I_div + Continuous_I_nth Continuous_I_abs: continuous. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Derivative.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Derivative.mma new file mode 100644 index 000000000..5b43f6380 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Derivative.mma @@ -0,0 +1,178 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Derivative.v,v 1.7 2004/04/23 10:00:58 lcf Exp $ *) + +include "ftc/Continuity.ma". + +(* UNEXPORTED +Section Definitions +*) + +(*#* *Derivatives + +We will now proceed toward the development of differential calculus. +To begin with, the main notion is that of derivative. + +At this stage we will not define a notion of differentiable function, +mainly because the natural definition (that of being a function which +has some derivative) poses some technical problems; thus, we will +postpone that part of our work to a subsequent stage. + +Derivative is a binary relation in the type of partial functions, +dependent (once again) on a compact interval with distinct +endpoints#. #%\footnote{%As before, we do not define pointwise +differentiability, mainly for coherence reasons. See Bishop [1967] +for a discussion on the relative little interest of that concept.%}.% +The reason for requiring the endpoints to be apart is mainly to be +able to derive the usual properties of the derivative +relation---namely, that any two derivatives of the same function must +coincide. + +%\begin{convention}% Let [a,b:IR] with [a [<] b] and denote by [I] the +interval [[a,b]]. Throughout this chapter, [F, F', G, G'] and [H] +will be partial functions with domains respectively [P, P', Q, Q'] and +[R]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/Derivative/Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/Derivative/Definitions/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Derivative/Definitions/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Derivative/Definitions/Hab.con" "Definitions__". + +inline procedural "cic:/CoRN/ftc/Derivative/Definitions/I.con" "Definitions__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/Derivative/Definitions/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Derivative/Definitions/P.con" "Definitions__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Derivative/Derivative_I.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Implicit Arguments Derivative_I [a b]. +*) + +(* UNEXPORTED +Section Basic_Properties +*) + +(*#* **Basic Properties +*) + +alias id "a" = "cic:/CoRN/ftc/Derivative/Basic_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/Derivative/Basic_Properties/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Derivative/Basic_Properties/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Derivative/Basic_Properties/Hab.con" "Basic_Properties__". + +inline procedural "cic:/CoRN/ftc/Derivative/Basic_Properties/I.con" "Basic_Properties__". + +(* end hide *) + +(*#* +Like we did for equality, we begin by stating a lemma that makes proofs of derivation easier in practice. +*) + +inline procedural "cic:/CoRN/ftc/Derivative/Derivative_I_char.con". + +(* end hide *) + +(*#* +Derivative is a well defined relation; we will make this explicit for both arguments: +*) + +alias id "F" = "cic:/CoRN/ftc/Derivative/Basic_Properties/F.var". + +alias id "G" = "cic:/CoRN/ftc/Derivative/Basic_Properties/G.var". + +alias id "H" = "cic:/CoRN/ftc/Derivative/Basic_Properties/H.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Derivative/Basic_Properties/P.con" "Basic_Properties__". + +inline procedural "cic:/CoRN/ftc/Derivative/Basic_Properties/Q.con" "Basic_Properties__". + +inline procedural "cic:/CoRN/ftc/Derivative/Basic_Properties/R.con" "Basic_Properties__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Derivative/Derivative_I_wdl.con". + +inline procedural "cic:/CoRN/ftc/Derivative/Derivative_I_wdr.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Derivative/Basic_Properties/Derivative_I_unique_lemma.con" "Basic_Properties__". + +(* end hide *) + +(*#* +Derivative is unique. +*) + +inline procedural "cic:/CoRN/ftc/Derivative/Derivative_I_unique.con". + +(*#* +Finally, the set where we are considering the relation is included in the domain of both functions. +*) + +inline procedural "cic:/CoRN/ftc/Derivative/derivative_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/Derivative/derivative_imp_inc'.con". + +(*#* +Any function that is or has a derivative is continuous. +*) + +alias id "Hab''" = "cic:/CoRN/ftc/Derivative/Basic_Properties/Hab''.var". + +inline procedural "cic:/CoRN/ftc/Derivative/deriv_imp_contin'_I.con". + +inline procedural "cic:/CoRN/ftc/Derivative/deriv_imp_contin_I.con". + +(* UNEXPORTED +End Basic_Properties +*) + +(*#* +If [G] is the derivative of [F] in a given interval, then [G] is also the derivative of [F] in any smaller interval. +*) + +inline procedural "cic:/CoRN/ftc/Derivative/included_imp_deriv.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/DerivativeOps.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/DerivativeOps.mma new file mode 100644 index 000000000..2f2ac499e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/DerivativeOps.mma @@ -0,0 +1,233 @@ +(**************************************************************************) +(* ___ *) +(* ||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: DerivativeOps.v,v 1.3 2004/04/23 10:00:58 lcf Exp $ *) + +include "ftc/Derivative.ma". + +(* UNEXPORTED +Section Lemmas +*) + +(*#* **Algebraic Operations + +We will now prove the main results about deriving functions built from +the algebraic operators#. #%\footnote{%Composition presents some +tricky questions, and is therefore discussed in a separated +context.%}.% + +[F'] and [G'] will be the derivatives, respectively, of [F] and [G]. + +We begin with some technical stuff that will be necessary for division. +*) + +alias id "a" = "cic:/CoRN/ftc/DerivativeOps/Lemmas/a.var". + +alias id "b" = "cic:/CoRN/ftc/DerivativeOps/Lemmas/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/DerivativeOps/Lemmas/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Lemmas/I.con" "Lemmas__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/DerivativeOps/Lemmas/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Lemmas/P.con" "Lemmas__". + +(* end hide *) + +(* begin show *) + +alias id "Fbnd" = "cic:/CoRN/ftc/DerivativeOps/Lemmas/Fbnd.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/bnd_away_zero_square.con". + +(* UNEXPORTED +End Lemmas +*) + +(* UNEXPORTED +Hint Resolve bnd_away_zero_square: included. +*) + +(* UNEXPORTED +Section Local_Results +*) + +(*#* **Local Results + +We can now derive all the usual rules for deriving constant and identity functions, sums, inverses and products of functions with a known derivative. +*) + +alias id "a" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/a.var". + +alias id "b" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Local_Results/Hab.con" "Local_Results__". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Local_Results/I.con" "Local_Results__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_const.con". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_id.con". + +alias id "F" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/F.var". + +alias id "F'" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/F'.var". + +alias id "G" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/G.var". + +alias id "G'" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/G'.var". + +alias id "derF" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/derF.var". + +alias id "derG" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/derG.var". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_plus.con". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_inv.con". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_mult.con". + +(*#* +As was the case for continuity, the rule for the reciprocal function has a side condition. +*) + +(* begin show *) + +alias id "Fbnd" = "cic:/CoRN/ftc/DerivativeOps/Local_Results/Fbnd.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_recip.con". + +(* UNEXPORTED +End Local_Results +*) + +(* UNEXPORTED +Hint Immediate derivative_imp_inc derivative_imp_inc': included. +*) + +(* UNEXPORTED +Hint Resolve Derivative_I_const Derivative_I_id Derivative_I_plus + Derivative_I_inv Derivative_I_mult Derivative_I_recip: derivate. +*) + +(* UNEXPORTED +Section Corolaries +*) + +alias id "a" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/a.var". + +alias id "b" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Corolaries/Hab.con" "Corolaries__". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Corolaries/I.con" "Corolaries__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/F.var". + +alias id "F'" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/F'.var". + +alias id "G" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/G.var". + +alias id "G'" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/G'.var". + +alias id "derF" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/derF.var". + +alias id "derG" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/derG.var". + +(*#* +From this lemmas the rules for the other algebraic operations follow directly. +*) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_minus.con". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_scal.con". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_nth.con". + +alias id "Gbnd" = "cic:/CoRN/ftc/DerivativeOps/Corolaries/Gbnd.var". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_div.con". + +(* UNEXPORTED +End Corolaries +*) + +(* UNEXPORTED +Hint Resolve Derivative_I_minus Derivative_I_nth Derivative_I_scal + Derivative_I_div: derivate. +*) + +(* UNEXPORTED +Section Derivative_Sums +*) + +(*#* The derivation rules for families of functions are easily proved by +induction using the constant and addition rules. +*) + +alias id "a" = "cic:/CoRN/ftc/DerivativeOps/Derivative_Sums/a.var". + +alias id "b" = "cic:/CoRN/ftc/DerivativeOps/Derivative_Sums/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/DerivativeOps/Derivative_Sums/Hab.var". + +alias id "Hab'" = "cic:/CoRN/ftc/DerivativeOps/Derivative_Sums/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_Sums/I.con" "Derivative_Sums__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_Sum0.con". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_Sumx.con". + +inline procedural "cic:/CoRN/ftc/DerivativeOps/Derivative_I_Sum.con". + +(* UNEXPORTED +End Derivative_Sums +*) + +(* UNEXPORTED +Hint Resolve Derivative_I_Sum0 Derivative_I_Sum Derivative_I_Sumx: derivate. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Differentiability.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Differentiability.mma new file mode 100644 index 000000000..e0f259017 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Differentiability.mma @@ -0,0 +1,273 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Differentiability.v,v 1.5 2004/04/20 22:38:49 hinderer Exp $ *) + +include "ftc/PartInterval.ma". + +include "ftc/DerivativeOps.ma". + +(* UNEXPORTED +Section Definitions +*) + +(*#* *Differentiability + +We will now use our work on derivatives to define a notion of +differentiable function and prove its main properties. + +%\begin{convention}% Throughout this section, [a,b] will be real +numbers with [a [<] b], [I] will denote the interval [[a,b]] +and [F,G,H] will be differentiable functions. +%\end{convention}% + +Usually a function [F] is said to be differentiable in a proper +compact interval [[a,b]] if there exists another function [F'] +such that [F'] is a derivative of [F] in that interval. There is a +problem in formalizing this definition, as we pointed out earlier on, +which is that if we simply write it down as is we are not able to get +such a function [F'] from a hypothesis that [F] is differentiable. + +However, it turns out that this is not altogether the best definition +for the following reason: if we say that [F] is differentiable in +[[a,b]], we mean that there is a partial function [F'] which is +defined in [[a,b]] and satisfies a certain condition in that +interval but nothing is required of the behaviour of the function +outside [[a,b]]. Thus we can argue that, from a mathematical +point of view, the [F'] that we get eliminating a hypothesis of +differentiability should be defined exactly on that interval. If we +do this, we can quantify over the set of setoid functions in that +interval and eliminate the existencial quantifier without any +problems. +*) + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Implicit Arguments Diffble_I [a b]. +*) + +(* UNEXPORTED +Section Local_Properties +*) + +(*#* +From this point on, we just prove results analogous to the ones for derivability. + +A function differentiable in [[a,b]] is differentiable in every proper compact subinterval of [[a,b]]. +*) + +inline procedural "cic:/CoRN/ftc/Differentiability/included_imp_diffble.con". + +(*#* +A function differentiable in an interval is everywhere defined in that interval. +*) + +alias id "a" = "cic:/CoRN/ftc/Differentiability/Local_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/Differentiability/Local_Properties/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Differentiability/Local_Properties/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Differentiability/Local_Properties/Hab.con" "Local_Properties__". + +inline procedural "cic:/CoRN/ftc/Differentiability/Local_Properties/I.con" "Local_Properties__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Differentiability/diffble_imp_inc.con". + +(*#* +If a function has a derivative in an interval then it is differentiable in that interval. +*) + +inline procedural "cic:/CoRN/ftc/Differentiability/deriv_imp_Diffble_I.con". + +(* UNEXPORTED +End Local_Properties +*) + +(* UNEXPORTED +Hint Resolve diffble_imp_inc: included. +*) + +(* UNEXPORTED +Section Operations +*) + +(*#* +All the algebraic results carry on. +*) + +alias id "a" = "cic:/CoRN/ftc/Differentiability/Operations/a.var". + +alias id "b" = "cic:/CoRN/ftc/Differentiability/Operations/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Differentiability/Operations/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Differentiability/Operations/Hab.con" "Operations__". + +inline procedural "cic:/CoRN/ftc/Differentiability/Operations/I.con" "Operations__". + +(* end hide *) + +(* UNEXPORTED +Section Constants +*) + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_const.con". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_id.con". + +(* UNEXPORTED +End Constants +*) + +(* UNEXPORTED +Section Well_Definedness +*) + +alias id "F" = "cic:/CoRN/ftc/Differentiability/Operations/Well_Definedness/F.var". + +alias id "H" = "cic:/CoRN/ftc/Differentiability/Operations/Well_Definedness/H.var". + +alias id "diffF" = "cic:/CoRN/ftc/Differentiability/Operations/Well_Definedness/diffF.var". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_wd.con". + +(* UNEXPORTED +End Well_Definedness +*) + +alias id "F" = "cic:/CoRN/ftc/Differentiability/Operations/F.var". + +alias id "G" = "cic:/CoRN/ftc/Differentiability/Operations/G.var". + +alias id "diffF" = "cic:/CoRN/ftc/Differentiability/Operations/diffF.var". + +alias id "diffG" = "cic:/CoRN/ftc/Differentiability/Operations/diffG.var". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_plus.con". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_inv.con". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_mult.con". + +(* begin show *) + +alias id "Gbnd" = "cic:/CoRN/ftc/Differentiability/Operations/Gbnd.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_recip.con". + +(* UNEXPORTED +End Operations +*) + +(* UNEXPORTED +Section Corollaries +*) + +alias id "a" = "cic:/CoRN/ftc/Differentiability/Corollaries/a.var". + +alias id "b" = "cic:/CoRN/ftc/Differentiability/Corollaries/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Differentiability/Corollaries/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Differentiability/Corollaries/Hab.con" "Corollaries__". + +inline procedural "cic:/CoRN/ftc/Differentiability/Corollaries/I.con" "Corollaries__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/Differentiability/Corollaries/F.var". + +alias id "G" = "cic:/CoRN/ftc/Differentiability/Corollaries/G.var". + +alias id "diffF" = "cic:/CoRN/ftc/Differentiability/Corollaries/diffF.var". + +alias id "diffG" = "cic:/CoRN/ftc/Differentiability/Corollaries/diffG.var". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_minus.con". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_scal.con". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_nth.con". + +alias id "Gbnd" = "cic:/CoRN/ftc/Differentiability/Corollaries/Gbnd.var". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_div.con". + +(* UNEXPORTED +End Corollaries +*) + +(* UNEXPORTED +Section Other_Properties +*) + +(*#* +Differentiability of families of functions is proved by +induction using the constant and addition rules. +*) + +alias id "a" = "cic:/CoRN/ftc/Differentiability/Other_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/Differentiability/Other_Properties/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Differentiability/Other_Properties/Hab'.var". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_Sum0.con". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_Sumx.con". + +inline procedural "cic:/CoRN/ftc/Differentiability/Diffble_I_Sum.con". + +(* UNEXPORTED +End Other_Properties +*) + +(*#* +Finally, a differentiable function is continuous. + +%\begin{convention}% Let [F] be a partial function with derivative [F'] on [I]. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/ftc/Differentiability/diffble_imp_contin_I.con". + +(* UNEXPORTED +Hint Immediate included_imp_contin deriv_imp_contin_I deriv_imp_contin'_I + diffble_imp_contin_I: continuous. +*) + +(* UNEXPORTED +Hint Immediate included_imp_deriv: derivate. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/FTC.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/FTC.mma new file mode 100644 index 000000000..9412847b9 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/FTC.mma @@ -0,0 +1,371 @@ +(**************************************************************************) +(* ___ *) +(* ||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: FTC.v,v 1.5 2004/04/23 10:00:58 lcf Exp $ *) + +(*#* printing [-S-] %\ensuremath{\int}% #∫# *) + +include "ftc/MoreIntegrals.ma". + +include "ftc/CalculusTheorems.ma". + +(* UNEXPORTED +Opaque Min. +*) + +(* UNEXPORTED +Section Indefinite_Integral +*) + +(*#* *The Fundamental Theorem of Calculus + +Finally we can prove the fundamental theorem of calculus and its most +important corollaries, which are the main tools to formalize most of +real analysis. + +**Indefinite Integrals + +We define the indefinite integral of a function in a proper interval +in the obvious way; we just need to state a first lemma so that the +continuity proofs become unnecessary. + +%\begin{convention}% Let [I : interval], [F : PartIR] be continuous in [I] +and [a] be a point in [I]. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/FTC/Indefinite_Integral/I.var". + +alias id "F" = "cic:/CoRN/ftc/FTC/Indefinite_Integral/F.var". + +alias id "contF" = "cic:/CoRN/ftc/FTC/Indefinite_Integral/contF.var". + +alias id "a" = "cic:/CoRN/ftc/FTC/Indefinite_Integral/a.var". + +alias id "Ha" = "cic:/CoRN/ftc/FTC/Indefinite_Integral/Ha.var". + +inline procedural "cic:/CoRN/ftc/FTC/prim_lemma.con". + +inline procedural "cic:/CoRN/ftc/FTC/Fprim_strext.con". + +inline procedural "cic:/CoRN/ftc/FTC/Fprim.con". + +(* UNEXPORTED +End Indefinite_Integral +*) + +(* UNEXPORTED +Implicit Arguments Fprim [I F]. +*) + +(* NOTATION +Notation "[-S-] F" := (Fprim F) (at level 20). +*) + +(* UNEXPORTED +Section FTC +*) + +(*#* **The FTC + +We can now prove our main theorem. We begin by remarking that the +primitive function is always continuous. + +%\begin{convention}% Assume that [J : interval], [F : PartIR] is +continuous in [J] and [x0] is a point in [J]. Denote by [G] the +indefinite integral of [F] from [x0]. +%\end{convention}% +*) + +alias id "J" = "cic:/CoRN/ftc/FTC/FTC/J.var". + +alias id "F" = "cic:/CoRN/ftc/FTC/FTC/F.var". + +alias id "contF" = "cic:/CoRN/ftc/FTC/FTC/contF.var". + +alias id "x0" = "cic:/CoRN/ftc/FTC/FTC/x0.var". + +alias id "Hx0" = "cic:/CoRN/ftc/FTC/FTC/Hx0.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FTC/FTC/G.con" "FTC__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/FTC/Continuous_prim.con". + +(*#* +The derivative of [G] is simply [F]. +*) + +alias id "pJ" = "cic:/CoRN/ftc/FTC/FTC/pJ.var". + +inline procedural "cic:/CoRN/ftc/FTC/FTC1.con". + +(*#* +Any other function [G0] with derivative [F] must differ from [G] by a constant. +*) + +alias id "G0" = "cic:/CoRN/ftc/FTC/FTC/G0.var". + +alias id "derG0" = "cic:/CoRN/ftc/FTC/FTC/derG0.var". + +inline procedural "cic:/CoRN/ftc/FTC/FTC2.con". + +(*#* +The following is another statement of the Fundamental Theorem of Calculus, also known as Barrow's rule. +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FTC/FTC/G0_inc.con" "FTC__". + +(* end hide *) + +(* UNEXPORTED +Opaque G. +*) + +inline procedural "cic:/CoRN/ftc/FTC/Barrow.con". + +(* end hide *) + +(* UNEXPORTED +End FTC +*) + +(* UNEXPORTED +Hint Resolve Continuous_prim: continuous. +*) + +(* UNEXPORTED +Hint Resolve FTC1: derivate. +*) + +(* UNEXPORTED +Section Limit_of_Integral_Seq +*) + +(*#* **Corollaries + +With these tools in our hand, we can prove several useful results. + +%\begin{convention}% From this point onwards: + - [J : interval]; + - [f : nat->PartIR] is a sequence of continuous functions (in [J]); + - [F : PartIR] is continuous in [J]. + +%\end{convention}% + +In the first place, if a sequence of continuous functions converges +then the sequence of their primitives also converges, and the limit +commutes with the indefinite integral. +*) + +alias id "J" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/J.var". + +alias id "f" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/f.var". + +alias id "F" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/F.var". + +alias id "contf" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/contf.var". + +alias id "contF" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/contF.var". + +(* UNEXPORTED +Section Compact +*) + +(*#* +We need to prove this result first for compact intervals. + +%\begin{convention}% Assume that [a, b, x0 : IR] with [(f n)] and [F] +continuous in [[a,b]], $x0\in[a,b]$#x0∈[a,b]#; denote by +[(g n)] and [G] the indefinite integrals respectively of [(f n)] and +[F] with origin [x0]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/a.var". + +alias id "b" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/Hab.var". + +alias id "contIf" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/contIf.var". + +alias id "contIF" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/contIF.var". + +(* begin show *) + +alias id "convF" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/convF.var". + +(* end show *) + +alias id "x0" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/x0.var". + +alias id "Hx0" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/Hx0.var". + +alias id "Hx0'" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/Hx0'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/g.con" "Limit_of_Integral_Seq__Compact__". + +inline procedural "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/G.con" "Limit_of_Integral_Seq__Compact__". + +(* end hide *) + +(* begin show *) + +alias id "contg" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/contg.var". + +alias id "contG" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/Compact/contG.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/FTC/fun_lim_seq_integral.con". + +(* UNEXPORTED +End Compact +*) + +(*#* +And now we can generalize it step by step. +*) + +inline procedural "cic:/CoRN/ftc/FTC/limit_of_integral.con". + +inline procedural "cic:/CoRN/ftc/FTC/limit_of_Integral.con". + +(* UNEXPORTED +Section General +*) + +(*#* +Finally, with [x0, g, G] as before, +*) + +(* begin show *) + +alias id "convF" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/General/convF.var". + +(* end show *) + +alias id "x0" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/General/x0.var". + +alias id "Hx0" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/General/Hx0.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/General/g.con" "Limit_of_Integral_Seq__General__". + +inline procedural "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/General/G.con" "Limit_of_Integral_Seq__General__". + +(* end hide *) + +alias id "contg" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/General/contg.var". + +alias id "contG" = "cic:/CoRN/ftc/FTC/Limit_of_Integral_Seq/General/contG.var". + +inline procedural "cic:/CoRN/ftc/FTC/fun_lim_seq_integral_IR.con". + +(* UNEXPORTED +End General +*) + +(* UNEXPORTED +End Limit_of_Integral_Seq +*) + +(* UNEXPORTED +Section Limit_of_Derivative_Seq +*) + +(*#* +Similar results hold for the sequence of derivatives of a converging sequence; this time the proof is easier, as we can do it directly for any kind of interval. + +%\begin{convention}% Let [g] be the sequence of derivatives of [f] and [G] be the derivative of [F]. +%\end{convention}% +*) + +alias id "J" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/J.var". + +alias id "pJ" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/pJ.var". + +alias id "f" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/f.var". + +alias id "g" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/g.var". + +alias id "F" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/F.var". + +alias id "G" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/G.var". + +alias id "contf" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/contf.var". + +alias id "contF" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/contF.var". + +alias id "convF" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/convF.var". + +alias id "contg" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/contg.var". + +alias id "contG" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/contG.var". + +alias id "convG" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/convG.var". + +alias id "derf" = "cic:/CoRN/ftc/FTC/Limit_of_Derivative_Seq/derf.var". + +inline procedural "cic:/CoRN/ftc/FTC/fun_lim_seq_derivative.con". + +(* UNEXPORTED +End Limit_of_Derivative_Seq +*) + +(* UNEXPORTED +Section Derivative_Series +*) + +(*#* +As a very important case of this result, we get a rule for deriving series. +*) + +alias id "J" = "cic:/CoRN/ftc/FTC/Derivative_Series/J.var". + +alias id "pJ" = "cic:/CoRN/ftc/FTC/Derivative_Series/pJ.var". + +alias id "f" = "cic:/CoRN/ftc/FTC/Derivative_Series/f.var". + +alias id "g" = "cic:/CoRN/ftc/FTC/Derivative_Series/g.var". + +(* begin show *) + +alias id "convF" = "cic:/CoRN/ftc/FTC/Derivative_Series/convF.var". + +alias id "convG" = "cic:/CoRN/ftc/FTC/Derivative_Series/convG.var". + +(* end show *) + +alias id "derF" = "cic:/CoRN/ftc/FTC/Derivative_Series/derF.var". + +inline procedural "cic:/CoRN/ftc/FTC/Derivative_FSeries.con". + +(* UNEXPORTED +End Derivative_Series +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSequence.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSequence.mma new file mode 100644 index 000000000..3fac327f1 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSequence.mma @@ -0,0 +1,504 @@ +(**************************************************************************) +(* ___ *) +(* ||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: FunctSequence.v,v 1.5 2004/04/23 10:00:58 lcf Exp $ *) + +include "ftc/Continuity.ma". + +include "ftc/PartInterval.ma". + +(* UNEXPORTED +Section Definitions +*) + +(*#* *Sequences of Functions + +In this file we define some more operators on functions, namely +sequences and limits. These concepts are defined only for continuous +functions. + +%\begin{convention}% Throughout this section: + - [a] and [b] will be real numbers and the interval [[a,b]] +will be denoted by [I]; + - [f, g] and [h] will denote sequences of continuous functions; + - [F, G] and [H] will denote continuous functions. + +%\end{convention}% + +**Definitions + +A sequence of functions is simply an object of type [nat->PartIR]. +However, we will be interested mostly in convergent and Cauchy +sequences. Several definitions of these concepts will be formalized; +they mirror the several different ways in which a Cauchy sequence can +be defined. For a discussion on the different notions of convergent +see Bishop 1967. +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSequence/Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSequence/Definitions/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSequence/Definitions/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Definitions/I.con" "Definitions__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSequence/Definitions/f.var". + +alias id "F" = "cic:/CoRN/ftc/FunctSequence/Definitions/F.var". + +alias id "contf" = "cic:/CoRN/ftc/FunctSequence/Definitions/contf.var". + +alias id "contF" = "cic:/CoRN/ftc/FunctSequence/Definitions/contF.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Definitions/incf.con" "Definitions__". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Definitions/incF.con" "Definitions__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_norm_fun_seq.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq1.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq2.con". + +(*#* +These definitions are all shown to be equivalent. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq_seq'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq'_seq.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_Cauchy_fun_seq'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq_seq2.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq2_seq.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq'_norm.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_norm_seq.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq1_seq'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq'_seq1.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq_seq1.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq1_seq.con". + +(*#* +A Cauchy sequence of functions is pointwise a Cauchy sequence. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_real.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Section More_Definitions +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSequence/More_Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSequence/More_Definitions/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSequence/More_Definitions/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/More_Definitions/I.con" "More_Definitions__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSequence/More_Definitions/f.var". + +alias id "contf" = "cic:/CoRN/ftc/FunctSequence/More_Definitions/contf.var". + +(*#* +We can also say that [f] is simply convergent if it converges to some +continuous function. Notice that we do not quantify directly over +partial functions, for reasons which were already explained. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq.con". + +(*#* +It is useful to extract the limit as a partial function: +*) + +(* begin show *) + +alias id "H" = "cic:/CoRN/ftc/FunctSequence/More_Definitions/H.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq_Lim.con". + +(* UNEXPORTED +End More_Definitions +*) + +(* UNEXPORTED +Section Irrelevance_of_Proofs +*) + +(*#* **Irrelevance of Proofs + +This section contains a number of technical results stating mainly that being a Cauchy sequence or converging to some limit is a property of the sequence itself and independent of the proofs we supply of its continuity or the continuity of its limit. +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/I.con" "Irrelevance_of_Proofs__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/f.var". + +(* begin show *) + +alias id "contf" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/contf.var". + +alias id "contf0" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/contf0.var". + +(* end show *) + +alias id "F" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/F.var". + +(* begin show *) + +alias id "contF" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/contF.var". + +alias id "contF0" = "cic:/CoRN/ftc/FunctSequence/Irrelevance_of_Proofs/contF0.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq'_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq'_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq2_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_norm_fun_seq_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq1_wd.con". + +(* UNEXPORTED +End Irrelevance_of_Proofs +*) + +(* UNEXPORTED +Section More_Proof_Irrelevance +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq_wd.con". + +(* UNEXPORTED +End More_Proof_Irrelevance +*) + +(* UNEXPORTED +Section More_Properties +*) + +(*#* **Other Properties + +Still more technical details---a convergent sequence converges to its +limit; the limit is a continuous function; and convergence is well +defined with respect to functional equality in the interval [[a,b]]. +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSequence/More_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSequence/More_Properties/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSequence/More_Properties/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/More_Properties/I.con" "More_Properties__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSequence/More_Properties/f.var". + +alias id "g" = "cic:/CoRN/ftc/FunctSequence/More_Properties/g.var". + +(* begin show *) + +alias id "contf" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contf.var". + +alias id "contf0" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contf0.var". + +alias id "contg" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contg.var". + +alias id "contg0" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contg0.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_conv_fun_seq'.con". + +alias id "F" = "cic:/CoRN/ftc/FunctSequence/More_Properties/F.var". + +alias id "G" = "cic:/CoRN/ftc/FunctSequence/More_Properties/G.var". + +(* begin show *) + +alias id "contF" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contF.var". + +alias id "contF0" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contF0.var". + +alias id "contG" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contG.var". + +alias id "contG0" = "cic:/CoRN/ftc/FunctSequence/More_Properties/contG0.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq'_wdl.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq'_wdr.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq'_wdl'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_fun_seq'_wdr'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_fun_seq_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_cont_Lim.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Cauchy_conv_fun_seq.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/conv_Cauchy_fun_seq.con". + +(*#* +More interesting is the fact that a convergent sequence of functions converges pointwise as a sequence of real numbers. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_conv_imp_seq_conv.con". + +(*#* +And a sequence of real numbers converges iff the corresponding sequence of constant functions converges to the corresponding constant function. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/seq_conv_imp_fun_conv.con". + +(* UNEXPORTED +End More_Properties +*) + +(* UNEXPORTED +Hint Resolve Cauchy_cont_Lim: continuous. +*) + +(* UNEXPORTED +Section Algebraic_Properties +*) + +(*#* **Algebraic Properties + +We now study how convergence is affected by algebraic operations, and some algebraic properties of the limit function. +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/I.con" "Algebraic_Properties__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/f.var". + +alias id "g" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/g.var". + +alias id "contf" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/contf.var". + +alias id "contg" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/contg.var". + +(*#* +First, the limit function is unique. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/FLim_unique.con". + +(*#* Constant sequences (not sequences of constant functions!) always converge. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_const.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Cauchy_prop_const.con". + +(*#* +We now prove that if two sequences converge than their sum (difference, product) also converge to the sum (difference, product) of their limits. +*) + +alias id "F" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/F.var". + +alias id "G" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/G.var". + +alias id "contF" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/contG.var". + +(* begin show *) + +alias id "convF" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/convF.var". + +alias id "convG" = "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/convG.var". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/incf.con" "Algebraic_Properties__". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/incg.con" "Algebraic_Properties__". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/incF.con" "Algebraic_Properties__". + +inline procedural "cic:/CoRN/ftc/FunctSequence/Algebraic_Properties/incG.con" "Algebraic_Properties__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_plus'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_minus'.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_mult'.con". + +(* UNEXPORTED +End Algebraic_Properties +*) + +(* UNEXPORTED +Section More_Algebraic_Properties +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/I.con" "More_Algebraic_Properties__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/f.var". + +alias id "g" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/g.var". + +alias id "contf" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/contf.var". + +alias id "contg" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/contg.var". + +(*#* +The same is true if we don't make the limits explicit. +*) + +(* begin hide *) + +alias id "Hf" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/Hf.var". + +alias id "Hg" = "cic:/CoRN/ftc/FunctSequence/More_Algebraic_Properties/Hg.var". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_plus.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Cauchy_prop_plus.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_minus.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Cauchy_prop_minus.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_mult.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Cauchy_prop_mult.con". + +(* UNEXPORTED +End More_Algebraic_Properties +*) + +(* UNEXPORTED +Section Still_More_Algebraic_Properties +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSequence/Still_More_Algebraic_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSequence/Still_More_Algebraic_Properties/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSequence/Still_More_Algebraic_Properties/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSequence/Still_More_Algebraic_Properties/I.con" "Still_More_Algebraic_Properties__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSequence/Still_More_Algebraic_Properties/f.var". + +alias id "contf" = "cic:/CoRN/ftc/FunctSequence/Still_More_Algebraic_Properties/contf.var". + +alias id "Hf" = "cic:/CoRN/ftc/FunctSequence/Still_More_Algebraic_Properties/Hf.var". + +(*#* +As a corollary, we get the analogous property for the sequence of algebraic inverse functions. +*) + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Lim_seq_inv.con". + +inline procedural "cic:/CoRN/ftc/FunctSequence/fun_Cauchy_prop_inv.con". + +(* UNEXPORTED +End Still_More_Algebraic_Properties +*) + +(* UNEXPORTED +Hint Resolve Continuous_I_Sum Continuous_I_Sumx Continuous_I_Sum0: continuous. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSeries.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSeries.mma new file mode 100644 index 000000000..1ea656200 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSeries.mma @@ -0,0 +1,364 @@ +(**************************************************************************) +(* ___ *) +(* ||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: FunctSeries.v,v 1.6 2004/04/23 10:00:58 lcf Exp $ *) + +include "ftc/FunctSequence.ma". + +include "reals/Series.ma". + +(*#* printing fun_seq_part_sum %\ensuremath{\sum^n}% #∑n# *) + +(*#* printing Fun_Series_Sum %\ensuremath{\sum_0^{\infty}}% #∑0# *) + +(* UNEXPORTED +Section Definitions +*) + +(*#* *Series of Functions + +We now turn our attention to series of functions. Like it was already +the case for sequences, we will mainly rewrite the results we proved +for series of real numbers in a different way. + +%\begin{convention}% Throughout this section: + - [a] and [b] will be real numbers and the interval [[a,b]] will be denoted +by [I]; + - [f, g] and [h] will denote sequences of continuous functions; + - [F, G] and [H] will denote continuous functions. + +%\end{convention}% + +** Definitions + +As before, we will consider only sequences of continuous functions +defined in a compact interval. For this, partial sums are defined and +convergence is simply the convergence of the sequence of partial sums. +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSeries/Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSeries/Definitions/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSeries/Definitions/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/Definitions/I.con" "Definitions__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSeries/Definitions/f.var". + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_seq_part_sum.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_seq_part_sum_cont.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_series_convergent.con". + +(*#* +For what comes up next we need to know that the convergence of a +series of functions implies pointwise convergence of the corresponding +real number series. +*) + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_series_conv_imp_conv.con". + +(*#* We then define the sum of the series as being the pointwise sum of +the corresponding series. +*) + +(* begin show *) + +alias id "H" = "cic:/CoRN/ftc/FunctSeries/Definitions/H.var". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/Definitions/contf.con" "Definitions__". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Definitions/incf.con" "Definitions__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_strext.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Implicit Arguments Fun_Series_Sum [a b Hab f]. +*) + +(* UNEXPORTED +Hint Resolve fun_seq_part_sum_cont: continuous. +*) + +(* UNEXPORTED +Section More_Definitions +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSeries/More_Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSeries/More_Definitions/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSeries/More_Definitions/Hab.var". + +alias id "f" = "cic:/CoRN/ftc/FunctSeries/More_Definitions/f.var". + +(*#* A series can also be absolutely convergent. *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_series_abs_convergent.con". + +(* UNEXPORTED +End More_Definitions +*) + +(* UNEXPORTED +Section Operations +*) + +(* **Algebraic Properties + +All of these are analogous to the properties for series of real numbers, so we won't comment much about them. +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSeries/Operations/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSeries/Operations/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSeries/Operations/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/Operations/I.con" "Operations__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_seq_part_sum_n.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/conv_fun_const_series.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_const_series_sum.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/conv_zero_fun_series.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_zero.con". + +(* begin show *) + +alias id "f" = "cic:/CoRN/ftc/FunctSeries/Operations/f.var". + +alias id "g" = "cic:/CoRN/ftc/FunctSeries/Operations/g.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_series_convergent_wd.con". + +(* begin show *) + +alias id "convF" = "cic:/CoRN/ftc/FunctSeries/Operations/convF.var". + +alias id "convG" = "cic:/CoRN/ftc/FunctSeries/Operations/convG.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_wd'.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/conv_fun_series_plus.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_plus.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/conv_fun_series_minus.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_min.con". + +(*#* +%\begin{convention}% Let [c:IR]. +%\end{convention}% +*) + +alias id "c" = "cic:/CoRN/ftc/FunctSeries/Operations/c.var". + +alias id "H" = "cic:/CoRN/ftc/FunctSeries/Operations/H.var". + +alias id "contH" = "cic:/CoRN/ftc/FunctSeries/Operations/contH.var". + +inline procedural "cic:/CoRN/ftc/FunctSeries/conv_fun_series_scal.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_scal.con". + +(* UNEXPORTED +End Operations +*) + +(* UNEXPORTED +Section More_Operations +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSeries/More_Operations/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSeries/More_Operations/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSeries/More_Operations/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/More_Operations/I.con" "More_Operations__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSeries/More_Operations/f.var". + +alias id "convF" = "cic:/CoRN/ftc/FunctSeries/More_Operations/convF.var". + +inline procedural "cic:/CoRN/ftc/FunctSeries/conv_fun_series_inv.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_inv.con". + +(* UNEXPORTED +End More_Operations +*) + +(* UNEXPORTED +Section Other_Results +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSeries/Other_Results/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSeries/Other_Results/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSeries/Other_Results/Hab.var". + +alias id "f" = "cic:/CoRN/ftc/FunctSeries/Other_Results/f.var". + +alias id "convF" = "cic:/CoRN/ftc/FunctSeries/Other_Results/convF.var". + +(*#* +The following relate the sum series with the limit of the sequence of +partial sums; as a corollary we get the continuity of the sum of the +series. +*) + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_char'.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_series_conv.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_cont.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_char.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/Fun_Series_Sum_as_Lim.con". + +(* UNEXPORTED +End Other_Results +*) + +(* UNEXPORTED +Hint Resolve Fun_Series_Sum_cont: continuous. +*) + +(* UNEXPORTED +Section Convergence_Criteria +*) + +(*#* **Convergence Criteria + +Most of the convergence criteria for series of real numbers carry over to series of real-valued functions, so again we just present them without comments. +*) + +alias id "a" = "cic:/CoRN/ftc/FunctSeries/Convergence_Criteria/a.var". + +alias id "b" = "cic:/CoRN/ftc/FunctSeries/Convergence_Criteria/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/FunctSeries/Convergence_Criteria/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/FunctSeries/Convergence_Criteria/I.con" "Convergence_Criteria__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/FunctSeries/Convergence_Criteria/f.var". + +alias id "contF" = "cic:/CoRN/ftc/FunctSeries/Convergence_Criteria/contF.var". + +(* UNEXPORTED +Opaque Frestr. +*) + +(* UNEXPORTED +Transparent Frestr. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque fun_seq_part_sum. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent fun_seq_part_sum. +*) + +(* UNEXPORTED +Opaque fun_seq_part_sum. +*) + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_str_comparison.con". + +(* UNEXPORTED +Transparent FAbs. +*) + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_comparison.con". + +inline procedural "cic:/CoRN/ftc/FunctSeries/abs_imp_conv.con". + +(* UNEXPORTED +Opaque FAbs. +*) + +inline procedural "cic:/CoRN/ftc/FunctSeries/fun_ratio_test_conv.con". + +(* UNEXPORTED +End Convergence_Criteria +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSums.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSums.mma new file mode 100644 index 000000000..e94e9d0f9 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/FunctSums.mma @@ -0,0 +1,163 @@ +(**************************************************************************) +(* ___ *) +(* ||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: FunctSums.v,v 1.5 2004/04/23 10:00:59 lcf Exp $ *) + +(*#* printing FSum0 %\ensuremath{\sum_0}% #∑0# *) + +(*#* printing FSum %\ensuremath{\sum}% #∑# *) + +(*#* printing FSumx %\ensuremath{\sum'}% #∑'&*) + +include "reals/CSumsReals.ma". + +include "ftc/PartFunEquality.ma". + +(*#* *Sums of Functions + +In this file we define sums are defined of arbitrary families of +partial functions. + +Given a countable family of functions, their sum is defined on the +intersection of all the domains. As is the case for groups, we will +define three different kinds of sums. + +We will first consider the case of a family +$\{f_i\}_{i\in\NN}$#{fi}# of functions; we can both define +$\sum_{i=0}^{n-1}f_i$#the sum of the first n functions# ( [FSum0]) or +$\sum_{i=m}^nf_i$#the sum of fm through fn# +( [FSum]). +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum0.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum.con". + +(*#* +Although [FSum] is here defined directly, it has the same relationship +to the [FSum0] operator as [Sum] has to [Sum0]. Also, all the results +for [Sum] and [Sum0] hold when these operators are replaced by their +functional equivalents. This is an immediate consequence of the fact +that the partial functions form a group; however, as we already +mentioned, their forming too big a type makes it impossible to use +those results. +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_FSum0.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum0_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_one.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_FSum.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_first.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_last.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_last'.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_plus_FSum.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/inv_FSum.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_minus_FSum.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_wd'.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_resp_less.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_resp_leEq.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_comm_scal.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_comm_scal'.con". + +(*#* +Also important is the case when we have a finite family +$\{f_i\}_{i=0}^{n-1}$ of #exactly n# functions; in this case we need +to use the [FSumx] operator. +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx.con". + +(*#* +This operator is well defined, as expected. +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_wd.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_wd'.con". + +(*#* +As was already the case for [Sumx], in many cases we will need to +explicitly assume that $f_i$#f1# is independent of the proof that +[i [<] n]. This holds both for the value and the domain of the partial +function $f_i$#fi#. +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/ext_fun_seq.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/ext_fun_seq'.con". + +(* UNEXPORTED +Implicit Arguments ext_fun_seq [n]. +*) + +(* UNEXPORTED +Implicit Arguments ext_fun_seq' [n]. +*) + +(*#* +Under these assumptions, we can characterize the domain and the value of the sum function from the domains and values of the summands: +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_pred.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_pred'.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_char.con". + +(*#* +As we did for arbitrary groups, it is often useful to rewrite this sums as ordinary sums. +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_to_FSum.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_lt.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSumx_le.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_FSumx_to_FSum.con". + +(*#* +Some useful lemmas follow. +*) + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum0_0.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum0_S.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_0.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_S.con". + +inline procedural "cic:/CoRN/ftc/FunctSums/FSum_FSum0'.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Integral.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Integral.mma new file mode 100644 index 000000000..1fa68f385 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Integral.mma @@ -0,0 +1,494 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Integral.v,v 1.10 2004/04/23 10:00:59 lcf Exp $ *) + +include "ftc/RefLemma.ma". + +(*#* printing integral %\ensuremath{\int_I}% #∫I# *) + +(*#* printing Integral %\ensuremath{\int_I}% #∫I# *) + +(* begin hide *) + +(* UNEXPORTED +Section Lemmas +*) + +inline procedural "cic:/CoRN/ftc/Integral/Lemmas/Sumx_wd_weird.con" "Lemmas__". + +inline procedural "cic:/CoRN/ftc/Integral/Sumx_weird_lemma.con". + +(* UNEXPORTED +End Lemmas +*) + +(* end hide *) + +(* UNEXPORTED +Section Integral +*) + +(*#* *Integral + +Having proved the main properties of partitions and refinements, we +will define the integral of a continuous function [F] in the interval +[[a,b]] as the limit of the sequence of Sums of $F$ for even +partitions of increasing number of points. + +%\begin{convention}% All throughout, [a,b] will be real numbers, the +interval [[a,b]] will be denoted by [I] and [F,G] will be +continuous functions in [I]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/Integral/Integral/a.var". + +alias id "b" = "cic:/CoRN/ftc/Integral/Integral/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Integral/Integral/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/Integral/I.con" "Integral__". + +alias id "F" = "cic:/CoRN/ftc/Integral/Integral/F.var". + +alias id "contF" = "cic:/CoRN/ftc/Integral/Integral/contF.var". + +inline procedural "cic:/CoRN/ftc/Integral/Integral/contF'.con" "Integral__". + +(* end hide *) + +(* UNEXPORTED +Section Darboux_Sum +*) + +inline procedural "cic:/CoRN/ftc/Integral/integral_seq.con". + +inline procedural "cic:/CoRN/ftc/Integral/Cauchy_Darboux_Seq.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral.con". + +(* UNEXPORTED +End Darboux_Sum +*) + +(* UNEXPORTED +Section Integral_Thm +*) + +(*#* +The following shows that in fact the integral of [F] is the limit of +any sequence of partitions of mesh converging to 0. + +%\begin{convention}% Let [e] be a positive real number and [P] be a +partition of [I] with [n] points and mesh smaller than the +modulus of continuity of [F] for [e]. Let [fP] be a choice of points +respecting [P]. +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/n.var". + +alias id "P" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/P.var". + +alias id "e" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/e.var". + +alias id "He" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/He.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/d.con" "Integral__Integral_Thm__". + +(* end hide *) + +alias id "HmeshP" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/HmeshP.var". + +alias id "fP" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/fP.var". + +alias id "HfP" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/HfP.var". + +alias id "HfP'" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/HfP'.var". + +alias id "incF" = "cic:/CoRN/ftc/Integral/Integral/Integral_Thm/incF.var". + +inline procedural "cic:/CoRN/ftc/Integral/partition_Sum_conv_integral.con". + +(* UNEXPORTED +End Integral_Thm +*) + +(* UNEXPORTED +End Integral +*) + +(* UNEXPORTED +Section Basic_Properties +*) + +(*#* +The usual extensionality and strong extensionality results hold. +*) + +alias id "a" = "cic:/CoRN/ftc/Integral/Basic_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/Integral/Basic_Properties/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Integral/Basic_Properties/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/Basic_Properties/I.con" "Basic_Properties__". + +(* end hide *) + +(* NOTATION +Notation Integral := (integral _ _ Hab). +*) + +(* UNEXPORTED +Section Well_Definedness +*) + +alias id "F" = "cic:/CoRN/ftc/Integral/Basic_Properties/Well_Definedness/F.var". + +alias id "G" = "cic:/CoRN/ftc/Integral/Basic_Properties/Well_Definedness/G.var". + +alias id "contF" = "cic:/CoRN/ftc/Integral/Basic_Properties/Well_Definedness/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/Integral/Basic_Properties/Well_Definedness/contG.var". + +inline procedural "cic:/CoRN/ftc/Integral/integral_strext.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral_strext'.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral_wd.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral_wd'.con". + +(* UNEXPORTED +End Well_Definedness +*) + +(* UNEXPORTED +Section Linearity_and_Monotonicity +*) + +(* UNEXPORTED +Opaque Even_Partition. +*) + +(*#* +The integral is a linear and monotonous function; in order to prove these facts we also need the important equalities $\int_a^bdx=b-a$#∫abdx=b-a# and $\int_a^af(x)dx=0$#∫aa=0#. +*) + +inline procedural "cic:/CoRN/ftc/Integral/integral_one.con". + +alias id "F" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity/F.var". + +alias id "G" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity/G.var". + +alias id "contF" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity/contG.var". + +inline procedural "cic:/CoRN/ftc/Integral/integral_comm_scal.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral_plus.con". + +(* UNEXPORTED +Transparent Even_Partition. +*) + +inline procedural "cic:/CoRN/ftc/Integral/integral_empty.con". + +(* UNEXPORTED +End Linearity_and_Monotonicity +*) + +(* UNEXPORTED +Section Linearity_and_Monotonicity' +*) + +alias id "F" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/F.var". + +alias id "G" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/G.var". + +alias id "contF" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/contG.var". + +(*#* +%\begin{convention}% Let [alpha, beta : IR] and assume that +[h := alpha{**}F{+}beta{**}G] is continuous. +%\end{convention}% +*) + +alias id "alpha" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/alpha.var". + +alias id "beta" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/beta.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/h.con" "Basic_Properties__Linearity_and_Monotonicity'__". + +(* end hide *) + +alias id "contH" = "cic:/CoRN/ftc/Integral/Basic_Properties/Linearity_and_Monotonicity'/contH.var". + +inline procedural "cic:/CoRN/ftc/Integral/linear_integral.con". + +(* UNEXPORTED +Opaque nring. +*) + +inline procedural "cic:/CoRN/ftc/Integral/monotonous_integral.con". + +(* UNEXPORTED +Transparent nring. +*) + +(* UNEXPORTED +End Linearity_and_Monotonicity' +*) + +(* UNEXPORTED +Section Corollaries +*) + +alias id "F" = "cic:/CoRN/ftc/Integral/Basic_Properties/Corollaries/F.var". + +alias id "G" = "cic:/CoRN/ftc/Integral/Basic_Properties/Corollaries/G.var". + +alias id "contF" = "cic:/CoRN/ftc/Integral/Basic_Properties/Corollaries/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/Integral/Basic_Properties/Corollaries/contG.var". + +(*#* +As corollaries we can calculate integrals of group operations applied to functions. +*) + +inline procedural "cic:/CoRN/ftc/Integral/integral_const.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral_minus.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral_inv.con". + +(*#* +We can also bound integrals by bounding the integrated functions. +*) + +inline procedural "cic:/CoRN/ftc/Integral/lb_integral.con". + +inline procedural "cic:/CoRN/ftc/Integral/ub_integral.con". + +inline procedural "cic:/CoRN/ftc/Integral/integral_leEq_norm.con". + +(* UNEXPORTED +End Corollaries +*) + +(* UNEXPORTED +Section Integral_Sum +*) + +(*#* +We now relate the sum of integrals in adjoining intervals to the +integral over the union of those intervals. + +%\begin{convention}% Let [c] be a real number such that +$c\in[a,b]$#c∈[a,b]#. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/F.var". + +alias id "c" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/c.var". + +alias id "Hac" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Hac.var". + +alias id "Hcb" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Hcb.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Hab'.var". + +alias id "Hac'" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Hac'.var". + +alias id "Hcb'" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Hcb'.var". + +(* UNEXPORTED +Section Partition_Join +*) + +(*#* +We first prove that every pair of partitions, one of [[a,c]] +and another of [[c,b]] defines a partition of [[a,b]] the mesh +of which is less or equal to the maximum of the mesh of the original +partitions (actually it is equal, but we don't need the other +inequality). + +%\begin{convention}% Let [P,Q] be partitions respectively of +[[a,c]] and [[c,b]] with [n] and [m] points. +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/n.var". + +alias id "m" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/m.var". + +alias id "P" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/P.var". + +alias id "Q" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/Q.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_aux.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_fun.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/pjf_1.con". + +inline procedural "cic:/CoRN/ftc/Integral/pjf_2.con". + +inline procedural "cic:/CoRN/ftc/Integral/pjf_2'.con". + +inline procedural "cic:/CoRN/ftc/Integral/pjf_3.con". + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_prf1.con". + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_prf2.con". + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_start.con". + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_finish.con". + +inline procedural "cic:/CoRN/ftc/Integral/partition_join.con". + +(* end hide *) + +(*#* +%\begin{convention}% [fP, fQ] are choices of points respecting [P] and [Q]. +%\end{convention}% +*) + +alias id "fP" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/fP.var". + +alias id "HfP" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/HfP.var". + +alias id "HfP'" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/HfP'.var". + +alias id "fQ" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/fQ.var". + +alias id "HfQ" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/HfQ.var". + +alias id "HfQ'" = "cic:/CoRN/ftc/Integral/Basic_Properties/Integral_Sum/Partition_Join/HfQ'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_aux'.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_pts.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Integral/pjp_1.con". + +inline procedural "cic:/CoRN/ftc/Integral/pjp_2.con". + +inline procedural "cic:/CoRN/ftc/Integral/pjp_3.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_Pts_in_partition.con". + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_Pts_wd.con". + +(* UNEXPORTED +Opaque partition_join. +*) + +(* UNEXPORTED +Transparent partition_join. +*) + +(* UNEXPORTED +Opaque minus. +*) + +(* UNEXPORTED +Transparent minus. +*) + +(* UNEXPORTED +Opaque minus. +*) + +(* UNEXPORTED +Transparent minus. +*) + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_Sum_lemma.con". + +inline procedural "cic:/CoRN/ftc/Integral/partition_join_mesh.con". + +(* UNEXPORTED +End Partition_Join +*) + +(*#* +With these results in mind, the following is a trivial consequence: +*) + +(* UNEXPORTED +Opaque Even_Partition. +*) + +inline procedural "cic:/CoRN/ftc/Integral/integral_plus_integral.con". + +(* UNEXPORTED +End Integral_Sum +*) + +(* UNEXPORTED +Transparent Even_Partition. +*) + +(* UNEXPORTED +End Basic_Properties +*) + +(*#* +The following are simple consequences of this result and of previous ones. +*) + +inline procedural "cic:/CoRN/ftc/Integral/integral_less_norm.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Integral/integral_gt_zero.con". + +(* end hide *) + +(*#* remove printing Integral *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/IntervalFunct.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/IntervalFunct.mma new file mode 100644 index 000000000..03e744da8 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/IntervalFunct.mma @@ -0,0 +1,268 @@ +(**************************************************************************) +(* ___ *) +(* ||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: IntervalFunct.v,v 1.5 2004/04/08 15:28:06 lcf Exp $ *) + +include "ftc/PartFunEquality.ma". + +(* UNEXPORTED +Section Operations +*) + +(*#* * Functions with compact domain + +In this section we concern ourselves with defining operations on the +set of functions from an arbitrary interval [[a,b]] to [IR]. +Although these are a particular kind of partial function, they have +the advantage that, given [a] and [b], they have type [Set] and can +thus be quantified over and extracted from existential hypothesis. +This will be important when we want to define concepts like +differentiability, which involve the existence of an object satisfying +some given properties. + +Throughout this section we will focus on a compact interval and define +operators analogous to those we already have for arbitrary partial +functions. + +%\begin{convention}% Let [a,b] be real numbers and denote by [I] the +compact interval [[a,b]]. Let [f, g] be setoid functions of +type [I -> IR]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/IntervalFunct/Operations/a.var". + +alias id "b" = "cic:/CoRN/ftc/IntervalFunct/Operations/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/IntervalFunct/Operations/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/IntervalFunct/Operations/I.con" "Operations__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/IntervalFunct/Operations/f.var". + +alias id "g" = "cic:/CoRN/ftc/IntervalFunct/Operations/g.var". + +(* UNEXPORTED +Section Const +*) + +(*#* +Constant and identity functions are defined. + +%\begin{convention}% Let [c:IR]. +%\end{convention}% +*) + +alias id "c" = "cic:/CoRN/ftc/IntervalFunct/Operations/Const/c.var". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IConst_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IConst.con". + +(* UNEXPORTED +End Const +*) + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IId_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IId.con". + +(*#* +Next, we define addition, algebraic inverse, subtraction and product of functions. +*) + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IPlus_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IPlus.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IInv_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IInv.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IMinus_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IMinus.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IMult_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IMult.con". + +(* UNEXPORTED +Section Nth_Power +*) + +(*#* +Exponentiation to a natural power [n] is also useful. +*) + +alias id "n" = "cic:/CoRN/ftc/IntervalFunct/Operations/Nth_Power/n.var". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/INth_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/INth.con". + +(* UNEXPORTED +End Nth_Power +*) + +(*#* +If a function is non-zero in all the interval then we can define its multiplicative inverse. +*) + +(* UNEXPORTED +Section Recip_Div +*) + +(* begin show *) + +alias id "Hg" = "cic:/CoRN/ftc/IntervalFunct/Operations/Recip_Div/Hg.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IRecip_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IRecip.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IDiv_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IDiv.con". + +(* UNEXPORTED +End Recip_Div +*) + +(*#* +Absolute value will also be needed at some point. +*) + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IAbs_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IAbs.con". + +(* UNEXPORTED +End Operations +*) + +(*#* +The set of these functions form a ring with relation to the operations +of sum and multiplication. As they actually form a set, this fact can +be proved in Coq for this class of functions; unfortunately, due to a +problem with the coercions, we are not able to use it (Coq will not +recognize the elements of that ring as functions which can be applied +to elements of [[a,b]]), so we merely state this fact here as a +curiosity. + +Finally, we define composition; for this we need two functions with +different domains. + +%\begin{convention}% [a',b'] be real numbers and denote by [I'] the +compact interval [[a',b']], and let [g] be a setoid function of type +[I' -> IR]. +%\end{convention}% +*) + +(* UNEXPORTED +Section Composition +*) + +alias id "a" = "cic:/CoRN/ftc/IntervalFunct/Composition/a.var". + +alias id "b" = "cic:/CoRN/ftc/IntervalFunct/Composition/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/IntervalFunct/Composition/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/IntervalFunct/Composition/I.con" "Composition__". + +(* end hide *) + +alias id "a'" = "cic:/CoRN/ftc/IntervalFunct/Composition/a'.var". + +alias id "b'" = "cic:/CoRN/ftc/IntervalFunct/Composition/b'.var". + +alias id "Hab'" = "cic:/CoRN/ftc/IntervalFunct/Composition/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/IntervalFunct/Composition/I'.con" "Composition__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/IntervalFunct/Composition/f.var". + +alias id "g" = "cic:/CoRN/ftc/IntervalFunct/Composition/g.var". + +alias id "Hfg" = "cic:/CoRN/ftc/IntervalFunct/Composition/Hfg.var". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IComp_strext.con". + +inline procedural "cic:/CoRN/ftc/IntervalFunct/IComp.con". + +(* UNEXPORTED +End Composition +*) + +(* UNEXPORTED +Implicit Arguments IConst [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IId [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IPlus [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IInv [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IMinus [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IMult [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments INth [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IRecip [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IDiv [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IAbs [a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments IComp [a b Hab a' b' Hab']. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunSeries.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunSeries.mma new file mode 100644 index 000000000..e201d4ecc --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunSeries.mma @@ -0,0 +1,569 @@ +(**************************************************************************) +(* ___ *) +(* ||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: MoreFunSeries.v,v 1.4 2004/04/23 10:00:59 lcf Exp $ *) + +include "ftc/FunctSeries.ma". + +include "ftc/MoreFunctions.ma". + +(*#* printing FSeries_Sum %\ensuremath{\sum_{\infty}}% #∑'# *) + +(* UNEXPORTED +Section Definitions +*) + +(*#* *More on Sequences and Series + +We will now extend our convergence definitions and results for +sequences and series of functions defined in compact intervals to +arbitrary intervals. + +%\begin{convention}% Throughout this file, [J] will be an interval, +[f, g] will be sequences of continuous (in [J]) functions and [F,G] +will be continuous (in [J]) functions. +%\end{convention}% + +**Sequences + +First we will consider the case of sequences. + +***Definitions + +Some of the definitions do not make sense in this more general setting +(for instance, because the norm of a function is no longer defined), +but the ones which do we simply adapt in the usual way. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Definitions/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Definitions/f.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunSeries/Definitions/F.var". + +alias id "contf" = "cic:/CoRN/ftc/MoreFunSeries/Definitions/contf.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreFunSeries/Definitions/contF.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq'_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq2_IR.con". + +(*#* +The equivalences between these definitions still hold. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_Cauchy_fun_seq'_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq_seq2_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq2_seq_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_real_IR.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Section More_Definitions +*) + +(*#* +Limit is defined and works in the same way as before. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/More_Definitions/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/More_Definitions/f.var". + +alias id "contf" = "cic:/CoRN/ftc/MoreFunSeries/More_Definitions/contf.var". + +(* begin show *) + +alias id "conv" = "cic:/CoRN/ftc/MoreFunSeries/More_Definitions/conv.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq_Lim_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq_Lim_char.con". + +(* UNEXPORTED +End More_Definitions +*) + +(* UNEXPORTED +Section Irrelevance_of_Proofs +*) + +(*#* ***Basic Properties + +Proofs are irrelevant as before---they just have to be present. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Irrelevance_of_Proofs/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Irrelevance_of_Proofs/f.var". + +(* begin show *) + +alias id "contf" = "cic:/CoRN/ftc/MoreFunSeries/Irrelevance_of_Proofs/contf.var". + +alias id "contf0" = "cic:/CoRN/ftc/MoreFunSeries/Irrelevance_of_Proofs/contf0.var". + +(* end show *) + +alias id "F" = "cic:/CoRN/ftc/MoreFunSeries/Irrelevance_of_Proofs/F.var". + +(* begin show *) + +alias id "contF" = "cic:/CoRN/ftc/MoreFunSeries/Irrelevance_of_Proofs/contF.var". + +alias id "contF0" = "cic:/CoRN/ftc/MoreFunSeries/Irrelevance_of_Proofs/contF0.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq'_wd_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq2_wd_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq_wd_IR.con". + +(* UNEXPORTED +End Irrelevance_of_Proofs +*) + +(* UNEXPORTED +Opaque Cauchy_fun_seq_Lim_IR. +*) + +(* UNEXPORTED +Section More_Properties +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/f.var". + +alias id "g" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/g.var". + +(* begin show *) + +alias id "contf" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contf.var". + +alias id "contf0" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contf0.var". + +alias id "contg" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contg.var". + +alias id "contg0" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contg0.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_conv_fun_seq'_IR.con". + +alias id "F" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/G.var". + +(* begin show *) + +alias id "contF" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contF.var". + +alias id "contF0" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contF0.var". + +alias id "contG" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contG.var". + +alias id "contG0" = "cic:/CoRN/ftc/MoreFunSeries/More_Properties/contG0.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq'_wdl_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq'_wdr_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq'_wdl'_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_seq'_wdr'_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_cont_Lim_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_conv_fun_seq_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_Cauchy_fun_seq_IR.con". + +(* UNEXPORTED +End More_Properties +*) + +(* UNEXPORTED +Hint Resolve Cauchy_cont_Lim_IR: continuous. +*) + +(* UNEXPORTED +Section Algebraic_Properties +*) + +(*#* ***Algebraic Properties + +Algebraic operations still work well. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/f.var". + +alias id "g" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/g.var". + +alias id "contf" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/contf.var". + +alias id "contg" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/contg.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FLim_unique_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Cauchy_fun_seq_wd_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_const_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Cauchy_prop_const_IR.con". + +alias id "F" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/G.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/contG.var". + +(* begin show *) + +alias id "convF" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/convF.var". + +alias id "convG" = "cic:/CoRN/ftc/MoreFunSeries/Algebraic_Properties/convG.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_plus'_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_minus'_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_mult'_IR.con". + +(* UNEXPORTED +End Algebraic_Properties +*) + +(* UNEXPORTED +Section More_Algebraic_Properties +*) + +(*#* +If we work with the limit function things fit in just as well. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/More_Algebraic_Properties/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/More_Algebraic_Properties/f.var". + +alias id "g" = "cic:/CoRN/ftc/MoreFunSeries/More_Algebraic_Properties/g.var". + +alias id "contf" = "cic:/CoRN/ftc/MoreFunSeries/More_Algebraic_Properties/contf.var". + +alias id "contg" = "cic:/CoRN/ftc/MoreFunSeries/More_Algebraic_Properties/contg.var". + +(* begin show *) + +alias id "Hf" = "cic:/CoRN/ftc/MoreFunSeries/More_Algebraic_Properties/Hf.var". + +alias id "Hg" = "cic:/CoRN/ftc/MoreFunSeries/More_Algebraic_Properties/Hg.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_plus_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Cauchy_prop_plus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_inv_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Cauchy_prop_inv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_minus_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Cauchy_prop_minus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Lim_seq_mult_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_Cauchy_prop_mult.con". + +(* UNEXPORTED +End More_Algebraic_Properties +*) + +(* UNEXPORTED +Section Other +*) + +(*#* ***Miscellaneous + +Finally, we define a mapping between sequences of real numbers and sequences of (constant) functions and prove that convergence is preserved. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/seq_to_funseq.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/funseq_conv.con". + +(*#* +Another interesting fact: if a sequence of constant functions converges then it must converge to a constant function. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_const_Lim.con". + +(* UNEXPORTED +End Other +*) + +(* UNEXPORTED +Section Series_Definitions +*) + +(*#* **Series + +We now consider series of functions defined in arbitrary intervals. + +Convergence is defined as expected---through convergence in every compact interval. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Series_Definitions/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Series_Definitions/f.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_series_convergent_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_series_conv_imp_conv_IR.con". + +(* begin show *) + +alias id "H" = "cic:/CoRN/ftc/MoreFunSeries/Series_Definitions/H.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_series_inc_IR.con". + +(*#* Assume [h(x)] is the pointwise series of [f(x)] *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Series_Definitions/h.con" "Series_Definitions__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_strext_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_char.con". + +(* UNEXPORTED +End Series_Definitions +*) + +(* UNEXPORTED +Implicit Arguments FSeries_Sum [J f]. +*) + +(* UNEXPORTED +Section More_Series_Definitions +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/More_Series_Definitions/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/More_Series_Definitions/f.var". + +(*#* +Absolute convergence still exists. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_series_abs_convergent_IR.con". + +(* UNEXPORTED +End More_Series_Definitions +*) + +(* UNEXPORTED +Section Convergence_Results +*) + +(*#* +As before, any series converges to its sum. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Convergence_Results/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Convergence_Results/f.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_conv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/convergent_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/convergent_imp_Continuous.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/Continuous_FSeries_Sum.con". + +(* UNEXPORTED +End Convergence_Results +*) + +(* UNEXPORTED +Hint Resolve convergent_imp_inc: included. +*) + +(* UNEXPORTED +Hint Resolve convergent_imp_Continuous Continuous_FSeries_Sum: continuous. +*) + +(* UNEXPORTED +Section Operations +*) + +(*#* **Algebraic Operations + +Convergence is well defined and preserved by operations. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Operations/J.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_fun_const_series_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_const_series_Sum_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/conv_zero_fun_series_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_zero_IR.con". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Operations/f.var". + +alias id "g" = "cic:/CoRN/ftc/MoreFunSeries/Operations/g.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_series_convergent_wd_IR.con". + +(* begin show *) + +alias id "convF" = "cic:/CoRN/ftc/MoreFunSeries/Operations/convF.var". + +alias id "convG" = "cic:/CoRN/ftc/MoreFunSeries/Operations/convG.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_wd'.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_plus_conv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_plus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_inv_conv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_inv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_minus_conv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_minus.con". + +(*#* +%\begin{convention}% Let [c:IR] and [H:PartIR] be continuous in [J]. +%\end{convention}% +*) + +alias id "c" = "cic:/CoRN/ftc/MoreFunSeries/Operations/c.var". + +alias id "H" = "cic:/CoRN/ftc/MoreFunSeries/Operations/H.var". + +alias id "contH" = "cic:/CoRN/ftc/MoreFunSeries/Operations/contH.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_scal_conv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/FSeries_Sum_scal.con". + +(* UNEXPORTED +End Operations +*) + +(* UNEXPORTED +Section Convergence_Criteria +*) + +(*#* ***Convergence Criteria + +The most important tests for convergence of series still apply: the +comparison test (in both versions) and the ratio test. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Convergence_Criteria/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Convergence_Criteria/f.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreFunSeries/Convergence_Criteria/contF.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_str_comparison_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_comparison_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/abs_imp_conv_IR.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/fun_ratio_test_conv_IR.con". + +(* UNEXPORTED +End Convergence_Criteria +*) + +(* UNEXPORTED +Section Insert_Series +*) + +(*#* ***Translation + +When working in particular with power series and Taylor series, it is +sometimes useful to ``shift'' all the terms in the series one position +forward, that is, replacing each $f_{i+1}$#fi+1# with +$f_i$#fi# and inserting the null function in the first +position. This does not affect convergence or the sum of the series. +*) + +alias id "J" = "cic:/CoRN/ftc/MoreFunSeries/Insert_Series/J.var". + +alias id "f" = "cic:/CoRN/ftc/MoreFunSeries/Insert_Series/f.var". + +alias id "convF" = "cic:/CoRN/ftc/MoreFunSeries/Insert_Series/convF.var". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/insert_series.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/insert_series_cont.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/insert_series_sum_char.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/insert_series_conv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunSeries/insert_series_sum.con". + +(* UNEXPORTED +End Insert_Series +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunctions.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunctions.mma new file mode 100644 index 000000000..23b99d713 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreFunctions.mma @@ -0,0 +1,648 @@ +(**************************************************************************) +(* ___ *) +(* ||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: MoreFunctions.v,v 1.5 2004/04/20 22:38:50 hinderer Exp $ *) + +(*#* printing FNorm %\ensuremath{\|\cdot\|_{\infty}}% *) + +include "ftc/MoreIntervals.ma". + +(* UNEXPORTED +Opaque Min Max. +*) + +(* UNEXPORTED +Section Basic_Results +*) + +(*#* *More about Functions + +Here we state all the main results about properties of functions that +we already proved for compact intervals in the more general setting of +arbitrary intervals. + +%\begin{convention}% Let [I:interval] and [F,F',G,G'] be partial functions. +%\end{convention}% + +**Continuity +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Basic_Results/I.var". + +(*#* +Trivial stuff. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_imp_inc.con". + +(*#* +%\begin{convention}% Assume that [I] is compact and [F] is continuous in [I]. +%\end{convention}% +*) + +alias id "cI" = "cic:/CoRN/ftc/MoreFunctions/Basic_Results/cI.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Basic_Results/F.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreFunctions/Basic_Results/contF.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/continuous_compact.con". + +(* begin show *) + +alias id "Hinc" = "cic:/CoRN/ftc/MoreFunctions/Basic_Results/Hinc.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_I_imp_tb_image.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/FNorm.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/FNorm_bnd_AbsIR.con". + +(* UNEXPORTED +End Basic_Results +*) + +(* UNEXPORTED +Hint Resolve Continuous_imp_inc: included. +*) + +(* UNEXPORTED +Section Other_Results +*) + +(*#* +The usual stuff. +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Other_Results/I.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Other_Results/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunctions/Other_Results/G.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_wd.con". + +(* begin show *) + +alias id "contF" = "cic:/CoRN/ftc/MoreFunctions/Other_Results/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/MoreFunctions/Other_Results/contG.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/included_imp_Continuous.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Included_imp_Continuous.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_const.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_id.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_plus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_inv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_minus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_mult.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_nth.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_scal.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_abs.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_recip.con". + +(* UNEXPORTED +End Other_Results +*) + +(* UNEXPORTED +Hint Resolve continuous_compact Continuous_const Continuous_id + Continuous_plus Continuous_inv Continuous_minus Continuous_mult + Continuous_scal Continuous_nth Continuous_recip Continuous_abs: continuous. +*) + +(* UNEXPORTED +Hint Immediate included_imp_Continuous Included_imp_Continuous: continuous. +*) + +(* UNEXPORTED +Section Corollaries +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Corollaries/I.var". + +alias id "cI" = "cic:/CoRN/ftc/MoreFunctions/Corollaries/cI.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Corollaries/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunctions/Corollaries/G.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreFunctions/Corollaries/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/MoreFunctions/Corollaries/contG.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_div.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/FNorm_wd.con". + +(* UNEXPORTED +End Corollaries +*) + +(* UNEXPORTED +Hint Resolve Continuous_div: continuous. +*) + +(* UNEXPORTED +Section Sums +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Sums/I.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_Sumx.con". + +(*#* +%\begin{convention}% Assume [f] is a sequence of continuous functions. +%\end{convention}% +*) + +alias id "f" = "cic:/CoRN/ftc/MoreFunctions/Sums/f.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreFunctions/Sums/contF.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_Sum0.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Continuous_Sum.con". + +(* UNEXPORTED +End Sums +*) + +(* UNEXPORTED +Hint Resolve Continuous_Sum0 Continuous_Sumx Continuous_Sum: continuous. +*) + +(* UNEXPORTED +Section Basic_Properties +*) + +(*#* **Derivative + +Derivative is not that much different. + +%\begin{convention}% From this point on we assume [I] to be proper. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Basic_Properties/I.var". + +alias id "pI" = "cic:/CoRN/ftc/MoreFunctions/Basic_Properties/pI.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Basic_Properties/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunctions/Basic_Properties/G.var". + +alias id "H" = "cic:/CoRN/ftc/MoreFunctions/Basic_Properties/H.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_wdl.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_wdr.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_unique.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_imp_inc'.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_imp_Continuous.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_imp_Continuous'.con". + +(* UNEXPORTED +End Basic_Properties +*) + +(* UNEXPORTED +Hint Immediate Derivative_imp_inc Derivative_imp_inc': included. +*) + +(* UNEXPORTED +Hint Immediate Derivative_imp_Continuous Derivative_imp_Continuous': + continuous. +*) + +(* UNEXPORTED +Section More_Results +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/More_Results/I.var". + +alias id "pI" = "cic:/CoRN/ftc/MoreFunctions/More_Results/pI.var". + +(*#* +%\begin{convention}% Assume that [F'] and [G'] are derivatives of [F] and [G], respectively, in [I]. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/More_Results/F.var". + +alias id "F'" = "cic:/CoRN/ftc/MoreFunctions/More_Results/F'.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunctions/More_Results/G.var". + +alias id "G'" = "cic:/CoRN/ftc/MoreFunctions/More_Results/G'.var". + +alias id "derF" = "cic:/CoRN/ftc/MoreFunctions/More_Results/derF.var". + +alias id "derG" = "cic:/CoRN/ftc/MoreFunctions/More_Results/derG.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/included_imp_Derivative.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Included_imp_Derivative.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_const.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_id.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_plus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_inv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_minus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_mult.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_scal.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_nth.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_recip.con". + +(* UNEXPORTED +End More_Results +*) + +(* UNEXPORTED +Section More_Corollaries +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/I.var". + +alias id "pI" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/pI.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/F.var". + +alias id "F'" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/F'.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/G.var". + +alias id "G'" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/G'.var". + +alias id "derF" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/derF.var". + +alias id "derG" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/derG.var". + +(* begin show *) + +alias id "Gbnd" = "cic:/CoRN/ftc/MoreFunctions/More_Corollaries/Gbnd.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_div.con". + +(* UNEXPORTED +End More_Corollaries +*) + +(* UNEXPORTED +Section More_Sums +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/More_Sums/I.var". + +alias id "pI" = "cic:/CoRN/ftc/MoreFunctions/More_Sums/pI.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_Sumx.con". + +(* begin show *) + +alias id "f" = "cic:/CoRN/ftc/MoreFunctions/More_Sums/f.var". + +alias id "f'" = "cic:/CoRN/ftc/MoreFunctions/More_Sums/f'.var". + +alias id "derF" = "cic:/CoRN/ftc/MoreFunctions/More_Sums/derF.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_Sum0.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_Sum.con". + +(* UNEXPORTED +End More_Sums +*) + +(* UNEXPORTED +Section Diffble_Basic_Properties +*) + +(*#* **Differentiability + +Mutatis mutandis for differentiability. +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Basic_Properties/I.var". + +alias id "pI" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Basic_Properties/pI.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_imp_Diffble.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_wd.con". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Basic_Properties/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Basic_Properties/G.var". + +alias id "diffF" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Basic_Properties/diffF.var". + +alias id "diffG" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Basic_Properties/diffG.var". + +(*#* +%\begin{convention}% Assume [F] and [G] are differentiable in [I]. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/included_imp_Diffble.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Included_imp_Diffble.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_const.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_id.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_plus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_inv.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_minus.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_mult.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_nth.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_scal.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_recip.con". + +(* UNEXPORTED +End Diffble_Basic_Properties +*) + +(* UNEXPORTED +Hint Immediate Diffble_imp_inc: included. +*) + +(* UNEXPORTED +Section Diffble_Corollaries +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Corollaries/I.var". + +alias id "pI" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Corollaries/pI.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Corollaries/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Corollaries/G.var". + +alias id "diffF" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Corollaries/diffF.var". + +alias id "diffG" = "cic:/CoRN/ftc/MoreFunctions/Diffble_Corollaries/diffG.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_div.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_Sum0.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_Sumx.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_Sum.con". + +(* UNEXPORTED +End Diffble_Corollaries +*) + +(* UNEXPORTED +Section Nth_Derivative +*) + +(*#* **Nth Derivative + +Higher order derivatives pose more interesting problems. It turns out that it really becomes necessary to generalize our [n_deriv] operator to any interval. +*) + +alias id "I" = "cic:/CoRN/ftc/MoreFunctions/Nth_Derivative/I.var". + +alias id "pI" = "cic:/CoRN/ftc/MoreFunctions/Nth_Derivative/pI.var". + +(* UNEXPORTED +Section Definitions +*) + +(*#* +%\begin{convention}% Let [n:nat], [F:PartIR] and assume that [F] is n-times differentiable in [I]. +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/ftc/MoreFunctions/Nth_Derivative/Definitions/n.var". + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Nth_Derivative/Definitions/F.var". + +alias id "diffF" = "cic:/CoRN/ftc/MoreFunctions/Nth_Derivative/Definitions/diffF.var". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_fun.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_char + (* begin hide *).con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_strext.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_wd.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Section Basic_Results +*) + +(*#* +All the usual results hold. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_n_wd.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_wdr.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_wdl.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_unique.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_n_imp_Diffble.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_imp_Diffble.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/le_imp_Diffble_n.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_n_imp_le.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_n_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_imp_Diffble_n.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_imp_inc'.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/included_imp_Derivative_n.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/included_imp_Diffble_n.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Included_imp_Derivative_n.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Included_imp_Diffble_n.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_plus.con". + +(* UNEXPORTED +End Basic_Results +*) + +(* UNEXPORTED +Section More_Results +*) + +(*#* +Some new results hold, too: +*) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_Feq.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_lemma.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_S.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/N_Deriv_plus.con". + +(*#* +Some useful characterization results. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_O.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_Sn.con". + +(* UNEXPORTED +End More_Results +*) + +(* UNEXPORTED +Section Derivating_Diffble +*) + +(*#* +As a special case we get a differentiation operator%\ldots%#...# +*) + +alias id "F" = "cic:/CoRN/ftc/MoreFunctions/Nth_Derivative/Derivating_Diffble/F.var". + +(* begin show *) + +alias id "diffF" = "cic:/CoRN/ftc/MoreFunctions/Nth_Derivative/Derivating_Diffble/diffF.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Diffble_imp_Diffble_n.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Deriv.con". + +(* UNEXPORTED +End Derivating_Diffble +*) + +(* UNEXPORTED +Section Corollaries +*) + +(*#* +%\ldots%#...# for which the expected property also holds. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Deriv_lemma.con". + +(*#* +Some more interesting properties. +*) + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_1.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_chain.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_imp_Continuous.con". + +inline procedural "cic:/CoRN/ftc/MoreFunctions/Derivative_n_imp_Continuous'.con". + +(* UNEXPORTED +End Corollaries +*) + +(* UNEXPORTED +End Nth_Derivative +*) + +(* UNEXPORTED +Hint Resolve Derivative_const Derivative_id Derivative_plus Derivative_inv + Derivative_minus Derivative_mult Derivative_scal Derivative_nth + Derivative_recip Derivative_div Derivative_Sumx Derivative_Sum0 + Derivative_Sum: derivate. +*) + +(* UNEXPORTED +Hint Immediate Derivative_n_imp_inc Derivative_n_imp_inc' Diffble_n_imp_inc: + included. +*) + +(* UNEXPORTED +Hint Resolve Deriv_lemma N_Deriv_lemma: derivate. +*) + +(* UNEXPORTED +Hint Immediate Derivative_n_imp_Continuous Derivative_n_imp_Continuous': + continuous. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntegrals.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntegrals.mma new file mode 100644 index 000000000..7cae25fb1 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntegrals.mma @@ -0,0 +1,300 @@ +(**************************************************************************) +(* ___ *) +(* ||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: MoreIntegrals.v,v 1.6 2004/04/23 10:00:59 lcf Exp $ *) + +include "ftc/Integral.ma". + +include "ftc/MoreFunctions.ma". + +(* UNEXPORTED +Section Lemmas +*) + +(*#* printing Integral %\ensuremath{\int}% #∫# *) + +(*#* printing integral' %\ensuremath{\int}% #∫# *) + +(*#* *The generalized integral + +In this file we extend the definition of integral to allow for +arbitrary integration domains (that is, not requiring that the lower +endpoint of integration be less or equal than the upper endpoint) and +we prove the fundamental properties of the new operator. + +%\begin{convention}% Let [a, b : IR] and assume that [F] and [G] are two +partial functions continuous in [[Min(a,b),Max(a,b)]]. +%\end{convention}% + +** Definitions + +Before we define the new integral we need to some trivial interval inclusions. +*) + +alias id "a" = "cic:/CoRN/ftc/MoreIntegrals/Lemmas/a.var". + +alias id "b" = "cic:/CoRN/ftc/MoreIntegrals/Lemmas/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/MoreIntegrals/Lemmas/Hab.var". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/compact_inc_Min_lft.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/compact_inc_Min_rht.con". + +(* UNEXPORTED +End Lemmas +*) + +(* UNEXPORTED +Section Definitions +*) + +(*#* +The integral is defined by the formula +$\int_a^bf=\int_{\min(a,b)}^bf-\int_{\min(a,b)}^af$#∫abf=∫min(a,b)bf-∫min(a,b)af#, +inspired by the domain union rule; obviously it coincides with the +classical definition, and it collapses to the old one in the case [a + [<=] b]. +*) + +alias id "a" = "cic:/CoRN/ftc/MoreIntegrals/Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/MoreIntegrals/Definitions/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/MoreIntegrals/Definitions/Hab.var". + +alias id "F" = "cic:/CoRN/ftc/MoreIntegrals/Definitions/F.var". + +alias id "HF" = "cic:/CoRN/ftc/MoreIntegrals/Definitions/HF.var". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_inc1.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_inc2.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_integral.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Implicit Arguments Integral [a b Hab F]. +*) + +(* UNEXPORTED +Section Properties_of_Integral +*) + +(*#* **Properties of the Integral + +All our old properties carry over to this new definition---and some +new ones, too. We begin with (strong) extensionality. +*) + +alias id "a" = "cic:/CoRN/ftc/MoreIntegrals/Properties_of_Integral/a.var". + +alias id "b" = "cic:/CoRN/ftc/MoreIntegrals/Properties_of_Integral/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/MoreIntegrals/Properties_of_Integral/Hab.var". + +alias id "F" = "cic:/CoRN/ftc/MoreIntegrals/Properties_of_Integral/F.var". + +alias id "G" = "cic:/CoRN/ftc/MoreIntegrals/Properties_of_Integral/G.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreIntegrals/Properties_of_Integral/contF.var". + +alias id "contG" = "cic:/CoRN/ftc/MoreIntegrals/Properties_of_Integral/contG.var". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_strext.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_strext'.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_wd.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_wd'.con". + +(*#* +The integral is a linear operator. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_const.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_comm_scal.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_plus.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_inv.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_minus.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/linear_Integral.con". + +(*#* +If the endpoints are equal then the integral vanishes. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_empty.con". + +(*#* +And the norm provides an upper bound for the absolute value of the integral. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_leEq_norm.con". + +(* UNEXPORTED +End Properties_of_Integral +*) + +(* UNEXPORTED +Section More_Properties +*) + +(*#* +Two other ways of stating the addition law for domains. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/integral_plus_Integral.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/integral_plus_integral'.con". + +(*#* +And now we can prove the addition law for domains with our general operator. + +%\begin{convention}% Assume [c : IR]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/a.var". + +alias id "b" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/b.var". + +alias id "c" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/c.var". + +(* begin show *) + +alias id "Hab'" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Hab'.var". + +alias id "Hac'" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Hac'.var". + +alias id "Hcb'" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Hcb'.var". + +alias id "Habc'" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc'.var". + +(* end show *) + +alias id "F" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/F.var". + +(* begin show *) + +alias id "Hab" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Hab.var". + +alias id "Hac" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Hac.var". + +alias id "Hcb" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Hcb.var". + +alias id "Habc" = "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc.var". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_abc_ab.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_abc_ac.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_abc_cb.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_abc_a.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_abc_b.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_abc_c.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_ab_a.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_cb_c.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_ac_a.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_ab_b.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_cb_b.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/le_ac_c.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc_abc.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc_ab.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc_ac.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc_cb.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc_a.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc_b.con" "More_Properties__". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/More_Properties/Habc_c.con" "More_Properties__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_plus_Integral.con". + +(*#* +Notice that, unlike in the classical case, an extra hypothesis (the +continuity of [F] in the interval [[Min(a,b,c),Max(a,b,c)]]) must be assumed. +*) + +(* UNEXPORTED +End More_Properties +*) + +(* UNEXPORTED +Section Corollaries +*) + +alias id "a" = "cic:/CoRN/ftc/MoreIntegrals/Corollaries/a.var". + +alias id "b" = "cic:/CoRN/ftc/MoreIntegrals/Corollaries/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/MoreIntegrals/Corollaries/Hab.var". + +alias id "F" = "cic:/CoRN/ftc/MoreIntegrals/Corollaries/F.var". + +alias id "contF" = "cic:/CoRN/ftc/MoreIntegrals/Corollaries/contF.var". + +(*#* As a corollary, we get the following rule: *) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_op.con". + +(*#* Finally, some miscellaneous results: *) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_less_norm.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/ub_Integral.con". + +(* UNEXPORTED +End Corollaries +*) + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_ap_zero.con". + +inline procedural "cic:/CoRN/ftc/MoreIntegrals/Integral_eq_zero.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntervals.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntervals.mma new file mode 100644 index 000000000..83214c0b5 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/MoreIntervals.mma @@ -0,0 +1,460 @@ +(**************************************************************************) +(* ___ *) +(* ||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: MoreIntervals.v,v 1.6 2004/04/23 10:00:59 lcf Exp $ *) + +include "ftc/NthDerivative.ma". + +(* UNEXPORTED +Opaque Min Max. +*) + +(* UNEXPORTED +Section Intervals +*) + +(*#* printing realline %\ensuremath{\RR}% #(-∞,+∞)# *) + +(*#* printing openl %\ensuremath{(\cdot,+\infty)}% #(⋅,+∞)# *) + +(*#* printing openr %\ensuremath{(-\infty,\cdot)}% #(-∞,⋅)# *) + +(*#* printing closel %\ensuremath{[\cdot,+\infty)}% #[⋅,+∞)# *) + +(*#* printing closer %\ensuremath{(-\infty,\cdot]}% #(-∞,⋅]# *) + +(*#* printing olor %\ensuremath{(\cdot,\cdot)}% #(⋅,⋅)# *) + +(*#* printing clor %\ensuremath{[\cdot,\cdot)}% #[⋅,⋅)# *) + +(*#* printing olcr %\ensuremath{(\cdot,\cdot]}% #(⋅,⋅]# *) + +(*#* printing clcr %\ensuremath{[\cdot,\cdot]}% #[⋅,⋅]# *) + +(*#* *Generalized Intervals + +At this stage we have enough material to begin generalizing our +concepts in preparation for the fundamental theorem of calculus and +the definition of the main (non-polynomial) functions of analysis. + +In order to define functions via power series (or any other kind of +series) we need to formalize a notion of convergence more general than +the one we already have on compact intervals. This is necessary for +practical reasons: we want to define a single exponential function +with domain [IR], not several exponential functions defined on compact +intervals which we prove to be the same wherever their domains +overlap. In a similar way, we want to define indefinite integrals on +infinite domains and not only on compact intervals. + +Unfortunately, proceeding in a way analogous to how we defined the +concept of global continuity will lead us nowhere; the concept turns +out to be to general, and the behaviour on too small domains +(typically intervals [[a,a']] where [a [=] a'] is neither +provably true nor provably false) will be unsatisfactory. + +There is a special family of sets, however, where this problems can be +avoided: intervals. Intervals have some nice properties that allow us +to prove good results, namely the facts that if [a] and [b] are +elements of an interval [I] then so are [Min(a,b)] and +[Max(a,b)] (which is in general not true) and also the +compact interval [[a,b]] is included in [I]. Furthermore, all +intervals are characterized by simple, well defined predicates, and +the nonempty and proper concepts become very easy to define. + +**Definitions and Basic Results + +We define an inductive type of intervals with nine constructors, +corresponding to the nine basic types of intervals. The reason why so +many constructors are needed is that we do not have a notion of real +line, for many reasons which we will not discuss here. Also it seems +simple to directly define finite intervals than to define then later +as intersections of infinite intervals, as it would only mess things +up. + +The compact interval which we will define here is obviously the same +that we have been working with all the way through; why, then, the +different formulation? The reason is simple: if we had worked with +intervals from the beginning we would have had case definitions at +every spot, and our lemmas and proofs would have been very awkward. +Also, it seems more natural to characterize a compact interval by two +real numbers (and a proof) than as a particular case of a more general +concept which doesn't have an intuitive interpretation. Finally, the +definitions we will make here will have the elegant consequence that +from this point on we can work with any kind of intervals in exactly +the same way. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/interval.ind". + +(*#* +To each interval a predicate (set) is assigned by the following map: +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop.con". + +(* begin hide *) + +(* COERCION +cic:/matita/CoRN-Procedural/ftc/MoreIntervals/iprop.con +*) + +(* end hide *) + +(*#* +This map is made into a coercion, so that intervals +%\emph{%##are%}%## really subsets of reals. + +We now define what it means for an interval to be nonvoid, proper, +finite and compact in the obvious way. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/nonvoid.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/proper.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/finite.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_.con". + +(*#* Finite intervals have a left end and a right end. *) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/left_end.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/right_end.con". + +(*#* +Some trivia: compact intervals are finite; proper intervals are nonvoid; an interval is nonvoid iff it contains some point. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_finite.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/proper_nonvoid.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/nonvoid_point.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/nonvoid_char.con". + +(*#* +For practical reasons it helps to define left end and right end of compact intervals. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Lend.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Rend.con". + +(*#* In a compact interval, the left end is always less than or equal +to the right end. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Lend_leEq_Rend.con". + +(*#* +Some nice characterizations of inclusion: +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_included.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included_interval'.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included_interval.con". + +(*#* +A weirder inclusion result. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included3_interval.con". + +(*#* +Finally, all intervals are characterized by well defined predicates. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_wd.con". + +(* UNEXPORTED +End Intervals +*) + +(* UNEXPORTED +Implicit Arguments Lend [I]. +*) + +(* UNEXPORTED +Implicit Arguments Rend [I]. +*) + +(* UNEXPORTED +Section Compact_Constructions +*) + +(* UNEXPORTED +Section Single_Compact_Interval +*) + +(*#* **Constructions with Compact Intervals + +Several important constructions are now discussed. + +We begin by defining the compact interval [[x,x]]. + +%\begin{convention}% Let [P:IR->CProp] be well defined, and [x:IR] +such that [P(x)] holds. +%\end{convention}% +*) + +alias id "P" = "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Single_Compact_Interval/P.var". + +alias id "wdP" = "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Single_Compact_Interval/wdP.var". + +alias id "x" = "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Single_Compact_Interval/x.var". + +alias id "Hx" = "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Single_Compact_Interval/Hx.var". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_single.con". + +(*#* +This interval contains [x] and only (elements equal to) [x]; furthermore, for every (well-defined) [P], if $x\in P$#x∈P# then $[x,x]\subseteq P$#[x,x]⊆P#. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_single_prop.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_single_pt.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_single_inc.con". + +(* UNEXPORTED +End Single_Compact_Interval +*) + +(*#* +The special case of intervals is worth singling out, as one of the hypothesis becomes a theorem. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_single_iprop.con". + +(*#* +Now for more interesting and important results. + +Let [I] be a proper interval and [x] be a point of [I]. Then there is +a proper compact interval [[a,b]] such that $x\in[a,b]\subseteq +I$#x∈[a,b]⊆I#. +*) + +(* UNEXPORTED +Section Proper_Compact_with_One_or_Two_Points +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip1'.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip1''.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip1'''.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip1''''.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip2.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip2'.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip2''.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip2'''.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip3.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip3'.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip3''.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Compact_Constructions/Proper_Compact_with_One_or_Two_Points/cip3'''.con" "Compact_Constructions__Proper_Compact_with_One_or_Two_Points__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_compact_in_interval.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/proper_compact_in_interval.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/proper_compact_in_interval'.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included_compact_in_interval.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval'.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval_inc1.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval_inc2.con". + +(*#* +If [x [=] y] then the construction yields the same interval whether we +use [x] or [y] in its definition. This property is required at some +stage, which is why we formalized this result as a functional +definition rather than as an existential formula. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval_wd1.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval_wd2.con". + +(*#* +We can make an analogous construction for two points. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval2.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_compact_in_interval2.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/proper_compact_in_interval2.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/proper_compact_in_interval2'.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included_compact_in_interval2.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval2x.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval2y.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval2x'.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval2y'.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval2_inc1.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/iprop_compact_in_interval2_inc2.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval_x_lft.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval_y_lft.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval_x_rht.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_in_interval_y_rht.con". + +(* UNEXPORTED +End Proper_Compact_with_One_or_Two_Points +*) + +(*#* +Compact intervals are exactly compact intervals(!). +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/interval_compact_inc.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_interval_inc.con". + +(*#* +A generalization of the previous results: if $[a,b]\subseteq J$#[a,b]⊆J# +and [J] is proper, then we can find a proper interval [[a',b']] such that +$[a,b]\subseteq[a',b']\subseteq J$#[a,b]⊆[a',b']⊆J#. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/compact_proper_in_interval.con". + +(* UNEXPORTED +End Compact_Constructions +*) + +(* UNEXPORTED +Section Functions +*) + +(*#* **Properties of Functions in Intervals + +We now define notions of continuity, differentiability and so on on +arbitrary intervals. As expected, a function [F] has property [P] in +the (proper) interval [I] iff it has property [P] in every compact +interval included in [I]. We can formalize this in a nice way using +previously defined concepts. + +%\begin{convention}% Let [n:nat] and [I:interval]. +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/ftc/MoreIntervals/Functions/n.var". + +alias id "I" = "cic:/CoRN/ftc/MoreIntervals/Functions/I.var". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Continuous.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Derivative.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Diffble.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Derivative_n.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Diffble_n.con". + +(* UNEXPORTED +End Functions +*) + +(* UNEXPORTED +Section Reflexivity_Properties +*) + +(*#* +In the case of compact intervals, this definitions collapse to the old ones. +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Continuous_Int.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Int_Continuous.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Derivative_Int.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Int_Derivative.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Diffble_Int.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/Int_Diffble.con". + +(* UNEXPORTED +End Reflexivity_Properties +*) + +(* UNEXPORTED +Section Lemmas +*) + +(*#* +Interestingly, inclusion and equality in an interval are also characterizable in a similar way: +*) + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included_Feq''.con". + +inline procedural "cic:/CoRN/ftc/MoreIntervals/included_Feq'.con". + +(* UNEXPORTED +End Lemmas +*) + +(* UNEXPORTED +Hint Resolve included_interval included_interval' included3_interval + compact_single_inc compact_single_iprop included_compact_in_interval + iprop_compact_in_interval_inc1 iprop_compact_in_interval_inc2 + included_compact_in_interval2 iprop_compact_in_interval2_inc1 + iprop_compact_in_interval2_inc2 interval_compact_inc compact_interval_inc + iprop_wd: included. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/NthDerivative.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/NthDerivative.mma new file mode 100644 index 000000000..a814c6faf --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/NthDerivative.mma @@ -0,0 +1,300 @@ +(**************************************************************************) +(* ___ *) +(* ||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: NthDerivative.v,v 1.5 2004/04/20 22:38:50 hinderer Exp $ *) + +include "ftc/Differentiability.ma". + +(* UNEXPORTED +Section Nth_Derivative +*) + +(*#* *Nth Derivative + +We now study higher order differentiability. + +%\begin{convention}% Throughout this section: + - [a, b] will be real numbers with [a [<] b]; + - [I] will denote the compact interval [[a,b]]; + - [F, G, H] will denote partial functions. + +%\end{convention}% + +**Definitions + +We first define what we mean by the derivative of order [n] of a function. +*) + +alias id "a" = "cic:/CoRN/ftc/NthDerivative/Nth_Derivative/a.var". + +alias id "b" = "cic:/CoRN/ftc/NthDerivative/Nth_Derivative/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/NthDerivative/Nth_Derivative/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Nth_Derivative/Hab.con" "Nth_Derivative__". + +inline procedural "cic:/CoRN/ftc/NthDerivative/Nth_Derivative/I.con" "Nth_Derivative__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Derivative_I_n.con". + +(*#* +Unlike first order differentiability, for our definition to be +workable it is better to define directly what it means for a function +to be [n] times differentiable instead of quantifying over the +[Derivative_I_n] relation. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Diffble_I_n.con". + +(* UNEXPORTED +End Nth_Derivative +*) + +(* UNEXPORTED +Implicit Arguments Derivative_I_n [a b]. +*) + +(* UNEXPORTED +Implicit Arguments Diffble_I_n [a b]. +*) + +(* UNEXPORTED +Section Trivia +*) + +(*#* **Trivia + +These are the expected extensionality and uniqueness results. +*) + +alias id "a" = "cic:/CoRN/ftc/NthDerivative/Trivia/a.var". + +alias id "b" = "cic:/CoRN/ftc/NthDerivative/Trivia/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/NthDerivative/Trivia/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Trivia/Hab.con" "Trivia__". + +inline procedural "cic:/CoRN/ftc/NthDerivative/Trivia/I.con" "Trivia__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Diffble_I_n_wd.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/Derivative_I_n_wdr.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/Derivative_I_n_wdl.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/Derivative_I_n_unique.con". + +(* UNEXPORTED +End Trivia +*) + +(* UNEXPORTED +Section Basic_Results +*) + +(*#* **Basic Results + +We now explore the concept of [n] times differentiability. Notice +that, unlike the first order case, we do not pay so much attention to +the relation of [n] times derivative, but focus rather on the +definition of [Diffble_I_n]. +*) + +alias id "a" = "cic:/CoRN/ftc/NthDerivative/Basic_Results/a.var". + +alias id "b" = "cic:/CoRN/ftc/NthDerivative/Basic_Results/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/NthDerivative/Basic_Results/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Basic_Results/Hab.con" "Basic_Results__". + +inline procedural "cic:/CoRN/ftc/NthDerivative/Basic_Results/I.con" "Basic_Results__". + +(* end hide *) + +(*#* +We begin by showing that having a higher order derivative implies being differentiable. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Diffble_I_n_imp_diffble.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/deriv_n_imp_diffble.con". + +(*#* +If a function is [n] times differentiable then it is also [m] times differentiable for every [m] less or equal than [n]. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/le_imp_Diffble_I.con". + +(*#* +The next result consolidates our intuition that a function is [n] +times differentiable if we can build from it a chain of [n] +derivatives. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Diffble_I_imp_le.con". + +(*#* +As expected, an [n] times differentiable in [[a,b]] function must be +defined in that interval. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Diffble_I_n_imp_inc.con". + +(*#* +Also, the notions of derivative and differentiability are related as expected. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Diffble_I_n_imp_deriv_n.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/deriv_n_imp_Diffble_I_n.con". + +(*#* +From this we can prove that if [F] has an nth order derivative in +[[a,b]] then both [F] and its derivative are defined in that interval. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Derivative_I_n_imp_inc.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/Derivative_I_n_imp_inc'.con". + +(* UNEXPORTED +Section aux +*) + +(*#* +First order differentiability is just a special case. +*) + +(* begin show *) + +alias id "F" = "cic:/CoRN/ftc/NthDerivative/Basic_Results/aux/F.var". + +alias id "diffF" = "cic:/CoRN/ftc/NthDerivative/Basic_Results/aux/diffF.var". + +alias id "diffFn" = "cic:/CoRN/ftc/NthDerivative/Basic_Results/aux/diffFn.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/NthDerivative/deriv_1_deriv.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/deriv_1_deriv'.con". + +(* UNEXPORTED +End aux +*) + +(*#* +As usual, nth order derivability is preserved by shrinking the interval. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/included_imp_deriv_n.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/included_imp_diffble_n.con". + +(*#* +And finally we have an addition rule for the order of the derivative. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/Derivative_I_n_plus.con". + +(* UNEXPORTED +End Basic_Results +*) + +(* UNEXPORTED +Section More_Results +*) + +alias id "a" = "cic:/CoRN/ftc/NthDerivative/More_Results/a.var". + +alias id "b" = "cic:/CoRN/ftc/NthDerivative/More_Results/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/NthDerivative/More_Results/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/NthDerivative/More_Results/Hab.con" "More_Results__". + +inline procedural "cic:/CoRN/ftc/NthDerivative/More_Results/I.con" "More_Results__". + +(* end hide *) + +(*#* **The Nth Derivative + +We now define an operator that returns an nth order derivative of an +n-times differentiable function. This is analogous to the quantifier +elimination which we would get if we had defined nth differentiability +as an existential quantification of the nth derivative relation. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_I.con". + +(*#* +This operator is well defined and works as expected. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_I_wd.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_lemma.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_inc.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_inc'.con". + +(*#* +Some basic properties of this operation. +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_Sn_deriv.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_plus.con". + +(* UNEXPORTED +End More_Results +*) + +(* UNEXPORTED +Section More_on_n_deriv +*) + +(*#* +Some not so basic properties of this operation (needed in rather specific situations). +*) + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_I_wd'.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_I_wd''.con". + +inline procedural "cic:/CoRN/ftc/NthDerivative/n_deriv_I_strext'.con". + +(* UNEXPORTED +End More_on_n_deriv +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/PartFunEquality.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/PartFunEquality.mma new file mode 100644 index 000000000..3b22af3fd --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/PartFunEquality.mma @@ -0,0 +1,415 @@ +(**************************************************************************) +(* ___ *) +(* ||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: PartFunEquality.v,v 1.8 2004/04/23 10:00:59 lcf Exp $ *) + +(*#* printing Feq %\ensuremath{\approx}% #≈# *) + +include "reals/Intervals.ma". + +include "tactics/DiffTactics1.ma". + +(* UNEXPORTED +Section Definitions +*) + +(*#* *Equality of Partial Functions + +** Definitions + +In some contexts (namely when quantifying over partial functions) we +need to refer explicitly to the subsetoid of elements satisfying a +given predicate rather than to the predicate itself. The following +definition makes this possible. +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/subset.con". + +(*#* +The core of our work will revolve around the following fundamental +notion: two functions are equal in a given domain (predicate) iff they +coincide on every point of that domain#. #%\footnote{%Notice that, +according to our definition of partial function, it is equivalent to +prove the equality for every proof or for a specific proof. Typically +it is easier to consider a generic case%.}%. This file is concerned +with proving the main properties of this equality relation. +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq.con". + +(*#* +Notice that, because the quantification over the proofs is universal, +we must require explicitly that the predicate be included in the +domain of each function; otherwise the basic properties of equality +(like, for example, transitivity) would fail to hold#. #%\footnote{%To +see this it is enough to realize that the empty function would be +equal to every other function in every domain.%}.% The way to +circumvent this would be to quantify existentially over the proofs; +this, however, would have two major disadvantages: first, proofs of +equality would become very cumbersome and clumsy; secondly (and most +important), we often need to prove the inclusions from an equality +hypothesis, and this definition allows us to do it in a very easy way. +Also, the pointwise equality is much nicer to use from this definition +than in an existentially quantified one. +*) + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Section Equality_Results +*) + +(*#* **Properties of Inclusion + +We will now prove the main properties of the equality relation. + +%\begin{convention}% Let [I,R:IR->CProp] and [F,G:PartIR], and denote +by [P] and [Q], respectively, the domains of [F] and [G]. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/PartFunEquality/Equality_Results/I.var". + +alias id "F" = "cic:/CoRN/ftc/PartFunEquality/Equality_Results/F.var". + +alias id "G" = "cic:/CoRN/ftc/PartFunEquality/Equality_Results/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Equality_Results/P.con" "Equality_Results__". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Equality_Results/Q.con" "Equality_Results__". + +(* end hide *) + +alias id "R" = "cic:/CoRN/ftc/PartFunEquality/Equality_Results/R.var". + +(*#* +We start with two lemmas which make it much easier to prove and use +this definition: +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/eq_imp_Feq.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_imp_eq.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/included_IR.con". + +(* UNEXPORTED +End Equality_Results +*) + +(* UNEXPORTED +Hint Resolve included_IR : included. +*) + +(* UNEXPORTED +Section Some_More +*) + +(*#* +If two function coincide on a given subset then they coincide in any smaller subset. +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/included_Feq.con". + +(* UNEXPORTED +End Some_More +*) + +(* UNEXPORTED +Section Away_from_Zero +*) + +(* UNEXPORTED +Section Definitions +*) + +(*#* **Away from Zero + +Before we prove our main results about the equality we have to do some +work on division. A function is said to be bounded away from zero in +a set if there exists a positive lower bound for the set of absolute +values of its image of that set. + +%\begin{convention}% Let [I : IR->CProp], [F : PartIR] and denote by [P] +the domain of [F]. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/PartFunEquality/Away_from_Zero/Definitions/I.var". + +alias id "F" = "cic:/CoRN/ftc/PartFunEquality/Away_from_Zero/Definitions/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Away_from_Zero/Definitions/P.con" "Away_from_Zero__Definitions__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/bnd_away_zero.con". + +(*#* +If [F] is bounded away from zero in [I] then [F] is necessarily apart from zero in [I]; also this means that [I] is included in the domain of [{1/}F]. +*) + +(* begin show *) + +alias id "Hf" = "cic:/CoRN/ftc/PartFunEquality/Away_from_Zero/Definitions/Hf.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/bnd_imp_ap_zero.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/bnd_imp_inc_recip.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/bnd_imp_inc_div.con". + +(* UNEXPORTED +End Definitions +*) + +(*#* +Boundedness away from zero is preserved through restriction of the set. + +%\begin{convention}% Let [F] be a partial function and [P, Q] be predicates. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/ftc/PartFunEquality/Away_from_Zero/F.var". + +alias id "P" = "cic:/CoRN/ftc/PartFunEquality/Away_from_Zero/P.var". + +alias id "Q" = "cic:/CoRN/ftc/PartFunEquality/Away_from_Zero/Q.var". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/included_imp_bnd.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/FRestr_bnd.con". + +(*#* +A function is said to be bounded away from zero everywhere if it is bounded away from zero in every compact subinterval of its domain; a similar definition is made for arbitrary sets, which will be necessary for future work. +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/bnd_away_zero_everywhere.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/bnd_away_zero_in_P.con". + +(*#* +An immediate consequence: +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/bnd_in_P_imp_ap_zero.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/FRestr_bnd'.con". + +(* UNEXPORTED +End Away_from_Zero +*) + +(* UNEXPORTED +Hint Resolve bnd_imp_inc_recip bnd_imp_inc_div: included. +*) + +(* UNEXPORTED +Hint Immediate bnd_in_P_imp_ap_zero: included. +*) + +(*#* ** The [FEQ] tactic +This tactic splits a goal of the form [Feq I F G] into the three subgoals +[included I (Dom F)], [included I (Dom G)] and [forall x, F x [=] G x] +and applies [Included] to the first two and [rational] to the third. +*) + +(* begin hide *) + +(* UNEXPORTED +Ltac FEQ := apply eq_imp_Feq; + [ Included | Included | intros; try (simpl in |- *; rational) ]. +*) + +(* end hide *) + +(* UNEXPORTED +Section More_on_Equality +*) + +(*#* **Properties of Equality + +We are now finally able to prove the main properties of the equality relation. We begin by showing it to be an equivalence relation. + +%\begin{convention}% Let [I] be a predicate and [F, F', G, G', H] be +partial functions. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/I.var". + +(* UNEXPORTED +Section Feq_Equivalence +*) + +alias id "F" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/Feq_Equivalence/F.var". + +alias id "G" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/Feq_Equivalence/G.var". + +alias id "H" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/Feq_Equivalence/H.var". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_reflexive.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_symmetric.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_transitive.con". + +(* UNEXPORTED +End Feq_Equivalence +*) + +(* UNEXPORTED +Section Operations +*) + +(*#* +Also it is preserved through application of functional constructors and restriction. +*) + +alias id "F" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/Operations/F.var". + +alias id "F'" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/Operations/F'.var". + +alias id "G" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/Operations/G.var". + +alias id "G'" = "cic:/CoRN/ftc/PartFunEquality/More_on_Equality/Operations/G'.var". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_plus.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_inv.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_minus.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_mult.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_nth.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_recip.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_recip'.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_div.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Feq_div'.con". + +(*#* +Notice that in the case of division we only need to require boundedness away from zero for one of the functions (as they are equal); thus the two last lemmas are stated in two different ways, as according to the context one or the other condition may be easier to prove. + +The restriction of a function is well defined. +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/FRestr_wd.con". + +(*#* +The image of a set is extensional. +*) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/fun_image_wd.con". + +(* UNEXPORTED +End Operations +*) + +(* UNEXPORTED +End More_on_Equality +*) + +(* UNEXPORTED +Section Nth_Power +*) + +(*#* **Nth Power + +We finish this group of lemmas with characterization results for the +power function (similar to those already proved for arbitrary rings). +The characterization is done at first pointwise and later using the +equality relation. + +%\begin{convention}% Let [F] be a partial function with domain [P] and +[Q] be a predicate on the real numbers assumed to be included in [P]. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/ftc/PartFunEquality/Nth_Power/F.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Nth_Power/P.con" "Nth_Power__". + +(* end hide *) + +alias id "Q" = "cic:/CoRN/ftc/PartFunEquality/Nth_Power/Q.var". + +alias id "H" = "cic:/CoRN/ftc/PartFunEquality/Nth_Power/H.var". + +alias id "Hf" = "cic:/CoRN/ftc/PartFunEquality/Nth_Power/Hf.var". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/FNth_zero.con". + +alias id "n" = "cic:/CoRN/ftc/PartFunEquality/Nth_Power/n.var". + +alias id "H'" = "cic:/CoRN/ftc/PartFunEquality/Nth_Power/H'.var". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/FNth_mult.con". + +(* UNEXPORTED +End Nth_Power +*) + +(* UNEXPORTED +Section Strong_Nth_Power +*) + +(*#* +%\begin{convention}% Let [a,b] be real numbers such that [I := [a,b]] +is included in the domain of [F]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/PartFunEquality/Strong_Nth_Power/a.var". + +alias id "b" = "cic:/CoRN/ftc/PartFunEquality/Strong_Nth_Power/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/PartFunEquality/Strong_Nth_Power/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/PartFunEquality/Strong_Nth_Power/I.con" "Strong_Nth_Power__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/PartFunEquality/Strong_Nth_Power/F.var". + +alias id "incF" = "cic:/CoRN/ftc/PartFunEquality/Strong_Nth_Power/incF.var". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/FNth_zero'.con". + +inline procedural "cic:/CoRN/ftc/PartFunEquality/FNth_mult'.con". + +(* UNEXPORTED +End Strong_Nth_Power +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/PartInterval.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/PartInterval.mma new file mode 100644 index 000000000..e01c35e39 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/PartInterval.mma @@ -0,0 +1,193 @@ +(**************************************************************************) +(* ___ *) +(* ||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: PartInterval.v,v 1.6 2004/04/23 10:01:00 lcf Exp $ *) + +include "ftc/IntervalFunct.ma". + +(* UNEXPORTED +Section Conversion +*) + +(*#* *Correspondence + +In this file we prove that there are mappings going in both ways +between the set of partial functions whose domain contains +[[a,b]] and the set of real-valued functions with domain on +that interval. These mappings form an adjunction, and thus they have +all the good properties for preservation results. + +**Mappings + +We begin by defining the map from partial functions to setoid +functions as simply being the restriction of the partial function to +the interval [[a,b]]. + +%\begin{convention}% Let [F] be a partial function and [a,b:IR] such +that [I [=] [a,b]] is included in the domain of [F]. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/ftc/PartInterval/Conversion/F.var". + +alias id "a" = "cic:/CoRN/ftc/PartInterval/Conversion/a.var". + +alias id "b" = "cic:/CoRN/ftc/PartInterval/Conversion/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/PartInterval/Conversion/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/PartInterval/Conversion/I.con" "Conversion__". + +(* end hide *) + +alias id "Hf" = "cic:/CoRN/ftc/PartInterval/Conversion/Hf.var". + +inline procedural "cic:/CoRN/ftc/PartInterval/IntPartIR_strext.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/IntPartIR.con". + +(* UNEXPORTED +End Conversion +*) + +(* UNEXPORTED +Implicit Arguments IntPartIR [F a b Hab]. +*) + +(* UNEXPORTED +Section AntiConversion +*) + +(*#* +To go the other way around, we simply take a setoid function [f] with +domain [[a,b]] and build the corresponding partial function. +*) + +alias id "a" = "cic:/CoRN/ftc/PartInterval/AntiConversion/a.var". + +alias id "b" = "cic:/CoRN/ftc/PartInterval/AntiConversion/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/PartInterval/AntiConversion/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/PartInterval/AntiConversion/I.con" "AntiConversion__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/PartInterval/AntiConversion/f.var". + +inline procedural "cic:/CoRN/ftc/PartInterval/PartInt_strext.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/PartInt.con". + +(* UNEXPORTED +End AntiConversion +*) + +(* UNEXPORTED +Implicit Arguments PartInt [a b Hab]. +*) + +(* UNEXPORTED +Section Inverses +*) + +(*#* +In one direction these operators are inverses. +*) + +inline procedural "cic:/CoRN/ftc/PartInterval/int_part_int.con". + +(* UNEXPORTED +End Inverses +*) + +(* UNEXPORTED +Section Equivalences +*) + +(*#* **Mappings Preserve Operations + +We now prove that all the operations we have defined on both sets are +preserved by [PartInt]. + +%\begin{convention}% Let [F,G] be partial functions and [a,b:IR] and +denote by [I] the interval [[a,b]]. Let [f,g] be setoid functions of +type [I->IR] equal respectively to [F] and [G] in [I]. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/ftc/PartInterval/Equivalences/F.var". + +alias id "G" = "cic:/CoRN/ftc/PartInterval/Equivalences/G.var". + +alias id "a" = "cic:/CoRN/ftc/PartInterval/Equivalences/a.var". + +alias id "b" = "cic:/CoRN/ftc/PartInterval/Equivalences/b.var". + +alias id "c" = "cic:/CoRN/ftc/PartInterval/Equivalences/c.var". + +alias id "Hab" = "cic:/CoRN/ftc/PartInterval/Equivalences/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/PartInterval/Equivalences/I.con" "Equivalences__". + +(* end hide *) + +alias id "f" = "cic:/CoRN/ftc/PartInterval/Equivalences/f.var". + +alias id "g" = "cic:/CoRN/ftc/PartInterval/Equivalences/g.var". + +alias id "Ff" = "cic:/CoRN/ftc/PartInterval/Equivalences/Ff.var". + +alias id "Gg" = "cic:/CoRN/ftc/PartInterval/Equivalences/Gg.var". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_const.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_id.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_plus.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_inv.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_minus.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_mult.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_nth.con". + +(* begin show *) + +alias id "HG" = "cic:/CoRN/ftc/PartInterval/Equivalences/HG.var". + +alias id "Hg" = "cic:/CoRN/ftc/PartInterval/Equivalences/Hg.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_recip.con". + +inline procedural "cic:/CoRN/ftc/PartInterval/part_int_div.con". + +(* UNEXPORTED +End Equivalences +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Partitions.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Partitions.mma new file mode 100644 index 000000000..0e224f38e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Partitions.mma @@ -0,0 +1,488 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Partitions.v,v 1.7 2004/04/23 10:01:00 lcf Exp $ *) + +include "ftc/Continuity.ma". + +(*#* printing Partition_Sum %\ensuremath{\sum_P}% #∑P# *) + +(* UNEXPORTED +Section Definitions +*) + +(*#* *Partitions + +We now begin to lay the way for the definition of Riemann integral. This will +be done through the definition of a sequence of +sums that is proved to be convergent; in order to do that, we first +need to do a bit of work on partitions. + +**Definitions + +A partition is defined as a record type. For each compact interval [[a,b]] +and each natural number [n], a partition of [[a,b]] with [n+1] points is a +choice of real numbers [a [=] a0 [<=] a1 [<=] an [=] b]; the following +specification works as follows: + - [Pts] is the function that chooses the points (it is declared as a +coercion); + - [prf1] states that [Pts] is a setoid function; + - [prf2] states that the points are ordered; + - [start] requires that [a0 [=] a] and + - [finish] requires that [an [=] b]. + +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Partition.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/ftc/Partitions/Pts.con +*) + +(*#* Two immediate consequences of this are that [ai [<=] aj] whenever +[i < j] and that [ai] is in [[a,b]] for all [i]. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_mon.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_in_compact.con". + +(*#* +Each partition of [[a,b]] implies a partition of the interval +$[a,a_{n-1}]$#[a,an-1]#. This partition will play an +important role in much of our future work, so we take some care to +define it. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/part_pred_lemma.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_Dom.con". + +(*#* +The mesh of a partition is the greatest distance between two +consecutive points. For convenience's sake we also define the dual +concept, which is very helpful in some situations. In order to do +this, we begin by building a list with all the distances between +consecutive points; next we only need to extract the maximum and the +minimum of this list. Notice that this list is nonempty except in the +case when [a [=] b] and [n = 0]; this means that the convention we took +of defining the minimum and maximum of the empty list to be [0] actually +helps us in this case. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Part_Mesh_List.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Mesh.con". + +inline procedural "cic:/CoRN/ftc/Partitions/AntiMesh.con". + +(*#* +Even partitions (partitions where all the points are evenly spaced) +will also play a central role in our work; the first two lemmas are +presented simply to make the definition of even partition lighter. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/even_part_1.con". + +inline procedural "cic:/CoRN/ftc/Partitions/even_part_2.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Even_Partition.con". + +(* UNEXPORTED +Section Refinements +*) + +alias id "a" = "cic:/CoRN/ftc/Partitions/Definitions/Refinements/a.var". + +alias id "b" = "cic:/CoRN/ftc/Partitions/Definitions/Refinements/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Partitions/Definitions/Refinements/Hab.var". + +alias id "m" = "cic:/CoRN/ftc/Partitions/Definitions/Refinements/m.var". + +alias id "n" = "cic:/CoRN/ftc/Partitions/Definitions/Refinements/n.var". + +alias id "P" = "cic:/CoRN/ftc/Partitions/Definitions/Refinements/P.var". + +alias id "Q" = "cic:/CoRN/ftc/Partitions/Definitions/Refinements/Q.var". + +(*#* +We now define what it means for a partition [Q] to be a refinement of +[P] and prove the main property of refinements. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Refinement.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Refinement_prop.con". + +(*#* +We will also need to consider arbitrary sums %of the form +\[\sum_{i=0}^{n-1}f(x_i)(a_{i+1}-a_i)\]%#of +f(xi)(ai+1-ai)# where +$x_i\in[a_i,a_{i+1}]$#xi∈[ai,ai+1]#. +For this, we again need a choice function [x] which has to satisfy +some condition. We define the condition and the sum for a fixed [P]: +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Points_in_Partition.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Pts_part_lemma.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_Sum.con". + +(* UNEXPORTED +End Refinements +*) + +(* UNEXPORTED +Implicit Arguments Points_in_Partition [a b Hab n]. +*) + +(* UNEXPORTED +Implicit Arguments Partition_Sum [a b Hab n P g F]. +*) + +(*#* **Constructions + +We now formalize some trivial and helpful constructions. + +%\begin{convention}% We will assume a fixed compact interval [[a,b]], denoted by [I]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/Partitions/Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/Partitions/Definitions/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Partitions/Definitions/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Partitions/Definitions/I.con" "Definitions__". + +(* end hide *) + +(* UNEXPORTED +Section Getting_Points +*) + +(*#* +From a partition we always have a canonical choice of points at which +to evaluate a function: just take all but the last points of the +partition. + +%\begin{convention}% Let [Q] be a partition of [I] with [m] points. +%\end{convention}% +*) + +alias id "m" = "cic:/CoRN/ftc/Partitions/Definitions/Getting_Points/m.var". + +alias id "Q" = "cic:/CoRN/ftc/Partitions/Definitions/Getting_Points/Q.var". + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_imp_points.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_imp_points_1.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_imp_points_2.con". + +(* UNEXPORTED +End Getting_Points +*) + +(*#* +As a corollary, given any continuous function [F] and a natural number we have an immediate choice of a sum of [F] in [[a,b]]. +*) + +alias id "F" = "cic:/CoRN/ftc/Partitions/Definitions/F.var". + +alias id "contF" = "cic:/CoRN/ftc/Partitions/Definitions/contF.var". + +inline procedural "cic:/CoRN/ftc/Partitions/Even_Partition_Sum.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Implicit Arguments Partition [a b]. +*) + +(* UNEXPORTED +Implicit Arguments Partition_Dom [a b Hab n]. +*) + +(* UNEXPORTED +Implicit Arguments Mesh [a b Hab n]. +*) + +(* UNEXPORTED +Implicit Arguments AntiMesh [a b Hab n]. +*) + +(* UNEXPORTED +Implicit Arguments Pts [a b Hab lng]. +*) + +(* UNEXPORTED +Implicit Arguments Part_Mesh_List [n a b Hab]. +*) + +(* UNEXPORTED +Implicit Arguments Points_in_Partition [a b Hab n]. +*) + +(* UNEXPORTED +Implicit Arguments Partition_Sum [a b Hab n P g F]. +*) + +(* UNEXPORTED +Implicit Arguments Even_Partition [a b]. +*) + +(* UNEXPORTED +Implicit Arguments Even_Partition_Sum [a b]. +*) + +(* UNEXPORTED +Implicit Arguments Refinement [a b Hab n m]. +*) + +(* UNEXPORTED +Hint Resolve start finish: algebra. +*) + +(* UNEXPORTED +Section Lemmas +*) + +(*#* ** Properties of the mesh + +If a partition has more than one point then its mesh list is nonempty. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/length_Part_Mesh_List.con". + +(*#* +Any element of the auxiliary list defined to calculate the mesh of a partition has a very specific form. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Part_Mesh_List_lemma.con". + +(*#* +Mesh and antimesh are always nonnegative. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Mesh_nonneg.con". + +inline procedural "cic:/CoRN/ftc/Partitions/AntiMesh_nonneg.con". + +(*#* +Most important, [AntiMesh] and [Mesh] provide lower and upper bounds +for the distance between any two consecutive points in a partition. + +%\begin{convention}% Let [I] be [[a,b]] and [P] be a partition of [I] +with [n] points. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/Partitions/Lemmas/a.var". + +alias id "b" = "cic:/CoRN/ftc/Partitions/Lemmas/b.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Partitions/Lemmas/I.con" "Lemmas__". + +(* end hide *) + +alias id "Hab" = "cic:/CoRN/ftc/Partitions/Lemmas/Hab.var". + +alias id "n" = "cic:/CoRN/ftc/Partitions/Lemmas/n.var". + +alias id "P" = "cic:/CoRN/ftc/Partitions/Lemmas/P.var". + +inline procedural "cic:/CoRN/ftc/Partitions/Mesh_lemma.con". + +inline procedural "cic:/CoRN/ftc/Partitions/AntiMesh_lemma.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Mesh_leEq.con". + +(* UNEXPORTED +End Lemmas +*) + +(* UNEXPORTED +Section Even_Partitions +*) + +(*#* More technical stuff. Two equal partitions have the same mesh. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Mesh_wd.con". + +inline procedural "cic:/CoRN/ftc/Partitions/Mesh_wd'.con". + +(*#* +The mesh of an even partition is easily calculated. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/even_partition_Mesh.con". + +(*#* ** Miscellaneous +%\begin{convention}% Throughout this section, let [a,b:IR] and [I] be [[a,b]]. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/Partitions/Even_Partitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/Partitions/Even_Partitions/b.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Partitions/Even_Partitions/I.con" "Even_Partitions__". + +(* end hide *) + +alias id "Hab" = "cic:/CoRN/ftc/Partitions/Even_Partitions/Hab.var". + +(*#* +An interesting property: in a partition, if [ai [<] aj] then [i < j]. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/Partition_Points_mon.con". + +inline procedural "cic:/CoRN/ftc/Partitions/refinement_resp_mult.con". + +(*#* +%\begin{convention}% Assume [m,n] are positive natural numbers and +denote by [P] and [Q] the even partitions with, respectively, [m] and +[n] points. +%\end{convention}% + +Even partitions always have a common refinement. +*) + +alias id "m" = "cic:/CoRN/ftc/Partitions/Even_Partitions/m.var". + +alias id "n" = "cic:/CoRN/ftc/Partitions/Even_Partitions/n.var". + +alias id "Hm" = "cic:/CoRN/ftc/Partitions/Even_Partitions/Hm.var". + +alias id "Hn" = "cic:/CoRN/ftc/Partitions/Even_Partitions/Hn.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Partitions/Even_Partitions/P.con" "Even_Partitions__". + +inline procedural "cic:/CoRN/ftc/Partitions/Even_Partitions/Q.con" "Even_Partitions__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Partitions/even_partition_refinement.con". + +(* UNEXPORTED +End Even_Partitions +*) + +(* UNEXPORTED +Section More_Definitions +*) + +(*#* ** Separation + +Some auxiliary definitions. A partition is said to be separated if all its points are distinct. +*) + +alias id "a" = "cic:/CoRN/ftc/Partitions/More_Definitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/Partitions/More_Definitions/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/Partitions/More_Definitions/Hab.var". + +inline procedural "cic:/CoRN/ftc/Partitions/_Separated.con". + +(*#* +Two partitions are said to be (mutually) separated if they are both +separated and all their points are distinct (except for the +endpoints). + +%\begin{convention}% Let [P,Q] be partitions of [I] with, +respectively, [n] and [m] points. +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/ftc/Partitions/More_Definitions/n.var". + +alias id "m" = "cic:/CoRN/ftc/Partitions/More_Definitions/m.var". + +alias id "P" = "cic:/CoRN/ftc/Partitions/More_Definitions/P.var". + +alias id "Q" = "cic:/CoRN/ftc/Partitions/More_Definitions/Q.var". + +inline procedural "cic:/CoRN/ftc/Partitions/Separated.con". + +(* UNEXPORTED +End More_Definitions +*) + +(* UNEXPORTED +Implicit Arguments _Separated [a b Hab n]. +*) + +(* UNEXPORTED +Implicit Arguments Separated [a b Hab n m]. +*) + +(* UNEXPORTED +Section Sep_Partitions +*) + +alias id "a" = "cic:/CoRN/ftc/Partitions/Sep_Partitions/a.var". + +alias id "b" = "cic:/CoRN/ftc/Partitions/Sep_Partitions/b.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Partitions/Sep_Partitions/I.con" "Sep_Partitions__". + +(* end hide *) + +alias id "Hab" = "cic:/CoRN/ftc/Partitions/Sep_Partitions/Hab.var". + +(*#* +The antimesh of a separated partition is always positive. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/pos_AntiMesh.con". + +(*#* +A partition can have only one point iff the endpoints of the interval +are the same; moreover, if the partition is separated and the +endpoints of the interval are the same then it must have one point. +*) + +inline procedural "cic:/CoRN/ftc/Partitions/partition_length_zero.con". + +inline procedural "cic:/CoRN/ftc/Partitions/_Separated_imp_length_zero.con". + +inline procedural "cic:/CoRN/ftc/Partitions/partition_less_imp_gt_zero.con". + +(* UNEXPORTED +End Sep_Partitions +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/RefLemma.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefLemma.mma new file mode 100644 index 000000000..12ea49f4d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefLemma.mma @@ -0,0 +1,565 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RefLemma.v,v 1.7 2004/04/23 10:01:00 lcf Exp $ *) + +include "ftc/RefSeparating.ma". + +include "ftc/RefSeparated.ma". + +include "ftc/RefSepRef.ma". + +(* UNEXPORTED +Section Refinement_Lemma +*) + +(*#* *The Refinement Lemmas + +Here we resume the results proved in four different files. The aim is to prove the following result (last part of Theorem 2.9 of Bishop 1967): + +%\noindent\textbf{%##Theorem##%}% Let [f] be a continuous function on a +compact interval [[a,b]] with modulus of continuity%\footnote{%# (#From our +point of view, the modulus of continuity is simply the proof that [f] is +continuous.#)#%}% [omega]. +Let [P] be a partition of [[a,b]] and [eps [>] Zero] be such that +[mesh(P) [<] omega(eps)]. +Then +%\[\left|S(f,P)-\int_a^bf(x)dx\right|\leq\varepsilon(b-a),\]%#|S(f,P)-∫f(x)dx|≤ε(b-a)# +where [S(f,P)] denotes any sum of the function [f] respecting the partition +[P] (as previously defined). + +The proof of this theorem relies on the fact that for any two partitions [P] +and [R] of [[a,b]] it is possible to define a partition [Q] which is +``almost'' a common refinement of [P] and [R]---that is, given [eps [>] Zero] +it is possible to define [Q] such that for every point [x] of either [P] or +[R] there is a point [y] of [Q] such that [|x[-]y| [<] eps]. +This requires three separate constructions (done in three separate files) +which are then properly combined to give the final result. We recommend the +reader to ignore this technical constructions. + +First we prove that if [P] and [R] are both +separated (though not necessarily separated from each other) then we can +define a partition [P'] arbitrarily close to [P] (that is, such that given +[alpha [>] Zero] and [xi [>] Zero] [P'] satisfies both +[mesh(P') [<] mesh(P) [+] xi] and for every choice of points [x_i] respecting +[P] there is a choice of points [x'_i] respecting [P'] such that +[|S(f,P)-S(f,P')| [<] alpha]) that is separated from [R]. + +Then we prove that given any partition [P] +and assuming [a [#] b] we can define a partition [P'] arbitrarily close to +[P] (in the same sense as above) which is separated. + +Finally we prove that every two separated +partitions [P] and [R] have a common refinement---as every two points in [P] +and [R] are apart, we can decide which one is smaller. We use here the +technical results about ordering that we proved in the file [IntegralLemmas.v]. + +Using the results from these files, we prove our main lemma in several steps +(and versions). + +%\begin{convention}% Throughout this section: + - [a,b:IR] and [I] denotes [[a,b]]; + - [F] is a partial function continuous in [I]. + +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/a.var". + +alias id "b" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/I.con" "Refinement_Lemma__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/F.var". + +alias id "contF" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/contF.var". + +alias id "incF" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/incF.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/contF'.con" "Refinement_Lemma__". + +(* end hide *) + +(* UNEXPORTED +Section First_Refinement_Lemma +*) + +(*#* +This is the first part of the proof of Theorem 2.9. + +%\begin{convention}% + - [P, Q] are partitions of [I] with, respectively, [n] and [m] points; + - [Q] is a refinement of [P]; + - [e] is a positive real number; + - [d] is the modulus of continuity of [F] for [e]; + - the mesh of [P] is less or equal to [d]; + - [fP] and [fQ] are choices of points respecting the partitions [P] and [Q], +respectively. + +%\end{convention}% +*) + +alias id "e" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/e.var". + +alias id "He" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/He.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/d.con" "Refinement_Lemma__First_Refinement_Lemma__". + +(* end hide *) + +alias id "m" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/m.var". + +alias id "n" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/n.var". + +alias id "P" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/P.var". + +alias id "HMesh" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/HMesh.var". + +alias id "Q" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/Q.var". + +alias id "Href" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/Href.var". + +alias id "fP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/fP.var". + +alias id "HfP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/HfP.var". + +alias id "HfP'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/HfP'.var". + +alias id "fQ" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/fQ.var". + +alias id "HfQ" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/HfQ.var". + +alias id "HfQ'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/HfQ'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/sub.con" "Refinement_Lemma__First_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sub_0.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sub_n.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sub_mon.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sub_mon'.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sub_hyp.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sub_S.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/H.con" "Refinement_Lemma__First_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/H'.con" "Refinement_Lemma__First_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/First_Refinement_Lemma/H0.con" "Refinement_Lemma__First_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sub_SS.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_h.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_g.con". + +(* NOTATION +Notation g := RL_g. +*) + +(* NOTATION +Notation h := RL_h. +*) + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc1.con". + +(* NOTATION +Notation just1 := (incF _ (Pts_part_lemma _ _ _ _ _ _ HfP _ _)). +*) + +(* NOTATION +Notation just2 := (incF _ (Pts_part_lemma _ _ _ _ _ _ HfQ _ _)). +*) + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc2.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc3.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc4.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc5.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc6.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc7.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/ref_calc8.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/first_refinement_lemma.con". + +(* UNEXPORTED +End First_Refinement_Lemma +*) + +(* UNEXPORTED +Section Second_Refinement_Lemma +*) + +(*#* +This is inequality (2.6.7). + +%\begin{convention}% + - [P, Q, R] are partitions of [I] with, respectively, [j, n] and [k] points; + - [Q] is a common refinement of [P] and [R]; + - [e, e'] are positive real numbers; + - [d, d'] are the moduli of continuity of [F] for [e, e']; + - the Mesh of [P] is less or equal to [d]; + - the Mesh of [R] is less or equal to [d']; + - [fP, fQ] and [fR] are choices of points respecting the partitions [P, Q] +and [R], respectively. + +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/n.var". + +alias id "j" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/j.var". + +alias id "k" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/k.var". + +alias id "P" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/P.var". + +alias id "Q" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/Q.var". + +alias id "R" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/R.var". + +alias id "HrefP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HrefP.var". + +alias id "HrefR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HrefR.var". + +alias id "e" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/e.var". + +alias id "e'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/e'.var". + +alias id "He" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/He.var". + +alias id "He'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/He'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/d.con" "Refinement_Lemma__Second_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/d'.con" "Refinement_Lemma__Second_Refinement_Lemma__". + +(* end hide *) + +alias id "HMeshP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HMeshP.var". + +alias id "HMeshR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HMeshR.var". + +alias id "fP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/fP.var". + +alias id "HfP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HfP.var". + +alias id "HfP'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HfP'.var". + +alias id "fR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/fR.var". + +alias id "HfR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HfR.var". + +alias id "HfR'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Second_Refinement_Lemma/HfR'.var". + +inline procedural "cic:/CoRN/ftc/RefLemma/second_refinement_lemma.con". + +(* UNEXPORTED +End Second_Refinement_Lemma +*) + +(* UNEXPORTED +Section Third_Refinement_Lemma +*) + +(*#* +This is an approximation of inequality (2.6.7), but without assuming the existence of a common refinement of [P] and [R]. + +%\begin{convention}% + - [P, R] are partitions of [I] with, respectively, [n] and [m] points; + - [e, e'] are positive real numbers; + - [d, d'] are the moduli of continuity of [F] for [e, e']; + - the Mesh of [P] is less than [d]; + - the Mesh of [R] is less than [d']; + - [fP] and [fR] are choices of points respecting the partitions [P] and [R], +respectively; + - [beta] is a positive real number. + +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/n.var". + +alias id "m" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/m.var". + +alias id "P" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/P.var". + +alias id "R" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/R.var". + +alias id "e" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/e.var". + +alias id "e'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/e'.var". + +alias id "He" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/He.var". + +alias id "He'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/He'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/d.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/d'.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +(* end hide *) + +alias id "HMeshP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/HMeshP.var". + +alias id "HMeshR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/HMeshR.var". + +alias id "fP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/fP.var". + +alias id "HfP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/HfP.var". + +alias id "HfP'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/HfP'.var". + +alias id "fR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/fR.var". + +alias id "HfR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/HfR.var". + +alias id "HfR'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/HfR'.var". + +alias id "Hab'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/Hab'.var". + +alias id "beta" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/beta.var". + +alias id "Hbeta" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/Hbeta.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/alpha.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_alpha.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/csi1.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_csi1.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/delta1.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_delta1.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/P'.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_P'_sep.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_P'_Mesh.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/fP'.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_fP'_in_P'.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_P'_P_sum.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/csi2.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_csi2.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/delta2.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_delta2.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/R'.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_R'_sep.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_R'_Mesh.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/fR'.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_fR'_in_R'.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_R'_R_sum.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/csi3.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_csi3.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/Q.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_Q_Mesh.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_Q_sep.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Third_Refinement_Lemma/fQ.con" "Refinement_Lemma__Third_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_fQ_in_Q.con". + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_Q_P'_sum.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/third_refinement_lemma.con". + +(* UNEXPORTED +End Third_Refinement_Lemma +*) + +(* UNEXPORTED +Section Fourth_Refinement_Lemma +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/Fa.con" "Refinement_Lemma__Fourth_Refinement_Lemma__". + +(* NOTATION +Notation just := (fun z => incF _ (Pts_part_lemma _ _ _ _ _ _ z _ _)). +*) + +inline procedural "cic:/CoRN/ftc/RefLemma/RL_sum_lemma_aux.con". + +(* end hide *) + +(*#* +Finally, this is inequality (2.6.7) exactly as stated (same conventions as +above) +*) + +alias id "n" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/n.var". + +alias id "m" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/m.var". + +alias id "P" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/P.var". + +alias id "R" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/R.var". + +alias id "e" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/e.var". + +alias id "e'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/e'.var". + +alias id "He" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/He.var". + +alias id "He'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/He'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/d.con" "Refinement_Lemma__Fourth_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/d'.con" "Refinement_Lemma__Fourth_Refinement_Lemma__". + +(* end hide *) + +alias id "HMeshP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/HMeshP.var". + +alias id "HMeshR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/HMeshR.var". + +alias id "fP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/fP.var". + +alias id "HfP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/HfP.var". + +alias id "HfP'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/HfP'.var". + +alias id "fR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/fR.var". + +alias id "HfR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/HfR.var". + +alias id "HfR'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/HfR'.var". + +(* begin show *) + +alias id "Hab'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Fourth_Refinement_Lemma/Hab'.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/RefLemma/fourth_refinement_lemma.con". + +(* UNEXPORTED +End Fourth_Refinement_Lemma +*) + +(* UNEXPORTED +Section Main_Refinement_Lemma +*) + +(*#* We finish by presenting Theorem 9. *) + +alias id "n" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/n.var". + +alias id "m" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/m.var". + +alias id "P" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/P.var". + +alias id "R" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/R.var". + +alias id "e" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/e.var". + +alias id "e'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/e'.var". + +alias id "He" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/He.var". + +alias id "He'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/He'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/d.con" "Refinement_Lemma__Main_Refinement_Lemma__". + +inline procedural "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/d'.con" "Refinement_Lemma__Main_Refinement_Lemma__". + +(* end hide *) + +alias id "HMeshP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/HMeshP.var". + +alias id "HMeshR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/HMeshR.var". + +alias id "fP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/fP.var". + +alias id "HfP" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/HfP.var". + +alias id "HfP'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/HfP'.var". + +alias id "fR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/fR.var". + +alias id "HfR" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/HfR.var". + +alias id "HfR'" = "cic:/CoRN/ftc/RefLemma/Refinement_Lemma/Main_Refinement_Lemma/HfR'.var". + +inline procedural "cic:/CoRN/ftc/RefLemma/refinement_lemma.con". + +(* UNEXPORTED +End Main_Refinement_Lemma +*) + +(* UNEXPORTED +End Refinement_Lemma +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSepRef.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSepRef.mma new file mode 100644 index 000000000..d344f47ad --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSepRef.mma @@ -0,0 +1,146 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RefSepRef.v,v 1.6 2004/04/23 10:01:00 lcf Exp $ *) + +(* begin hide *) + +include "ftc/COrdLemmas.ma". + +include "ftc/Partitions.ma". + +(* UNEXPORTED +Section Refining_Separated +*) + +alias id "a" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/a.var". + +alias id "b" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/Hab.var". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Refining_Separated/I.con" "Refining_Separated__". + +alias id "F" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/F.var". + +alias id "contF" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/contF.var". + +alias id "incF" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/incF.var". + +alias id "m" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/m.var". + +alias id "n" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/n.var". + +alias id "P" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/P.var". + +alias id "R" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/R.var". + +alias id "HPR" = "cic:/CoRN/ftc/RefSepRef/Refining_Separated/HPR.var". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_HP.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_HP'.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_HR.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_HR'.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_mn0.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_nm0.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_H'.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Refining_Separated/f'.con" "Refining_Separated__". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Refining_Separated/g'.con" "Refining_Separated__". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_f'_nlnf.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_g'_nlnf.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_f'_mon.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_g'_mon.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_f'_ap_g'.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Refining_Separated/h.con" "Refining_Separated__". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_nlnf.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_mon.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_mon'.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_f'.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_g'.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_PropAll.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_PropEx.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement_fun.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement_lemma1.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement_lemma3.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement_lemma4.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement_lemma2.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxP.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxR.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxP_lemma0.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_h_inj.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxP_lemmai.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxP_lemman.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxP_lemma1.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxP_lemma2.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement_lft.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxR_lemma0.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxR_lemmai.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxR_lemmam.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxR_lemma1.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/RSR_auxR_lemma2.con". + +inline procedural "cic:/CoRN/ftc/RefSepRef/Separated_Refinement_rht.con". + +(* UNEXPORTED +End Refining_Separated +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparated.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparated.mma new file mode 100644 index 000000000..4a26edaef --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparated.mma @@ -0,0 +1,179 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RefSeparated.v,v 1.8 2004/04/23 10:01:00 lcf Exp $ *) + +(* begin hide *) + +include "ftc/COrdLemmas.ma". + +include "ftc/Partitions.ma". + +(* UNEXPORTED +Section Separating__Separated +*) + +alias id "a" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/a.var". + +alias id "b" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Hab.var". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/I.con" "Separating__Separated__". + +alias id "F" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/F.var". + +alias id "contF" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/contF.var". + +alias id "incF" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/incF.var". + +alias id "Hab'" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Hab'.var". + +alias id "m" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/m.var". + +alias id "n" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/n.var". + +alias id "P" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/P.var". + +alias id "R" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/R.var". + +alias id "HP" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/HP.var". + +alias id "HR" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/HR.var". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_pos_n.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_pos_m.con". + +alias id "alpha" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/alpha.var". + +alias id "Halpha" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Halpha.var". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/e.con" "Separating__Separated__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_He.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/contF'.con" "Separating__Separated__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/d.con" "Separating__Separated__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_Hd.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_Hd'.con". + +alias id "csi" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/csi.var". + +alias id "Hcsi" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Hcsi.var". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/M.con" "Separating__Separated__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/deltaP.con" "Separating__Separated__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/deltaR.con" "Separating__Separated__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/delta.con" "Separating__Separated__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_delta_deltaP.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_delta_deltaR.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_delta_csi.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_delta_d.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/RS_delta_pos.con". + +(* UNEXPORTED +Section Defining_ai' +*) + +alias id "i" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Defining_ai'/i.var". + +alias id "Hi" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Defining_ai'/Hi.var". + +inline procedural "cic:/CoRN/ftc/RefSeparated/separation_conseq.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Defining_ai'/pred1.con" "Separating__Separated__Defining_ai'__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Defining_ai'/pred2.con" "Separating__Separated__Defining_ai'__". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_aux_lemma.con". + +alias id "Hi0" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Defining_ai'/Hi0.var". + +alias id "Hin" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/Defining_ai'/Hin.var". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_fun_i.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_leEq.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_less.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_ap.con". + +(* UNEXPORTED +End Defining_ai' +*) + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_fun.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_fun_i_delta.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_fun_delta.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_mon_i.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_mon.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_fun_i_wd.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_fun_wd.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_part.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_lemma.con". + +alias id "g" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/g.var". + +alias id "gP" = "cic:/CoRN/ftc/RefSeparated/Separating__Separated/gP.var". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_points.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_points_lemma.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_aux.con". + +(* NOTATION +Notation just1 := (incF _ (Pts_part_lemma _ _ _ _ _ _ gP _ _)). +*) + +(* NOTATION +Notation just2 := + (incF _ (Pts_part_lemma _ _ _ _ _ _ sep__sep_points_lemma _ _)). +*) + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_Sum.con". + +inline procedural "cic:/CoRN/ftc/RefSeparated/sep__sep_Mesh.con". + +(* UNEXPORTED +End Separating__Separated +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparating.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparating.mma new file mode 100644 index 000000000..1cb7b194f --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/RefSeparating.mma @@ -0,0 +1,183 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RefSeparating.v,v 1.7 2004/04/23 10:01:01 lcf Exp $ *) + +(* begin hide *) + +include "ftc/COrdLemmas.ma". + +include "ftc/Partitions.ma". + +(* UNEXPORTED +Section Separating_Partition +*) + +alias id "a" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/a.var". + +alias id "b" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/Hab.var". + +inline procedural "cic:/CoRN/ftc/RefSeparating/Separating_Partition/I.con" "Separating_Partition__". + +alias id "F" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/F.var". + +alias id "contF" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/contF.var". + +alias id "incF" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/incF.var". + +alias id "Hab'" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/Hab'.var". + +alias id "n" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/n.var". + +alias id "P" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/P.var". + +alias id "alpha" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/alpha.var". + +alias id "Halpha" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/Halpha.var". + +alias id "csi" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/csi.var". + +alias id "Hcsi" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/Hcsi.var". + +inline procedural "cic:/CoRN/ftc/RefSeparating/Separating_Partition/M.con" "Separating_Partition__". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_pos_n.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/SPap_n.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/Separating_Partition/delta.con" "Separating_Partition__". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_delta_pos.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_delta_csi.con". + +alias id "Hab''" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/Hab''.var". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_lemma.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h_bnd.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h_mon_1.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h_mon_2.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h_mon_3.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_app_n.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h_lemma.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h_lemma2.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_h_lemma3.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_delta2_delta4.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_m1.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_m.con". + +(* NOTATION +Notation m := RS'_m. +*) + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_length.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_m_m1.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_pos_m.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_bnd.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_0.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_i.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_m.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_i'.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_bnd'.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_wd.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_mon.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_fun_mon_pts.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_mon.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_mon_Mesh.con". + +alias id "g" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/g.var". + +alias id "gP" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/gP.var". + +alias id "gP'" = "cic:/CoRN/ftc/RefSeparating/Separating_Partition/gP'.var". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_pts.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_pts_lemma.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_pts_in_Partition.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_Hsep_S.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_Hsep.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/RS'_h.con". + +(* NOTATION +Notation h := RS'_h. +*) + +(* NOTATION +Notation just1 := (incF _ (Pts_part_lemma _ _ _ _ _ _ gP _ _)). +*) + +(* NOTATION +Notation just2 := + (incF _ (Pts_part_lemma _ _ _ _ _ _ sep__part_pts_in_Partition _ _)). +*) + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_suRS'_m1.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_Sum2.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_Sum3.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_Sum4.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_aux.con". + +inline procedural "cic:/CoRN/ftc/RefSeparating/sep__part_Sum.con". + +(* UNEXPORTED +End Separating_Partition +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Rolle.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Rolle.mma new file mode 100644 index 000000000..c55574312 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Rolle.mma @@ -0,0 +1,284 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Rolle.v,v 1.6 2004/04/23 10:01:01 lcf Exp $ *) + +include "tactics/DiffTactics2.ma". + +include "ftc/MoreFunctions.ma". + +(* UNEXPORTED +Section Rolle +*) + +(*#* *Rolle's Theorem + +We now begin to work with partial functions. We begin by stating and proving Rolle's theorem in various forms and some of its corollaries. + +%\begin{convention}% Assume that: + - [a,b:IR] with [a [<] b] and denote by [I] the interval [[a,b]]; + - [F,F'] are partial functions such that [F'] is the derivative of [F] in [I]; + - [e] is a positive real number. + +%\end{convention}% +*) + +(* begin hide *) + +alias id "a" = "cic:/CoRN/ftc/Rolle/Rolle/a.var". + +alias id "b" = "cic:/CoRN/ftc/Rolle/Rolle/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Rolle/Rolle/Hab'.var". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hab.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/I.con" "Rolle__". + +alias id "F" = "cic:/CoRN/ftc/Rolle/Rolle/F.var". + +alias id "F'" = "cic:/CoRN/ftc/Rolle/Rolle/F'.var". + +alias id "derF" = "cic:/CoRN/ftc/Rolle/Rolle/derF.var". + +alias id "Ha" = "cic:/CoRN/ftc/Rolle/Rolle/Ha.var". + +alias id "Hb" = "cic:/CoRN/ftc/Rolle/Rolle/Hb.var". + +(* end hide *) + +(* begin show *) + +alias id "Fab" = "cic:/CoRN/ftc/Rolle/Rolle/Fab.var". + +(* end show *) + +(* begin hide *) + +alias id "e" = "cic:/CoRN/ftc/Rolle/Rolle/e.var". + +alias id "He" = "cic:/CoRN/ftc/Rolle/Rolle/He.var". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/contF'.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/derivF.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma2.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/df.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hdf.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hf.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma3.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/df'.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hdf'.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hf'.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/d.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hd.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/incF.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/n.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/fcp.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma1.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/incF'.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/fcp'.con" "Rolle__". + +(* NOTATION +Notation cp := (compact_part a b Hab' d Hd). +*) + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma4.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma5.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma6.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma7.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/j.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hj.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hj'.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/k.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hk.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Hk'.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma8.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma9.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma10.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma11.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma12.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma13.con" "Rolle__". + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle/Rolle_lemma15.con" "Rolle__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle.con". + +(* UNEXPORTED +End Rolle +*) + +(* UNEXPORTED +Section Law_of_the_Mean +*) + +(*#* +The following is a simple corollary: +*) + +alias id "a" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/a.var". + +alias id "b" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/Hab.con" "Law_of_the_Mean__". + +inline procedural "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/I.con" "Law_of_the_Mean__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/F.var". + +alias id "F'" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/F'.var". + +alias id "HF" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/HF.var". + +(* begin show *) + +alias id "HA" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/HA.var". + +alias id "HB" = "cic:/CoRN/ftc/Rolle/Law_of_the_Mean/HB.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Rolle/Law_of_the_Mean_I.con". + +(* UNEXPORTED +End Law_of_the_Mean +*) + +(* UNEXPORTED +Section Corollaries +*) + +(*#* +We can also state these theorems without expliciting the derivative of [F]. +*) + +alias id "a" = "cic:/CoRN/ftc/Rolle/Corollaries/a.var". + +alias id "b" = "cic:/CoRN/ftc/Rolle/Corollaries/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/Rolle/Corollaries/Hab'.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Rolle/Corollaries/Hab.con" "Corollaries__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/Rolle/Corollaries/F.var". + +(* begin show *) + +alias id "HF" = "cic:/CoRN/ftc/Rolle/Corollaries/HF.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Rolle/Rolle'.con". + +inline procedural "cic:/CoRN/ftc/Rolle/Law_of_the_Mean'_I.con". + +(* UNEXPORTED +End Corollaries +*) + +(* UNEXPORTED +Section Generalizations +*) + +(*#* +The mean law is more useful if we abstract [a] and [b] from the +context---allowing them in particular to be equal. In the case where +[F(a) [=] F(b)] we get Rolle's theorem again, so there is no need to +state it also in this form. + +%\begin{convention}% Assume [I] is a proper interval, [F,F':PartIR]. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/Rolle/Generalizations/I.var". + +alias id "pI" = "cic:/CoRN/ftc/Rolle/Generalizations/pI.var". + +alias id "F" = "cic:/CoRN/ftc/Rolle/Generalizations/F.var". + +alias id "F'" = "cic:/CoRN/ftc/Rolle/Generalizations/F'.var". + +(* begin show *) + +alias id "derF" = "cic:/CoRN/ftc/Rolle/Generalizations/derF.var". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Rolle/Generalizations/incF.con" "Generalizations__". + +inline procedural "cic:/CoRN/ftc/Rolle/Generalizations/incF'.con" "Generalizations__". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Rolle/Law_of_the_Mean.con". + +(*#* +We further generalize the mean law by writing as an explicit bound. +*) + +inline procedural "cic:/CoRN/ftc/Rolle/Law_of_the_Mean_ineq.con". + +(* UNEXPORTED +End Generalizations +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/StrongIVT.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/StrongIVT.mma new file mode 100644 index 000000000..6c0ad134b --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/StrongIVT.mma @@ -0,0 +1,162 @@ +(**************************************************************************) +(* ___ *) +(* ||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: StrongIVT.v,v 1.5 2004/04/23 10:01:01 lcf Exp $ *) + +include "ftc/WeakIVT.ma". + +include "ftc/CalculusTheorems.ma". + +(* UNEXPORTED +Section IVT' +*) + +(*#* ** Strong IVT for partial functions + +The IVT can be generalized to arbitrary partial functions; in the first +part, we will simply do that, repeating the previous construction. + +The same notations and conventions apply as before. +*) + +alias id "a" = "cic:/CoRN/ftc/StrongIVT/IVT'/a.var". + +alias id "b" = "cic:/CoRN/ftc/StrongIVT/IVT'/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/StrongIVT/IVT'/Hab'.var". + +alias id "Hab" = "cic:/CoRN/ftc/StrongIVT/IVT'/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/I.con" "IVT'__". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/I'.con" "IVT'__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/StrongIVT/IVT'/F.var". + +alias id "contF" = "cic:/CoRN/ftc/StrongIVT/IVT'/contF.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/incF.con" "IVT'__". + +(* end hide *) + +(* begin show *) + +alias id "incrF" = "cic:/CoRN/ftc/StrongIVT/IVT'/incrF.var". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/Ha.con" "IVT'__". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/Hb.con" "IVT'__". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/HFab'.con" "IVT'__". + +(* end hide *) + +(* begin show *) + +alias id "z" = "cic:/CoRN/ftc/StrongIVT/IVT'/z.var". + +alias id "Haz" = "cic:/CoRN/ftc/StrongIVT/IVT'/Haz.var". + +alias id "Hzb" = "cic:/CoRN/ftc/StrongIVT/IVT'/Hzb.var". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'_seq_lemma.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'_aux_seq_type.ind". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'_iter.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'_seq.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/b'_seq.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_I.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/b'_seq_I.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_less_b'_seq.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_less_z.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/z_less_b'_seq.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_mon.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/b'_seq_mon.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_b'_seq_dist_n.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_b'_seq_dist.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_Cauchy.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/b'_seq_Cauchy.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/xa.con" "IVT'__". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'/xb.con" "IVT'__". + +inline procedural "cic:/CoRN/ftc/StrongIVT/a'_seq_b'_seq_lim.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/xa'_in_interval.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'_I.con". + +(* UNEXPORTED +End IVT' +*) + +(*#* **Other formulations + +We now generalize the various statements of the intermediate value +theorem to more widely applicable forms. +*) + +inline procedural "cic:/CoRN/ftc/StrongIVT/Weak_IVT.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT_inc.con". + +(* UNEXPORTED +Transparent Min. +*) + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT_dec.con". + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'_inc.con". + +(* UNEXPORTED +Transparent Min. +*) + +inline procedural "cic:/CoRN/ftc/StrongIVT/IVT'_dec.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/Taylor.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/Taylor.mma new file mode 100644 index 000000000..75f07a002 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/Taylor.mma @@ -0,0 +1,154 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Taylor.v,v 1.10 2004/04/23 10:01:01 lcf Exp $ *) + +include "ftc/TaylorLemma.ma". + +(* UNEXPORTED +Opaque Min Max N_Deriv. +*) + +(* UNEXPORTED +Section More_Taylor_Defs +*) + +(*#* **General case + +The generalization to arbitrary intervals just needs a few more definitions. + +%\begin{convention}% Let [I] be a proper interval, [F:PartIR] and +[a,b:IR] be points of [I]. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/I.var". + +alias id "pI" = "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/pI.var". + +alias id "F" = "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/F.var". + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/deriv_Sn.con" "More_Taylor_Defs__". + +(* end show *) + +alias id "a" = "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/a.var". + +alias id "b" = "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/b.var". + +alias id "Ha" = "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/Ha.var". + +alias id "Hb" = "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/Hb.var". + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/fi.con" "More_Taylor_Defs__". + +inline procedural "cic:/CoRN/ftc/Taylor/More_Taylor_Defs/funct_i.con" "More_Taylor_Defs__". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_Seq'.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Taylor/TaylorB.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_Rem.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_Sumx_lemma.con". + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_lemma_ap.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor'.con". + +(* UNEXPORTED +End More_Taylor_Defs +*) + +(* UNEXPORTED +Section Taylor_Theorem +*) + +(*#* +And finally the ``nice'' version, when we know the expression of the +derivatives of [F]. + +%\begin{convention}% Let [f] be the sequence of derivatives of [F] of +order up to [n] and [F'] be the nth-derivative of [F]. +%\end{convention}% +*) + +alias id "I" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/I.var". + +alias id "pI" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/pI.var". + +alias id "F" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/F.var". + +alias id "n" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/n.var". + +alias id "f" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/f.var". + +alias id "goodF" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/goodF.var". + +alias id "goodF'" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/goodF'.var". + +alias id "derF" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/derF.var". + +alias id "F'" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/F'.var". + +alias id "derF'" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/derF'.var". + +alias id "a" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/a.var". + +alias id "b" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/b.var". + +alias id "Ha" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/Ha.var". + +alias id "Hb" = "cic:/CoRN/ftc/Taylor/Taylor_Theorem/Hb.var". + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_Theorem/funct_i.con" "Taylor_Theorem__". + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_Seq.con". + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_Theorem/deriv_Sn.con" "Taylor_Theorem__". + +(* end show *) + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor_aux.con". + +(* UNEXPORTED +Transparent N_Deriv. +*) + +inline procedural "cic:/CoRN/ftc/Taylor/Taylor.con". + +(* UNEXPORTED +End Taylor_Theorem +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/TaylorLemma.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/TaylorLemma.mma new file mode 100644 index 000000000..8b016e4f2 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/TaylorLemma.mma @@ -0,0 +1,328 @@ +(**************************************************************************) +(* ___ *) +(* ||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: TaylorLemma.v,v 1.8 2004/04/23 10:01:01 lcf Exp $ *) + +include "ftc/Rolle.ma". + +(* UNEXPORTED +Opaque Min. +*) + +(* UNEXPORTED +Section Taylor_Defs +*) + +(*#* *Taylor's Theorem + +We now prove Taylor's theorem for the remainder of the Taylor +series. This proof is done in two steps: first, we prove the lemma +for a proper compact interval; next we generalize the result to two +arbitrary (eventually equal) points in a proper interval. + +** First case + +We assume two different points [a] and [b] in the domain of [F] and +define the nth order derivative of [F] in the interval +[[Min(a,b),Max(a,b)]]. +*) + +alias id "a" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/a.var". + +alias id "b" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/b.var". + +alias id "Hap" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/Hap.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/Hab'.con" "Taylor_Defs__". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/Hab.con" "Taylor_Defs__". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/I.con" "Taylor_Defs__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/F.var". + +alias id "Ha" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/Ha.var". + +alias id "Hb" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/Hb.var". + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/fi.con" "Taylor_Defs__". + +(* end show *) + +(*#* +This last local definition is simply: +$f_i=f^{(i)}$#fi=f(i)#. +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma1.con". + +(* end hide *) + +(*#* +Now we can define the Taylor sequence around [a]. The auxiliary +definition gives, for any [i], the function expressed by the rule +%\[g(x)=\frac{f^{(i)} +(a)}{i!}*(x-a)^i.\]%#g(x)=f(i)(a)/i!*(x-a)i.# +We denote by [A] and [B] the elements of [[Min(a,b),Max(a,b)]] +corresponding to [a] and [b]. +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/TL_compact_a.con" "Taylor_Defs__". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/TL_compact_b.con" "Taylor_Defs__". + +(* NOTATION +Notation A := (Build_subcsetoid_crr IR _ _ TL_compact_a). +*) + +(* NOTATION +Notation B := (Build_subcsetoid_crr IR _ _ TL_compact_b). +*) + +(* end hide *) + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/funct_i.con" "Taylor_Defs__". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/funct_i'.con" "Taylor_Defs__". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_a_i.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_b_i.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_x_i.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_a_i'.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_b_i'.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_x_i'.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma2.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma2'.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma3.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma3'.con". + +(* end hide *) + +(*#* +Adding the previous expressions up to a given bound [n] gives us the +Taylor sum of order [n]. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_seq'.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/Taylor_seq'_aux.con" "Taylor_Defs__". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_lemma_a.con". + +(* end hide *) + +(*#* +It is easy to show that [b] is in the domain of this series, which allows us to write down the Taylor remainder around [b]. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_lemma_b.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_lemma_a'.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TL_lemma_b'.con". + +(* end hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_rem.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/g.con" "Taylor_Defs__". + +(* UNEXPORTED +Opaque Taylor_seq'_aux Taylor_rem. +*) + +(* UNEXPORTED +Transparent Taylor_rem. +*) + +(* UNEXPORTED +Opaque Taylor_seq'. +*) + +(* UNEXPORTED +Transparent Taylor_seq' Taylor_seq'_aux. +*) + +(* UNEXPORTED +Opaque funct_i'. +*) + +(* UNEXPORTED +Opaque funct_i. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma4.con". + +(* UNEXPORTED +Transparent funct_i funct_i'. +*) + +(* UNEXPORTED +Opaque Taylor_seq'_aux. +*) + +(* UNEXPORTED +Transparent Taylor_seq'_aux. +*) + +(* UNEXPORTED +Opaque FSumx. +*) + +(* UNEXPORTED +Opaque funct_i'. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma5.con". + +(* UNEXPORTED +Transparent funct_i' FSumx. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/funct_aux.con" "Taylor_Defs__". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma6.con". + +(* UNEXPORTED +Ltac Lazy_Included := + repeat first + [ apply included_IR + | apply included_FPlus + | apply included_FInv + | apply included_FMinus + | apply included_FMult + | apply included_FNth + | apply included_refl ]. +*) + +(* UNEXPORTED +Ltac Lazy_Eq := + repeat first + [ apply bin_op_wd_unfolded + | apply un_op_wd_unfolded + | apply cg_minus_wd + | apply div_wd + | apply csf_wd_unfolded ]; Algebra. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma7.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma8.con". + +(* UNEXPORTED +Opaque funct_aux. +*) + +(* UNEXPORTED +Transparent funct_aux. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma9.con". + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/g'.con" "Taylor_Defs__". + +(* UNEXPORTED +Opaque Taylor_rem funct_aux. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma10.con". + +(* UNEXPORTED +Transparent Taylor_rem funct_aux. +*) + +(* end hide *) + +(*#* +Now Taylor's theorem. + +%\begin{convention}% Let [e] be a positive real number. +%\end{convention}% +*) + +alias id "e" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/e.var". + +alias id "He" = "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/He.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma11.con". + +(* end hide *) + +(* begin show *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_Defs/deriv_Sn'.con" "Taylor_Defs__". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/TLH.con". + +(* end hide *) + +(* UNEXPORTED +Opaque funct_aux. +*) + +(* UNEXPORTED +Opaque Taylor_rem. +*) + +(* UNEXPORTED +Transparent Taylor_rem funct_aux. +*) + +inline procedural "cic:/CoRN/ftc/TaylorLemma/Taylor_lemma.con". + +(* UNEXPORTED +End Taylor_Defs +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/ftc/WeakIVT.mma b/helm/software/matita/contribs/CoRN-Procedural/ftc/WeakIVT.mma new file mode 100644 index 000000000..750fce585 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/ftc/WeakIVT.mma @@ -0,0 +1,235 @@ +(**************************************************************************) +(* ___ *) +(* ||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: WeakIVT.v,v 1.9 2004/04/23 10:01:01 lcf Exp $ *) + +(*#* printing ** %\ensuremath\times% #×# *) + +(* begin hide *) + +(* NOTATION +Infix "**" := prodT (at level 20). +*) + +(* end hide *) + +include "ftc/Continuity.ma". + +(*#* *IVT for Partial Functions + +In general, we cannot prove the classically valid Intermediate Value +Theorem for arbitrary partial functions, which states that in any +interval [[a,b]], for any value [z] between [f(a)] and [f(b)] +there exists $x\in[a,b]$#x∈[a,b]# such that [f(x) [=] z]. + +However, as is usually the case, there are some good aproximation results. We +will prove them here. +*) + +(* UNEXPORTED +Section Lemma1 +*) + +alias id "a" = "cic:/CoRN/ftc/WeakIVT/Lemma1/a.var". + +alias id "b" = "cic:/CoRN/ftc/WeakIVT/Lemma1/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/WeakIVT/Lemma1/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/WeakIVT/Lemma1/I.con" "Lemma1__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/WeakIVT/Lemma1/F.var". + +alias id "contF" = "cic:/CoRN/ftc/WeakIVT/Lemma1/contF.var". + +(*#* **First Lemmas + +%\begin{convention}% Let [a, b : IR] and [Hab : a [<=] b] and denote by [I] +the interval [[a,b]]. Let [F] be a continuous function on [I]. +%\end{convention}% + +We begin by proving that, if [f(a) [<] f(b)], then for every [y] in +[[f(a),f(b)]] there is an $x\in[a,b]$#x∈[a,b]# such that [f(x)] is close +enough to [z]. +*) + +inline procedural "cic:/CoRN/ftc/WeakIVT/Weak_IVT_ap_lft.con". + +(* UNEXPORTED +End Lemma1 +*) + +(* UNEXPORTED +Section Lemma2 +*) + +alias id "a" = "cic:/CoRN/ftc/WeakIVT/Lemma2/a.var". + +alias id "b" = "cic:/CoRN/ftc/WeakIVT/Lemma2/b.var". + +alias id "Hab" = "cic:/CoRN/ftc/WeakIVT/Lemma2/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/WeakIVT/Lemma2/I.con" "Lemma2__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/WeakIVT/Lemma2/F.var". + +alias id "contF" = "cic:/CoRN/ftc/WeakIVT/Lemma2/contF.var". + +(*#* +If [f(b) [<] f(a)], a similar result holds: +*) + +inline procedural "cic:/CoRN/ftc/WeakIVT/Weak_IVT_ap_rht.con". + +(* UNEXPORTED +End Lemma2 +*) + +(* UNEXPORTED +Section IVT +*) + +(*#* **The IVT + +We will now assume that [a [<] b] and that [F] is not only +continuous, but also strictly increasing in [I]. Under +these assumptions, we can build two sequences of values which +converge to [x0] such that [f(x0) [=] z]. +*) + +alias id "a" = "cic:/CoRN/ftc/WeakIVT/IVT/a.var". + +alias id "b" = "cic:/CoRN/ftc/WeakIVT/IVT/b.var". + +alias id "Hab'" = "cic:/CoRN/ftc/WeakIVT/IVT/Hab'.var". + +alias id "Hab" = "cic:/CoRN/ftc/WeakIVT/IVT/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/I.con" "IVT__". + +(* end hide *) + +alias id "F" = "cic:/CoRN/ftc/WeakIVT/IVT/F.var". + +alias id "contF" = "cic:/CoRN/ftc/WeakIVT/IVT/contF.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/incF.con" "IVT__". + +(* end hide *) + +(* begin show *) + +alias id "incrF" = "cic:/CoRN/ftc/WeakIVT/IVT/incrF.var". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/Ha.con" "IVT__". + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/Hb.con" "IVT__". + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/HFab'.con" "IVT__". + +(* end hide *) + +(* begin show *) + +alias id "z" = "cic:/CoRN/ftc/WeakIVT/IVT/z.var". + +alias id "Haz" = "cic:/CoRN/ftc/WeakIVT/IVT/Haz.var". + +alias id "Hzb" = "cic:/CoRN/ftc/WeakIVT/IVT/Hzb.var". + +(* end show *) + +(*#* Given any two points [x [<] y] in [[a,b]] such that [x [<=] z [<=] y], +we can find [x' [<] y'] such that $|x'-y'|=\frac23|x-y|$#|x'-y'|=2/3|x-y|# +and [x' [<=] z [<=] y']. +*) + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_seq_lemma.con". + +(* end hide *) + +(*#* +We now iterate this construction. +*) + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_aux_seq_type.ind". + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_iter.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_seq.con". + +(*#* +We now define the sequences built from this iteration, starting with [a] and [b]. +*) + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_I.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq_I.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_less_b_seq.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_leEq_z.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/z_leEq_b_seq.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_mon.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq_mon.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_b_seq_dist_n.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_b_seq_dist.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_Cauchy.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/b_seq_Cauchy.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/xa.con" "IVT__". + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT/xb.con" "IVT__". + +inline procedural "cic:/CoRN/ftc/WeakIVT/a_seq_b_seq_lim.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/xa_in_interval.con". + +inline procedural "cic:/CoRN/ftc/WeakIVT/IVT_I.con". + +(* UNEXPORTED +End IVT +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/metrics/CMetricSpaces.mma b/helm/software/matita/contribs/CoRN-Procedural/metrics/CMetricSpaces.mma new file mode 100644 index 000000000..670bf8655 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/metrics/CMetricSpaces.mma @@ -0,0 +1,205 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CMetricSpaces.v,v 1.4 2004/04/23 10:01:01 lcf Exp $ *) + +include "metrics/Prod_Sub.ma". + +include "metrics/Equiv.ma". + +(* UNEXPORTED +Section Definition_MS +*) + +(*#* **Definition of Metric Space +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/CMetricSpace.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/metrics/CMetricSpaces/scms_crr.con +*) + +(* UNEXPORTED +End Definition_MS +*) + +(* UNEXPORTED +Section MS_basics +*) + +(*#* **Metric Space basics +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/d_CMetricSpace_apdiag_imp_grzero.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/d_zero_imp_eq.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/is_CMetricSpace_diag_zero.con". + +(* UNEXPORTED +End MS_basics +*) + +(* UNEXPORTED +Section prodandsub +*) + +(*#* **Product-Metric-Spaces and Sub-Metric-Spaces +*) + +(*#* +The product of two metric spaces is again a metric space. +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Prod0CMetricSpaces_apdiag_grzero.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Prod0CMetricSpace.con". + +(*#* +A subspace of a metric space is again a metric space. +*) + +(* UNEXPORTED +Implicit Arguments SubPsMetricSpace [X]. +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/SubMetricSpace_apdiag_grzero.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/SubMetricSpace.con". + +(* UNEXPORTED +Implicit Arguments SubMetricSpace [X]. +*) + +(* UNEXPORTED +End prodandsub +*) + +(* UNEXPORTED +Section Zeroff +*) + +(*#* **Pseudo Metric Spaces vs Metric Spaces +*) + +(*#* +Not all pseudo metric spaces are a metric space: +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/zf_nis_CMetricSpace.con". + +(*#* +But a pseudo metric space induces a metric space: +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_ap.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_eq.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_ap_irreflexive.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_ap_symmetric.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_ap_cotransitive.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_ap_tight.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_CSet_is_CSetoid.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_CSetoid.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_d.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/metric_d_strext.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_d.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_d_com.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_d_nneg.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_d_pos_imp_ap.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_d_tri_ineq.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/QuotientCSetoid_is_CPsMetricSpace.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/QuotientCPsMetricSpace.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Metric_d_apdiag_grzero.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/QuotientCMetricSpace.con". + +(*#* +Some pseudo metric spaces already are a metric space: +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/dIR_apdiag_grzero.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/IR_as_CMetricSpace.con". + +(*#* +In that case the induced metric space is equivalent to the original one: +*) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/emb.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/emb_strext.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Emb.con". + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/Quotient_pres_CMetricSpace.con". + +(* UNEXPORTED +End Zeroff +*) + +(* UNEXPORTED +Section Limitt +*) + +(*#* **Limit +*) + +(*#* +A sequence in a metric space has at most one limit. +*) + +(* UNEXPORTED +Implicit Arguments MSseqLimit [X]. +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/nz.con". + +(* end hide *) + +(* begin hide *) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/d_wd.con". + +(* end hide *) + +inline procedural "cic:/CoRN/metrics/CMetricSpaces/unique_MSseqLim.con". + +(* UNEXPORTED +End Limitt +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/metrics/CPMSTheory.mma b/helm/software/matita/contribs/CoRN-Procedural/metrics/CPMSTheory.mma new file mode 100644 index 000000000..24b6b8bb0 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/metrics/CPMSTheory.mma @@ -0,0 +1,226 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPMSTheory.v,v 1.6 2004/04/23 10:01:02 lcf Exp $ *) + +include "metrics/Prod_Sub.ma". + +(* UNEXPORTED +Section lists +*) + +(*#* **Lists +*) + +(*#* + List and membership of lists are used in the definition of +%''totally bounded''% #"totally bounded"#. Note that we use the Leibniz equality in the definition +of [MSmember], and not the setoid equality. So we are really talking about +finite sets of representants, instead of finite subsetoids. This seems to make + the proofs a bit easier. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/MSmember.con". + +(* UNEXPORTED +Implicit Arguments MSmember [X]. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/to_IR.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/from_IR.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/list_IR.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/is_P.con". + +(*#* +If a real number is element of a list in the above defined sense, +it is an element of the list in the sense of [member], +that uses the setoid equality. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/member1.con". + +(*#* +The image under a certain mapping of an element of a list $l$ #l# is member +of the list of images of elements of $l$ #l#. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/map_member.con". + +(* UNEXPORTED +End lists +*) + +(* UNEXPORTED +Section loc_and_bound +*) + +(*#* **Pseudo Metric Space theory +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/Re_co_do.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/Re_co_do_strext.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/re_co_do.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/re_co_do_well_def.con". + +(* UNEXPORTED +Implicit Arguments MSmember [X]. +*) + +(*#* +Again we see that the image under a certain mapping of an element of a list $l$ +#l# is member of the list of images of elements of $l$ #l#. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/map_member'.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/bounded.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/MStotally_bounded.con". + +(*#* +Total boundedness is preserved under uniformly continuous mappings. +*) + +(* UNEXPORTED +Implicit Arguments SubPsMetricSpace [X]. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/unicon_resp_totallybounded.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/MStotallybounded_totallybounded.con". + +(*#* +Every image under an uniformly continuous function of an totally bounded +pseudo metric space has an infimum and a supremum. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/infimum_exists.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/supremum_exists.con". + +(*#* +A subspace $P$#P# of a pseudo metric space $X$#X# is said to be located if for all +elements $x$#x# of $X$#X# there exists an infimum for the distance +between $x$#x# and the elements of $P$#P#. +*) + +(* UNEXPORTED +Implicit Arguments dsub'_as_cs_fun [X]. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/located.con". + +(* UNEXPORTED +Implicit Arguments located [X]. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/located'.con". + +(* UNEXPORTED +Implicit Arguments located' [X]. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/located_imp_located'.con". + +(*#* +Every totally bounded pseudo metric space is located. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/MStotally_bounded_imp_located.con". + +(*#* +For all $x$#x# in a pseudo metric space $X$#X#, for all located subspaces $P$#P# of $X$#X#, +[Floc] chooses for a given natural number $n$#n# an $y$#y# in $P$#P# such that: +$d(x,y)\leq \mbox{inf}\{d(x,p)|p \in P\}+(n+1)^{-1}$ +#d(x,y) ≤ inf{d(x,p)| pϵP} + (n+1)-1#. +[Flocfun] does (almost) the same, but has a different type. This enables +one to use the latter as an argument of [map]. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/Floc.con". + +inline procedural "cic:/CoRN/metrics/CPMSTheory/Flocfun.con". + +(*#* +A located subset $P$#P# of a totally bounded pseudo metric space $X$ +#X# is totally +bounded. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/locatedsub_totallybounded_imp_totallyboundedsub.con". + +(*#* +Here are some definitions that could come in handy: +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/MSCauchy_seq.con". + +(* UNEXPORTED +Implicit Arguments MSseqLimit' [X]. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/MSComplete.con". + +(*#* +A compact pseudo metric space is a pseudo metric space which is complete and +totally bounded. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/MSCompact.con". + +(*#* +A subset $P$#P# is %\emph{open}%#open# if for all $x$#x# in $P$#P# there exists an open sphere +with centre $x$#x# that is contained in $P$#P#. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/open.con". + +(* UNEXPORTED +Implicit Arguments open [X]. +*) + +(*#* +The operator [infima] gives the infimum for the distance between an +element $x$#x# of a located pseudo metric space $X$#X# and the elements of a +subspace $P$#P# of $X$#X#. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/infima.con". + +(* UNEXPORTED +Implicit Arguments infima [X]. +*) + +(*#* +A non-empty totally bounded sub-pseudo-metric-space $P$#P# is said to be +%\emph{well contained}% #well contained# in an open sub-pseudo-metric-space $Q$#Q# if $Q$#Q# contains +all points that are in some sense close to $P$#P#. +*) + +inline procedural "cic:/CoRN/metrics/CPMSTheory/well_contained.con". + +(* UNEXPORTED +End loc_and_bound +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/metrics/CPseudoMSpaces.mma b/helm/software/matita/contribs/CoRN-Procedural/metrics/CPseudoMSpaces.mma new file mode 100644 index 000000000..916a3a11e --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/metrics/CPseudoMSpaces.mma @@ -0,0 +1,192 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPseudoMSpaces.v,v 1.3 2004/04/23 10:01:02 lcf Exp $ *) + +include "reals/Intervals.ma". + +(*#* *Metric Spaces +*) + +(* UNEXPORTED +Section Relations +*) + +(*#* **Relations necessary for Pseudo Metric Spaces and Metric Spaces +%\begin{convention}% +Let [A : CSetoid], [d : (CSetoid_bin_fun A A IR)]. +%\end{convention}% +*) + +alias id "A" = "cic:/CoRN/metrics/CPseudoMSpaces/Relations/A.var". + +alias id "d" = "cic:/CoRN/metrics/CPseudoMSpaces/Relations/d.var". + +(* UNEXPORTED +Set Implicit Arguments. +*) + +(* UNEXPORTED +Unset Strict Implicit. +*) + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/com.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/nneg.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/pos_imp_ap.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/tri_ineq.con". + +(* UNEXPORTED +Set Strict Implicit. +*) + +(* UNEXPORTED +Unset Implicit Arguments. +*) + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/diag_zero.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/apdiag_imp_grzero.con". + +(* UNEXPORTED +End Relations +*) + +(* UNEXPORTED +Section Definition_PsMS0 +*) + +(*#* **Definition of Pseudo Metric Space +*) + +(*#* +A pseudo metric space consists of a setoid and a %''pseudo metric''% #"pseudo metric"#, also called +%''distance''% #"distance"#, a binairy function that fulfils certain properties. +*) + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/is_CPsMetricSpace.ind". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/CPsMetricSpace.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/metrics/CPseudoMSpaces/cms_crr.con +*) + +(* UNEXPORTED +End Definition_PsMS0 +*) + +(* UNEXPORTED +Implicit Arguments cms_d [c]. +*) + +(* NOTATION +Infix "[-d]" := cms_d (at level 68, left associativity). +*) + +(* UNEXPORTED +Section PsMS_axioms +*) + +(*#* **Pseudo Metric Space axioms +%\begin{convention}% +Let [A] be a pseudo metric space. +%\end{convention}% +*) + +alias id "A" = "cic:/CoRN/metrics/CPseudoMSpaces/PsMS_axioms/A.var". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/CPsMetricSpace_is_CPsMetricSpace.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/d_com.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/d_nneg.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/d_pos_imp_ap.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/d_tri_ineq.con". + +(* UNEXPORTED +End PsMS_axioms +*) + +(* UNEXPORTED +Section PsMS_basics +*) + +(*#* **Pseudo Metric Space basics +%\begin{convention}% +Let [Y] be a pseudo metric space. +%\end{convention}% +*) + +alias id "Y" = "cic:/CoRN/metrics/CPseudoMSpaces/PsMS_basics/Y.var". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/rev_tri_ineq.con". + +(*#* +Instead of taking [pos_imp_ap] as axiom, +we could as well have taken [diag_zero]. +*) + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/diag_zero_imp_pos_imp_ap.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/pos_imp_ap_imp_diag_zero.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/is_CPsMetricSpace_diag_zero.con". + +(* UNEXPORTED +End PsMS_basics +*) + +(* UNEXPORTED +Section Zerof +*) + +(*#* **Zero function +*) + +(*#* +Every setoid forms with the binary function that always returns zero, +a pseudo metric space. +*) + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zero_fun.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zero_fun_strext.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/Zero_fun.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zero_fun_com.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zero_fun_nneg.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zero_fun_pos_imp_ap.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zero_fun_tri_ineq.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zf_is_CPsMetricSpace.con". + +inline procedural "cic:/CoRN/metrics/CPseudoMSpaces/zf_as_CPsMetricSpace.con". + +(* UNEXPORTED +End Zerof +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/metrics/ContFunctions.mma b/helm/software/matita/contribs/CoRN-Procedural/metrics/ContFunctions.mma new file mode 100644 index 000000000..b9da5007a --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/metrics/ContFunctions.mma @@ -0,0 +1,246 @@ +(**************************************************************************) +(* ___ *) +(* ||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: ContFunctions.v,v 1.3 2004/04/23 10:01:02 lcf Exp $ *) + +include "metrics/CPseudoMSpaces.ma". + +(* UNEXPORTED +Section Continuous_functions +*) + +(*#* **Continuous functions, uniformly continuous functions and Lipschitz functions +%\begin{convention}% +Let [A] and [B] be pseudo metric spaces. +%\end{convention}% +*) + +alias id "A" = "cic:/CoRN/metrics/ContFunctions/Continuous_functions/A.var". + +alias id "B" = "cic:/CoRN/metrics/ContFunctions/Continuous_functions/B.var". + +(*#* +We will look at some notions of continuous functions. +*) + +inline procedural "cic:/CoRN/metrics/ContFunctions/continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/continuous'.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/uni_continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/uni_continuous'.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/uni_continuous''.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/lipschitz.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/lipschitz'.con". + +(* UNEXPORTED +End Continuous_functions +*) + +(* UNEXPORTED +Implicit Arguments continuous [A B]. +*) + +(* UNEXPORTED +Implicit Arguments uni_continuous [A B]. +*) + +(* UNEXPORTED +Implicit Arguments lipschitz [A B]. +*) + +(* UNEXPORTED +Implicit Arguments continuous' [A B]. +*) + +(* UNEXPORTED +Implicit Arguments uni_continuous' [A B]. +*) + +(* UNEXPORTED +Implicit Arguments uni_continuous'' [A B]. +*) + +(* UNEXPORTED +Implicit Arguments lipschitz' [A B]. +*) + +(* UNEXPORTED +Section Lemmas +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/metrics/ContFunctions/nexp_power.con". + +(* end hide *) + +inline procedural "cic:/CoRN/metrics/ContFunctions/continuous_imp_continuous'.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/continuous'_imp_continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/uni_continuous_imp_uni_continuous'.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/uni_continuous'_imp_uni_continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/uni_continuous'_imp_uni_continuous''.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/lipschitz_imp_lipschitz'.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/lipschitz'_imp_lipschitz.con". + +(*#* +Every uniformly continuous function is continuous and +every Lipschitz function is uniformly continuous. +*) + +inline procedural "cic:/CoRN/metrics/ContFunctions/uni_continuous_imp_continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/lipschitz_imp_uni_continuous.con". + +(* UNEXPORTED +End Lemmas +*) + +(* UNEXPORTED +Section Identity +*) + +(*#* **Identity +*) + +(*#* +The identity function is Lipschitz. +Hence it is uniformly continuous and continuous. +*) + +inline procedural "cic:/CoRN/metrics/ContFunctions/id_is_lipschitz.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/id_is_uni_continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/id_is_continuous.con". + +(* UNEXPORTED +End Identity +*) + +(* UNEXPORTED +Section Constant +*) + +(*#* **Constant functions +%\begin{convention}% +Let [B] and [X] be pseudo metric spaces. +%\end{convention}% +*) + +(*#* +Any constant function is Lipschitz. +Hence it is uniformly continuous and continuous. +*) + +alias id "B" = "cic:/CoRN/metrics/ContFunctions/Constant/B.var". + +alias id "X" = "cic:/CoRN/metrics/ContFunctions/Constant/X.var". + +inline procedural "cic:/CoRN/metrics/ContFunctions/const_fun_is_lipschitz.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/const_fun_is_uni_continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/const_fun_is_continuous.con". + +(* UNEXPORTED +End Constant +*) + +(* UNEXPORTED +Section Composition +*) + +(*#* **Composition +%\begin{convention}% +Let [B],[C] and [X] be pseudo metric spaces. +Let [f : (CSetoid_fun X B)] and +[g : (CSetoid_fun B C)]. +%\end{convention}% +*) + +(*#* +The composition of two Lipschitz/uniformly continous/continuous functions is +again Lipschitz/uniformly continuous/continuous. +*) + +alias id "X" = "cic:/CoRN/metrics/ContFunctions/Composition/X.var". + +alias id "B" = "cic:/CoRN/metrics/ContFunctions/Composition/B.var". + +alias id "f" = "cic:/CoRN/metrics/ContFunctions/Composition/f.var". + +alias id "C" = "cic:/CoRN/metrics/ContFunctions/Composition/C.var". + +alias id "g" = "cic:/CoRN/metrics/ContFunctions/Composition/g.var". + +inline procedural "cic:/CoRN/metrics/ContFunctions/comp_resp_lipschitz.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/comp_resp_uni_continuous.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/comp_resp_continuous.con". + +(* UNEXPORTED +End Composition +*) + +(* UNEXPORTED +Section Limit +*) + +(*#* **Limit +*) + +inline procedural "cic:/CoRN/metrics/ContFunctions/MSseqLimit.con". + +(* UNEXPORTED +Implicit Arguments MSseqLimit [X]. +*) + +inline procedural "cic:/CoRN/metrics/ContFunctions/MSseqLimit'.con". + +(* UNEXPORTED +Implicit Arguments MSseqLimit' [X]. +*) + +inline procedural "cic:/CoRN/metrics/ContFunctions/MSseqLimit_imp_MSseqLimit'.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/MSseqLimit'_imp_MSseqLimit.con". + +inline procedural "cic:/CoRN/metrics/ContFunctions/seqcontinuous'.con". + +(* UNEXPORTED +Implicit Arguments seqcontinuous' [A B]. +*) + +inline procedural "cic:/CoRN/metrics/ContFunctions/continuous'_imp_seqcontinuous'.con". + +(* UNEXPORTED +End Limit +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/metrics/Equiv.mma b/helm/software/matita/contribs/CoRN-Procedural/metrics/Equiv.mma new file mode 100644 index 000000000..5e5908494 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/metrics/Equiv.mma @@ -0,0 +1,64 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Equiv.v,v 1.4 2004/04/23 10:01:02 lcf Exp $ *) + +include "metrics/IR_CPMSpace.ma". + +(* UNEXPORTED +Section equivalent +*) + +(*#* **Equivalent Pseudo Metric Spaces +*) + +(*#* +We say that two pseudo metric spaces are equivalent, when there exists a +bijective, structure-preserving function between them. +*) + +inline procedural "cic:/CoRN/metrics/Equiv/equivalent_psmetric.con". + +inline procedural "cic:/CoRN/metrics/Equiv/isopsmetry.con". + +(* UNEXPORTED +Implicit Arguments isopsmetry [X Y]. +*) + +inline procedural "cic:/CoRN/metrics/Equiv/isopsmetry_imp_bij.con". + +inline procedural "cic:/CoRN/metrics/Equiv/isopsmetry_imp_lipschitz.con". + +inline procedural "cic:/CoRN/metrics/Equiv/id_is_isopsmetry.con". + +inline procedural "cic:/CoRN/metrics/Equiv/comp_resp_isopsmetry.con". + +inline procedural "cic:/CoRN/metrics/Equiv/inv_isopsmetry.con". + +inline procedural "cic:/CoRN/metrics/Equiv/MSequivalent.con". + +(*#* +Not all pseudo metric spaces are equivalent: +*) + +inline procedural "cic:/CoRN/metrics/Equiv/MSequivalent_discr.con". + +(* UNEXPORTED +End equivalent +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/metrics/IR_CPMSpace.mma b/helm/software/matita/contribs/CoRN-Procedural/metrics/IR_CPMSpace.mma new file mode 100644 index 000000000..efddeec10 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/metrics/IR_CPMSpace.mma @@ -0,0 +1,103 @@ +(**************************************************************************) +(* ___ *) +(* ||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: IR_CPMSpace.v,v 1.4 2004/04/23 10:01:02 lcf Exp $ *) + +include "metrics/ContFunctions.ma". + +(* UNEXPORTED +Section Reals +*) + +(*#* **Real numbers +*) + +(*#* +%\begin{convention}% +Let [X] be a pseudo metric space. +%\end{convention}% +*) + +(*#* +The real numbers with the usual distance form a pseudo metric space. +*) + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/dIR.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/bin_fun_strext_dIR.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/dIR_as_CSetoid_fun.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/dIR_nneg.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/dIR_com.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/dIR_pos_imp_ap.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/IR_tri_ineq.con". + +(* end hide *) + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/dIR_tri_ineq.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/IR_dIR_is_CPsMetricSpace.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/IR_as_CPsMetricSpace.con". + +alias id "X" = "cic:/CoRN/metrics/IR_CPMSpace/Reals/X.var". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/rev_tri_ineq'.con". + +(*#* +A pseudo metric is Lipschitz. Hence it is uniformly continuous and continuous. +*) + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/d_is_lipschitz.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/d_is_uni_continuous.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/d_is_continuous.con". + +(* UNEXPORTED +End Reals +*) + +(* UNEXPORTED +Section Addition +*) + +(*#* **Addition of continuous functions +*) + +(*#* +The sum of two Lipschitz/uniformly continous/continuous functions is again +Lipschitz/uniformly continuous/continuous. +*) + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/plus_resp_lipschitz.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/plus_resp_uni_continuous.con". + +inline procedural "cic:/CoRN/metrics/IR_CPMSpace/plus_resp_continuous.con". + +(* UNEXPORTED +End Addition +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/metrics/Prod_Sub.mma b/helm/software/matita/contribs/CoRN-Procedural/metrics/Prod_Sub.mma new file mode 100644 index 000000000..f63bc9e69 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/metrics/Prod_Sub.mma @@ -0,0 +1,129 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Prod_Sub.v,v 1.4 2004/04/23 10:01:02 lcf Exp $ *) + +include "metrics/IR_CPMSpace.ma". + +(* UNEXPORTED +Section prodpsmetrics +*) + +(*#* **Product-Pseudo-Metric-Spaces +*) + +(*#* +The product metric here defined is: +$ d_{prod}((a_1,b_1),(a_2,b_2)):= d_A(a_1,a_2)+d_B(b_1,b_2)$ +# dprod((a1,b1),(a2,b2)):= dA(a1,b1)+dB(b1,b2)#. +This is %\emph{not}% #not# the one used to make the metric of +$\RR^{2}$ #IR2# out of the metric of $\RR$ #IR#. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dprod0.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dprod0_strext.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/d_prod0.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/prod0cpsmetricspace_is_CPsMetricSpace.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/Prod0CPsMetricSpace.con". + +(* UNEXPORTED +End prodpsmetrics +*) + +(* UNEXPORTED +Section subpsmetrics +*) + +(*#* **Sub-Pseudo-Metric-Spaces +*) + +(*#* +The pseudo metric on a subspace $Y$ #Y# of a pseudo metric space $X$ #X# is +the pseudo metric on $X$ #X# restricted to $Y$ #Y#. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/restr_bin_fun.con". + +(* UNEXPORTED +Implicit Arguments restr_bin_fun [X]. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/restr_bin_fun'.con". + +(* UNEXPORTED +Implicit Arguments restr_bin_fun' [X]. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/restr_bin_fun_strext.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/Build_SubCSetoid_bin_fun.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub.con". + +(* UNEXPORTED +Implicit Arguments dsub [X]. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub_com.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub_nneg.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub_pos_imp_ap.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub_tri_ineq.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/is_SubPsMetricSpace.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/SubPsMetricSpace.con". + +(* UNEXPORTED +Implicit Arguments SubPsMetricSpace [X]. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/from_SubPsMetricSpace.con". + +(*#* +The function [dsub'] is used in the definition of %''located''% #"located"#. +It enables one to speak about a distance between an element of a +pseudo metric space and a certain subspace. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub'.con". + +(* UNEXPORTED +Implicit Arguments dsub' [X]. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub'_strext.con". + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub'_as_cs_fun.con". + +(* UNEXPORTED +Implicit Arguments dsub'_as_cs_fun [X]. +*) + +inline procedural "cic:/CoRN/metrics/Prod_Sub/dsub'_uni_continuous''.con". + +(* UNEXPORTED +End subpsmetrics +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/QSposabgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/QSposabgroup.mma new file mode 100644 index 000000000..ab852c45b --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/QSposabgroup.mma @@ -0,0 +1,32 @@ +(**************************************************************************) +(* ___ *) +(* ||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: QSposabgroup.v,v 1.5 2004/04/08 08:20:31 lcf Exp $ *) + +include "model/groups/QSposgroup.ma". + +include "algebra/CAbGroups.ma". + +(*#* **Example of an abelian group: $\langle$#⟨#[Qpos],$(x,y) \mapsto xy/2$ #(x,y) ↦ xy/2#$\rangle$#⟩# +The positive rational numbers form with the operation $(x,y) \mapsto xy/2$ #(x,y) ↦ xy/2# an abelian group. +*) + +inline procedural "cic:/CoRN/model/abgroups/QSposabgroup/Qpos_multdiv2_is_CAbGroup.con". + +inline procedural "cic:/CoRN/model/abgroups/QSposabgroup/Qpos_multdiv2_as_CAbGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qabgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qabgroup.mma new file mode 100644 index 000000000..7dd20bc46 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qabgroup.mma @@ -0,0 +1,35 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qabgroup.v,v 1.5 2004/04/08 08:20:31 lcf Exp $ *) + +include "model/groups/Qgroup.ma". + +include "algebra/CAbGroups.ma". + +(*#* **Example of an abelian group: $\langle$#⟨#[Q],[[+]]$\rangle$#⟩# +*) + +(*#* Addition is commutative, so the rationals form with the addition a +CAbGroup. +*) + +inline procedural "cic:/CoRN/model/abgroups/Qabgroup/Q_is_CAbGroup.con". + +inline procedural "cic:/CoRN/model/abgroups/Qabgroup/Q_as_CAbGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qposabgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qposabgroup.mma new file mode 100644 index 000000000..161364874 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Qposabgroup.mma @@ -0,0 +1,32 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qposabgroup.v,v 1.6 2004/04/08 08:20:31 lcf Exp $ *) + +include "model/groups/Qposgroup.ma". + +include "algebra/CAbGroups.ma". + +(*#* **Example of an abelian group: $\langle$#⟨#[Qpos],[[*]]$\rangle$#⟩# +The positive rationals form with the multiplication a CAbgroup. +*) + +inline procedural "cic:/CoRN/model/abgroups/Qposabgroup/Qpos_mult_is_CAbGroup.con". + +inline procedural "cic:/CoRN/model/abgroups/Qposabgroup/Qpos_mult_as_CAbGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Zabgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Zabgroup.mma new file mode 100644 index 000000000..694fce22d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/abgroups/Zabgroup.mma @@ -0,0 +1,33 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Zabgroup.v,v 1.5 2004/04/08 08:20:32 lcf Exp $ *) + +include "model/groups/Zgroup.ma". + +include "algebra/CAbGroups.ma". + +(*#* **Example of an abelian group: $\langle$#⟨#[Z],[[+]]$\rangle$#⟩# +*) + +inline procedural "cic:/CoRN/model/abgroups/Zabgroup/Z_is_CAbGroup.con". + +inline procedural "cic:/CoRN/model/abgroups/Zabgroup/Z_as_CAbGroup.con". + +(*#* The term [Z_as_CAbGroup] is of type [CAbGroup]. Hence we have proven that [Z] is a constructive Abelian group. *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/fields/Qfield.mma b/helm/software/matita/contribs/CoRN-Procedural/model/fields/Qfield.mma new file mode 100644 index 000000000..7a8bfb38a --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/fields/Qfield.mma @@ -0,0 +1,33 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qfield.v,v 1.8 2004/04/08 08:20:32 lcf Exp $ *) + +include "model/rings/Qring.ma". + +include "algebra/CFields.ma". + +(*#* **Example of a field: $\langle$#⟨#[Q],[[+]],[[*]]$\rangle$#⟩# +As we have seen, there is a inverse for the multiplication for non-zeroes. +So, [Q] not only forms a ring, but even a field. +*) + +inline procedural "cic:/CoRN/model/fields/Qfield/Q_is_CField.con". + +inline procedural "cic:/CoRN/model/fields/Qfield/Q_as_CField.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/groups/QSposgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/groups/QSposgroup.mma new file mode 100644 index 000000000..64d774c50 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/groups/QSposgroup.mma @@ -0,0 +1,33 @@ +(**************************************************************************) +(* ___ *) +(* ||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: QSposgroup.v,v 1.6 2004/04/08 08:20:32 lcf Exp $ *) + +include "model/monoids/QSposmonoid.ma". + +include "algebra/CGroups.ma". + +(*#* **Example of a group: $\langle$#⟨#[Qpos],$(x,y) \mapsto xy/2$ #(x,y) ↦ xy/2#$\rangle$#⟩# +The positive rationals form with the operation $(x,y) \mapsto xy/2$ +#(x,y) ↦ xy/2# a CGroup. +*) + +inline procedural "cic:/CoRN/model/groups/QSposgroup/Qpos_multdiv2_is_CGroup.con". + +inline procedural "cic:/CoRN/model/groups/QSposgroup/Qpos_multdiv2_as_CGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/groups/Qgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/groups/Qgroup.mma new file mode 100644 index 000000000..9398c0626 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/groups/Qgroup.mma @@ -0,0 +1,32 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qgroup.v,v 1.5 2004/04/08 08:20:32 lcf Exp $ *) + +include "model/monoids/Qmonoid.ma". + +include "algebra/CGroups.ma". + +(*#* **Example of a group: $\langle$#⟨#[Q],[[+]]$\rangle$#⟩# +The rational numbers with addition form a group. The inverse function is taking the opposite. +*) + +inline procedural "cic:/CoRN/model/groups/Qgroup/Q_is_CGroup.con". + +inline procedural "cic:/CoRN/model/groups/Qgroup/Q_as_CGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/groups/Qposgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/groups/Qposgroup.mma new file mode 100644 index 000000000..90d5b8419 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/groups/Qposgroup.mma @@ -0,0 +1,32 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qposgroup.v,v 1.6 2004/04/08 08:20:32 lcf Exp $ *) + +include "model/monoids/Qposmonoid.ma". + +include "algebra/CGroups.ma". + +(*#* **Example of a group: $\langle$#⟨#[Qpos],[[*]]$\rangle$#⟩# +The positive rational numbers form a multiplicative group. +*) + +inline procedural "cic:/CoRN/model/groups/Qposgroup/Qpos_is_CGroup.con". + +inline procedural "cic:/CoRN/model/groups/Qposgroup/Qpos_as_CGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/groups/Zgroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/groups/Zgroup.mma new file mode 100644 index 000000000..3d98cc340 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/groups/Zgroup.mma @@ -0,0 +1,33 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Zgroup.v,v 1.5 2004/04/08 08:20:32 lcf Exp $ *) + +include "model/monoids/Zmonoid.ma". + +include "algebra/CGroups.ma". + +(*#* **Example of a group: $\langle$#⟨#[Z],[[+]]$\rangle$#⟩# +*) + +inline procedural "cic:/CoRN/model/groups/Zgroup/Z_is_CGroup.con". + +inline procedural "cic:/CoRN/model/groups/Zgroup/Z_as_CGroup.con". + +(*#* The term [Z_as_CGroup] is of type [CGroup]. Hence we have proven that [Z] is a constructive group. *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nmonoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nmonoid.mma new file mode 100644 index 000000000..0468f456d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nmonoid.mma @@ -0,0 +1,40 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Nmonoid.v,v 1.5 2004/04/08 08:20:32 lcf Exp $ *) + +include "model/semigroups/Nsemigroup.ma". + +include "algebra/CMonoids.ma". + +(*#* **Example of a monoid: $\langle$#⟨#[nat],[[+]]$\rangle$#⟩# +Zero is an unit for the addition. +*) + +inline procedural "cic:/CoRN/model/monoids/Nmonoid/O_as_rht_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Nmonoid/O_as_lft_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Nmonoid/nat_is_CMonoid.con". + +(*#* + Whence we can define ##%\emph{%the monoid of natural numbers%}%##: +*) + +inline procedural "cic:/CoRN/model/monoids/Nmonoid/nat_as_CMonoid.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nposmonoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nposmonoid.mma new file mode 100644 index 000000000..d66014b2d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Nposmonoid.mma @@ -0,0 +1,40 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Nposmonoid.v,v 1.6 2004/04/08 08:20:33 lcf Exp $ *) + +include "model/semigroups/Npossemigroup.ma". + +include "algebra/CMonoids.ma". + +(*#* **Example of a monoid: $\langle$#⟨#[Npos],[[*]]$\rangle$#⟩# +One is the right unit as well as the left unit of the multiplication on the +positive natural numbers. +*) + +inline procedural "cic:/CoRN/model/monoids/Nposmonoid/rhtunitNpos.con". + +inline procedural "cic:/CoRN/model/monoids/Nposmonoid/lftunitNpos.con". + +(*#* So, the positive natural numbers with multiplication form a CMonoid. +*) + +inline procedural "cic:/CoRN/model/monoids/Nposmonoid/Nposmult_is_CMonoid.con". + +inline procedural "cic:/CoRN/model/monoids/Nposmonoid/Nposmult_as_CMonoid.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/monoids/QSposmonoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/QSposmonoid.mma new file mode 100644 index 000000000..6dfd8114b --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/QSposmonoid.mma @@ -0,0 +1,37 @@ +(**************************************************************************) +(* ___ *) +(* ||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: QSposmonoid.v,v 1.5 2004/04/08 08:20:33 lcf Exp $ *) + +include "model/semigroups/QSpossemigroup.ma". + +include "algebra/CMonoids.ma". + +(*#* **Example of a monoid: $\langle$#⟨#[Qpos],$(x,y) \mapsto xy/2$ #(x,y) ↦ xy/2#$\rangle$#⟩# +Two is the unit of the operation $(x,y) \mapsto xy/2$ #(x,y) + ↦ xy/2# on the positive rationals. So we have another monoid structure on the positive rational numbers. +*) + +inline procedural "cic:/CoRN/model/monoids/QSposmonoid/QTWOpos_is_rht_unit.con". + +inline procedural "cic:/CoRN/model/monoids/QSposmonoid/QTWOpos_is_lft_unit.con". + +inline procedural "cic:/CoRN/model/monoids/QSposmonoid/Qpos_multdiv2_is_CMonoid.con". + +inline procedural "cic:/CoRN/model/monoids/QSposmonoid/Qpos_multdiv2_as_CMonoid.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qmonoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qmonoid.mma new file mode 100644 index 000000000..bf45b45e2 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qmonoid.mma @@ -0,0 +1,49 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qmonoid.v,v 1.7 2004/04/08 08:20:33 lcf Exp $ *) + +include "model/semigroups/Qsemigroup.ma". + +include "algebra/CMonoids.ma". + +(*#* **Examples of a monoid: $\langle$#⟨#[Q],[[+]]$\rangle$#⟩# and $\langle$#⟨#[Q],[[*]]$\rangle$#⟩# +***$\langle$#⟨#[Q],[[+]]$\rangle$#⟩# +The rational numbers form with addition a CMonoid. [QZERO] is the unit. +*) + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/ZEROQ_as_rht_unit3.con". + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/ZEROQ_as_lft_unit3.con". + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/Q_is_CMonoid.con". + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/Q_as_CMonoid.con". + +(*#* ***$\langle$#⟨#[Q],[[*]]$\rangle$#⟩# +Also with multiplication Q forms a CMonoid. Here, the unit is [QONE]. +*) + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/ONEQ_as_rht_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/ONEQ_as_lft_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/Q_mul_is_CMonoid.con". + +inline procedural "cic:/CoRN/model/monoids/Qmonoid/Q_mul_as_CMonoid.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qposmonoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qposmonoid.mma new file mode 100644 index 000000000..36f936c97 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Qposmonoid.mma @@ -0,0 +1,36 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qposmonoid.v,v 1.7 2004/04/08 08:20:33 lcf Exp $ *) + +include "model/semigroups/Qpossemigroup.ma". + +include "algebra/CMonoids.ma". + +(*#* **Example of a monoid: $\langle$#⟨#[Qpos],[[*]]$\rangle$#⟩# +One is the unit for multiplication on positive integers. Therefore the positive rational numbers together with the multiplication are a CMonoid. +*) + +inline procedural "cic:/CoRN/model/monoids/Qposmonoid/QONEpos_is_rht_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Qposmonoid/QONEpos_is_lft_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Qposmonoid/Qpos_mult_is_CMonoid.con". + +inline procedural "cic:/CoRN/model/monoids/Qposmonoid/Qpos_mult_as_CMonoid.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Zmonoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Zmonoid.mma new file mode 100644 index 000000000..56274de97 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/monoids/Zmonoid.mma @@ -0,0 +1,55 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Zmonoid.v,v 1.6 2004/04/08 08:20:33 lcf Exp $ *) + +include "model/semigroups/Zsemigroup.ma". + +include "algebra/CMonoids.ma". + +(*#* **Examples of monoids: $\langle$#⟨#[Z],[[+]]$\rangle$#⟩# and $\langle$#⟨#[Z],[[*]]$\rangle$#⟩# +***$\langle$#⟨#[Z],[[+]]$\rangle$#⟩# +We use the addition [ZERO] (defined in the standard library) as the +unit of monoid: +*) + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/ZERO_as_rht_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/ZERO_as_lft_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/Z_is_CMonoid.con". + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/Z_as_CMonoid.con". + +(*#* The term [Z_as_CMonoid] is of type [CMonoid]. Hence we have proven that [Z] is a constructive monoid. + +***$\langle$#⟨#[Z],[[*]]$\rangle$#⟩# +As the multiplicative unit we should use [`1`], which is [(POS xH)] in +the representation we have for integers. +*) + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/ONE_as_rht_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/ONE_as_lft_unit.con". + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/Z_mul_is_CMonoid.con". + +inline procedural "cic:/CoRN/model/monoids/Zmonoid/Z_mul_as_CMonoid.con". + +(*#* The term [Z_mul_as_CMonoid] is another term of type [CMonoid]. *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/N_no_group.mma b/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/N_no_group.mma new file mode 100644 index 000000000..f629e104a --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/N_no_group.mma @@ -0,0 +1,35 @@ +(**************************************************************************) +(* ___ *) +(* ||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: N_no_group.v,v 1.5 2004/04/08 08:20:33 lcf Exp $ *) + +include "model/monoids/Nmonoid.ma". + +include "algebra/CGroups.ma". + +(*#* **Non-example of a group: $\langle$#⟨#[nat],[[+]]$\rangle$#⟩# +There is no inverse function for the natural numbers with addition. +*) + +inline procedural "cic:/CoRN/model/non_examples/N_no_group/no_inverse_nat_plus.con". + +(*#* Hence they do not form a CGroup. +*) + +inline procedural "cic:/CoRN/model/non_examples/N_no_group/no_group_nat_plus.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_group.mma b/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_group.mma new file mode 100644 index 000000000..52a0062ca --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_group.mma @@ -0,0 +1,35 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Npos_no_group.v,v 1.6 2004/04/08 08:20:33 lcf Exp $ *) + +include "algebra/CGroups.ma". + +include "model/monoids/Nposmonoid.ma". + +(*#* **Non-example of a group: $\langle$#⟨#[Npos],[[+]]$\rangle$#⟩# +There is no inverse for multiplication on the positive natural numbers. +*) + +inline procedural "cic:/CoRN/model/non_examples/Npos_no_group/no_inverse_Nposmult.con". + +(*#* Hence the natural numbers with multiplication do not form a group. +*) + +inline procedural "cic:/CoRN/model/non_examples/Npos_no_group/no_group_Nposmult.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_monoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_monoid.mma new file mode 100644 index 000000000..e181473da --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/non_examples/Npos_no_monoid.mma @@ -0,0 +1,36 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Npos_no_monoid.v,v 1.5 2004/04/08 08:20:34 lcf Exp $ *) + +include "model/semigroups/Npossemigroup.ma". + +include "algebra/CMonoids.ma". + +(*#* **Non-example of a monoid: $\langle$#⟨#[Npos],[[+]]$\rangle$#⟩# +There is no right unit for the addition on the positive natural numbers. +*) + +inline procedural "cic:/CoRN/model/non_examples/Npos_no_monoid/no_rht_unit_Npos.con". + +(*#* Therefore the set of positive natural numbers doesn't form a group with +addition. +*) + +inline procedural "cic:/CoRN/model/non_examples/Npos_no_monoid/no_monoid_Npos.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/ordfields/Qordfield.mma b/helm/software/matita/contribs/CoRN-Procedural/model/ordfields/Qordfield.mma new file mode 100644 index 000000000..c6f25816f --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/ordfields/Qordfield.mma @@ -0,0 +1,36 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qordfield.v,v 1.9 2004/04/23 10:01:03 lcf Exp $ *) + +include "model/fields/Qfield.ma". + +include "algebra/COrdFields.ma". + +(*#* **Example of an ordered field: $\langle$#⟨#[Q],[[+]],[[*]],[[<]]$\rangle$#⟩# + [Q] is an archemaedian ordered field. +*) + +inline procedural "cic:/CoRN/model/ordfields/Qordfield/Qlt_is_strict_order.con". + +inline procedural "cic:/CoRN/model/ordfields/Qordfield/Q_is_COrdField.con". + +inline procedural "cic:/CoRN/model/ordfields/Qordfield/Q_as_COrdField.con". + +inline procedural "cic:/CoRN/model/ordfields/Qordfield/Q_is_archemaedian.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/reals/Cauchy_IR.mma b/helm/software/matita/contribs/CoRN-Procedural/model/reals/Cauchy_IR.mma new file mode 100644 index 000000000..e2adce7d6 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/reals/Cauchy_IR.mma @@ -0,0 +1,34 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Cauchy_IR.v,v 1.2 2004/04/06 15:46:03 lcf Exp $ *) + +include "model/ordfields/Qordfield.ma". + +include "reals/Cauchy_CReals.ma". + +(*#* * Cauchy Real Numbers +Earlier we defined a construction of a real number structure from an +arbitrary archimedian ordered field. Plugging in [Q] we get the model +of the real numbers as Cauchy sequences of rationals. +*) + +inline procedural "cic:/CoRN/model/reals/Cauchy_IR/Cauchy_IR.con". + +(*#* The term [Cauchy_IR] is of type [CReals]. *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/rings/Qring.mma b/helm/software/matita/contribs/CoRN-Procedural/model/rings/Qring.mma new file mode 100644 index 000000000..91bf33b9c --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/rings/Qring.mma @@ -0,0 +1,46 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qring.v,v 1.8 2004/04/23 10:01:03 lcf Exp $ *) + +include "model/abgroups/Qabgroup.ma". + +include "algebra/CRings.ma". + +include "model/rings/Zring.ma". + +(*#* **Example of a ring: $\langle$#⟨#[Q],[[+]],[[*]]$\rangle$#⟩# +Because [Q] forms an abelian group with addition, a monoid with +multiplication and it satisfies the distributive law, it is a ring. +*) + +inline procedural "cic:/CoRN/model/rings/Qring/Q_mult_plus_is_dist.con". + +inline procedural "cic:/CoRN/model/rings/Qring/Q_is_CRing.con". + +inline procedural "cic:/CoRN/model/rings/Qring/Q_as_CRing.con". + +(*#* The following lemmas are used in the proof that [Q] is Archimeadian. +*) + +inline procedural "cic:/CoRN/model/rings/Qring/injz_Nring.con". + +inline procedural "cic:/CoRN/model/rings/Qring/injZ_eq.con". + +inline procedural "cic:/CoRN/model/rings/Qring/nring_Q.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/rings/Zring.mma b/helm/software/matita/contribs/CoRN-Procedural/model/rings/Zring.mma new file mode 100644 index 000000000..d9f0aa8e3 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/rings/Zring.mma @@ -0,0 +1,37 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Zring.v,v 1.6 2004/04/08 08:20:34 lcf Exp $ *) + +include "model/abgroups/Zabgroup.ma". + +include "algebra/CRings.ma". + +(*#* **Example of a ring: $\langle$#⟨#[Z],[[+]],[[*]]$\rangle$#⟩# + +The multiplication and the addition are distributive. +*) + +inline procedural "cic:/CoRN/model/rings/Zring/Z_mult_plus_is_dist.con". + +inline procedural "cic:/CoRN/model/rings/Zring/Z_is_CRing.con". + +inline procedural "cic:/CoRN/model/rings/Zring/Z_as_CRing.con". + +(*#* The term [Z_as_CRing] is of type [CRing]. Hence we have proven that [Z] is a constructive ring. *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Npossemigroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Npossemigroup.mma new file mode 100644 index 000000000..01d06e0ab --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Npossemigroup.mma @@ -0,0 +1,42 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Npossemigroup.v,v 1.6 2004/04/08 08:20:34 lcf Exp $ *) + +include "algebra/CSemiGroups.ma". + +include "model/semigroups/Nsemigroup.ma". + +include "model/setoids/Npossetoid.ma". + +(*#* **Examples of semi-groups: $\langle$#⟨#[Npos],[[+]]$\rangle$#⟩# and $\langle$#⟨#[Npos],[[*]]$\rangle$#⟩# +***$\langle$#⟨#[Npos],[[+]]$\rangle$#⟩# +The positive natural numbers form together with addition a subsemigroup + of the semigroup of the natural numbers with addition. +*) + +inline procedural "cic:/CoRN/model/semigroups/Npossemigroup/Npos_as_CSemiGroup.con". + +(*#* ***$\langle$#⟨#[Npos],[[*]]$\rangle$#⟩# +Also together with multiplication, the positive numbers form a semigroup. +*) + +inline procedural "cic:/CoRN/model/semigroups/Npossemigroup/Nposmult_is_CSemiGroup.con". + +inline procedural "cic:/CoRN/model/semigroups/Npossemigroup/Nposmult_as_CSemiGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Nsemigroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Nsemigroup.mma new file mode 100644 index 000000000..781ea6306 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Nsemigroup.mma @@ -0,0 +1,32 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Nsemigroup.v,v 1.6 2004/04/08 08:20:34 lcf Exp $ *) + +include "model/setoids/Nsetoid.ma". + +include "algebra/CSemiGroups.ma". + +(*#* **Example of a semi-group: $\langle$#⟨#[nat],[[+]]$\rangle$#⟩# +*) + +(*#* Because addition is associative, the natural numbers form a CSemiGroup. +*) + +inline procedural "cic:/CoRN/model/semigroups/Nsemigroup/nat_as_CSemiGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/QSpossemigroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/QSpossemigroup.mma new file mode 100644 index 000000000..6793e8fdd --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/QSpossemigroup.mma @@ -0,0 +1,31 @@ +(**************************************************************************) +(* ___ *) +(* ||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: QSpossemigroup.v,v 1.5 2004/04/08 08:20:35 lcf Exp $ *) + +include "model/setoids/Qpossetoid.ma". + +include "algebra/CSemiGroups.ma". + +(*#* **Example of a semi-group: $\langle$#⟨#[Qpos],$(x,y) \mapsto xy/2$#(x,y) ↦ xy/2#$\rangle$#⟩# +The positive rationals form with the operation +$(x,y) \mapsto xy/2$#(x,y) ↦ xy/2# a CSemiGroup. +*) + +inline procedural "cic:/CoRN/model/semigroups/QSpossemigroup/Qpos_multdiv2_as_CSemiGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qpossemigroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qpossemigroup.mma new file mode 100644 index 000000000..313c498c2 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qpossemigroup.mma @@ -0,0 +1,30 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qpossemigroup.v,v 1.6 2004/04/08 08:20:35 lcf Exp $ *) + +include "model/setoids/Qpossetoid.ma". + +include "algebra/CSemiGroups.ma". + +(*#* **Example of a semi-group: $\langle$#⟨#[Qpos],[[*]]$\rangle$#⟩# +The positive rationals form with the multiplication a CSemiGroup. +*) + +inline procedural "cic:/CoRN/model/semigroups/Qpossemigroup/Qpos_mult_as_CSemiGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qsemigroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qsemigroup.mma new file mode 100644 index 000000000..b449027ea --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Qsemigroup.mma @@ -0,0 +1,35 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qsemigroup.v,v 1.6 2004/04/08 08:20:35 lcf Exp $ *) + +include "model/setoids/Qsetoid.ma". + +include "algebra/CSemiGroups.ma". + +(*#* **Examples of semi-groups: $\langle$#⟨#[Q],[[+]]$\rangle$#⟩# and $\langle$#⟨#[Q],[[*]]$\rangle$#⟩# +***$\langle$#⟨#[Q],[[+]]$\rangle$#⟩# +*) + +inline procedural "cic:/CoRN/model/semigroups/Qsemigroup/Q_as_CSemiGroup.con". + +(*#* ***$\langle$#⟨#[Q],[[*]]$\rangle$#⟩# +*) + +inline procedural "cic:/CoRN/model/semigroups/Qsemigroup/Q_mul_as_CSemiGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Zsemigroup.mma b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Zsemigroup.mma new file mode 100644 index 000000000..191277b5f --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/semigroups/Zsemigroup.mma @@ -0,0 +1,37 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Zsemigroup.v,v 1.6 2004/04/08 08:20:35 lcf Exp $ *) + +include "model/setoids/Zsetoid.ma". + +include "algebra/CSemiGroups.ma". + +(*#* **Examples of semi-groups: $\langle$#⟨#[Z],[[+]]$\rangle$#⟩# and $\langle$#⟨#[Z],[[*]]$\rangle$#⟩# +***$\langle$#⟨#[Z],[[+]]$\rangle$#⟩# +*) + +inline procedural "cic:/CoRN/model/semigroups/Zsemigroup/Z_as_CSemiGroup.con". + +(*#* The term [Z_as_CSemiGroup] is of type [CSemiGroup]. Hence we have proven that [Z] is a constructive semi-group. *) + +(*#* ***$\langle$#⟨#[Z],[[*]]$\rangle$#⟩# +*) + +inline procedural "cic:/CoRN/model/semigroups/Zsemigroup/Z_mul_as_CSemiGroup.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Npossetoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Npossetoid.mma new file mode 100644 index 000000000..4fa49cc5a --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Npossetoid.mma @@ -0,0 +1,68 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Npossetoid.v,v 1.3 2004/04/06 15:46:04 lcf Exp $ *) + +include "model/setoids/Nsetoid.ma". + +include "model/structures/Npossec.ma". + +include "algebra/CSetoidFun.ma". + +(*#* **Example of a setoid: [Npos] + +*** Setoid +The positive natural numbers [Npos] will be defined as a subsetoid of the +natural numbers. +*) + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/Npos.con". + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/NposP.con". + +(*#* One and two are elements of it. +*) + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/ONEpos.con". + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/TWOpos.con". + +(*#* ***Addition and multiplication +Because addition and multiplication preserve positivity, we can define +them on this subsetoid. +*) + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/plus_resp_Npos.con". + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/Npos_plus.con". + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/mult_resp_Npos.con". + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/Npos_mult.con". + +(*#* The addition has no right unit on this set. +*) + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/no_rht_unit_Npos1.con". + +(*#* And the multiplication doesn't have an inverse, because there can't be an +inverse for 2. +*) + +inline procedural "cic:/CoRN/model/setoids/Npossetoid/no_inverse_Nposmult1.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Nsetoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Nsetoid.mma new file mode 100644 index 000000000..036fc51f1 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Nsetoid.mma @@ -0,0 +1,64 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Nsetoid.v,v 1.4 2004/04/06 15:46:04 lcf Exp $ *) + +include "model/structures/Nsec.ma". + +include "algebra/CSetoidFun.ma". + +(*#* **Example of a setoid: [nat] + +We will show that the natural numbers form a CSetoid. +*) + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/ap_nat_irreflexive.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/ap_nat_symmetric.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/ap_nat_cotransitive.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/ap_nat_tight.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/ap_nat_is_apartness.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/nat_as_CSetoid.con". + +(*#* ***Addition +*) + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/plus_wd.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/plus_strext.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/plus_is_bin_fun.con". + +(*#* It is associative and commutative. +*) + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/plus_is_assoc.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/plus_is_commut.con". + +(*#* ***Multiplication +*) + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/mult_strext.con". + +inline procedural "cic:/CoRN/model/setoids/Nsetoid/mult_as_bin_fun.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qpossetoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qpossetoid.mma new file mode 100644 index 000000000..8e935b1d8 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qpossetoid.mma @@ -0,0 +1,97 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qpossetoid.v,v 1.4 2004/04/06 15:46:05 lcf Exp $ *) + +include "model/setoids/Qsetoid.ma". + +include "algebra/CSetoidFun.ma". + +include "model/structures/Qpossec.ma". + +(*#* **Example of a setoid: [Qpos] +***Setoid +We will examine the subsetoid of positive rationals of the setoid of +rational numbers. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qpos.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/QposP.con". + +(*#* One, two and four are elements of it. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/QONEpos.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/QTWOpos.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/QFOURpos.con". + +(*#* ***Multiplication +As we have seen, multiplication preserves positivity, so we can restrict it + to the positive rationals. We see that this restricted multiplication has some + nice properties. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qmult_pres_pos1.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qpos_mult.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/associative_Qpos_mult.con". + +(*#* ***Inverse +We restrict the domain of the inverse to the set of positive rationals. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qpos_inv.con". + +(*#* The restricted inverse preserves positivity. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/inv_pres_pos1.con". + +(*#* Now, we can also restrict the co-domain. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qpos_Qpos_inv.con". + +(*#* This restricted inverse map appears a setoid function. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qpos_Qpos_inv_strong_ext.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qpos_Qpos_inv_op.con". + +(*#* ***Special multiplication and inverse +We define [multdiv2]: $(x,y) \mapsto xy/2$ #(x,y) ↦ xy/2#. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/Qpos_div2.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/multdiv2.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/associative_multdiv2.con". + +(*#* And its inverse [multdiv4]: $x \mapsto 4/x$ #x ↦ 4/x#. +*) + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/mult4.con". + +inline procedural "cic:/CoRN/model/setoids/Qpossetoid/divmult4.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qsetoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qsetoid.mma new file mode 100644 index 000000000..2fff7848c --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Qsetoid.mma @@ -0,0 +1,88 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qsetoid.v,v 1.6 2004/04/06 15:46:05 lcf Exp $ *) + +include "model/structures/Qsec.ma". + +include "algebra/CSetoidFun.ma". + +(*#* **Example of a setoid: [Q] +***Setoid +*) + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/ap_Q_irreflexive1.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/ap_Q_symmetric1.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/ap_Q_cotransitive1.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/ap_Q_tight1.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/ap_Q_is_apartness.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Q_as_CSetoid.con". + +(*#* ***Addition +*) + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qplus_wd.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qplus_strext1.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qplus_is_bin_fun.con". + +(*#* It is associative and commutative. +*) + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qplus_is_assoc.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qplus_is_commut1.con". + +(*#* ***Opposite +*) + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qopp_wd.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qopp_strext.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qopp_is_fun.con". + +(*#* ***Multiplication +*) + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qmult_wd.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qmult_strext1.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qmult_is_bin_fun.con". + +(*#* It is associative and commutative. +*) + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qmult_is_assoc.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qmult_is_commut.con". + +(*#* ***Less-than +*) + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qlt_strext.con". + +inline procedural "cic:/CoRN/model/setoids/Qsetoid/Qlt_is_CSetoid_relation.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Zsetoid.mma b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Zsetoid.mma new file mode 100644 index 000000000..80a63ebb1 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/setoids/Zsetoid.mma @@ -0,0 +1,82 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Zsetoid.v,v 1.5 2004/04/07 15:08:08 lcf Exp $ *) + +include "model/structures/Zsec.ma". + +include "algebra/CSetoidFun.ma". + +(*#* **Example of a setoid: [Z] +*** [Z] +*) + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/ap_Z_irreflexive.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/ap_Z_symmetric.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/ap_Z_cotransitive.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/ap_Z_tight.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/ap_Z_is_apartness.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Z_as_CSetoid.con". + +(*#* The term [Z_as_CSetoid] is of type [CSetoid]. Hence we have proven that [Z] is a constructive setoid. +***Addition +We will prove now that the addition on the integers is a setoid function. +*) + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zplus_wd.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zplus_strext.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zplus_is_bin_fun.con". + +(*#* What's more: the addition is also associative and commutative. +*) + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zplus_is_assoc.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zplus_is_commut.con". + +(*#* ***Opposite +Taking the opposite of an integer is a setoid function. +*) + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zopp_wd.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zopp_strext.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zopp_is_fun.con". + +(*#* ***Multiplication +Finally the multiplication is a setoid function and is associative and commutative. +*) + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zmult_wd.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zmult_strext.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zmult_is_bin_fun.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zmult_is_assoc.con". + +inline procedural "cic:/CoRN/model/setoids/Zsetoid/Zmult_is_commut.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/structures/Npossec.mma b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Npossec.mma new file mode 100644 index 000000000..1a8d0c005 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Npossec.mma @@ -0,0 +1,35 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Npossec.v,v 1.3 2004/04/06 15:46:05 lcf Exp $ *) + +(*#* printing Npos $\mathbb{N}^{+}$ #N+# *) + +include "model/structures/Nsec.ma". + +(*#* **[Npos] +The positive natural numbers have some nice properties. Addition as well +as multiplication preserve the feature of being positive. +*) + +inline procedural "cic:/CoRN/model/structures/Npossec/plus_resp_Npos0.con". + +inline procedural "cic:/CoRN/model/structures/Npossec/Npos_is_suc.con". + +inline procedural "cic:/CoRN/model/structures/Npossec/mult_resp_Npos0.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/structures/Nsec.mma b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Nsec.mma new file mode 100644 index 000000000..65c1bf6a9 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Nsec.mma @@ -0,0 +1,66 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Nsec.v,v 1.6 2004/04/06 15:46:05 lcf Exp $ *) + +(*#* printing {#N} $\ensuremath{\mathrel\#_{\mathbb N}}$ *) + +include "algebra/CLogic.ma". + +(*#* *[nat] +**About [nat] + +We prove some basic lemmas of the natural numbers. + +A variant of [0_S] from the standard library +*) + +inline procedural "cic:/CoRN/model/structures/Nsec/S_O.con". + +(*#* ***Apartness +*) + +inline procedural "cic:/CoRN/model/structures/Nsec/ap_nat.con". + +(* NOTATION +Infix "{#N}" := ap_nat (no associativity, at level 90). +*) + +inline procedural "cic:/CoRN/model/structures/Nsec/ap_nat_irreflexive0.con". + +inline procedural "cic:/CoRN/model/structures/Nsec/ap_nat_symmetric0.con". + +inline procedural "cic:/CoRN/model/structures/Nsec/ap_nat_cotransitive0.con". + +inline procedural "cic:/CoRN/model/structures/Nsec/ap_nat_tight0.con". + +(*#* ***Addition +*) + +inline procedural "cic:/CoRN/model/structures/Nsec/plus_strext0.con". + +(*#* There is no inverse for addition, because every candidate will fail for 2 +*) + +inline procedural "cic:/CoRN/model/structures/Nsec/no_inverse0.con". + +(*#* ***Multiplication +*) + +inline procedural "cic:/CoRN/model/structures/Nsec/mult_strext0.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/structures/Qpossec.mma b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Qpossec.mma new file mode 100644 index 000000000..946c0b922 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Qpossec.mma @@ -0,0 +1,68 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qpossec.v,v 1.5 2004/04/06 15:46:05 lcf Exp $ *) + +(*#* printing Qpos $\mathbb{Q}^{+}$ #Q+# *) + +include "model/structures/Qsec.ma". + +include "algebra/CLogic.ma". + +(*#* **About [Qpos] +We will prove some lemmas concerning rationals bigger than 0. + +***Constants +One, two and four are all bigger than zero. +*) + +inline procedural "cic:/CoRN/model/structures/Qpossec/pos_QONE.con". + +inline procedural "cic:/CoRN/model/structures/Qpossec/pos_QTWO.con". + +inline procedural "cic:/CoRN/model/structures/Qpossec/pos_QFOUR.con". + +(*#* A positive rational is not zero. +*) + +inline procedural "cic:/CoRN/model/structures/Qpossec/pos_imp_nonzero.con". + +(*#* ***Multiplication +The product of two positive rationals is again positive. +*) + +inline procedural "cic:/CoRN/model/structures/Qpossec/Qmult_pres_pos0.con". + +(*#* ***Inverse +The inverse of a positive rational is again positive. +*) + +inline procedural "cic:/CoRN/model/structures/Qpossec/inv_pres_pos0.con". + +(*#* ***Special multiplication +Now we will investigate the function $(x,y) \mapsto xy/2$#(x,y) +↦ xy/2#. We will see that its unit is 2. Its inverse map is $x +\mapsto 4/x$ #x ↦ 4/x#. +*) + +inline procedural "cic:/CoRN/model/structures/Qpossec/QTWOpos_is_rht_unit0.con". + +inline procedural "cic:/CoRN/model/structures/Qpossec/QTWOpos_is_left_unit0.con". + +inline procedural "cic:/CoRN/model/structures/Qpossec/multdiv2_is_inv.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/structures/Qsec.mma b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Qsec.mma new file mode 100644 index 000000000..2a023a171 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Qsec.mma @@ -0,0 +1,266 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Qsec.v,v 1.7 2004/04/08 08:20:35 lcf Exp $ *) + +(*#* printing Q %\ensuremath{\mathbb{Q}}% *) + +(*#* printing QZERO %\ensuremath{0_\mathbb{Q}}% #0Q# *) + +(*#* printing QONE %\ensuremath{1_\mathbb{Q}}% #1Q# *) + +(*#* printing QTWO %\ensuremath{2_\mathbb{Q}}% #2Q# *) + +(*#* printing QFOUR %\ensuremath{4_\mathbb{Q}}% #4Q# *) + +include "algebra/CLogic.ma". + +include "model/structures/Zsec.ma". + +(*#* *[Q] +**About [Q] +We define the structure of rational numbers as follows. First of all, +it consists of the set of rational numbers, defined as the set of +pairs $\langle a,n\rangle$#⟨a,n⟩# with [a:Z] and +[n:positive]. Intuitively, $\langle a,n\rangle$#⟨a,n⟩# +represents the rational number [a[/]n]. Then there is the equality on +[Q]: $\langle a,m\rangle=\langle +b,n\rangle$#⟨a,m⟩=⟨b,n⟩# iff [an [=] bm]. We +also define apartness, order, addition, multiplication, opposite, +inverse an de constants 0 and 1. *) + +(* UNEXPORTED +Section Q +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Q.ind". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qeq.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qap.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qopp.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/QZERO.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/QONE.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qinv.con". + +(* UNEXPORTED +End Q +*) + +(* NOTATION +Infix "{=Q}" := Qeq (no associativity, at level 90). +*) + +(* NOTATION +Infix "{#Q}" := Qap (no associativity, at level 90). +*) + +(* NOTATION +Infix "{#%\emph{%not equal%}%## to [QZERO]: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/ONEQ_neq_ZEROQ.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/refl_Qeq.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/sym_Qeq.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/trans_Qeq.con". + +(*#* + The equality is decidable: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/dec_Qeq.con". + +(*#* ***Apartness +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Q_non_zero.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/ap_Q_irreflexive0.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/ap_Q_symmetric0.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/ap_Q_cotransitive0.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/ap_Q_tight0.con". + +(*#* ***Addition +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus_simpl.con". + +(*#* + Addition is associative: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus_assoc.con". + +(*#* + [QZERO] as the neutral element for addition: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/QZERO_right.con". + +(*#* + Commutativity of addition: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus_sym.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus_strext0.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/ZEROQ_as_rht_unit0.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/ZEROQ_as_lft_unit0.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus_is_commut0.con". + +(*#* ***Opposite + [{-Q}] is a well defined unary operation: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qopp_simpl.con". + +(*#* + The group equation for [{-Q}] +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus_inverse_r.con". + +(*#* ***Multiplication +Next we shall prove the properties of multiplication. First we prove +that [{*Q}] is well-defined +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_simpl.con". + +(*#* + and it is associative: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_assoc.con". + +(*#* + [QONE] is the neutral element for multiplication: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_n_1.con". + +(*#* + The commutativity for [{*Q}]: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_sym.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_plus_distr_r.con". + +(*#* + And a property of multiplication which says if [x [~=] Zero] and [xy [=] Zero] then [y [=] Zero]: +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_eq.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_strext0.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/nonZero.con". + +(*#* ***Inverse +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qinv_strext.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qinv_is_inv.con". + +(*#* ***Less-than +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_wd_right.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_wd_left.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_eq_gt_dec.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_is_transitive_unfolded.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_strext_unfolded.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_is_irreflexive_unfolded.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_is_antisymmetric_unfolded.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qplus_resp_Qlt.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qmult_resp_pos_Qlt.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/Qlt_gives_apartness.con". + +(*#* ***Miscellaneous +We consider the injection [inject_Z] from [Z] to [Q] as a coercion. +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/inject_Z.con". + +(* COERCION +cic:/matita/CoRN-Procedural/model/structures/Qsec/inject_Z.con +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/injz_plus.con". + +inline procedural "cic:/CoRN/model/structures/Qsec/injZ_One.con". + +(*#* We can always find a natural number that is bigger than a given rational +number. +*) + +inline procedural "cic:/CoRN/model/structures/Qsec/Q_is_archemaedian0.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/model/structures/Zsec.mma b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Zsec.mma new file mode 100644 index 000000000..9b8781aa7 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/model/structures/Zsec.mma @@ -0,0 +1,100 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Zsec.v,v 1.5 2004/04/06 15:46:05 lcf Exp $ *) + +(*#* printing {#Z} %\ensuremath{\mathrel\#_{\mathbb Z}}% *) + +include "algebra/CLogic.ma". + +(*#* *[Z] +** About [Z] +We consider the implementation of integers as signed binary sequences (the +datatype [Z] as defined in [ZArith], in the standard library). + +***Apartness +We define the apartness as the negation of the Leibniz equality: +*) + +inline procedural "cic:/CoRN/model/structures/Zsec/ap_Z.con". + +(* NOTATION +Infix "{#Z}" := ap_Z (no associativity, at level 90). +*) + +(*#* Some properties of apartness: +*) + +inline procedural "cic:/CoRN/model/structures/Zsec/ap_Z_irreflexive0.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/ap_Z_symmetric0.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/ap_Z_cotransitive0.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/ap_Z_tight0.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/ONE_neq_O.con". + +(*#* ***Addition +Some properties of the addition. [Zplus] is also defined in the standard +library. +*) + +inline procedural "cic:/CoRN/model/structures/Zsec/Zplus_wd0.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/Zplus_strext0.con". + +(*#* ***Multiplication +The multiplication is extensional: +*) + +inline procedural "cic:/CoRN/model/structures/Zsec/Zmult_strext0.con". + +(*#* ***Miscellaneous +*) + +inline procedural "cic:/CoRN/model/structures/Zsec/Zpos.con". + +(* begin hide *) + +(* COERCION +cic:/Coq/ZArith/BinInt/Z.ind#xpointer(1/1/2) +*) + +(* end hide *) + +inline procedural "cic:/CoRN/model/structures/Zsec/a_very_specific_lemma1.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/a_very_specific_lemma2.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/a_very_specific_lemma3.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/a_very_specific_lemma4.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/a_very_specific_lemma5.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/Zpos_pos.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/Zpos_neg.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/Zpos_Zsgn.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/Zpos_Zsgn2.con". + +inline procedural "cic:/CoRN/model/structures/Zsec/a_very_specific_lemma5'.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/preamble.ma b/helm/software/matita/contribs/CoRN-Procedural/preamble.ma new file mode 100644 index 000000000..8c3252102 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/preamble.ma @@ -0,0 +1,21 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +include "coq.ma". + +alias id "refl_equal" = "cic:/Coq/Init/Logic/eq.ind#xpointer(1/1/1)". +alias id "False" = "cic:/Coq/Init/Logic/False.ind#xpointer(1/1)". +alias id "True" = "cic:/Coq/Init/Logic/True.ind#xpointer(1/1)". +alias id "I" = "cic:/Coq/Init/Logic/True.ind#xpointer(1/1/1)". +alias id "sym_eq" = "cic:/Coq/Init/Logic/sym_eq.con". diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_LUB.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_LUB.mma new file mode 100644 index 000000000..8d4a78b64 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_LUB.mma @@ -0,0 +1,218 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +(* file : least_upper_bound_principle.v *) + +(* version : 1.50 - 03/05/2001 *) + +(* version : 1.00 - 27/02/2001 *) + +(* author : Milad Niqui *) + +(* language : coq 7.0beta26feb *) + +(* dependency : iso_CReals.v , Expon.v *) + +(* description : proof of the Bridges' least upper bound principle *) + +include "reals/iso_CReals.ma". + +include "algebra/Expon.ma". + +(* UNEXPORTED +Section LUBP +*) + +alias id "R1" = "cic:/CoRN/reals/Bridges_LUB/LUBP/R1.var". + +(* SUBSECTION ON GENRAL DEFINITIONS *) + +(* UNEXPORTED +Section lub_definitions +*) + +alias id "OF" = "cic:/CoRN/reals/Bridges_LUB/LUBP/lub_definitions/OF.var". + +alias id "SS" = "cic:/CoRN/reals/Bridges_LUB/LUBP/lub_definitions/SS.var". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/member.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/Pmember.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/is_upper_bound.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/l_u_b.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/supremum.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/Psupremum.con". + +(* the following definitions are not used in *) + +(* this file but later we will need them *) + +inline procedural "cic:/CoRN/reals/Bridges_LUB/is_lower_bound.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/g_l_b.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/infimum.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/Pinfimum.con". + +(* UNEXPORTED +End lub_definitions +*) + +(* MAIN SECTION *) + +(* UNEXPORTED +Section upper_bound_sequence +*) + +alias id "A" = "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/A.var". + +alias id "is_inhabitted" = "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/is_inhabitted.var". + +alias id "bounded_above" = "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/bounded_above.var". + +alias id "located" = "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/located.var". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/s.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/Ps.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/b0.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/Pb0.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/b0_is_upper_bound.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/s_inhabits_A.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/dstart_l.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/dstart_r.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dl_less_dr.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/shrink23d.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/shrink13d.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/shrink24d.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/Real_Interval.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dcotrans_analyze.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dcotrans_analyze_strong.con". + +(* NOTATION +Notation "( p , q )" := (pairT p q). +*) + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dif_cotrans.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dif_cotrans_strong.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dIntrvl.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/U.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/V.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/W.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/delta_dIntrvl.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/Length_dIntrvl.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dIntrvl_inside_l_n.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/dIntrvl_inside_r_n.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/V_increase.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/W_decrease.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_m_n_V.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_m_n_W.con". + +(* These lemma are *very* similar to those in *) + +(* Cauchy_rationals_approach_reals.v *) + +inline procedural "cic:/CoRN/reals/Bridges_LUB/a_familiar_simple_inequality.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_conversion_rate2.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/CS_seq_U.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_as_CauchySeq.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/LUBP/upper_bound_sequence/B.con" "LUBP__upper_bound_sequence__". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_minus_V.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_minus_W.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_V_upper.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/U_W_lower.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/AbsSmall_U_V.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/AbsSmall_U_W.con". + +(* Two properties of exponentiation in COrdFields *) + +inline procedural "cic:/CoRN/reals/Bridges_LUB/nexp_resp_great_One.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/very_weak_binomial.con". + +(* A consequence of Archimedean property - *) + +(* the every basis of definition of e=lim(1+1/n)^n *) + +inline procedural "cic:/CoRN/reals/Bridges_LUB/nexp_resp_Two.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/twisted_archimedean.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/B_limit_V.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/B_limit_W.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/W_n_is_upper.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/A_bounds_V_n.con". + +inline procedural "cic:/CoRN/reals/Bridges_LUB/cauchy_gives_lub.con". + +(* UNEXPORTED +End upper_bound_sequence +*) + +(* UNEXPORTED +End LUBP +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_iso.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_iso.mma new file mode 100644 index 000000000..91c34862b --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Bridges_iso.mma @@ -0,0 +1,309 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +(* file : bridges_gives_our.v *) + +(* version : 1.50 - 09/05/2001 *) + +(* version : 1.00 - 09/03/2001 *) + +(* author : Milad Niqui *) + +(* language : coq7.0bet26feb *) + +(* dependency : least_upper_bound_principle *) + +(* description : Bridges' proof of Cauchy completeness in TCS-219 *) + +include "reals/Bridges_LUB.ma". + +(* This lemma comes from lemmas.v of Martijn Oostdijk *) + +inline procedural "cic:/CoRN/reals/Bridges_iso/le_witness_informative.con". + +(* UNEXPORTED +Section bridges_axioms_imply_ours +*) + +alias id "OF" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/OF.var". + +alias id "lubp" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/lubp.var". + +alias id "is_Archimedes" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/is_Archimedes.var". + +inline procedural "cic:/CoRN/reals/Bridges_iso/is_Archimedes'.con". + +(* UNEXPORTED +Section proofs_in_TCS +*) + +inline procedural "cic:/CoRN/reals/Bridges_iso/leEq_geEq.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/glbp.con". + +(* UNEXPORTED +Section supremum +*) + +alias id "P" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/supremum/P.var". + +inline procedural "cic:/CoRN/reals/Bridges_iso/inequality1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/inequality2.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/inequality3.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/inequality4.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Hum.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bound_tk1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bound_tk2.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/trick.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/trick'.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/up_bound_for_n_element.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/low_bound_for_n_element.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/saghf.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Psaghf.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/kaf.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pkaf.con". + +alias id "is_finite_P" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/supremum/is_finite_P.var". + +inline procedural "cic:/CoRN/reals/Bridges_iso/card.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pcard1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/seq.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pseq1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pseq1_unfolded.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/indeks.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pindeks.con". + +alias id "is_onto_seq_P" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/supremum/is_onto_seq_P.var". + +inline procedural "cic:/CoRN/reals/Bridges_iso/P_is_inhabited.con". + +(* +Lemma bounded_quantifier:(N:nat;phi,psi:nat->Prop) + ((m:nat)(le m N)->(phi m)\/(psi m))-> + ((m:nat)(le m N)->(phi m))\/(Ex [j:nat](le j N)/\(psi j)). +Proof. + Intros. + Induction N. + Cut (phi O)\/(psi O). + Intro. + Case H0. + Intros. + Left. + Intros. + Rewrite <- (le_n_O_eq m H2). + Assumption. + Intro. + Right. + Exists O. + Split. + Constructor. + Assumption. + Apply H. + Constructor.*) + +(* n=(S n0) *) + +(* Case HrecN. + Intros. + Apply H. + Apply le_trans with m:=N. + Assumption. + Apply le_n_Sn. + Intro. + Case (H (S N)). + Apply le_n. + Intros. + Left. + Intros. + Case (le_lt_eq_dec m (S N)). + Assumption. + Intros. + Apply H0. + Apply (lt_n_Sm_le m N). + Assumption. + Intro. + Rewrite e. + Assumption. + Intro. + Right. + Exists (S N). + Split. + Apply le_n. + Assumption. + Intro. + Right. + Case H0. + Intro j. + Intros. + Exists j. + Elim H1. + Intros. + Split. + Apply le_trans with m:=N. + Assumption. + Apply le_n_Sn. + Assumption. +Qed. +*) + +inline procedural "cic:/CoRN/reals/Bridges_iso/bounded_quantifier_informative.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_lemma1a.con". + +alias id "P_is_strongly_extensional" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/supremum/P_is_strongly_extensional.var". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_lemma1b.con". + +(* UNEXPORTED +End supremum +*) + +(*#**********************************) + +(*#**********************************) + +(*#**********************************) + +(*#**********************************) + +(* UNEXPORTED +Section Every_Cauchy_Sequence_is_bounded +*) + +inline procedural "cic:/CoRN/reals/Bridges_iso/seq2set.con". + +alias id "g" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/Every_Cauchy_Sequence_is_bounded/g.var". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/Every_Cauchy_Sequence_is_bounded/g_.con" "bridges_axioms_imply_ours__proofs_in_TCS__Every_Cauchy_Sequence_is_bounded__". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/Every_Cauchy_Sequence_is_bounded/pg.con" "bridges_axioms_imply_ours__proofs_in_TCS__Every_Cauchy_Sequence_is_bounded__". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/Every_Cauchy_Sequence_is_bounded/P.con" "bridges_axioms_imply_ours__proofs_in_TCS__Every_Cauchy_Sequence_is_bounded__". + +inline procedural "cic:/CoRN/reals/Bridges_iso/fin_is_fin.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/card_fin.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/finite_seq.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_lemma2a.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/sup.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Psup.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Psup_proj1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Psup_unfolded1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Psup_unfolded2.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_lemma2b.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/inf.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pinf.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pinf_proj1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pinf_unfolded1.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pinf_unfolded2.con". + +(* I tried very much not to mention this lemma! *) + +inline procedural "cic:/CoRN/reals/Bridges_iso/sup_leEq.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/inf_geEq.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/tail_is_Cauchy.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/tail_seq.con". + +(* UNEXPORTED +End Every_Cauchy_Sequence_is_bounded +*) + +alias id "g" = "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/g.var". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/g_.con" "bridges_axioms_imply_ours__proofs_in_TCS__". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/pg.con" "bridges_axioms_imply_ours__proofs_in_TCS__". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/sup_tail.con" "bridges_axioms_imply_ours__proofs_in_TCS__". + +inline procedural "cic:/CoRN/reals/Bridges_iso/sup_tail_leEq.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/sup_tail_is_Cauchy.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/sup_tail_as_Cauchy.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/bridges_axioms_imply_ours/proofs_in_TCS/L.con" "bridges_axioms_imply_ours__proofs_in_TCS__". + +inline procedural "cic:/CoRN/reals/Bridges_iso/sup_tail_decrease.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/L_less_sup_n.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Psup_unfolded2_informative.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Pinf_unfolded2_informative.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/convergent_subseq.con". + +(* very elegant proof almost as short as text version! *) + +inline procedural "cic:/CoRN/reals/Bridges_iso/lubp_gives_Cauchy.con". + +(* UNEXPORTED +End proofs_in_TCS +*) + +inline procedural "cic:/CoRN/reals/Bridges_iso/Bridges_R_is_CReals.con". + +inline procedural "cic:/CoRN/reals/Bridges_iso/Bridges_R_as_CReals.con". + +(* UNEXPORTED +End bridges_axioms_imply_ours +*) + +(* end hide *) + +(*#* remove printing Q *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/CMetricFields.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/CMetricFields.mma new file mode 100644 index 000000000..fa6e91b19 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/CMetricFields.mma @@ -0,0 +1,91 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CMetricFields.v,v 1.6 2004/04/23 10:01:03 lcf Exp $ *) + +include "reals/CReals1.ma". + +(* UNEXPORTED +Section CMetric_Fields +*) + +(*#* *Metric Fields *) + +inline procedural "cic:/CoRN/reals/CMetricFields/is_CMetricField.ind". + +inline procedural "cic:/CoRN/reals/CMetricFields/CMetricField.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/reals/CMetricFields/cmf_crr.con +*) + +(* UNEXPORTED +End CMetric_Fields +*) + +(* NOTATION +Notation MAbs := (cmf_abs _). +*) + +(* UNEXPORTED +Section basics +*) + +inline procedural "cic:/CoRN/reals/CMetricFields/MAbs_one.con". + +inline procedural "cic:/CoRN/reals/CMetricFields/Hulp.con". + +inline procedural "cic:/CoRN/reals/CMetricFields/MAbs_one_recip_one.con". + +(* end hide *) + +(* UNEXPORTED +End basics +*) + +(* UNEXPORTED +Section CMetric_Field_Cauchy +*) + +alias id "F" = "cic:/CoRN/reals/CMetricFields/CMetric_Field_Cauchy/F.var". + +(*#* +%\begin{convention}% Let [F:CMetricField]. +%\end{convention}% +*) + +inline procedural "cic:/CoRN/reals/CMetricFields/MCauchy_prop.con". + +inline procedural "cic:/CoRN/reals/CMetricFields/MCauchySeq.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/reals/CMetricFields/MCS_seq.con +*) + +inline procedural "cic:/CoRN/reals/CMetricFields/MseqLimit.con". + +inline procedural "cic:/CoRN/reals/CMetricFields/is_MCauchyCompl.con". + +(* UNEXPORTED +End CMetric_Field_Cauchy +*) + +(* UNEXPORTED +Implicit Arguments MseqLimit [F]. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/CPoly_Contin.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/CPoly_Contin.mma new file mode 100644 index 000000000..6987ae255 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/CPoly_Contin.mma @@ -0,0 +1,32 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CPoly_Contin.v,v 1.6 2004/04/23 10:01:03 lcf Exp $ *) + +(*#* * Continuity of polynomials *) + +include "reals/RealFuncts.ma". + +inline procedural "cic:/CoRN/reals/CPoly_Contin/plus_op_contin.con". + +inline procedural "cic:/CoRN/reals/CPoly_Contin/mult_op_contin.con". + +inline procedural "cic:/CoRN/reals/CPoly_Contin/linear_op_contin.con". + +inline procedural "cic:/CoRN/reals/CPoly_Contin/cpoly_op_contin.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/CReals.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/CReals.mma new file mode 100644 index 000000000..036a64173 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/CReals.mma @@ -0,0 +1,51 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CReals.v,v 1.2 2004/04/05 11:35:38 lcf Exp $ *) + +(*#* printing Lim %\ensuremath{\lim}% *) + +include "algebra/COrdCauchy.ma". + +(*#* * Definition of the notion of reals +The reals are defined as a Cauchy-closed Archimedean constructive +ordered field in which we have a maximum function. The maximum +function is definable, using countable choice, but in a rather tricky +way. Cauchy completeness is stated by assuming a function [lim] +that returns a real number for every Cauchy sequence together with a +proof that this number is the limit. +*) + +(* Begin_SpecReals *) + +inline procedural "cic:/CoRN/reals/CReals/is_CReals.ind". + +inline procedural "cic:/CoRN/reals/CReals/CReals.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/reals/CReals/crl_crr.con +*) + +(* End_SpecReals *) + +inline procedural "cic:/CoRN/reals/CReals/Lim.con". + +(* UNEXPORTED +Implicit Arguments Lim [IR]. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/CReals1.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/CReals1.mma new file mode 100644 index 000000000..3b345408d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/CReals1.mma @@ -0,0 +1,166 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CReals1.v,v 1.4 2004/04/23 10:01:04 lcf Exp $ *) + +include "reals/Max_AbsIR.ma". + +include "algebra/Expon.ma". + +include "algebra/CPoly_ApZero.ma". + +(* UNEXPORTED +Section More_Cauchy_Props +*) + +(*#* **Miscellaneous +*** More properties of Cauchy sequences +We will now define some special Cauchy sequences and prove some +more useful properties about them. + +The sequence defined by $x_n=\frac2{n+1}$#x(n)=2/(n+1)#. +*) + +inline procedural "cic:/CoRN/reals/CReals1/twice_inv_seq_Lim.con". + +inline procedural "cic:/CoRN/reals/CReals1/twice_inv_seq.con". + +(*#* +Next, we prove that the sequence of absolute values of a Cauchy +sequence is also Cauchy. +*) + +inline procedural "cic:/CoRN/reals/CReals1/Cauchy_Lim_abs.con". + +inline procedural "cic:/CoRN/reals/CReals1/Cauchy_abs.con". + +inline procedural "cic:/CoRN/reals/CReals1/Lim_abs.con". + +(* UNEXPORTED +End More_Cauchy_Props +*) + +(* UNEXPORTED +Section Subsequences +*) + +(*#* *** Subsequences +We will now examine (although without formalizing it) the concept +of subsequence and some of its properties. + +%\begin{convention}% Let [seq1,seq2:nat->IR]. +%\end{convention}% + +In order for [seq1] to be a subsequence of [seq2], there must be an +increasing function [f] growing to infinity such that +[forall (n :nat), (seq1 n) [=] (seq2 (f n))]. We assume [f] to be such a +function. + +Finally, for some of our results it is important to assume that +[seq2] is monotonous. +*) + +alias id "seq1" = "cic:/CoRN/reals/CReals1/Subsequences/seq1.var". + +alias id "seq2" = "cic:/CoRN/reals/CReals1/Subsequences/seq2.var". + +alias id "f" = "cic:/CoRN/reals/CReals1/Subsequences/f.var". + +alias id "monF" = "cic:/CoRN/reals/CReals1/Subsequences/monF.var". + +alias id "crescF" = "cic:/CoRN/reals/CReals1/Subsequences/crescF.var". + +alias id "subseq" = "cic:/CoRN/reals/CReals1/Subsequences/subseq.var". + +alias id "mon_seq2" = "cic:/CoRN/reals/CReals1/Subsequences/mon_seq2.var". + +inline procedural "cic:/CoRN/reals/CReals1/unbnd_f.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/CReals1/Subsequences/mon_F'.con" "Subsequences__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/CReals1/conv_subseq_imp_conv_seq.con". + +inline procedural "cic:/CoRN/reals/CReals1/Cprop2_seq_imp_Cprop2_subseq.con". + +inline procedural "cic:/CoRN/reals/CReals1/conv_seq_imp_conv_subseq.con". + +inline procedural "cic:/CoRN/reals/CReals1/Cprop2_subseq_imp_Cprop2_seq.con". + +(* UNEXPORTED +End Subsequences +*) + +(* UNEXPORTED +Section Cauchy_Subsequences +*) + +alias id "seq1" = "cic:/CoRN/reals/CReals1/Cauchy_Subsequences/seq1.var". + +alias id "seq2" = "cic:/CoRN/reals/CReals1/Cauchy_Subsequences/seq2.var". + +alias id "f" = "cic:/CoRN/reals/CReals1/Cauchy_Subsequences/f.var". + +alias id "monF" = "cic:/CoRN/reals/CReals1/Cauchy_Subsequences/monF.var". + +alias id "crescF" = "cic:/CoRN/reals/CReals1/Cauchy_Subsequences/crescF.var". + +alias id "subseq" = "cic:/CoRN/reals/CReals1/Cauchy_Subsequences/subseq.var". + +alias id "mon_seq2" = "cic:/CoRN/reals/CReals1/Cauchy_Subsequences/mon_seq2.var". + +inline procedural "cic:/CoRN/reals/CReals1/Lim_seq_eq_Lim_subseq.con". + +inline procedural "cic:/CoRN/reals/CReals1/Lim_subseq_eq_Lim_seq.con". + +(* UNEXPORTED +End Cauchy_Subsequences +*) + +(* UNEXPORTED +Section Properties_of_Exponentiation +*) + +(*#* *** More properties of Exponentiation + +Finally, we prove that [x[^]n] grows to infinity if [x [>] One]. +*) + +inline procedural "cic:/CoRN/reals/CReals1/power_big'.con". + +inline procedural "cic:/CoRN/reals/CReals1/power_big.con". + +inline procedural "cic:/CoRN/reals/CReals1/qi_yields_zero.con". + +inline procedural "cic:/CoRN/reals/CReals1/qi_lim_zero.con". + +(* UNEXPORTED +End Properties_of_Exponentiation +*) + +(*#* *** [IR] has characteristic zero *) + +inline procedural "cic:/CoRN/reals/CReals1/char0_IR.con". + +inline procedural "cic:/CoRN/reals/CReals1/poly_apzero_IR.con". + +inline procedural "cic:/CoRN/reals/CReals1/poly_IR_extensional.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/CSumsReals.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/CSumsReals.mma new file mode 100644 index 000000000..ba22c080f --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/CSumsReals.mma @@ -0,0 +1,92 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CSumsReals.v,v 1.5 2004/04/23 10:01:04 lcf Exp $ *) + +include "reals/CReals1.ma". + +(*#* * Sums over Reals + +%\begin{convention}% Let [c] be a real. +%\end{convention}% + +Here we prove that +$\Sigma_{m\leq i \leq n}~c^k = \frac{c^{n+1}-c^m}{c-1}.$ +#sum_(m≤ i ≤ n) c^k = frac (c^(n+1) -c^m) (c-1)# +*) + +(* UNEXPORTED +Section Sums_over_Reals +*) + +alias id "c" = "cic:/CoRN/reals/CSumsReals/Sums_over_Reals/c.var". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum0_c_exp.con". + +(* UNEXPORTED +Hint Resolve Sum0_c_exp. +*) + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum_c_exp.con". + +(* UNEXPORTED +Hint Resolve Sum_c_exp. +*) + +(*#* The following formulation is often more useful if [c [<] 1]. *) + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum_c_exp'.con". + +(* UNEXPORTED +Hint Resolve Sum_c_exp'. +*) + +(* UNEXPORTED +End Sums_over_Reals +*) + +(* UNEXPORTED +Hint Resolve Sum0_c_exp Sum_c_exp Sum_c_exp': algebra. +*) + +inline procedural "cic:/CoRN/reals/CSumsReals/diff_is_Sum0.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/diff_is_sum.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum0_pres_less.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum_pres_less.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum_pres_leEq.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum0_comm_scal.con". + +(* UNEXPORTED +Hint Resolve Sum0_comm_scal: algebra. +*) + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum_comm_scal.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum0_comm_scal'.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum_comm_scal'.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sumx_comm_scal'.con". + +inline procedural "cic:/CoRN/reals/CSumsReals/Sum2_comm_scal'.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/CauchySeq.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/CauchySeq.mma new file mode 100644 index 000000000..f6dbff62d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/CauchySeq.mma @@ -0,0 +1,313 @@ +(**************************************************************************) +(* ___ *) +(* ||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: CauchySeq.v,v 1.8 2004/04/23 10:01:04 lcf Exp $ *) + +(*#* printing IR %\ensuremath{\mathbb R}% *) + +(*#* printing PartIR %\ensuremath{\mathbb R\!\not\rightarrow\!\mathbb R}% *) + +(*#* printing ZeroR %\ensuremath{\mathbf0}% #0# *) + +(*#* printing OneR %\ensuremath{\mathbf1}% #1# *) + +(*#* printing AbsIR %\ensuremath{|\cdot|_{\mathbb R}}% *) + +include "reals/CReals.ma". + +(*#* *Real Number Structures +%\begin{convention}% Let [IR] be a structure for real numbers. +%\end{convention}% +*) + +(* +Require Export R_CReals. +Definition IR : CReals := Concrete_R. +Opaque IR. +*) + +alias id "IR" = "cic:/CoRN/reals/CauchySeq/IR.var". + +(* NOTATION +Notation PartIR := (PartFunct IR). +*) + +(* NOTATION +Notation ProjIR1 := (prj1 IR _ _ _). +*) + +(* NOTATION +Notation ProjIR2 := (prj2 IR _ _ _). +*) + +include "tactics/Transparent_algebra.ma". + +(* begin hide *) + +(* NOTATION +Notation ZeroR := (Zero:IR). +*) + +(* NOTATION +Notation OneR := (One:IR). +*) + +(* end hide *) + +(* UNEXPORTED +Section CReals_axioms +*) + +(*#* ** [CReals] axioms *) + +inline procedural "cic:/CoRN/reals/CauchySeq/CReals_is_CReals.con". + +(*#* First properties which follow trivially from the axioms. *) + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_Cauchy.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Archimedes.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Archimedes'.con". + +(*#* A stronger version, which often comes in useful. *) + +inline procedural "cic:/CoRN/reals/CauchySeq/str_Archimedes.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/CauchySeqR.con". + +(* UNEXPORTED +End CReals_axioms +*) + +(* UNEXPORTED +Section Cauchy_Defs +*) + +(*#* ** Cauchy sequences +*** Alternative definitions +This section gives several definitions of Cauchy sequences. There +are no lemmas in this section. + +The current definition of Cauchy ([Cauchy_prop]) is: + +%\[\forall \epsilon>0. \exists N. \forall m\geq N. |seq_m - seq_N|\leq\varepsilon\]% +#for all e>0 there exists N such that for all m≥ N |seqm-seqN|≤ e# + +Variant 1 of Cauchy ([Cauchy_prop1]) is: + +%\[\forall k. \exists N. \forall m \geq N. |seq_m - seq_N|\leq1/(k+1)\]% +#for all k there exists N such that for all m ≥ N |seqm-seqN| ≤ 1/(k+1)# + +In all of the following variants the limit occurs in the definition. +Therefore it is useful to define an auxiliary predicate +[Cauchy_Lim_prop?], in terms of which [Cauchy_prop?] is defined. + +Variant 2 of Cauchy ([Cauchy_prop2]) is [exists y, (Cauchy_Lim_prop2 seq y)] +where +[[ +Cauchy_Lim_prop2 seq y := forall eps [>] Zero, exists N, forall m >= N, (AbsIR seq m - y) [<=] eps +]] + +Note that [Cauchy_Lim_prop2] equals [seqLimit]. + +Variant 3 of Cauchy ([Cauchy_prop3]) reads [exists y, (Cauchy_Lim_prop3 seq y)] +where +[[ +Cauchy_Lim_prop3 seq y := forall k, exists N, forall m >= N, (AbsIR seq m - y) [<=] One[/] (k[+]1) +]] + +The following variant is more restricted. + +Variant 4 of Cauchy ([Cauchy_prop4]): [exists y, (Cauchy_Lim_prop4 seq y)] +where +[[ +Cauchy_Lim_prop4 seq y := forall k, (AbsIR seq m - y) [<=] One[/] (k[+]1) +]] + +So +[[ +Cauchy_prop4 -> Cauchy_prop3 Iff Cauchy_prop2 Iff Cauchy_prop1 Iff Cauchy_prop +]] +Note: we don't know which formulations are useful. + +The inequalities are stated with [[<=]] rather than with [<] for the +following reason: both formulations are equivalent, as is well known; +and [[<=]] being a negative statement, this makes proofs +sometimes easier and program extraction much more efficient. +*) + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop1.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_prop2.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop2.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_prop3.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop3.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_prop4.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop4.con". + +(* UNEXPORTED +End Cauchy_Defs +*) + +(* UNEXPORTED +Section Inequalities +*) + +(*#* *** Inequalities of Limits + +The next lemma is equal to lemma [Lim_Cauchy]. *) + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_complete.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/less_Lim_so_less_seq.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_less_so_seq_less.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_less_Lim_so_seq_less_seq.con". + +(*#* The next lemma follows from [less_Lim_so_less_seq] with [y := (y[+] (Lim seq)) [/]TwoNZ]. *) + +inline procedural "cic:/CoRN/reals/CauchySeq/less_Lim_so.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_less_so.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/leEq_seq_so_leEq_Lim.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/str_leEq_seq_so_leEq_Lim.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_leEq_Lim.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/seq_leEq_so_Lim_leEq.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/str_seq_leEq_so_Lim_leEq.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Limits_unique.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_wd.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_strext.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_ap_imp_seq_ap.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_ap_imp_seq_ap'.con". + +(* UNEXPORTED +End Inequalities +*) + +(* UNEXPORTED +Section Equiv_Cauchy +*) + +(*#* *** Equivalence of formulations of Cauchy *) + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop1_prop.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop2_prop.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_prop3_prop2.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop3_prop2.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop3_prop.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Build_CauchySeq1.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_prop4_prop3.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_prop4_prop2.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop4_prop3.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop4_prop.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Build_CauchySeq4.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Build_CauchySeq4_y.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_CauchySeq4.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Build_CauchySeq2.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Build_CauchySeq2_y.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_CauchySeq2.con". + +(*#* Well definedness. *) + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_prop_wd.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_prop2_wd.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_wd'.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_unique.con". + +(* UNEXPORTED +End Equiv_Cauchy +*) + +(* UNEXPORTED +Section Cauchy_props +*) + +(*#* *** Properties of Cauchy sequences + +Some of these lemmas are now obsolete, because they were reproved for arbitrary ordered fields$\ldots$#...# + +We begin by defining the constant sequence and proving that it is Cauchy with the expected limit. +*) + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_const.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_const.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_plus.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_plus.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_plus.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_inv.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_inv.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_inv.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_minus.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_minus.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_minus.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_Lim_mult.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Cauchy_mult.con". + +inline procedural "cic:/CoRN/reals/CauchySeq/Lim_mult.con". + +(* UNEXPORTED +End Cauchy_props +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Cauchy_CReals.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Cauchy_CReals.mma new file mode 100644 index 000000000..dcc8619f3 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Cauchy_CReals.mma @@ -0,0 +1,134 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Cauchy_CReals.v,v 1.5 2004/04/23 10:01:04 lcf Exp $ *) + +include "algebra/Cauchy_COF.ma". + +include "reals/CReals.ma". + +(* UNEXPORTED +Section R_CReals +*) + +(*#* * The Real Number Structure + +We will now apply our Cauchy sequence construction to an archimedean ordered field in order to obtain a model of the real numbers. + +** Injection of [Q] + +We start by showing how to inject the rational numbers in the field of Cauchy sequences; this embedding preserves the algebraic operations. + +%\begin{convention}% Let [F] be an ordered field. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/reals/Cauchy_CReals/R_CReals/F.var". + +(* NOTATION +Notation "'R_COrdField''" := (R_COrdField F). +*) + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/inject_Q.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_eq.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_plus.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_min.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_lt.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_ap.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_cancel_eq.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_cancel_less.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_le.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_cancel_leEq.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_cancel_AbsSmall.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_One.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_nring'.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_nring.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_mult.con". + +(* UNEXPORTED +Opaque R_COrdField. +*) + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_div_three.con". + +(* UNEXPORTED +Transparent R_COrdField. +*) + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/ing_n.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/expand_Q_R.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/conv_modulus.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/R_CReals/T.con" "R_CReals__". + +(*#* We now assume our original field is archimedean and prove that the +resulting one is, too. +*) + +alias id "F_is_archemaedian" = "cic:/CoRN/reals/Cauchy_CReals/R_CReals/F_is_archemaedian.var". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/R_is_archemaedian.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/R_CReals/PT.con" "R_CReals__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/modulus_property.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/modulus_property_2.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/expand_Q_R_2.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/CS_seq_diagonal.con". + +(*#* ** Cauchy Completeness +We can also define a limit operator. +*) + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/Q_dense_in_R.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/LimR_CauchySeq.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/R_is_complete.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/R_is_CReals.con". + +inline procedural "cic:/CoRN/reals/Cauchy_CReals/R_as_CReals.con". + +(* UNEXPORTED +End R_CReals +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/IVT.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/IVT.mma new file mode 100644 index 000000000..1281ce7ff --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/IVT.mma @@ -0,0 +1,234 @@ +(**************************************************************************) +(* ___ *) +(* ||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: IVT.v,v 1.5 2004/04/23 10:01:04 lcf Exp $ *) + +include "reals/CPoly_Contin.ma". + +(* UNEXPORTED +Section Nested_Intervals +*) + +(*#* * Intermediate Value Theorem + +** Nested intervals + +%\begin{convention}% Let [a,b:nat->IR] be sequences such that: +- [a] is increasing; +- [b] is decreasing; +- [forall (i:nat), (a i) [<] (b i)]; +- for every positive real number [eps], there is an [i] such that [(b i) [<] (a i) [+]eps]. + +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/reals/IVT/Nested_Intervals/a.var". + +alias id "b" = "cic:/CoRN/reals/IVT/Nested_Intervals/b.var". + +alias id "a_mon" = "cic:/CoRN/reals/IVT/Nested_Intervals/a_mon.var". + +alias id "b_mon" = "cic:/CoRN/reals/IVT/Nested_Intervals/b_mon.var". + +alias id "a_b" = "cic:/CoRN/reals/IVT/Nested_Intervals/a_b.var". + +alias id "b_a" = "cic:/CoRN/reals/IVT/Nested_Intervals/b_a.var". + +inline procedural "cic:/CoRN/reals/IVT/a_mon'.con". + +inline procedural "cic:/CoRN/reals/IVT/b_mon'.con". + +inline procedural "cic:/CoRN/reals/IVT/a_b'.con". + +inline procedural "cic:/CoRN/reals/IVT/intervals_cauchy.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/IVT/Nested_Intervals/a'.con" "Nested_Intervals__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/IVT/Cnested_intervals_limit.con". + +(*#* %\begin{convention}% Let [f] be a continuous real function. +%\end{convention}% +*) + +alias id "f" = "cic:/CoRN/reals/IVT/Nested_Intervals/f.var". + +alias id "f_contin" = "cic:/CoRN/reals/IVT/Nested_Intervals/f_contin.var". + +inline procedural "cic:/CoRN/reals/IVT/f_contin_pos.con". + +inline procedural "cic:/CoRN/reals/IVT/f_contin_neg.con". + +(*#* Assume also that [forall i, f (a i) [<=] Zero [<=] f (b i)]. *) + +alias id "f_a" = "cic:/CoRN/reals/IVT/Nested_Intervals/f_a.var". + +alias id "f_b" = "cic:/CoRN/reals/IVT/Nested_Intervals/f_b.var". + +inline procedural "cic:/CoRN/reals/IVT/Cnested_intervals_zero.con". + +(* UNEXPORTED +End Nested_Intervals +*) + +(* UNEXPORTED +Section Bisection +*) + +(*#* ** Bissections *) + +alias id "f" = "cic:/CoRN/reals/IVT/Bisection/f.var". + +alias id "f_apzero_interval" = "cic:/CoRN/reals/IVT/Bisection/f_apzero_interval.var". + +alias id "a" = "cic:/CoRN/reals/IVT/Bisection/a.var". + +alias id "b" = "cic:/CoRN/reals/IVT/Bisection/b.var". + +alias id "a_b" = "cic:/CoRN/reals/IVT/Bisection/a_b.var". + +alias id "f_a" = "cic:/CoRN/reals/IVT/Bisection/f_a.var". + +alias id "f_b" = "cic:/CoRN/reals/IVT/Bisection/f_b.var". + +(*#* +%\begin{convention}% Let [Small] denote [Two[/]ThreeNZ], [lft] be [(Two[*]a[+]b) [/]ThreeNZ] and [rht] be [(a[+]Two[*]b) [/]ThreeNZ]. +%\end{convention}% +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/IVT/Bisection/Small.con" "Bisection__". + +inline procedural "cic:/CoRN/reals/IVT/Bisection/lft.con" "Bisection__". + +inline procedural "cic:/CoRN/reals/IVT/Bisection/rht.con" "Bisection__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/IVT/a_lft.con". + +inline procedural "cic:/CoRN/reals/IVT/rht_b.con". + +inline procedural "cic:/CoRN/reals/IVT/lft_rht.con". + +inline procedural "cic:/CoRN/reals/IVT/smaller_lft.con". + +inline procedural "cic:/CoRN/reals/IVT/smaller_rht.con". + +(* UNEXPORTED +Hint Resolve smaller_lft smaller_rht: algebra. +*) + +inline procedural "cic:/CoRN/reals/IVT/Cbisect'.con". + +(* UNEXPORTED +End Bisection +*) + +(* UNEXPORTED +Section Bisect_Interval +*) + +alias id "f" = "cic:/CoRN/reals/IVT/Bisect_Interval/f.var". + +alias id "C_f_apzero_interval" = "cic:/CoRN/reals/IVT/Bisect_Interval/C_f_apzero_interval.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/IVT/Bisect_Interval/Small.con" "Bisect_Interval__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/IVT/bisect_interval.ind". + +inline procedural "cic:/CoRN/reals/IVT/Cbisect_exists.con". + +inline procedural "cic:/CoRN/reals/IVT/bisect.con". + +inline procedural "cic:/CoRN/reals/IVT/bisect_prop.con". + +(* UNEXPORTED +End Bisect_Interval +*) + +(* UNEXPORTED +Section IVT_Op +*) + +(*#* ** IVT for operations +Same conventions as before. +*) + +alias id "f" = "cic:/CoRN/reals/IVT/IVT_Op/f.var". + +alias id "f_contin" = "cic:/CoRN/reals/IVT/IVT_Op/f_contin.var". + +alias id "f_apzero_interval" = "cic:/CoRN/reals/IVT/IVT_Op/f_apzero_interval.var". + +alias id "a" = "cic:/CoRN/reals/IVT/IVT_Op/a.var". + +alias id "b" = "cic:/CoRN/reals/IVT/IVT_Op/b.var". + +alias id "a_b" = "cic:/CoRN/reals/IVT/IVT_Op/a_b.var". + +alias id "f_a" = "cic:/CoRN/reals/IVT/IVT_Op/f_a.var". + +alias id "f_b" = "cic:/CoRN/reals/IVT/IVT_Op/f_b.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/IVT/IVT_Op/Small.con" "IVT_Op__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/IVT/interval_sequence.con". + +inline procedural "cic:/CoRN/reals/IVT/IVT_Op/a_.con" "IVT_Op__". + +inline procedural "cic:/CoRN/reals/IVT/IVT_Op/b_.con" "IVT_Op__". + +inline procedural "cic:/CoRN/reals/IVT/intervals_smaller.con". + +inline procedural "cic:/CoRN/reals/IVT/intervals_small''.con". + +inline procedural "cic:/CoRN/reals/IVT/intervals_small'.con". + +inline procedural "cic:/CoRN/reals/IVT/intervals_small.con". + +inline procedural "cic:/CoRN/reals/IVT/Civt_op.con". + +(* UNEXPORTED +End IVT_Op +*) + +(* UNEXPORTED +Section IVT_Poly +*) + +(*#* ** IVT for polynomials *) + +inline procedural "cic:/CoRN/reals/IVT/Civt_poly.con". + +(* UNEXPORTED +End IVT_Poly +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Intervals.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Intervals.mma new file mode 100644 index 000000000..e0eb61919 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Intervals.mma @@ -0,0 +1,311 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Intervals.v,v 1.10 2004/04/23 10:01:04 lcf Exp $ *) + +include "algebra/CSetoidInc.ma". + +include "reals/RealLists.ma". + +(* UNEXPORTED +Section Intervals +*) + +(*#* * Intervals +In this section we define (compact) intervals of the real line and +some useful functions to work with them. + +** Definitions + +We start by defining the compact interval [[a,b]] as being the set of +points less or equal than [b] and greater or equal than [a]. We +require [a [<=] b], as we want to work only in nonempty intervals. +*) + +inline procedural "cic:/CoRN/reals/Intervals/compact.con". + +(*#* +%\begin{convention}% Let [a,b : IR] and [Hab : a [<=] b]. +%\end{convention}% + +As expected, both [a] and [b] are members of [[a,b]]. Also they are +members of the interval [[Min(a,b),Max(a,b)]]. +*) + +alias id "a" = "cic:/CoRN/reals/Intervals/Intervals/a.var". + +alias id "b" = "cic:/CoRN/reals/Intervals/Intervals/b.var". + +alias id "Hab" = "cic:/CoRN/reals/Intervals/Intervals/Hab.var". + +inline procedural "cic:/CoRN/reals/Intervals/compact_inc_lft.con". + +inline procedural "cic:/CoRN/reals/Intervals/compact_inc_rht.con". + +inline procedural "cic:/CoRN/reals/Intervals/compact_Min_lft.con". + +inline procedural "cic:/CoRN/reals/Intervals/compact_Min_rht.con". + +(*#* +As we will be interested in taking functions with domain in a compact +interval, we want this predicate to be well defined. +*) + +inline procedural "cic:/CoRN/reals/Intervals/compact_wd.con". + +(*#* +Also, it will sometimes be necessary to rewrite the endpoints of an interval. +*) + +inline procedural "cic:/CoRN/reals/Intervals/compact_wd'.con". + +(*#* +As we identify subsets with predicates, inclusion is simply implication. +*) + +(*#* +Finally, we define a restriction operator that takes a function [F] +and a well defined predicate [P] included in the domain of [F] and +returns the restriction $F|_P$# of F to P#. +*) + +inline procedural "cic:/CoRN/reals/Intervals/Frestr.con". + +(* UNEXPORTED +End Intervals +*) + +(* NOTATION +Notation Compact := (compact _ _). +*) + +(* UNEXPORTED +Implicit Arguments Frestr [F P]. +*) + +(* NOTATION +Notation FRestr := (Frestr (compact_wd _ _ _)). +*) + +(* UNEXPORTED +Section More_Intervals +*) + +inline procedural "cic:/CoRN/reals/Intervals/included_refl'.con". + +(*#* We prove some inclusions of compact intervals. *) + +inline procedural "cic:/CoRN/reals/Intervals/compact_map1.con". + +inline procedural "cic:/CoRN/reals/Intervals/compact_map2.con". + +inline procedural "cic:/CoRN/reals/Intervals/compact_map3.con". + +(* UNEXPORTED +End More_Intervals +*) + +(* UNEXPORTED +Hint Resolve included_refl' compact_map1 compact_map2 compact_map3 : included. +*) + +(* UNEXPORTED +Section Totally_Bounded +*) + +(*#* ** Totally Bounded + +Totally bounded sets will play an important role in what is +to come. The definition (equivalent to the classical one) states that +[P] is totally bounded iff +%\[\forall_{\varepsilon>0}\exists_{x_1,\ldots,x_n}\forall_{y\in P} +\exists_{1\leq i\leq n}|y-x_i|<\varepsilon\]%#∀e>0 +∃x1,...,xn∀y∈P∃ +1≤i≤n.|y-xi|<e#. + +Notice the use of lists for quantification. +*) + +inline procedural "cic:/CoRN/reals/Intervals/totally_bounded.con". + +(*#* +This definition is classically, but not constructively, equivalent to +the definition of compact (if completeness is assumed); the next +result, classically equivalent to the Heine-Borel theorem, justifies +that we take the definition of totally bounded to be the relevant one +and that we defined compacts as we did. +*) + +inline procedural "cic:/CoRN/reals/Intervals/compact_is_totally_bounded.con". + +(*#* +Suprema and infima will be needed throughout; we define them here both +for arbitrary subsets of [IR] and for images of functions. +*) + +inline procedural "cic:/CoRN/reals/Intervals/set_glb_IR.con". + +inline procedural "cic:/CoRN/reals/Intervals/set_lub_IR.con". + +inline procedural "cic:/CoRN/reals/Intervals/fun_image.con". + +inline procedural "cic:/CoRN/reals/Intervals/fun_glb_IR.con". + +inline procedural "cic:/CoRN/reals/Intervals/fun_lub_IR.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Intervals/Totally_Bounded/aux_seq_lub.con" "Totally_Bounded__". + +inline procedural "cic:/CoRN/reals/Intervals/Totally_Bounded/aux_seq_lub_prop.con" "Totally_Bounded__". + +(* end hide *) + +(*#* +The following are probably the most important results in this section. +*) + +inline procedural "cic:/CoRN/reals/Intervals/totally_bounded_has_lub.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Intervals/Totally_Bounded/aux_seq_glb.con" "Totally_Bounded__". + +inline procedural "cic:/CoRN/reals/Intervals/Totally_Bounded/aux_seq_glb_prop.con" "Totally_Bounded__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/Intervals/totally_bounded_has_glb.con". + +(* UNEXPORTED +End Totally_Bounded +*) + +(* UNEXPORTED +Section Compact +*) + +(*#* ** Compact sets + +In this section we dwell a bit farther into the definition of compactness +and explore some of its properties. + +The following characterization of inclusion can be very useful: +*) + +inline procedural "cic:/CoRN/reals/Intervals/included_compact.con". + +(*#* +At several points in our future development of a theory we will need +to partition a compact interval in subintervals of length smaller than +some predefined value [eps]. Although this seems a +consequence of every compact interval being totally bounded, it is in +fact a stronger property. In this section we perform that +construction (requiring the endpoints of the interval to be distinct) +and prove some of its good properties. + +%\begin{convention}% Let [a,b : IR], [Hab : (a [<=] b)] and denote by [I] +the compact interval [[a,b]]. Also assume that [a [<] b], and let [e] be +a positive real number. +%\end{convention}% +*) + +alias id "a" = "cic:/CoRN/reals/Intervals/Compact/a.var". + +alias id "b" = "cic:/CoRN/reals/Intervals/Compact/b.var". + +alias id "Hab" = "cic:/CoRN/reals/Intervals/Compact/Hab.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Intervals/Compact/I.con" "Compact__". + +(* end hide *) + +alias id "Hab'" = "cic:/CoRN/reals/Intervals/Compact/Hab'.var". + +alias id "e" = "cic:/CoRN/reals/Intervals/Compact/e.var". + +alias id "He" = "cic:/CoRN/reals/Intervals/Compact/He.var". + +(*#* +We start by finding a natural number [n] such that [(b[-]a) [/] n [<] e]. +*) + +inline procedural "cic:/CoRN/reals/Intervals/compact_nat.con". + +(*#* Obviously such an [n] must be greater than zero.*) + +inline procedural "cic:/CoRN/reals/Intervals/pos_compact_nat.con". + +(*#* +We now define a sequence on [n] points in [[a,b]] by +[x_i [=] Min(a,b) [+]i[*] (b[-]a) [/]n] and +prove that all of its points are really in that interval. +*) + +inline procedural "cic:/CoRN/reals/Intervals/compact_part.con". + +inline procedural "cic:/CoRN/reals/Intervals/compact_part_hyp.con". + +(*#* +This sequence is strictly increasing and each two consecutive points +are apart by less than [e].*) + +inline procedural "cic:/CoRN/reals/Intervals/compact_less.con". + +inline procedural "cic:/CoRN/reals/Intervals/compact_leEq.con". + +(*#* When we proceed to integration, this lemma will also be useful: *) + +inline procedural "cic:/CoRN/reals/Intervals/compact_partition_lemma.con". + +(*#* The next lemma provides an upper bound for the distance between two points in an interval: *) + +inline procedural "cic:/CoRN/reals/Intervals/compact_elements.con". + +(* UNEXPORTED +Opaque Min Max. +*) + +(*#* The following is a variation on the previous lemma: *) + +inline procedural "cic:/CoRN/reals/Intervals/compact_elements'.con". + +(*#* The following lemma is a bit more specific: it shows that we can +also estimate the distance from the center of a compact interval to +any of its points. *) + +inline procedural "cic:/CoRN/reals/Intervals/compact_bnd_AbsIR.con". + +(*#* Finally, two more useful lemmas to prove inclusion of compact +intervals. They will be necessary for the definition and proof of the +elementary properties of the integral. *) + +inline procedural "cic:/CoRN/reals/Intervals/included2_compact.con". + +inline procedural "cic:/CoRN/reals/Intervals/included3_compact.con". + +(* UNEXPORTED +End Compact +*) + +(* UNEXPORTED +Hint Resolve included_compact included2_compact included3_compact : included. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Max_AbsIR.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Max_AbsIR.mma new file mode 100644 index 000000000..c9d3e428c --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Max_AbsIR.mma @@ -0,0 +1,411 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Max_AbsIR.v,v 1.13 2004/04/23 10:01:04 lcf Exp $ *) + +(*#* printing Max %\ensuremath{\max}% *) + +(*#* printing Min %\ensuremath{\min}% *) + +include "reals/CauchySeq.ma". + +(* UNEXPORTED +Section Maximum +*) + +(* UNEXPORTED +Section Max_function +*) + +(*#* ** Maximum, Minimum and Absolute Value + +%\begin{convention}% +Let [x] and [y] be reals +(we will define the maximum of [x] and [y]). +%\end{convention}% +*) + +alias id "x" = "cic:/CoRN/reals/Max_AbsIR/Maximum/Max_function/x.var". + +alias id "y" = "cic:/CoRN/reals/Max_AbsIR/Maximum/Max_function/y.var". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_seq.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_seq_char.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Cauchy_Max_seq.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_CauchySeq.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/MAX.con". + +(*#* +Constructively, the elementary properties of the maximum function are: +- [x [<=] Max (x,y)], +- [x [<=] Max (y,x)], +- [z [<] Max(x,y) -> z [<] x or z [<] y]. + +(This can be more concisely expressed as +[z [<] Max(x,y) Iff z [<] x or z [<] y]). +From these elementary properties we can prove all other properties, including +strong extensionality. +With strong extensionality, we can make the binary operation [Max]. +(So [Max] is [MAX] coupled with some proofs.) +*) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/lft_leEq_MAX.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/rht_leEq_MAX.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/less_MAX_imp.con". + +(* UNEXPORTED +End Max_function +*) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/MAX_strext.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/MAX_wd.con". + +(* UNEXPORTED +Section properties_of_Max +*) + +(*#* *** Maximum *) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_wd_unfolded.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/lft_leEq_Max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/rht_leEq_Max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/less_Max_imp.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_leEq.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_less.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/equiv_imp_eq_max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_id.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_comm.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/leEq_imp_Max_is_rht.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_is_rht_imp_leEq.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Max_minus_eps_leEq.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/max_one_ap_zero.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/pos_max_one.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/x_div_Max_leEq_x.con". + +(* UNEXPORTED +End properties_of_Max +*) + +(* UNEXPORTED +End Maximum +*) + +(* UNEXPORTED +Hint Resolve Max_id: algebra. +*) + +(* UNEXPORTED +Section Minimum +*) + +(*#* *** Mininum + +The minimum is defined by the formula +[Min(x,y) [=] [--]Max( [--]x,[--]y)]. +*) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/MIN.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/MIN_wd.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/MIN_strext.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_wd_unfolded.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_strext_unfolded.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_leEq_lft.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_leEq_rht.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_less_imp.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/leEq_Min.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/less_Min.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/equiv_imp_eq_min.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_id.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_comm.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/leEq_imp_Min_is_lft.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_is_lft_imp_leEq.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/leEq_Min_plus_eps.con". + +alias id "a" = "cic:/CoRN/reals/Max_AbsIR/Minimum/a.var". + +alias id "b" = "cic:/CoRN/reals/Max_AbsIR/Minimum/b.var". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_leEq_Max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_leEq_Max'.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min3_leEq_Max3.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_less_Max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/ap_imp_Min_less_Max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Min_less_Max_imp_ap.con". + +(* UNEXPORTED +End Minimum +*) + +(*#**********************************) + +(* UNEXPORTED +Section Absolute +*) + +(*#**********************************) + +(*#* *** Absolute value *) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/ABSIR.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/ABSIR_strext.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/ABSIR_wd.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_wd.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_wdl.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_wdr.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIRz_isz.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_nonneg.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_pos.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_cancel_ap_zero.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_resp_ap_zero.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/leEq_AbsIR.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/inv_leEq_AbsIR.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsSmall_e.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsSmall_imp_AbsIR.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_eq_AbsSmall.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_imp_AbsSmall.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsSmall_transitive.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/zero_less_AbsIR_plus_one.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_inv.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_minus.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_eq_x.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_eq_inv_x.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/less_AbsIR.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/leEq_distr_AbsIR.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_approach_zero.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_eq_zero.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Abs_Max.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_str_bnd.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/AbsIR_bnd.con". + +(* UNEXPORTED +End Absolute +*) + +(* UNEXPORTED +Hint Resolve AbsIRz_isz: algebra. +*) + +(* UNEXPORTED +Section Part_Function_Max +*) + +(*#* *** Functional Operators + +The existence of these operators allows us to lift them to functions. We will define the maximum, minimum and absolute value of two partial functions. + +%\begin{convention}% +Let [F,G:PartIR] and denote by [P] and [Q] their respective domains. +%\end{convention}% +*) + +alias id "F" = "cic:/CoRN/reals/Max_AbsIR/Part_Function_Max/F.var". + +alias id "G" = "cic:/CoRN/reals/Max_AbsIR/Part_Function_Max/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Part_Function_Max/P.con" "Part_Function_Max__". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Part_Function_Max/Q.con" "Part_Function_Max__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/part_function_Max_strext.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/FMax.con". + +(* UNEXPORTED +End Part_Function_Max +*) + +(* UNEXPORTED +Section Part_Function_Abs +*) + +alias id "F" = "cic:/CoRN/reals/Max_AbsIR/Part_Function_Abs/F.var". + +alias id "G" = "cic:/CoRN/reals/Max_AbsIR/Part_Function_Abs/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Part_Function_Abs/P.con" "Part_Function_Abs__". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Part_Function_Abs/Q.con" "Part_Function_Abs__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/FMin.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/FAbs.con". + +(* UNEXPORTED +Opaque Max. +*) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/FMin_char.con". + +(* UNEXPORTED +Transparent Max. +*) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/FAbs_char.con". + +(* UNEXPORTED +End Part_Function_Abs +*) + +(* UNEXPORTED +Hint Resolve FAbs_char: algebra. +*) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/FAbs_char'.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/FAbs_nonneg.con". + +(* UNEXPORTED +Hint Resolve FAbs_char': algebra. +*) + +(* UNEXPORTED +Section Inclusion +*) + +alias id "F" = "cic:/CoRN/reals/Max_AbsIR/Inclusion/F.var". + +alias id "G" = "cic:/CoRN/reals/Max_AbsIR/Inclusion/G.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Inclusion/P.con" "Inclusion__". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/Inclusion/Q.con" "Inclusion__". + +(* end hide *) + +(*#* +%\begin{convention}% Let [R:IR->CProp]. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/reals/Max_AbsIR/Inclusion/R.var". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FMax.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FMax'.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FMax''.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FMin.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FMin'.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FMin''.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FAbs.con". + +inline procedural "cic:/CoRN/reals/Max_AbsIR/included_FAbs'.con". + +(* UNEXPORTED +End Inclusion +*) + +(* UNEXPORTED +Hint Resolve included_FMax included_FMin included_FAbs : included. +*) + +(* UNEXPORTED +Hint Immediate included_FMax' included_FMin' included_FAbs' + included_FMax'' included_FMin'' : included. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/NRootIR.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/NRootIR.mma new file mode 100644 index 000000000..2d9f4e582 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/NRootIR.mma @@ -0,0 +1,267 @@ +(**************************************************************************) +(* ___ *) +(* ||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: NRootIR.v,v 1.5 2004/04/23 10:01:05 lcf Exp $ *) + +(*#* printing NRoot %\ensuremath{\sqrt[n]{\cdot}}% *) + +(*#* printing sqrt %\ensuremath{\sqrt{\cdot}}% *) + +include "reals/OddPolyRootIR.ma". + +(*#* * Roots of Real Numbers *) + +(* UNEXPORTED +Section NRoot +*) + +(*#* ** Existence of roots + +%\begin{convention}% Let [n] be a natural number and [c] a nonnegative real. +[p] is the auxiliary polynomial [_X_[^]n[-] (_C_ c)]. +%\end{convention}% +*) + +alias id "n" = "cic:/CoRN/reals/NRootIR/NRoot/n.var". + +alias id "n_pos" = "cic:/CoRN/reals/NRootIR/NRoot/n_pos.var". + +alias id "c" = "cic:/CoRN/reals/NRootIR/NRoot/c.var". + +alias id "c_nonneg" = "cic:/CoRN/reals/NRootIR/NRoot/c_nonneg.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot/p.con" "NRoot__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/NRootIR/CnrootIR.con". + +(* UNEXPORTED +End NRoot +*) + +(*#* We define the root of order [n] for any nonnegative real number and +prove its main properties: + - $\left(\sqrt[n]x\right)^n=x$#(sqrt(n) x)^n =x#; + - $0\leq\sqrt[n]x$#0≤sqrt(n)x#; + - if [Zero [<] x] then $0<\sqrt[n]x$#0<sqrt(n)x#; + - $\sqrt[n]{x^n}=x$#sqrt(n) x^n =x#; + - the nth root is monotonous; + - in particular, if [x [<] One] then $\sqrt[n]x<1$#sqrt(n) x<1#. + +[(nroot ??)] will be written as [NRoot]. +*) + +(* UNEXPORTED +Section Nth_Root +*) + +inline procedural "cic:/CoRN/reals/NRootIR/nroot.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_power.con". + +(* UNEXPORTED +Hint Resolve NRoot_power: algebra. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_nonneg.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_pos.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_power'.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_pres_less.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_less_one.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_cancel.con". + +(*#* %\begin{convention}% Let [x,y] be nonnegative real numbers. +%\end{convention}% *) + +alias id "x" = "cic:/CoRN/reals/NRootIR/Nth_Root/x.var". + +alias id "y" = "cic:/CoRN/reals/NRootIR/Nth_Root/y.var". + +alias id "Hx" = "cic:/CoRN/reals/NRootIR/Nth_Root/Hx.var". + +alias id "Hy" = "cic:/CoRN/reals/NRootIR/Nth_Root/Hy.var". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_wd.con". + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_unique.con". + +(* UNEXPORTED +End Nth_Root +*) + +(* UNEXPORTED +Implicit Arguments NRoot [x n]. +*) + +(* UNEXPORTED +Hint Resolve NRoot_power NRoot_power': algebra. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/NRoot_resp_leEq.con". + +(*#**********************************) + +(* UNEXPORTED +Section Square_root +*) + +(*#**********************************) + +(*#* ** Square root *) + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_sqr.con". + +(* UNEXPORTED +Hint Resolve sqrt_sqr: algebra. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_nonneg.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_wd.con". + +(* UNEXPORTED +Hint Resolve sqrt_wd: algebra_c. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_to_nonneg.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_to_nonpos.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_mult.con". + +(* UNEXPORTED +Hint Resolve sqrt_mult: algebra. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_mult_wd.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_less.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_less'.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_resp_leEq.con". + +inline procedural "cic:/CoRN/reals/NRootIR/sqrt_resp_less.con". + +(* UNEXPORTED +End Square_root +*) + +(* UNEXPORTED +Hint Resolve sqrt_wd: algebra_c. +*) + +(* UNEXPORTED +Hint Resolve sqrt_sqr sqrt_mult: algebra. +*) + +(* UNEXPORTED +Section Absolute_Props +*) + +(*#* ** More on absolute value + +With the help of square roots, we can prove some more properties of absolute +values in [IR]. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_sqrt_sqr.con". + +(* UNEXPORTED +Hint Resolve AbsIR_sqrt_sqr: algebra. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_resp_mult.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_mult_pos.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_mult_pos'.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_nexp.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_nexp_op.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_less_square.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_leEq_square.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_division.con". + +(*#* Some special cases. *) + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_recip.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_div_two.con". + +(*#* Cauchy-Schwartz for IR and variants on that subject. *) + +inline procedural "cic:/CoRN/reals/NRootIR/triangle_IR.con". + +inline procedural "cic:/CoRN/reals/NRootIR/triangle_SumIR.con". + +inline procedural "cic:/CoRN/reals/NRootIR/triangle_IR_minus.con". + +inline procedural "cic:/CoRN/reals/NRootIR/weird_triangleIR.con". + +inline procedural "cic:/CoRN/reals/NRootIR/triangle_IR_minus'.con". + +inline procedural "cic:/CoRN/reals/NRootIR/triangle_SumxIR.con". + +inline procedural "cic:/CoRN/reals/NRootIR/triangle_Sum2IR.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_str_bnd_AbsIR.con". + +inline procedural "cic:/CoRN/reals/NRootIR/AbsIR_bnd_AbsIR.con". + +(* UNEXPORTED +End Absolute_Props +*) + +(* UNEXPORTED +Section Consequences +*) + +(*#* **Cauchy sequences + +With these results, we can also prove that the sequence of reciprocals of a +Cauchy sequence that is never zero and whose Limit is not zero is also a +Cauchy sequence. +*) + +inline procedural "cic:/CoRN/reals/NRootIR/Cauchy_Lim_recip.con". + +inline procedural "cic:/CoRN/reals/NRootIR/Cauchy_recip.con". + +inline procedural "cic:/CoRN/reals/NRootIR/Lim_recip.con". + +(* UNEXPORTED +End Consequences +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/OddPolyRootIR.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/OddPolyRootIR.mma new file mode 100644 index 000000000..2f92f666c --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/OddPolyRootIR.mma @@ -0,0 +1,164 @@ +(**************************************************************************) +(* ___ *) +(* ||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: OddPolyRootIR.v,v 1.5 2004/04/23 10:01:05 lcf Exp $ *) + +include "reals/IVT.ma". + +(*#* * Roots of polynomials of odd degree *) + +(* UNEXPORTED +Section CPoly_Big +*) + +(*#* ** Monic polynomials are positive near infinity +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/reals/OddPolyRootIR/CPoly_Big/R.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/CPoly_Big/RX.con" "CPoly_Big__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/Cbigger.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/Ccpoly_big.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/cpoly_pos.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/Ccpoly_pos'.con". + +(* UNEXPORTED +End CPoly_Big +*) + +(* UNEXPORTED +Section Flip_Poly +*) + +(*#* **Flipping a polynomial +%\begin{convention}% Let [R] be a ring. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/reals/OddPolyRootIR/Flip_Poly/R.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/Flip_Poly/RX.con" "Flip_Poly__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/flip.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/flip_poly.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/flip_coefficient.con". + +(* UNEXPORTED +Hint Resolve flip_coefficient: algebra. +*) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/flip_odd.con". + +(* UNEXPORTED +End Flip_Poly +*) + +(* UNEXPORTED +Hint Resolve flip_poly: algebra. +*) + +(* UNEXPORTED +Section OddPoly_Signs +*) + +(*#* ** Sign of a polynomial of odd degree +%\begin{convention}% Let [R] be an ordered field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/reals/OddPolyRootIR/OddPoly_Signs/R.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/OddPoly_Signs/RX.con" "OddPoly_Signs__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/oddpoly_pos.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/oddpoly_pos'.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/oddpoly_neg.con". + +(* UNEXPORTED +End OddPoly_Signs +*) + +(* UNEXPORTED +Section Poly_Norm +*) + +(*#* ** The norm of a polynomial +%\begin{convention}% Let [R] be a field, and [RX] the polynomials over +this field. +%\end{convention}% +*) + +alias id "R" = "cic:/CoRN/reals/OddPolyRootIR/Poly_Norm/R.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/Poly_Norm/RX.con" "Poly_Norm__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/poly_norm_aux.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/poly_norm.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/poly_norm_monic.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/poly_norm_apply.con". + +(* UNEXPORTED +End Poly_Norm +*) + +(* UNEXPORTED +Section OddPoly_Root +*) + +(*#* ** Roots of polynomials of odd degree +Polynomials of odd degree over the reals always have a root. *) + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/oddpoly_root'.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/oddpoly_root.con". + +inline procedural "cic:/CoRN/reals/OddPolyRootIR/realpolyn_oddhaszero.con". + +(* UNEXPORTED +End OddPoly_Root +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Q_dense.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Q_dense.mma new file mode 100644 index 000000000..e3f87c84d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Q_dense.mma @@ -0,0 +1,169 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +include "reals/Q_in_CReals.ma". + +(*#***** Opaque_algebra.v will be loaded in line 151 ******) + +inline procedural "cic:/CoRN/reals/Q_dense/or_not_and.con". + +(* UNEXPORTED +Section Interval_definition +*) + +alias id "OF" = "cic:/CoRN/reals/Q_dense/Interval_definition/OF.var". + +inline procedural "cic:/CoRN/reals/Q_dense/Interval.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/reals/Q_dense/pair_crr.con +*) + +inline procedural "cic:/CoRN/reals/Q_dense/Length.con". + +(* UNEXPORTED +End Interval_definition +*) + +inline procedural "cic:/CoRN/reals/Q_dense/Rat_Interval.con". + +(* we have this in Q_COrdField... *) + +inline procedural "cic:/CoRN/reals/Q_dense/Qlt_eq_gt_dec'.con". + +(* +Lemma ex_informative_on_Q:(P:Q_as_COrdField->Prop)(Ex [q:Q_as_COrdField](P q)) + ->{q:Q_as_COrdField | (P q)}. +Proof. + Intro. + Intro. + Apply ex_informative. + Assumption. +Qed. +*) + +(* UNEXPORTED +Section COrdField_extra +*) + +alias id "OF" = "cic:/CoRN/reals/Q_dense/COrdField_extra/OF.var". + +inline procedural "cic:/CoRN/reals/Q_dense/AbsSmall_pos_reflexive.con". + +inline procedural "cic:/CoRN/reals/Q_dense/AbsSmall_neg_reflexive.con". + +inline procedural "cic:/CoRN/reals/Q_dense/AbsSmall_subinterval.con". + +(* UNEXPORTED +End COrdField_extra +*) + +(* UNEXPORTED +Section Rational_sequence +*) + +include "tactics/Opaque_algebra.ma". + +(*#*** WARNING: A file is being loaded *****) + +alias id "R1" = "cic:/CoRN/reals/Q_dense/Rational_sequence/R1.var". + +inline procedural "cic:/CoRN/reals/Q_dense/start_l.con". + +inline procedural "cic:/CoRN/reals/Q_dense/start_of_sequence2.con". + +inline procedural "cic:/CoRN/reals/Q_dense/start_r.con". + +inline procedural "cic:/CoRN/reals/Q_dense/start_of_sequence_property.con". + +inline procedural "cic:/CoRN/reals/Q_dense/l_less_r.con". + +inline procedural "cic:/CoRN/reals/Q_dense/shrink23.con". + +inline procedural "cic:/CoRN/reals/Q_dense/shrink13.con". + +inline procedural "cic:/CoRN/reals/Q_dense/shrink24.con". + +inline procedural "cic:/CoRN/reals/Q_dense/cotrans_analyze.con". + +inline procedural "cic:/CoRN/reals/Q_dense/cotrans_analyze_strong.con". + +inline procedural "cic:/CoRN/reals/Q_dense/trichotomy.con". + +inline procedural "cic:/CoRN/reals/Q_dense/trichotomy_strong1.con". + +(* NOTATION +Notation "( A , B )" := (pairT A B). +*) + +inline procedural "cic:/CoRN/reals/Q_dense/if_cotrans.con". + +inline procedural "cic:/CoRN/reals/Q_dense/if_cotrans_strong.con". + +inline procedural "cic:/CoRN/reals/Q_dense/Intrvl.con". + +inline procedural "cic:/CoRN/reals/Q_dense/G.con". + +(* UNEXPORTED +Opaque Q_as_CField. +*) + +inline procedural "cic:/CoRN/reals/Q_dense/delta_Intrvl.con". + +inline procedural "cic:/CoRN/reals/Q_dense/Length_Intrvl.con". + +inline procedural "cic:/CoRN/reals/Q_dense/Intrvl_inside_l_n.con". + +inline procedural "cic:/CoRN/reals/Q_dense/Intrvl_inside_r_n.con". + +inline procedural "cic:/CoRN/reals/Q_dense/G_m_n_lower.con". + +inline procedural "cic:/CoRN/reals/Q_dense/G_m_n_upper.con". + +(* UNEXPORTED +Opaque Q_as_COrdField. +*) + +inline procedural "cic:/CoRN/reals/Q_dense/a_simple_inequality.con". + +inline procedural "cic:/CoRN/reals/Q_dense/G_conversion_rate2.con". + +inline procedural "cic:/CoRN/reals/Q_dense/CS_seq_G.con". + +inline procedural "cic:/CoRN/reals/Q_dense/G_as_CauchySeq.con". + +inline procedural "cic:/CoRN/reals/Q_dense/CS_seq_inj_Q_G.con". + +inline procedural "cic:/CoRN/reals/Q_dense/inj_Q_G_as_CauchySeq.con". + +inline procedural "cic:/CoRN/reals/Q_dense/x_in_Intrvl_l.con". + +inline procedural "cic:/CoRN/reals/Q_dense/x_in_Intrvl_r.con". + +inline procedural "cic:/CoRN/reals/Q_dense/G_conversion_rate_resp_x.con". + +inline procedural "cic:/CoRN/reals/Q_dense/x_is_SeqLimit_G.con". + +(* UNEXPORTED +End Rational_sequence +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Q_in_CReals.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Q_in_CReals.mma new file mode 100644 index 000000000..10196d4a5 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Q_in_CReals.mma @@ -0,0 +1,170 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Q_in_CReals.v,v 1.10 2004/04/23 10:01:05 lcf Exp $ *) + +(*#* * On density of the image of [Q] in an arbitrary real number structure +In this file we introduce the image of the concrete rational numbers +(as defined earlier) in an arbitrary structure of type +[CReals]. At the end of this file we assign to any real number two +rational numbers for which the real number lies betwen image of them; +in other words we will prove that the image of rational numbers in +dense in any real number structure. *) + +include "model/reals/Cauchy_IR.ma". + +include "model/monoids/Nmonoid.ma". + +include "model/rings/Zring.ma". + +(* UNEXPORTED +Section Rational_sequence_prelogue +*) + +(*#* +%\begin{convention}% Let [R1] be a real number structure. +%\end{convention}% +*) + +alias id "R1" = "cic:/CoRN/reals/Q_in_CReals/Rational_sequence_prelogue/R1.var". + +(* We clone these proofs from CReals1.v just because there IR is an axiom *) + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/CReals_is_CReals.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/Lim_Cauchy.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/Archimedes.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/Archimedes'.con". + +(*#**************************************) + +(* COERCION +cic:/Coq/NArith/BinPos/nat_of_P.con +*) + +(* end hide *) + +(*#* +** Injection from [Q] to an arbitrary real number structure + First we need to define the injection from [Q] to [R1]. Note that in [Cauchy_CReals] we defined [inject_Q] from an arbitray field [F] to [(R_COrdField F)] which was the set of Cauchy sequences of that field. But since [R1] is an %\emph{arbitrary}%#arbitrary# real number structure we can not use [inject_Q]. + + To define the injection we need one elemntary lemma about the denominator: +*) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/den_is_nonzero.con". + +(*#* And we define the injection in the natural way, using [zring] and [nring]. We call this [inj_Q], in contrast with [inject_Q] defined in [Cauchy_CReals]. *) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q.con". + +(*#* Next we need some properties of [nring], on the setoid of natural numbers: *) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/nring_strext.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/nring_wd.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/nring_eq.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/nring_leEq.con". + +(* begin hide *) + +(* UNEXPORTED +Unset Printing Coercions. +*) + +(* end hide *) + +(*#* Similarly we prove some properties of [zring] on the ring of integers: *) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/zring_strext.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/zring_wd.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/zring_less.con". + +(*#* Using the above lemmata we prove the basic properties of [inj_Q], i.e.%\% it is a setoid function and preserves the ring operations and oreder operation. *) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_strext.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_wd.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_plus.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_mult.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_less.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/less_inj_Q.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/leEq_inj_Q.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_leEq.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_min.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_minus.con". + +(*#* Moreover, and as expected, the [AbsSmall] predicate is also +preserved under the [inj_Q] *) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_AbsSmall.con". + +inline procedural "cic:/CoRN/reals/Q_in_CReals/AbsSmall_inj_Q.con". + +(*#* ** Injection preserves Cauchy property +We apply the above lemmata to obtain following theorem, which says +that a Cauchy sequence of elemnts of [Q] will be Cauchy in [R1]. +*) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_Cauchy.con". + +(*#* Furthermore we prove that applying [nring] (which is adding the +ring unit [n] times) is the same whether we do it in [Q] or in [R1]: +*) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/inj_Q_nring.con". + +(*#* ** Injection of [Q] is dense +Finally we are able to prove the density of image of [Q] in [R1]. We +state this fact in two different ways. Both of them have their +specific use. + +The first theorem states the fact that any real number can be bound by +the image of two rational numbers. This is called [start_of_sequence] +because it can be used as an starting point for the typical "interval +trisection" argument, which is ubiquitous in constructive analysis. +*) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/start_of_sequence.con". + +(*#* The second version of the density of [Q] in [R1] states that given +any positive real number, there is a rational number between it and +zero. This lemma can be used to prove the more general fact that there +is a rational number between any two real numbers. *) + +inline procedural "cic:/CoRN/reals/Q_in_CReals/Q_dense_in_CReals.con". + +(* UNEXPORTED +End Rational_sequence_prelogue +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/R_morphism.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/R_morphism.mma new file mode 100644 index 000000000..ac45467d8 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/R_morphism.mma @@ -0,0 +1,298 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +(* In this file a notion of morphism between two arbitrary real number + structures, is introduced together with te proofs that this notion of + morphism preserves the basic algebraic structure. *) + +include "reals/CReals.ma". + +(* This comes from CReals1.v *) + +inline procedural "cic:/CoRN/reals/R_morphism/Cauchy_Lim_prop2.con". + +(* UNEXPORTED +Section morphism +*) + +alias id "R1" = "cic:/CoRN/reals/R_morphism/morphism/R1.var". + +alias id "R2" = "cic:/CoRN/reals/R_morphism/morphism/R2.var". + +(* UNEXPORTED +Section morphism_details +*) + +alias id "phi" = "cic:/CoRN/reals/R_morphism/morphism/morphism_details/phi.var". + +alias id "p1" = "cic:/CoRN/reals/R_morphism/morphism/morphism_details/p1.var". + +alias id "p2" = "cic:/CoRN/reals/R_morphism/morphism/morphism_details/p2.var". + +alias id "f1" = "cic:/CoRN/reals/R_morphism/morphism/morphism_details/f1.var". + +alias id "f2" = "cic:/CoRN/reals/R_morphism/morphism/morphism_details/f2.var". + +alias id "g1" = "cic:/CoRN/reals/R_morphism/morphism/morphism_details/g1.var". + +alias id "g2" = "cic:/CoRN/reals/R_morphism/morphism/morphism_details/g2.var". + +inline procedural "cic:/CoRN/reals/R_morphism/fun_pres_relation.con". + +inline procedural "cic:/CoRN/reals/R_morphism/fun_pres_un_fun.con". + +inline procedural "cic:/CoRN/reals/R_morphism/fun_pres_bin_fun.con". + +(* +Definition fun_pres_partial_fun:=(x:R1;H1:x[#]Zero;H2:(phi x)[#]Zero) +(phi (nzinj R1 (i1 (nzpro R1 x H1))))[=](nzinj R2 (i2 (nzpro R2 (phi x) H2))). +*) + +inline procedural "cic:/CoRN/reals/R_morphism/fun_pres_Lim.con". + +(* UNEXPORTED +End morphism_details +*) + +inline procedural "cic:/CoRN/reals/R_morphism/Homomorphism.ind". + +(* COERCION +cic:/matita/CoRN-Procedural/reals/R_morphism/map.con +*) + +(* This might be useful later... +Definition Homo_as_CSetoid_fun:= + [f:Homomorphism] + (Build_CSetoid_fun R1 R2 f + (fun_strext_imp_wd R1 R2 f (!map_strext f)) + (!map_strext f) + ). +*****************) + +inline procedural "cic:/CoRN/reals/R_morphism/map_strext_unfolded.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_wd_unfolded.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_less_unfolded.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_plus_unfolded.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_mult_unfolded.con". + +(* Now we start to derive some useful properties of a Homomorphism *) + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_zero.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_zero_unfolded.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_minus.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_minus_unfolded.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_apartness.con". + +(* Merely a useful special case *) + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_ap_zero.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_one.con". + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_one_unfolded.con". + +(* I will not use the following lemma *) + +inline procedural "cic:/CoRN/reals/R_morphism/map_pres_inv_unfolded.con". + +(* UNEXPORTED +End morphism +*) + +(* UNEXPORTED +Section composition +*) + +alias id "R1" = "cic:/CoRN/reals/R_morphism/composition/R1.var". + +alias id "R2" = "cic:/CoRN/reals/R_morphism/composition/R2.var". + +alias id "R3" = "cic:/CoRN/reals/R_morphism/composition/R3.var". + +alias id "f" = "cic:/CoRN/reals/R_morphism/composition/f.var". + +alias id "g" = "cic:/CoRN/reals/R_morphism/composition/g.var". + +inline procedural "cic:/CoRN/reals/R_morphism/compose.con". + +inline procedural "cic:/CoRN/reals/R_morphism/compose_strext.con". + +inline procedural "cic:/CoRN/reals/R_morphism/compose_pres_less.con". + +inline procedural "cic:/CoRN/reals/R_morphism/compose_pres_plus.con". + +inline procedural "cic:/CoRN/reals/R_morphism/compose_pres_mult.con". + +inline procedural "cic:/CoRN/reals/R_morphism/compose_pres_Lim.con". + +inline procedural "cic:/CoRN/reals/R_morphism/Compose.con". + +(* UNEXPORTED +End composition +*) + +(* UNEXPORTED +Section isomorphism +*) + +alias id "R1" = "cic:/CoRN/reals/R_morphism/isomorphism/R1.var". + +alias id "R2" = "cic:/CoRN/reals/R_morphism/isomorphism/R2.var". + +(* UNEXPORTED +Section identity_map +*) + +alias id "R3" = "cic:/CoRN/reals/R_morphism/isomorphism/identity_map/R3.var". + +alias id "f" = "cic:/CoRN/reals/R_morphism/isomorphism/identity_map/f.var". + +inline procedural "cic:/CoRN/reals/R_morphism/map_is_id.con". + +(* UNEXPORTED +End identity_map +*) + +inline procedural "cic:/CoRN/reals/R_morphism/Isomorphism.ind". + +(* UNEXPORTED +End isomorphism +*) + +(* UNEXPORTED +Section surjective_map +*) + +alias id "R1" = "cic:/CoRN/reals/R_morphism/surjective_map/R1.var". + +alias id "R2" = "cic:/CoRN/reals/R_morphism/surjective_map/R2.var". + +alias id "f" = "cic:/CoRN/reals/R_morphism/surjective_map/f.var". + +inline procedural "cic:/CoRN/reals/R_morphism/map_is_surjective.con". + +(* UNEXPORTED +End surjective_map +*) + +(* UNEXPORTED +Section simplification +*) + +alias id "R1" = "cic:/CoRN/reals/R_morphism/simplification/R1.var". + +alias id "R2" = "cic:/CoRN/reals/R_morphism/simplification/R2.var". + +alias id "f" = "cic:/CoRN/reals/R_morphism/simplification/f.var". + +alias id "H1" = "cic:/CoRN/reals/R_morphism/simplification/H1.var". + +inline procedural "cic:/CoRN/reals/R_morphism/f_well_def.con". + +(* UNEXPORTED +Section with_less +*) + +alias id "H2" = "cic:/CoRN/reals/R_morphism/simplification/with_less/H2.var". + +inline procedural "cic:/CoRN/reals/R_morphism/less_pres_f.con". + +inline procedural "cic:/CoRN/reals/R_morphism/leEq_pres_f.con". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_leEq.con". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_apartness.con". + +(* UNEXPORTED +End with_less +*) + +(* UNEXPORTED +Section with_plus +*) + +alias id "H3" = "cic:/CoRN/reals/R_morphism/simplification/with_plus/H3.var". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_Zero.con". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_minus.con". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_min.con". + +(* UNEXPORTED +End with_plus +*) + +(* UNEXPORTED +Section with_plus_less +*) + +alias id "H2" = "cic:/CoRN/reals/R_morphism/simplification/with_plus_less/H2.var". + +alias id "H3" = "cic:/CoRN/reals/R_morphism/simplification/with_plus_less/H3.var". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_ap_zero.con". + +(* UNEXPORTED +Section surjectivity_helps +*) + +alias id "f_surj" = "cic:/CoRN/reals/R_morphism/simplification/with_plus_less/surjectivity_helps/f_surj.var". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_Lim.con". + +(* UNEXPORTED +End surjectivity_helps +*) + +(* UNEXPORTED +Section with_mult_plus_less +*) + +alias id "H4" = "cic:/CoRN/reals/R_morphism/simplification/with_plus_less/with_mult_plus_less/H4.var". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_one.con". + +inline procedural "cic:/CoRN/reals/R_morphism/f_pres_inv.con". + +inline procedural "cic:/CoRN/reals/R_morphism/simplified_Homomorphism.con". + +(* UNEXPORTED +End with_mult_plus_less +*) + +(* UNEXPORTED +End with_plus_less +*) + +(* UNEXPORTED +End simplification +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/RealFuncts.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/RealFuncts.mma new file mode 100644 index 000000000..8ba6e4bb6 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/RealFuncts.mma @@ -0,0 +1,262 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RealFuncts.v,v 1.4 2004/04/07 15:08:10 lcf Exp $ *) + +include "reals/CReals1.ma". + +(*#* * Continuity of Functions on Reals +*) + +(* begin hide *) + +(* UNEXPORTED +Set Implicit Arguments. +*) + +(* UNEXPORTED +Unset Strict Implicit. +*) + +(* end hide *) + +(* UNEXPORTED +Section Continuity +*) + +alias id "f" = "cic:/CoRN/reals/RealFuncts/Continuity/f.var". + +alias id "f2" = "cic:/CoRN/reals/RealFuncts/Continuity/f2.var". + +(*#* +Let [f] be a unary setoid operation on [IR] and +let [f2] be a binary setoid operation on [IR]. + +We use the following notations for intervals. [Intclr a b] for the +closed interval [[a,b]], [Intolr a b] for the +open interval [(a,b)], [Intcl a] for the +left-closed interval $[a,\infty)$#[a,∞)#, [Intol a] for the +left-open interval $(a,\infty)$#(a,∞)#, [Intcr b] for the +right-closed interval $(-\infty,b]$#(-∞,b]#. + +Intervals like $[a,b]$#[a,b]# are defined for arbitrary reals [a,b] (being +$\emptyset$#∅# for [a [>] b]). +*) + +inline procedural "cic:/CoRN/reals/RealFuncts/Intclr.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/Intolr.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/Intol.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/Intcl.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/Intcr.con". + +(*#* The limit of [f(x)] as [x] goes to [p = l], for both unary and binary +functions: + +The limit of [f] in [p] is [l] if +[[ +forall e [>] Zero, exists d [>] Zero, forall (x : IR) +( [--]d [<] p[-]x [<] d) -> ( [--]e [<] [--]f(x) [<] e) +]] +*) + +inline procedural "cic:/CoRN/reals/RealFuncts/funLim.con". + +(*#* The definition of limit of [f] in [p] using Cauchy sequences. *) + +inline procedural "cic:/CoRN/reals/RealFuncts/funLim_Cauchy.con". + +(*#* The first definition implies the second one. *) + +(* + Ax_iom funLim_prop1 :(p,l:IR)(funLim p l)->(funLim_Cauchy p l). +Intros. Unfold funLim_Cauchy. Unfold funLim in H. Intros. +Elim (H e H1). Intros. +Elim s. Intros s_seq s_proof. +Decompose [and] H2. +Cut (Zero [<] x[/]TwoNZ). +Intro Hx2. +Elim (s_proof (x[/]TwoNZ) Hx2). +Intros N HN. +Exists N. +Intros. +Apply AbsSmall_minus. +Apply H5. +Generalize (HN m H3). +Intro HmN. +*) + +(*#* The limit of [f] in [(p,p')] is [l] if +[[ +forall e [>] Zero, exists d [>] Zero, forall (x : IR) +( [--]d [<] p[-]x [<] d) -> ( [--]d' [<] p'[-]y [<] d') -> ( [--]e [<] l[-]f(x,y) [<] e +]] +*) + +inline procedural "cic:/CoRN/reals/RealFuncts/funLim2.con". + +(*#* The function [f] is continuous at [p] if the limit of [f(x)] as +[x] goes to [p] is [f(p)]. This is the [eps [/] delta] definition. +We also give the definition with limits of Cauchy sequences. +*) + +inline procedural "cic:/CoRN/reals/RealFuncts/continAt.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/continAtCauchy.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/continAt2.con". + +(* +Ax_iom continAt_prop1 :(p:IR)(continAt p)->(continAtCauchy p). +*) + +inline procedural "cic:/CoRN/reals/RealFuncts/contin.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/continCauchy.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/contin2.con". + +(*#* +Continuous on a closed, resp.%\% open, resp.%\% left open, resp.%\% left closed +interval *) + +inline procedural "cic:/CoRN/reals/RealFuncts/continOnc.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/continOno.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/continOnol.con". + +inline procedural "cic:/CoRN/reals/RealFuncts/continOncl.con". + +(* +Section Sequence_and_function_limits. + +_** +If $\lim_{x->p} (f x) = l$, then for every sequence $p_n$ whose +limit is $p$, $\lim_{n->\infty} f (p_n) =l$. + *_ + +Lemma funLim_SeqLimit: + (p,l:IR)(fl:(funLim p l)) + (pn:nat->IR)(sl:(SeqLimit pn p)) (SeqLimit ( [n:nat] (f (pn n))) l). +Proof. +Intros; Unfold seqLimit. +Intros eps epos. +Elim (fl ? epos); Intros del dh; Elim dh; Intros H0 H1. +Elim (sl ? H0); Intros N Nh. +Exists N. Intros m leNm. +Apply AbsSmall_minus. +Apply H1. +Apply AbsSmall_minus. +Apply (Nh ? leNm). +Qed. + +_**** Is the converse constructively provable? ** +Lemma SeqLimit_funLim: + (p,l:IR)((pn:nat->IR)(sl:(SeqLimit pn p)) (SeqLimit ( [n:nat] (f (pn n))) l))-> + (funLim p l). +****_ + +_** +Now the same Lemma in terms of Cauchy sequences: if $\lim_{x->p} (f x) = l$, +then for every Cauchy sequence $s_n$ whose +limit is $p$, $\lim_{n->\infty} f (s_n) =l$. + *_ + +Ax_iom funLim_isCauchy: + (p,l:IR)(funLim p l)->(s:CauchySeqR)((Lim s) [=] p)-> + (e:IR)(Zero [<] e)->(Ex [N:nat] (m:nat)(le N m) + ->(AbsSmall e ((s m) [-] (s N)))). + +End Sequence_and_function_limits. + +Section Monotonic_functions. + +Definition str_monot := (x,y:IR)(x [<] y)->((f x) [<] (f y)). + +Definition str_monotOnc := [a,b:IR] + (x,y:IR)(Intclr a b x)->(Intclr a b y) + ->(x [<] y)->((f x) [<] (f y)). + +Definition str_monotOncl := [a:IR] + (x,y:IR)(Intcl a x)->(Intcl a y) + ->(x [<] y)->((f x) [<] (f y)). + +Definition str_monotOnol := [a:IR] + (x,y:IR)(Intol a x)->(Intol a y) + ->(x [<] y)->((f x) [<] (f y)). + +_** Following probably not needed for the FTA proof; +it stated that strong monotonicity on a closed interval implies that the +intermediate value theorem holds on this interval. For FTA we need IVT on +$[0,\infty>$. +*_ + +Ax_iom strmonc_imp_ivt :(a,b:IR)(str_monotOnc a b) + ->(x,y:IR)(x [<] y)->(Intclr a b x)->(Intclr a b y) + ->((f x) [<] Zero)->(Zero [<] (f y)) + ->(EX z:IR | (Intclr x y z)/\((f z) [=] Zero)). +_** +$\forall c\in\RR (f\mbox{ strongly monotonic on }[c,\infty>) +\rightarrow \forall a,b\in\RR(c + (a,b:IR)(Intcl c a)->(Intcl c b)->((f a) [<] Zero)->(Zero [<] (f b)) + ->(x,y:IR)(Intclr a b x)->(Intclr a b y)->(x [<] y) + ->(EX z:IR | (Intclr x y z)/\((f z) [#] Zero)). + +_** The following is lemma 5.8 from the skeleton + +$\forall c\in\RR (f\mbox{ strongly monotonic on }[c,\infty>) +\rightarrow \forall a,b\in\RR(a(a,b:IR)(a [<] b)->(Intcl c a)->(Intcl c b) + ->((f a) [<] Zero)->(Zero [<] (f b)) + ->(EX z:IR | (Intclr a b z)/\ ((f z) [=] Zero)). +End Monotonic_functions. + +*) + +(* UNEXPORTED +End Continuity +*) + +(* begin hide *) + +(* UNEXPORTED +Set Strict Implicit. +*) + +(* UNEXPORTED +Unset Implicit Arguments. +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/RealLists.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/RealLists.mma new file mode 100644 index 000000000..361a72363 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/RealLists.mma @@ -0,0 +1,104 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RealLists.v,v 1.4 2004/04/23 10:01:05 lcf Exp $ *) + +include "reals/CReals1.ma". + +(* UNEXPORTED +Section Lists +*) + +(*#* * Lists of Real Numbers + +In some contexts we will need to work with nested existential quantified formulas of the form $\exists_{n\in\NN}\exists_{x_1,\ldots,x_n}P(x_1,\ldots,x_n)$#exists n exists x1,...,xn P(x1,..,xn)#. One way of formalizing this kind of statement is through quantifying over lists. In this file we provide some tools for manipulating lists. + +Notice that some of the properties listed below only make sense in the context within which we are working. Unlike in the other lemma files, no care has been taken here to state the lemmas in their most general form, as that would make them very unpractical to use. + +%\bigskip% + +We start by defining maximum and minimum of lists of reals and two membership predicates. The value of these functions for the empty list is arbitrarily set to 0, but it will be irrelevant, as we will never work with empty lists. +*) + +inline procedural "cic:/CoRN/reals/RealLists/maxlist.con". + +inline procedural "cic:/CoRN/reals/RealLists/minlist.con". + +inline procedural "cic:/CoRN/reals/RealLists/member.con". + +(*#* +Sometimes the length of the list has to be restricted; the next definition provides an easy way to do that. *) + +inline procedural "cic:/CoRN/reals/RealLists/length_leEq.con". + +(*#* Length is preserved by mapping. *) + +(* UNEXPORTED +Implicit Arguments map [A B]. +*) + +inline procedural "cic:/CoRN/reals/RealLists/map_pres_length.con". + +(*#* +Often we want to map partial functions through a list; this next operator provides a way to do that, and is proved to be correct. *) + +(* UNEXPORTED +Implicit Arguments cons [A]. +*) + +inline procedural "cic:/CoRN/reals/RealLists/map2.con". + +inline procedural "cic:/CoRN/reals/RealLists/map2_wd.con". + +inline procedural "cic:/CoRN/reals/RealLists/map2_pres_member.con". + +(*#* +As [maxlist] and [minlist] are generalizations of [Max] and [Min] to finite sets of real numbers, they have the expected properties: *) + +inline procedural "cic:/CoRN/reals/RealLists/maxlist_greater.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/RealLists/Lists/maxlist_aux.con" "Lists__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/RealLists/maxlist_leEq_eps.con". + +inline procedural "cic:/CoRN/reals/RealLists/maxlist_less.con". + +inline procedural "cic:/CoRN/reals/RealLists/maxlist_leEq.con". + +inline procedural "cic:/CoRN/reals/RealLists/minlist_smaller.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/RealLists/Lists/minlist_aux.con" "Lists__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/RealLists/minlist_leEq_eps.con". + +inline procedural "cic:/CoRN/reals/RealLists/less_minlist.con". + +inline procedural "cic:/CoRN/reals/RealLists/leEq_minlist.con". + +(* UNEXPORTED +End Lists +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/Series.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/Series.mma new file mode 100644 index 000000000..9a898a409 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/Series.mma @@ -0,0 +1,380 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Series.v,v 1.6 2004/04/23 10:01:05 lcf Exp $ *) + +(*#* printing seq_part_sum %\ensuremath{\sum^n}% #∑n# *) + +(*#* printing series_sum %\ensuremath{\sum_0^{\infty}}% #∑0# *) + +(*#* printing pi %\ensuremath{\pi}% #π *) + +include "reals/CSumsReals.ma". + +include "reals/NRootIR.ma". + +(* UNEXPORTED +Section Definitions +*) + +(*#* *Series of Real Numbers +In this file we develop a theory of series of real numbers. +** Definitions + +A series is simply a sequence from the natural numbers into the reals. +To each such sequence we can assign a sequence of partial sums. + +%\begin{convention}% Let [x:nat->IR]. +%\end{convention}% +*) + +alias id "x" = "cic:/CoRN/reals/Series/Definitions/x.var". + +inline procedural "cic:/CoRN/reals/Series/seq_part_sum.con". + +(*#* +For subsequent purposes it will be very useful to be able to write the +difference between two arbitrary elements of the sequence of partial +sums as a sum of elements of the original sequence. +*) + +inline procedural "cic:/CoRN/reals/Series/seq_part_sum_n.con". + +(*#* A series is convergent iff its sequence of partial Sums is a +Cauchy sequence. To each convergent series we can assign a Sum. +*) + +inline procedural "cic:/CoRN/reals/Series/convergent.con". + +inline procedural "cic:/CoRN/reals/Series/series_sum.con". + +(*#* Divergence can be characterized in a positive way, which will sometimes +be useful. We thus define divergence of sequences and series and prove the +obvious fact that no sequence can be both convergent and divergent, whether + considered either as a sequence or as a series. +*) + +inline procedural "cic:/CoRN/reals/Series/divergent_seq.con". + +inline procedural "cic:/CoRN/reals/Series/divergent.con". + +inline procedural "cic:/CoRN/reals/Series/conv_imp_not_div.con". + +inline procedural "cic:/CoRN/reals/Series/div_imp_not_conv.con". + +inline procedural "cic:/CoRN/reals/Series/convergent_imp_not_divergent.con". + +inline procedural "cic:/CoRN/reals/Series/divergent_imp_not_convergent.con". + +(*#* Finally we have the well known fact that every convergent series converges +to zero as a sequence. +*) + +inline procedural "cic:/CoRN/reals/Series/series_seq_Lim.con". + +inline procedural "cic:/CoRN/reals/Series/series_seq_Lim'.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Section More_Definitions +*) + +alias id "x" = "cic:/CoRN/reals/Series/More_Definitions/x.var". + +(*#* We also define absolute convergence. *) + +inline procedural "cic:/CoRN/reals/Series/abs_convergent.con". + +(* UNEXPORTED +End More_Definitions +*) + +(* UNEXPORTED +Section Power_Series +*) + +(*#* **Power Series + +Power series are an important special case. +*) + +inline procedural "cic:/CoRN/reals/Series/power_series.con". + +(*#* +Specially important is the case when [c] is a positive real number +less than 1; in this case not only the power series is convergent, but +we can also compute its sum. + +%\begin{convention}% Let [c] be a real number between 0 and 1. +%\end{convention}% +*) + +alias id "c" = "cic:/CoRN/reals/Series/Power_Series/c.var". + +alias id "H0c" = "cic:/CoRN/reals/Series/Power_Series/H0c.var". + +alias id "Hc1" = "cic:/CoRN/reals/Series/Power_Series/Hc1.var". + +inline procedural "cic:/CoRN/reals/Series/c_exp_Lim.con". + +inline procedural "cic:/CoRN/reals/Series/power_series_Lim1.con". + +inline procedural "cic:/CoRN/reals/Series/power_series_conv.con". + +inline procedural "cic:/CoRN/reals/Series/power_series_sum.con". + +(* UNEXPORTED +End Power_Series +*) + +(* UNEXPORTED +Section Operations +*) + +(*#* **Operations + +Some operations with series preserve convergence. We start by defining +the series that is zero everywhere. +*) + +inline procedural "cic:/CoRN/reals/Series/conv_zero_series.con". + +inline procedural "cic:/CoRN/reals/Series/series_sum_zero.con". + +(*#* Next we consider extensionality, as well as the sum and difference +of two convergent series. + +%\begin{convention}% Let [x,y:nat->IR] be convergent series. +%\end{convention}% +*) + +alias id "x" = "cic:/CoRN/reals/Series/Operations/x.var". + +alias id "y" = "cic:/CoRN/reals/Series/Operations/y.var". + +alias id "convX" = "cic:/CoRN/reals/Series/Operations/convX.var". + +alias id "convY" = "cic:/CoRN/reals/Series/Operations/convY.var". + +inline procedural "cic:/CoRN/reals/Series/convergent_wd.con". + +inline procedural "cic:/CoRN/reals/Series/series_sum_wd.con". + +inline procedural "cic:/CoRN/reals/Series/conv_series_plus.con". + +inline procedural "cic:/CoRN/reals/Series/series_sum_plus.con". + +inline procedural "cic:/CoRN/reals/Series/conv_series_minus.con". + +inline procedural "cic:/CoRN/reals/Series/series_sum_minus.con". + +(*#* Multiplication by a scalar [c] is also permitted. *) + +alias id "c" = "cic:/CoRN/reals/Series/Operations/c.var". + +inline procedural "cic:/CoRN/reals/Series/conv_series_mult_scal.con". + +inline procedural "cic:/CoRN/reals/Series/series_sum_mult_scal.con". + +(* UNEXPORTED +End Operations +*) + +(* UNEXPORTED +Section More_Operations +*) + +alias id "x" = "cic:/CoRN/reals/Series/More_Operations/x.var". + +alias id "convX" = "cic:/CoRN/reals/Series/More_Operations/convX.var". + +(*#* As a corollary, we get the series of the inverses. *) + +inline procedural "cic:/CoRN/reals/Series/conv_series_inv.con". + +inline procedural "cic:/CoRN/reals/Series/series_sum_inv.con". + +(* UNEXPORTED +End More_Operations +*) + +(* UNEXPORTED +Section Almost_Everywhere +*) + +(*#* ** Almost Everywhere + +In this section we strengthen some of the convergence results for sequences +and derive an important corollary for series. + +Let [x,y : nat->IR] be equal after some natural number. +*) + +alias id "x" = "cic:/CoRN/reals/Series/Almost_Everywhere/x.var". + +alias id "y" = "cic:/CoRN/reals/Series/Almost_Everywhere/y.var". + +inline procedural "cic:/CoRN/reals/Series/aew_eq.con". + +alias id "aew_equal" = "cic:/CoRN/reals/Series/Almost_Everywhere/aew_equal.var". + +inline procedural "cic:/CoRN/reals/Series/aew_Cauchy.con". + +inline procedural "cic:/CoRN/reals/Series/aew_Cauchy2.con". + +inline procedural "cic:/CoRN/reals/Series/aew_series_conv.con". + +(* UNEXPORTED +End Almost_Everywhere +*) + +(* UNEXPORTED +Section Cauchy_Almost_Everywhere +*) + +(*#* Suppose furthermore that [x,y] are Cauchy sequences. *) + +alias id "x" = "cic:/CoRN/reals/Series/Cauchy_Almost_Everywhere/x.var". + +alias id "y" = "cic:/CoRN/reals/Series/Cauchy_Almost_Everywhere/y.var". + +alias id "aew_equal" = "cic:/CoRN/reals/Series/Cauchy_Almost_Everywhere/aew_equal.var". + +inline procedural "cic:/CoRN/reals/Series/aew_Lim.con". + +(* UNEXPORTED +End Cauchy_Almost_Everywhere +*) + +(* UNEXPORTED +Section Convergence_Criteria +*) + +(*#* **Convergence Criteria + +%\begin{convention}% Let [x:nat->IR]. +%\end{convention}% +*) + +alias id "x" = "cic:/CoRN/reals/Series/Convergence_Criteria/x.var". + +(*#* We include the comparison test for series, both in a strong and in a less +general (but simpler) form. +*) + +inline procedural "cic:/CoRN/reals/Series/str_comparison.con". + +inline procedural "cic:/CoRN/reals/Series/comparison.con". + +(*#* As a corollary, we get that every absolutely convergent series converges. *) + +inline procedural "cic:/CoRN/reals/Series/abs_imp_conv.con". + +(*#* Next we have the ratio test, both as a positive and negative result. *) + +inline procedural "cic:/CoRN/reals/Series/divergent_crit.con". + +inline procedural "cic:/CoRN/reals/Series/tail_series.con". + +inline procedural "cic:/CoRN/reals/Series/join_series.con". + +(* UNEXPORTED +End Convergence_Criteria +*) + +(* UNEXPORTED +Section More_CC +*) + +alias id "x" = "cic:/CoRN/reals/Series/More_CC/x.var". + +inline procedural "cic:/CoRN/reals/Series/ratio_test_conv.con". + +inline procedural "cic:/CoRN/reals/Series/ratio_test_div.con". + +(* UNEXPORTED +End More_CC +*) + +(* UNEXPORTED +Section Alternate_Series +*) + +(*#* **Alternate Series + +Alternate series are a special case. Suppose that [x] is nonnegative and +decreasing convergent to 0. +*) + +alias id "x" = "cic:/CoRN/reals/Series/Alternate_Series/x.var". + +alias id "pos_x" = "cic:/CoRN/reals/Series/Alternate_Series/pos_x.var". + +alias id "Lim_x" = "cic:/CoRN/reals/Series/Alternate_Series/Lim_x.var". + +alias id "mon_x" = "cic:/CoRN/reals/Series/Alternate_Series/mon_x.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/reals/Series/Alternate_Series/y.con" "Alternate_Series__". + +inline procedural "cic:/CoRN/reals/Series/Alternate_Series/alternate_lemma1.con" "Alternate_Series__". + +inline procedural "cic:/CoRN/reals/Series/Alternate_Series/alternate_lemma2.con" "Alternate_Series__". + +inline procedural "cic:/CoRN/reals/Series/Alternate_Series/alternate_lemma3.con" "Alternate_Series__". + +inline procedural "cic:/CoRN/reals/Series/Alternate_Series/alternate_lemma4.con" "Alternate_Series__". + +(* end hide *) + +inline procedural "cic:/CoRN/reals/Series/alternate_series_conv.con". + +(* UNEXPORTED +End Alternate_Series +*) + +(* UNEXPORTED +Section Important_Numbers +*) + +(*#* **Important Numbers + +We end this chapter by defining two important numbers in mathematics: [pi] +and $e$#e#, both as sums of convergent series. +*) + +inline procedural "cic:/CoRN/reals/Series/e_series.con". + +inline procedural "cic:/CoRN/reals/Series/e_series_conv.con". + +inline procedural "cic:/CoRN/reals/Series/E.con". + +inline procedural "cic:/CoRN/reals/Series/pi_series.con". + +inline procedural "cic:/CoRN/reals/Series/pi_series_conv.con". + +inline procedural "cic:/CoRN/reals/Series/pi.con". + +(* UNEXPORTED +End Important_Numbers +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/reals/iso_CReals.mma b/helm/software/matita/contribs/CoRN-Procedural/reals/iso_CReals.mma new file mode 100644 index 000000000..f2d6c81cd --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/reals/iso_CReals.mma @@ -0,0 +1,123 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +(* in this file the concrete canonical isomorphism -in te sense of + R_morphisms.v - between two arbitrary model of real numbers is built *) + +include "reals/Q_dense.ma". + +include "reals/R_morphism.ma". + +inline procedural "cic:/CoRN/reals/iso_CReals/less_pres_Lim.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/Lim_pres_less.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/inj_seq_less.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/less_inj_seq.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/SeqLimit_unique.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/Lim_well_def.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/Lim_one_one.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/inj_seq_well_def.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/inj_Q_one_one.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/Lim_pres_plus.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/G_pres_plus.con". + +(* This theorem can be avoided but it is interesting *) + +inline procedural "cic:/CoRN/reals/iso_CReals/nonarchemaedian_bound_for_Lim.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/Lim_pres_mult.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/G_pres_mult.con". + +(* UNEXPORTED +Section Concrete_iso_between_Creals +*) + +alias id "R1" = "cic:/CoRN/reals/iso_CReals/Concrete_iso_between_Creals/R1.var". + +alias id "R2" = "cic:/CoRN/reals/iso_CReals/Concrete_iso_between_Creals/R2.var". + +inline procedural "cic:/CoRN/reals/iso_CReals/image_Cauchy12.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/image_Cauchy21.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/image_G_as_CauchySeq12.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/image_G_as_CauchySeq21.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/f12.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21.con". + +(*#****** ISO FROM R1 TO R2 ********) + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_is_inverse_g21.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_is_surjective.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_strong_ext.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_pres_less.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_pres_plus.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_pres_mult.con". + +(*#********* ISO FROM R2 TO R1 **********) + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_is_inverse_f12.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_is_surjective.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_strong_ext.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_pres_less.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_pres_plus.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_pres_mult.con". + +(*#** Building Homomorphisms out of f12 and g21 ***) + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_as_Homomorphism.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_as_Homomorphism.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/f12_inverse_lft.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/g21_inverse_rht.con". + +inline procedural "cic:/CoRN/reals/iso_CReals/Canonic_Isomorphism_between_CReals.con". + +(* UNEXPORTED +End Concrete_iso_between_Creals +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/root b/helm/software/matita/contribs/CoRN-Procedural/root index 48c1ed611..2eb0f23fc 100644 --- a/helm/software/matita/contribs/CoRN-Procedural/root +++ b/helm/software/matita/contribs/CoRN-Procedural/root @@ -1 +1,2 @@ baseuri=cic:/matita/CoRN-Procedural +include_paths=../../legacy diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/AlgReflection.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/AlgReflection.mma new file mode 100644 index 000000000..87ed418dc --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/AlgReflection.mma @@ -0,0 +1,130 @@ +(**************************************************************************) +(* ___ *) +(* ||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: AlgReflection.v,v 1.2 2004/03/26 16:07:03 lcf Exp $ *) + +(* begin hide *) + +include "algebra/CLogic.ma". + +(* UNEXPORTED +Section Syntactic_Expressions +*) + +inline procedural "cic:/CoRN/tactics/AlgReflection/varindex.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/pfunindex.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/unopindex.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/binopindex.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr.ind". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr_zero.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr_one.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr_nat.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr_inv.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr_minus.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr_power.con". + +(* UNEXPORTED +End Syntactic_Expressions +*) + +(* UNEXPORTED +Section Normalization_Function +*) + +inline procedural "cic:/CoRN/tactics/AlgReflection/eq_nat.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/lt_nat.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/le_nat.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/eq_int.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/lt_int.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/le_int.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/eq_expr.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/lt_expr.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/le_expr.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/eq_monom.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/lt_monom.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/MI_mult.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/MV_mult.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/MM_mult.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/MM_plus.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/PM_plus.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/PP_plus.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/PM_mult.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/PP_mult.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/FF_plus.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/FF_mult.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/FF_div.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/NormR.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/NormG.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/NormF.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/expr_is_zero.con". + +(* UNEXPORTED +End Normalization_Function +*) + +(* UNEXPORTED +Section Correctness_Results +*) + +inline procedural "cic:/CoRN/tactics/AlgReflection/eq_nat_corr.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/eq_int_corr.con". + +inline procedural "cic:/CoRN/tactics/AlgReflection/eq_expr_corr.con". + +(* UNEXPORTED +End Correctness_Results +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics1.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics1.mma new file mode 100644 index 000000000..fd885bc25 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics1.mma @@ -0,0 +1,39 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +(* UNEXPORTED +Ltac Contin := auto with continuous included. +*) + +(* UNEXPORTED +Ltac Deriv := eauto with derivate continuous included. +*) + +(* end hide *) + +(*#* *Search tactics for reasoning in Real Analysis + +The following tactics are defined: + - [Contin] will solve [(Continuous_I H F)] + - [Deriv] will solve [(Derivative_I H F F')]. + +All these tactics are defined using [eauto]. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics2.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics2.mma new file mode 100644 index 000000000..3352930be --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics2.mma @@ -0,0 +1,234 @@ +(**************************************************************************) +(* ___ *) +(* ||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 +*) + +alias id "a" = "cic:/CoRN/tactics/DiffTactics2/Automatizing_Continuity/a.var". + +alias id "b" = "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". + +inline procedural "cic:/CoRN/tactics/DiffTactics2/continuous_cont.con". + +(* 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 +*) + +alias id "a" = "cic:/CoRN/tactics/DiffTactics2/Automatizing_Derivatives/a.var". + +alias id "b" = "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". + +inline procedural "cic:/CoRN/tactics/DiffTactics2/deriv_deriv.con". + +inline procedural "cic:/CoRN/tactics/DiffTactics2/deriv_restr.con". + +inline procedural "cic:/CoRN/tactics/DiffTactics2/diffble_restr.con". + +(* 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 *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics3.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics3.mma new file mode 100644 index 000000000..3e2b4f152 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/DiffTactics3.mma @@ -0,0 +1,104 @@ +(**************************************************************************) +(* ___ *) +(* ||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: DiffTactics3.v,v 1.1.1.1 2004/02/05 16:25:44 lionelm Exp $ *) + +(* begin hide *) + +include "ftc/MoreFunSeries.ma". + +include "ftc/Composition.ma". + +include "tactics/DiffTactics2.ma". + +(* UNEXPORTED +Ltac Deriv_substR := + match goal with + | |- (Derivative ?X1 _) => + let t := derivative_of X1 in + apply Derivative_wdr with t + end. +*) + +inline procedural "cic:/CoRN/tactics/DiffTactics3/symbPF.ind". + +(* + | ssum0 : nat->(nat->symbPF)->symbPF + | ssumx : (n:nat)((i:nat)(lt i n)->symbPF)->symbPF + | ssum : nat->nat->(nat->symbPF)->symbPF +*) + +inline procedural "cic:/CoRN/tactics/DiffTactics3/symb_to_PartIR.con". + +inline procedural "cic:/CoRN/tactics/DiffTactics3/symbPF_deriv.con". + +(* UNEXPORTED +Ltac PartIR_to_symbPF f := + match constr:f with + | ([-C-]?X3) => constr:(sconst X3) + | FId => constr:sid + | (?X3{+}?X4) => + let t1 := PartIR_to_symbPF X3 with t2 := PartIR_to_symbPF X4 in + constr:(splus t1 t2) + | ({--}?X3) => + let t1 := PartIR_to_symbPF X3 in + constr:(sinv t1) + | (?X3{-}?X4) => + let t1 := PartIR_to_symbPF X3 with t2 := PartIR_to_symbPF X4 in + constr:(sminus t1 t2) + | (?X3{*}?X4) => + let t1 := PartIR_to_symbPF X3 with t2 := PartIR_to_symbPF X4 in + constr:(smult t1 t2) + | (?X3{**}?X4) => + let t := PartIR_to_symbPF X4 in + constr:(sscalmult X3 t) + | (?X3{^}?X4) => + let t1 := PartIR_to_symbPF X3 in + constr:(snth t1 X4) + | ({1/}?X3) => + let t1 := PartIR_to_symbPF X3 in + constr:(srecip t1) + | (?X3{/}?X4) => + let t1 := PartIR_to_symbPF X3 with t2 := PartIR_to_symbPF X4 in + constr:(sdiv t1 t2) + | (?X3[o]?X4) => + let t1 := PartIR_to_symbPF X3 with t2 := PartIR_to_symbPF X4 in + constr:(scomp t1 t2) + | ?X3 => + let t := constr:X3 in + match goal with + | H:(Derivative ?X1 ?X2 t ?X4) |- _ => + constr:(shyp X1 X2 t X4 H) + | H:(Diffble ?X1 ?X2 t) |- _ => constr:(shyp' X1 X2 t H) + end + end. +*) + +(* UNEXPORTED +Ltac Derivative_Help := + match goal with + | |- (Derivative ?X1 ?X2 ?X3 ?X4) => + let r := PartIR_to_symbPF X3 in + (apply Derivative_wdr with (symbPF_deriv r); + [ unfold symbPF_deriv, symb_to_PartIR in |- * + | simpl in |- *; Deriv ]) + end. +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/FieldReflection.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/FieldReflection.mma new file mode 100644 index 000000000..91e5cd0fc --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/FieldReflection.mma @@ -0,0 +1,216 @@ +(**************************************************************************) +(* ___ *) +(* ||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: FieldReflection.v,v 1.4 2004/04/23 10:01:06 lcf Exp $ *) + +(* begin hide *) + +include "algebra/CFields.ma". + +include "tactics/AlgReflection.ma". + +(* UNEXPORTED +Section Field_Interpretation_Function +*) + +alias id "F" = "cic:/CoRN/tactics/FieldReflection/Field_Interpretation_Function/F.var". + +alias id "val" = "cic:/CoRN/tactics/FieldReflection/Field_Interpretation_Function/val.var". + +alias id "unop" = "cic:/CoRN/tactics/FieldReflection/Field_Interpretation_Function/unop.var". + +alias id "binop" = "cic:/CoRN/tactics/FieldReflection/Field_Interpretation_Function/binop.var". + +alias id "pfun" = "cic:/CoRN/tactics/FieldReflection/Field_Interpretation_Function/pfun.var". + +inline procedural "cic:/CoRN/tactics/FieldReflection/interpF.ind". + +inline procedural "cic:/CoRN/tactics/FieldReflection/wfF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/xexprF.ind". + +inline procedural "cic:/CoRN/tactics/FieldReflection/xforgetF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/xinterpF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/xexprF2interpF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/xexprF_diagram_commutes.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/xexprF2wfF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fexprF.ind". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fexprF_var.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fexprF_int.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fexprF_plus.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fexprF_mult.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fforgetF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fexprF2interpF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/fexprF2wfF.con". + +include "tactics/Opaque_algebra.ma". + +inline procedural "cic:/CoRN/tactics/FieldReflection/refl_interpF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/interpF_wd.con". + +(* UNEXPORTED +End Field_Interpretation_Function +*) + +(* UNEXPORTED +Section Field_NormCorrect +*) + +alias id "F" = "cic:/CoRN/tactics/FieldReflection/Field_NormCorrect/F.var". + +alias id "val" = "cic:/CoRN/tactics/FieldReflection/Field_NormCorrect/val.var". + +alias id "unop" = "cic:/CoRN/tactics/FieldReflection/Field_NormCorrect/unop.var". + +alias id "binop" = "cic:/CoRN/tactics/FieldReflection/Field_NormCorrect/binop.var". + +alias id "pfun" = "cic:/CoRN/tactics/FieldReflection/Field_NormCorrect/pfun.var". + +(* NOTATION +Notation II := (interpF F val unop binop pfun). +*) + +(* +four kinds of exprs: + + I (expr_int _) + V (expr_var _) + M (expr_mult V M) + I + P (expr_plus M P) + I + +M: sorted on V +P: sorted on M, all M's not an I +*) + +(* UNEXPORTED +Opaque Zmult. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/MI_mult_corr_F.con". + +(* UNEXPORTED +Transparent Zmult. +*) + +(* UNEXPORTED +Opaque MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/MV_mult_corr_F.con". + +(* UNEXPORTED +Transparent MI_mult. +*) + +(* UNEXPORTED +Opaque MV_mult MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/MM_mult_corr_F.con". + +(* UNEXPORTED +Transparent MV_mult MI_mult. +*) + +(* UNEXPORTED +Opaque MV_mult. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/MM_plus_corr_F.con". + +(* UNEXPORTED +Transparent MV_mult. +*) + +(* UNEXPORTED +Opaque MM_plus. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/PM_plus_corr_F.con". + +(* UNEXPORTED +Transparent MM_plus. +*) + +(* UNEXPORTED +Opaque PM_plus. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/PP_plus_corr_F.con". + +(* UNEXPORTED +Transparent PM_plus. +*) + +(* UNEXPORTED +Opaque PM_plus MM_mult MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/PM_mult_corr_F.con". + +(* UNEXPORTED +Opaque PM_mult. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/PP_mult_corr_F.con". + +(* UNEXPORTED +Transparent PP_plus PM_mult PP_mult PM_plus MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/FF_plus_corr_F.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/FF_mult_corr_F.con". + +(* UNEXPORTED +Transparent FF_div. +*) + +inline procedural "cic:/CoRN/tactics/FieldReflection/FF_div_corr_F.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/NormF_corr.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/Norm_wfF.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/expr_is_zero_corr_F.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/Tactic_lemma_zero_F.con". + +inline procedural "cic:/CoRN/tactics/FieldReflection/Tactic_lemmaF.con". + +(* UNEXPORTED +End Field_NormCorrect +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/GroupReflection.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/GroupReflection.mma new file mode 100644 index 000000000..479e8abbc --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/GroupReflection.mma @@ -0,0 +1,244 @@ +(**************************************************************************) +(* ___ *) +(* ||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: GroupReflection.v,v 1.3 2004/04/23 10:01:06 lcf Exp $ *) + +(* begin hide *) + +include "algebra/CAbGroups.ma". + +include "tactics/AlgReflection.ma". + +(* UNEXPORTED +Section Group_Interpretation_Function +*) + +alias id "G" = "cic:/CoRN/tactics/GroupReflection/Group_Interpretation_Function/G.var". + +alias id "val" = "cic:/CoRN/tactics/GroupReflection/Group_Interpretation_Function/val.var". + +alias id "unop" = "cic:/CoRN/tactics/GroupReflection/Group_Interpretation_Function/unop.var". + +alias id "binop" = "cic:/CoRN/tactics/GroupReflection/Group_Interpretation_Function/binop.var". + +alias id "pfun" = "cic:/CoRN/tactics/GroupReflection/Group_Interpretation_Function/pfun.var". + +inline procedural "cic:/CoRN/tactics/GroupReflection/interpG.ind". + +inline procedural "cic:/CoRN/tactics/GroupReflection/wfG.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/xexprG.ind". + +inline procedural "cic:/CoRN/tactics/GroupReflection/xforgetG.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/xinterpG.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/xexprG2interpG.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/xexprG_diagram_commutes.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/xexprG2wfG.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fexprG.ind". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fexprG_var.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fexprG_zero.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fexprG_plus.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fexprG_mult_int.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fforgetG.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fexprG2interp.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/fexprG2wf.con". + +(* UNEXPORTED +Opaque csg_crr. +*) + +(* UNEXPORTED +Opaque cm_crr. +*) + +(* UNEXPORTED +Opaque cg_crr. +*) + +(* UNEXPORTED +Opaque csf_fun. +*) + +(* UNEXPORTED +Opaque csbf_fun. +*) + +(* UNEXPORTED +Opaque csr_rel. +*) + +(* UNEXPORTED +Opaque cs_eq. +*) + +(* UNEXPORTED +Opaque cs_neq. +*) + +(* UNEXPORTED +Opaque cs_ap. +*) + +(* UNEXPORTED +Opaque cm_unit. +*) + +(* UNEXPORTED +Opaque csg_op. +*) + +(* UNEXPORTED +Opaque cg_inv. +*) + +(* UNEXPORTED +Opaque cg_minus. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/refl_interpG.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/interpG_wd.con". + +(* UNEXPORTED +End Group_Interpretation_Function +*) + +(* UNEXPORTED +Section Group_NormCorrect +*) + +alias id "G" = "cic:/CoRN/tactics/GroupReflection/Group_NormCorrect/G.var". + +alias id "val" = "cic:/CoRN/tactics/GroupReflection/Group_NormCorrect/val.var". + +alias id "unop" = "cic:/CoRN/tactics/GroupReflection/Group_NormCorrect/unop.var". + +alias id "binop" = "cic:/CoRN/tactics/GroupReflection/Group_NormCorrect/binop.var". + +alias id "pfun" = "cic:/CoRN/tactics/GroupReflection/Group_NormCorrect/pfun.var". + +(* NOTATION +Notation II := (interpG G val unop binop pfun). +*) + +(* +four kinds of exprs: + + I (expr_int _) + V (expr_var _) + M (expr_mult V M) + I + P (expr_plus M P) + I + +M: sorted on V +P: sorted on M, all M's not an I +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/MI_mult_comm_int.con". + +(* UNEXPORTED +Opaque Zmult. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/MI_mult_corr_G.con". + +(* UNEXPORTED +Transparent Zmult. +*) + +(* UNEXPORTED +Opaque MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/MV_mult_corr_G.con". + +(* UNEXPORTED +Opaque MV_mult. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/MM_mult_corr_G.con". + +(* UNEXPORTED +Transparent MV_mult MI_mult. +*) + +(* UNEXPORTED +Opaque MV_mult. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/MM_plus_corr_G.con". + +(* UNEXPORTED +Transparent MV_mult. +*) + +(* UNEXPORTED +Opaque MM_plus. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/PM_plus_corr_G.con". + +(* UNEXPORTED +Transparent MM_plus. +*) + +(* UNEXPORTED +Opaque PM_plus. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/PP_plus_corr_G.con". + +(* UNEXPORTED +Transparent PM_plus. +*) + +(* UNEXPORTED +Opaque PM_plus MM_mult MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/PM_mult_corr_G.con". + +(* UNEXPORTED +Opaque PM_mult. +*) + +inline procedural "cic:/CoRN/tactics/GroupReflection/PP_mult_corr_G.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/NormG_corr_G.con". + +inline procedural "cic:/CoRN/tactics/GroupReflection/Tactic_lemmaG.con". + +(* UNEXPORTED +End Group_NormCorrect +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/Opaque_algebra.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/Opaque_algebra.mma new file mode 100644 index 000000000..70ec3c318 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/Opaque_algebra.mma @@ -0,0 +1,98 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Opaque_algebra.v,v 1.1 2004/02/11 10:56:57 lcf Exp $ *) + +(* Opaque cs_crr. *) + +(* UNEXPORTED +Opaque csg_crr. +*) + +(* UNEXPORTED +Opaque cm_crr. +*) + +(* UNEXPORTED +Opaque cg_crr. +*) + +(* UNEXPORTED +Opaque cr_crr. +*) + +(* UNEXPORTED +Opaque cf_crr. +*) + +(* UNEXPORTED +Opaque csf_fun. +*) + +(* UNEXPORTED +Opaque csbf_fun. +*) + +(* UNEXPORTED +Opaque csr_rel. +*) + +(* UNEXPORTED +Opaque cs_eq. +*) + +(* UNEXPORTED +Opaque cs_neq. +*) + +(* UNEXPORTED +Opaque cs_ap. +*) + +(* UNEXPORTED +Opaque cm_unit. +*) + +(* UNEXPORTED +Opaque csg_op. +*) + +(* UNEXPORTED +Opaque cg_inv. +*) + +(* UNEXPORTED +Opaque cg_minus. +*) + +(* UNEXPORTED +Opaque cr_one. +*) + +(* UNEXPORTED +Opaque cr_mult. +*) + +(* UNEXPORTED +Opaque nexp_op. +*) + +(* UNEXPORTED +Opaque cf_div. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/RingReflection.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/RingReflection.mma new file mode 100644 index 000000000..1e0fa25dc --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/RingReflection.mma @@ -0,0 +1,322 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RingReflection.v,v 1.4 2004/04/23 10:01:06 lcf Exp $ *) + +(* begin hide *) + +include "algebra/CRings.ma". + +include "tactics/AlgReflection.ma". + +(* UNEXPORTED +Section Ring_Interpretation_Function +*) + +alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/R.var". + +alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/val.var". + +alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/unop.var". + +alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/binop.var". + +alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_Interpretation_Function/pfun.var". + +inline procedural "cic:/CoRN/tactics/RingReflection/interpR.ind". + +inline procedural "cic:/CoRN/tactics/RingReflection/wfR.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/xexprR.ind". + +inline procedural "cic:/CoRN/tactics/RingReflection/xforgetR.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/xinterpR.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/xexprR2interpR.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/xexprR_diagram_commutes.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/xexprR2wfR.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/fexprR.ind". + +inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_var.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_int.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_plus.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/fexprR_mult.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/fforgetR.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/fexprR2interp.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/fexprR2wf.con". + +(* UNEXPORTED +Opaque csg_crr. +*) + +(* UNEXPORTED +Opaque cm_crr. +*) + +(* UNEXPORTED +Opaque cg_crr. +*) + +(* UNEXPORTED +Opaque cr_crr. +*) + +(* UNEXPORTED +Opaque csf_fun. +*) + +(* UNEXPORTED +Opaque csbf_fun. +*) + +(* UNEXPORTED +Opaque csr_rel. +*) + +(* UNEXPORTED +Opaque cs_eq. +*) + +(* UNEXPORTED +Opaque cs_neq. +*) + +(* UNEXPORTED +Opaque cs_ap. +*) + +(* UNEXPORTED +Opaque cm_unit. +*) + +(* UNEXPORTED +Opaque csg_op. +*) + +(* UNEXPORTED +Opaque cg_inv. +*) + +(* UNEXPORTED +Opaque cg_minus. +*) + +(* UNEXPORTED +Opaque cr_one. +*) + +(* UNEXPORTED +Opaque cr_mult. +*) + +(* UNEXPORTED +Opaque nexp_op. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/refl_interpR.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/interpR_wd.con". + +(* UNEXPORTED +End Ring_Interpretation_Function +*) + +(* UNEXPORTED +Section Ring_NormCorrect +*) + +alias id "R" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/R.var". + +alias id "val" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/val.var". + +alias id "unop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/unop.var". + +alias id "binop" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/binop.var". + +alias id "pfun" = "cic:/CoRN/tactics/RingReflection/Ring_NormCorrect/pfun.var". + +(* NOTATION +Notation II := (interpR R val unop binop pfun). +*) + +(* +four kinds of exprs: + + I (expr_int _) + V (expr_var _) + M (expr_mult V M) + I + P (expr_plus M P) + I + +M: sorted on V +P: sorted on M, all M's not an I +*) + +(* UNEXPORTED +Opaque Zmult. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/MI_mult_corr_R.con". + +(* UNEXPORTED +Transparent Zmult. +*) + +(* UNEXPORTED +Opaque MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/MV_mult_corr_R.con". + +(* UNEXPORTED +Transparent MI_mult. +*) + +(* UNEXPORTED +Opaque MV_mult MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/MM_mult_corr_R.con". + +(* UNEXPORTED +Transparent MV_mult MI_mult. +*) + +(* UNEXPORTED +Opaque MV_mult. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/MM_plus_corr_R.con". + +(* UNEXPORTED +Transparent MV_mult. +*) + +(* UNEXPORTED +Opaque MM_plus. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/PM_plus_corr_R.con". + +(* UNEXPORTED +Transparent MM_plus. +*) + +(* UNEXPORTED +Opaque PM_plus. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/PP_plus_corr_R.con". + +(* UNEXPORTED +Transparent PM_plus. +*) + +(* UNEXPORTED +Opaque PM_plus MM_mult MI_mult. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/PM_mult_corr_R.con". + +(* UNEXPORTED +Opaque PM_mult. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/PP_mult_corr_R.con". + +(* +Transparent PP_plus PM_mult PP_mult PM_plus MI_mult. +Lemma FF_plus_corr_R : (e,f:expr; x,y:R) + (II e x)->(II f y)->(II (FF_plus e f) x[+]y). +Cut (e1,e2,f1,f2:expr; x,y:R) + (II (expr_div e1 e2) x) + ->(II (expr_div f1 f2) y) + ->(II + (expr_div (PP_plus (PP_mult e1 f2) (PP_mult e2 f1)) + (PP_mult e2 f2)) x[+]y). +Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_plus e f) x[+]y). +Intros H H0 e f. +Elim e; Elim f; Intros; Simpl; Auto. +Intros. Apply interpR_plus with x y; Algebra. +Intros. Inversion H. Inversion H0. +Apply interpR_div_one with x[+]y. +Algebra. +Apply interpR_wd with x0[*]One[+]One[*]x1. +Apply PP_plus_corr_R; Apply PP_mult_corr_R; Auto; + Apply interpR_int with k:=`1`; Algebra. +Step_final x0[+]x1. +Apply interpR_wd with (One::R)[*]One; Algebra. +Apply PP_mult_corr_R; Auto. +Qed. + +Lemma FF_mult_corr_R : (e,f:expr; x,y:R) + (II e x)->(II f y)->(II (FF_mult e f) x[*]y). +Cut (e1,e2,f1,f2:expr; x,y:R) + (II (expr_div e1 e2) x) + ->(II (expr_div f1 f2) y) + ->(II (expr_div (PP_mult e1 f1) (PP_mult e2 f2)) x[*]y). +Cut (e,f:expr; x,y:R)(II e x)->(II f y)->(II (expr_mult e f) x[*]y). +Intros H H0 e f. +Elim e; Elim f; Intros; Simpl; Auto. +Intros. Apply interpR_mult with x y; Algebra. +Intros. Inversion H. Inversion H0. +Apply interpR_div_one with x0[*]x1. +Algebra. +Apply PP_mult_corr_R; Auto. +Apply interpR_wd with (One::R)[*]One; Algebra. +Apply PP_mult_corr_R; Auto. +Qed. + +Transparent FF_div. +Lemma FF_div_corr_R : (e,f:expr; x:R) + (II (expr_div e f) x)->(II (FF_div e f) x). +Intro e; Case e; Simpl; Auto. +Intros e0 e1 f; Case f; Simpl; Auto. +Intros. +Inversion H; Simpl. +Inversion H3; Inversion H5. +Apply interpR_div_one with x1[*]One. +astepl x1. Step_final x0. +Apply PP_mult_corr_R; Auto. +Apply interpR_wd with One[*]x2. +Apply PP_mult_corr_R; Auto. +Step_final x2. +Qed. +*) + +inline procedural "cic:/CoRN/tactics/RingReflection/NormR_corr.con". + +inline procedural "cic:/CoRN/tactics/RingReflection/Tactic_lemmaR.con". + +(* UNEXPORTED +End Ring_NormCorrect +*) + +(* end hide *) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/Step.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/Step.mma new file mode 100644 index 000000000..5945df794 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/Step.mma @@ -0,0 +1,74 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +(* begin hide *) + +(* UNEXPORTED +Declare ML Module "rational". +*) + +(* UNEXPORTED +Ltac Algebra := auto with algebra_r algebra algebra_c algebra_s. +*) + +(* UNEXPORTED +Ltac astepl x := stepl x; [idtac | Algebra]. +*) + +(* UNEXPORTED +Ltac astepr x := stepr x; [idtac | Algebra]. +*) + +(* UNEXPORTED +Tactic Notation "astepl" constr(c) := astepl c. +*) + +(* UNEXPORTED +Tactic Notation "astepr" constr(c) := astepr c. +*) + +(* UNEXPORTED +Ltac rstepl x := stepl x; [idtac | rational]. +*) + +(* UNEXPORTED +Ltac rstepr x := stepr x; [idtac | rational]. +*) + +(* UNEXPORTED +Tactic Notation "rstepl" constr(c) := rstepl c. +*) + +(* UNEXPORTED +Tactic Notation "rstepr" constr(c) := rstepr c. +*) + +(* UNEXPORTED +Ltac Included := eauto with included. +*) + +(* end hide *) + +(*#* * [algebra] and [step] +These tactics simplify equational reasoning. See the references for a +description. + +* [Included] +[Included] will solve goals of the form [(included A (dom F))]. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/tactics/Transparent_algebra.mma b/helm/software/matita/contribs/CoRN-Procedural/tactics/Transparent_algebra.mma new file mode 100644 index 000000000..384034be4 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/tactics/Transparent_algebra.mma @@ -0,0 +1,100 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Transparent_algebra.v,v 1.1 2004/02/11 10:56:58 lcf Exp $ *) + +(* UNEXPORTED +Transparent cs_crr. +*) + +(* UNEXPORTED +Transparent csg_crr. +*) + +(* UNEXPORTED +Transparent cm_crr. +*) + +(* UNEXPORTED +Transparent cg_crr. +*) + +(* UNEXPORTED +Transparent cr_crr. +*) + +(* UNEXPORTED +Transparent cf_crr. +*) + +(* UNEXPORTED +Transparent csf_fun. +*) + +(* UNEXPORTED +Transparent csbf_fun. +*) + +(* UNEXPORTED +Transparent csr_rel. +*) + +(* UNEXPORTED +Transparent cs_eq. +*) + +(* UNEXPORTED +Transparent cs_neq. +*) + +(* UNEXPORTED +Transparent cs_ap. +*) + +(* UNEXPORTED +Transparent cm_unit. +*) + +(* UNEXPORTED +Transparent csg_op. +*) + +(* UNEXPORTED +Transparent cg_inv. +*) + +(* UNEXPORTED +Transparent cg_minus. +*) + +(* UNEXPORTED +Transparent cr_one. +*) + +(* UNEXPORTED +Transparent cr_mult. +*) + +(* UNEXPORTED +Transparent nexp_op. +*) + +(* UNEXPORTED +Transparent cf_div. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/Exponential.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/Exponential.mma new file mode 100644 index 000000000..4115fe187 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/Exponential.mma @@ -0,0 +1,308 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Exponential.v,v 1.7 2004/04/23 10:01:07 lcf Exp $ *) + +include "transc/TaylorSeries.ma". + +(* UNEXPORTED +Opaque Min Max. +*) + +(*#* *Exponential and Logarithmic Functions + +The main properties of the exponential and logarithmic functions. + +**Properties of Exponential + +Exponential is strongly extensional and well defined. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_strext.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_wd.con". + +(* UNEXPORTED +Hint Resolve Exp_wd: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_zero.con". + +(*#* $e^1=e$#e1=e#, where [e] was defined a long time ago. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_one.con". + +(* UNEXPORTED +Hint Resolve Exp_zero Exp_one: algebra. +*) + +(*#* +The exponential function is its own derivative, and continuous. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Derivative_Exp.con". + +(* UNEXPORTED +Hint Resolve Derivative_Exp: derivate. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Continuous_Exp.con". + +(* UNEXPORTED +Hint Resolve Continuous_Exp: continuous. +*) + +(*#* +Negative numbers are projected into the interval [[0,1]]. +*) + +inline procedural "cic:/CoRN/transc/Exponential/One_less_Exp.con". + +inline procedural "cic:/CoRN/transc/Exponential/One_leEq_Exp.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_pos'.con". + +(*#* +Exponential is the unique function which evaluates to 1 at 0 and is +its own derivative. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_unique_lemma.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_bnd.con". + +(* UNEXPORTED +Opaque Expon. +*) + +(* UNEXPORTED +Transparent Expon. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_unique.con". + +(* UNEXPORTED +Opaque Expon. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_plus_pos.con". + +(*#* The usual rules for computing the exponential of a sum. *) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_plus.con". + +(* UNEXPORTED +Hint Resolve Exp_plus: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_plus'.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_inv_char.con". + +(* UNEXPORTED +Hint Resolve Exp_inv_char: algebra. +*) + +(*#* The exponential of any number is always positive---and thus apart +from zero. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_pos.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_ap_zero.con". + +(*#* +And the rules for the exponential of differences. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_inv.con". + +(* UNEXPORTED +Hint Resolve Exp_inv: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_minus.con". + +(* UNEXPORTED +Hint Resolve Exp_minus: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_inv'.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_minus'.con". + +(*#* Exponential is a monotonous function. *) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_less_One.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_leEq_One.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_resp_less.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_resp_leEq.con". + +(*#* **Properties of Logarithm + +The logarithm is a continuous function with derivative [One[/]x]. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Derivative_Log.con". + +(* UNEXPORTED +Hint Resolve Derivative_Log: derivate. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Continuous_Log.con". + +(* UNEXPORTED +Hint Resolve Continuous_Log: continuous. +*) + +(*#* Logarithm of [One]. *) + +inline procedural "cic:/CoRN/transc/Exponential/Log_one.con". + +(* UNEXPORTED +Hint Resolve Log_one: algebra. +*) + +(*#* The logarithm is (strongly) extensional. *) + +inline procedural "cic:/CoRN/transc/Exponential/Log_strext.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_wd.con". + +(* UNEXPORTED +Hint Resolve Log_wd: algebra. +*) + +(*#* The rule for the logarithm of the product. *) + +(* UNEXPORTED +Opaque Logarithm. +*) + +(* UNEXPORTED +Transparent Logarithm. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Log_mult.con". + +(* UNEXPORTED +Hint Resolve Log_mult: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Log_mult'.con". + +(*#* A characterization of the domain of the logarithm. *) + +inline procedural "cic:/CoRN/transc/Exponential/Log_domain.con". + +(* UNEXPORTED +Opaque Expon Logarithm. +*) + +(*#* $\log(e^x)=x$#log(ex)=x# for all [x], both as a +numerical and as a functional equation. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Log_Exp_inv.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_Exp.con". + +(* UNEXPORTED +Transparent Logarithm. +*) + +(* UNEXPORTED +Hint Resolve Log_Exp: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_Log_lemma.con". + +(*#* The converse expression. *) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_Log.con". + +(* UNEXPORTED +Hint Resolve Exp_Log: algebra. +*) + +(*#* Exponential and logarithm are injective. *) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_cancel.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_cancel.con". + +(* UNEXPORTED +Opaque Logarithm. +*) + +(*#* And the final characterization as inverse functions. *) + +inline procedural "cic:/CoRN/transc/Exponential/Exp_Log_inv.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_E.con". + +(* UNEXPORTED +Hint Resolve Log_E: algebra. +*) + +(*#* Several rules regarding inequalities. *) + +inline procedural "cic:/CoRN/transc/Exponential/Log_cancel_less.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_cancel_leEq.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_resp_less.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_resp_leEq.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_cancel_less.con". + +inline procedural "cic:/CoRN/transc/Exponential/Exp_cancel_leEq.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_less_Zero.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_leEq_Zero.con". + +inline procedural "cic:/CoRN/transc/Exponential/Zero_less_Log.con". + +inline procedural "cic:/CoRN/transc/Exponential/Zero_leEq_Log.con". + +(*#* Finally, rules for logarithm of quotients. *) + +inline procedural "cic:/CoRN/transc/Exponential/Log_recip_char.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_recip.con". + +(* UNEXPORTED +Hint Resolve Log_recip: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Log_recip'.con". + +inline procedural "cic:/CoRN/transc/Exponential/Log_div.con". + +(* UNEXPORTED +Hint Resolve Log_div: algebra. +*) + +inline procedural "cic:/CoRN/transc/Exponential/Log_div'.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/InvTrigonom.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/InvTrigonom.mma new file mode 100644 index 000000000..a04a19c37 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/InvTrigonom.mma @@ -0,0 +1,294 @@ +(**************************************************************************) +(* ___ *) +(* ||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: InvTrigonom.v,v 1.9 2004/04/23 10:01:07 lcf Exp $ *) + +include "transc/RealPowers.ma". + +include "transc/TrigMon.ma". + +include "ftc/StrongIVT.ma". + +(*#* printing ArcSin %\ensuremath{\arcsin}% *) + +(*#* printing ArcCos %\ensuremath{\arccos}% *) + +(*#* printing ArcTan %\ensuremath{\arctan}% *) + +(*#* *Inverse Trigonometric Functions + +**Definitions + +We will now define arcsine, arccosine and arctangent as indefinite +integrals and prove their main properties. We begin by proving that +the appropriate indefinite integrals can be defined, then prove the +main properties of the function. + +Arccosine is defined in terms of arcsine by the relation +[ArcCos(x)=Pi[/]Two-ArcSin(x)]. + +***Arcsine +*) + +(* UNEXPORTED +Opaque Sine Cosine Expon Logarithm. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin_def_lemma.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin_def_zero.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin_domain.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Continuous_ArcSin.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Derivative_ArcSin.con". + +(* UNEXPORTED +Hint Resolve Derivative_ArcSin: derivate. +*) + +(* UNEXPORTED +Hint Resolve Continuous_ArcSin: continuous. +*) + +(*#* ***Arccosine +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcCos.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcCos_domain.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Continuous_ArcCos.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Derivative_ArcCos.con". + +(*#* ***Arctangent +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTan_def_lemma.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTang.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTan_domain.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTan.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Continuous_ArcTan.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Derivative_ArcTan.con". + +(* UNEXPORTED +Hint Resolve Derivative_ArcCos Derivative_ArcTan: derivate. +*) + +(* UNEXPORTED +Hint Resolve Continuous_ArcCos Continuous_ArcTan: continuous. +*) + +(* UNEXPORTED +Section Inverses +*) + +(*#* **Composition properties + +We now prove that this functions are in fact inverses to the corresponding trigonometric functions. + +***Sine and Arcsine +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/maps_Sin.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin_Sin_inv.con". + +(* UNEXPORTED +Opaque ArcSin. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin_Sin.con". + +(* UNEXPORTED +Transparent ArcSin. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin_range.con". + +(* UNEXPORTED +Transparent ArcSin. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/Sin_ArcSin.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Sin_ArcSin_inv.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcSin_resp_leEq.con". + +(*#* ***Cosine and Arcosine +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcCos_Cos.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Cos_ArcCos.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcCos_Cos_inv.con". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Cos_ArcCos_inv.con". + +(* UNEXPORTED +Opaque ArcSin. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcCos_resp_leEq.con". + +(*#* ***Tangent and Arctangent +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/maps_Tan.con". + +(* UNEXPORTED +Opaque Tang. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTan_Tan_inv.con". + +(* UNEXPORTED +Transparent Tang. +*) + +(* UNEXPORTED +Opaque ArcTang. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTan_Tan.con". + +(* UNEXPORTED +Opaque iprop. +*) + +(* UNEXPORTED +Transparent iprop. +*) + +(* UNEXPORTED +Opaque Cos. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/Tan_ilim.con". + +(* UNEXPORTED +Opaque Min. +*) + +(* UNEXPORTED +Transparent Cos. +*) + +(* UNEXPORTED +Section ArcTan_Range +*) + +alias id "x" = "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/x.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/min.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/max.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/min1.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/min2.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/min3.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/min4.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/max1.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/max2.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/max3.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/max4.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/min5.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/min6.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/max5.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/max6.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/a.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/a1.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/a2.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/a3.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/a4.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/a5.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/b.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/b1.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/b2.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/b3.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/b4.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/b5.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/Inverses/ArcTan_Range/ab.con" "Inverses__ArcTan_Range__". + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTan_range_lemma.con". + +(* end hide *) + +(* UNEXPORTED +Transparent ArcTang. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/ArcTan_range.con". + +(* UNEXPORTED +End ArcTan_Range +*) + +(* UNEXPORTED +Transparent ArcTang. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/Tan_ArcTan.con". + +(* UNEXPORTED +Opaque ArcTang. +*) + +inline procedural "cic:/CoRN/transc/InvTrigonom/Tan_ArcTan_inv.con". + +(* UNEXPORTED +End Inverses +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/Pi.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/Pi.mma new file mode 100644 index 000000000..ee9e30e70 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/Pi.mma @@ -0,0 +1,285 @@ +(**************************************************************************) +(* ___ *) +(* ||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". + +include "transc/SinCos.ma". + +(* UNEXPORTED +Section Properties_of_Pi +*) + +(*#* printing Pi %\ensuremath{\pi}% #π# *) + +(*#* **Definition of Pi + +[Pi] is defined as twice the first positive zero of the cosine. In order to do this, we follow the construction described in Bishop 1969, section 7. +*) + +inline procedural "cic:/CoRN/transc/Pi/pi_seq.con". + +(* UNEXPORTED +Opaque Cosine. +*) + +(* begin hide *) + +(* UNEXPORTED +Opaque Sine. +*) + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_lemma.con". + +(* end hide *) + +(*#* +This sequence is nonnegative and the cosine of any number between +[Zero] and any of its values is strictly positive; therefore the +sequence is strictly increasing. +*) + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_nonneg.con". + +inline procedural "cic:/CoRN/transc/Pi/cos_pi_seq_pos.con". + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_incr.con". + +(*#* Trivial---but useful---consequences. *) + +inline procedural "cic:/CoRN/transc/Pi/sin_pi_seq_mon.con". + +inline procedural "cic:/CoRN/transc/Pi/sin_pi_seq_nonneg.con". + +inline procedural "cic:/CoRN/transc/Pi/sin_pi_seq_gt_one.con". + +inline procedural "cic:/CoRN/transc/Pi/cos_pi_seq_mon.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_gt_one.con". + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_bnd.con". + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_bnd'.con". + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_bnd''.con". + +(* end hide *) + +(*#* An auxiliary result. *) + +inline procedural "cic:/CoRN/transc/Pi/Sin_One_pos.con". + +(*#* We can now prove that this is a Cauchy sequence. We define [Pi] as +twice its limit. +*) + +inline procedural "cic:/CoRN/transc/Pi/pi_seq_Cauchy.con". + +inline procedural "cic:/CoRN/transc/Pi/Pi.con". + +(*#* +For $x\in[0,\frac{\pi}2)$#x∈[0,π/2)#, [(Cos x) [>] 0]; +$\cos(\frac{pi}2)=0$#cos(π/2)=0#. +*) + +inline procedural "cic:/CoRN/transc/Pi/pos_cos.con". + +inline procedural "cic:/CoRN/transc/Pi/Cos_HalfPi.con". + +(*#* Convergence to [Pi [/] Two] is increasing; therefore, [Pi] is positive. *) + +inline procedural "cic:/CoRN/transc/Pi/HalfPi_gt_pi_seq.con". + +inline procedural "cic:/CoRN/transc/Pi/pos_Pi.con". + +(* UNEXPORTED +End Properties_of_Pi +*) + +(* UNEXPORTED +Hint Resolve Cos_HalfPi: algebra. +*) + +(* UNEXPORTED +Section Pi_and_Order +*) + +(*#* **Properties of Pi + +The following are trivial ordering properties of multiples of [Pi] +that will be used so often that it is convenient to state as lemmas; +also, we define a hint database that automatically tries to apply this +lemmas, to make proof development easier. + +A summary of what is being proved is simply: +[[ +[--]Pi [<] [--]Pi[/]Two [<] [--] Pi[/]Four [<] Zero [<] Pi[/]Four [<] Pi[/]Two [<] Pi +]] + +[PiSolve] will prove any of these inequalities. +*) + +inline procedural "cic:/CoRN/transc/Pi/pos_HalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/pos_QuarterPi.con". + +inline procedural "cic:/CoRN/transc/Pi/QuarterPi_less_HalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/HalfPi_less_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/QuarterPi_less_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/neg_invPi.con". + +inline procedural "cic:/CoRN/transc/Pi/neg_invHalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/neg_invQuarterPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invHalfPi_less_invQuarterPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invPi_less_invHalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invPi_less_invQuarterPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invPi_less_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/invPi_less_HalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invPi_less_QuarterPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invHalfPi_less_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/invHalfPi_less_HalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invHalfPi_less_QuarterPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invQuarterPi_less_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/invQuarterPi_less_HalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/invQuarterPi_less_QuarterPi.con". + +(* UNEXPORTED +End Pi_and_Order +*) + +(* UNEXPORTED +Hint Resolve pos_Pi pos_HalfPi pos_QuarterPi QuarterPi_less_HalfPi + HalfPi_less_Pi QuarterPi_less_Pi neg_invPi neg_invHalfPi neg_invQuarterPi + invHalfPi_less_invQuarterPi invPi_less_invHalfPi invPi_less_invQuarterPi + invPi_less_Pi invPi_less_HalfPi invPi_less_QuarterPi invHalfPi_less_Pi + invHalfPi_less_HalfPi invHalfPi_less_QuarterPi invQuarterPi_less_Pi + invQuarterPi_less_HalfPi invQuarterPi_less_QuarterPi: piorder. +*) + +(* begin hide *) + +(* UNEXPORTED +Ltac PiSolve := try apply less_leEq; auto with piorder. +*) + +(* end hide *) + +(* UNEXPORTED +Section Sin_And_Cos +*) + +(*#* **More formulas + +We now move back to trigonometric identities: sine, cosine and tangent of +the double. +*) + +inline procedural "cic:/CoRN/transc/Pi/Cos_double.con". + +inline procedural "cic:/CoRN/transc/Pi/Sin_double.con". + +inline procedural "cic:/CoRN/transc/Pi/Tan_double.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/Pi/sqrt_lemma.con". + +(* end hide *) + +(*#* Value of trigonometric functions at [Pi[/]Four]. *) + +inline procedural "cic:/CoRN/transc/Pi/Cos_QuarterPi.con". + +inline procedural "cic:/CoRN/transc/Pi/Sin_QuarterPi.con". + +(* UNEXPORTED +Hint Resolve Sin_QuarterPi Cos_QuarterPi: algebra. +*) + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +inline procedural "cic:/CoRN/transc/Pi/Tan_QuarterPi.con". + +(*#* Shifting sine and cosine by [Pi[/]Two] and [Pi]. *) + +inline procedural "cic:/CoRN/transc/Pi/Sin_HalfPi.con". + +(* UNEXPORTED +Hint Resolve Sin_HalfPi: algebra. +*) + +inline procedural "cic:/CoRN/transc/Pi/Sin_plus_HalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/Sin_HalfPi_minus.con". + +inline procedural "cic:/CoRN/transc/Pi/Cos_plus_HalfPi.con". + +inline procedural "cic:/CoRN/transc/Pi/Cos_HalfPi_minus.con". + +inline procedural "cic:/CoRN/transc/Pi/Sin_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/Cos_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/Sin_plus_Pi.con". + +inline procedural "cic:/CoRN/transc/Pi/Cos_plus_Pi.con". + +(* UNEXPORTED +Hint Resolve Sin_plus_Pi Cos_plus_Pi: algebra. +*) + +(*#* Sine and cosine have period [Two Pi], tangent has period [Pi]. *) + +inline procedural "cic:/CoRN/transc/Pi/Sin_periodic.con". + +inline procedural "cic:/CoRN/transc/Pi/Cos_periodic.con". + +inline procedural "cic:/CoRN/transc/Pi/Tan_periodic.con". + +(* UNEXPORTED +End Sin_And_Cos +*) + +(* UNEXPORTED +Hint Resolve Cos_double Sin_double Tan_double Cos_QuarterPi Sin_QuarterPi + Tan_QuarterPi Sin_Pi Cos_Pi Sin_HalfPi Sin_plus_HalfPi Sin_HalfPi_minus + Cos_plus_HalfPi Cos_HalfPi_minus Sin_plus_Pi Cos_plus_Pi Sin_periodic + Cos_periodic Tan_periodic: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/PowerSeries.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/PowerSeries.mma new file mode 100644 index 000000000..e7c5c6f7d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/PowerSeries.mma @@ -0,0 +1,240 @@ +(**************************************************************************) +(* ___ *) +(* ||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: PowerSeries.v,v 1.8 2004/04/23 10:01:08 lcf Exp $ *) + +(*#* printing Exp %\ensuremath{\exp}% *) + +(*#* printing Sin %\ensuremath{\sin}% *) + +(*#* printing Cos %\ensuremath{\cos}% *) + +(*#* printing Log %\ensuremath{\log}% *) + +(*#* printing Tan %\ensuremath{\tan}% *) + +include "ftc/FTC.ma". + +(*#* *More on Power Series + +We will now formally define an operator that defines a function as the +sum of some series given a number sequence. Along with it, we will +prove some important properties of these entities. +*) + +(* UNEXPORTED +Section Power_Series +*) + +(*#* **General results + +%\begin{convention}% Let [J : interval] and [x0 : IR] be a point of [J]. +Let [a : nat -> IR]. +%\end{convention}% +*) + +alias id "J" = "cic:/CoRN/transc/PowerSeries/Power_Series/J.var". + +alias id "x0" = "cic:/CoRN/transc/PowerSeries/Power_Series/x0.var". + +alias id "Hx0" = "cic:/CoRN/transc/PowerSeries/Power_Series/Hx0.var". + +alias id "a" = "cic:/CoRN/transc/PowerSeries/Power_Series/a.var". + +inline procedural "cic:/CoRN/transc/PowerSeries/FPowerSeries.con". + +(*#* +The most important convergence criterium specifically for power series +is the Dirichlet criterium. +*) + +(* begin show *) + +alias id "Ha" = "cic:/CoRN/transc/PowerSeries/Power_Series/Ha.var". + +inline procedural "cic:/CoRN/transc/PowerSeries/Power_Series/r.con" "Power_Series__". + +inline procedural "cic:/CoRN/transc/PowerSeries/Power_Series/Hr.con" "Power_Series__". + +(* end show *) + +inline procedural "cic:/CoRN/transc/PowerSeries/Dirichlet_crit.con". + +(*#* +When defining a function using its Taylor series as a motivation, the following operator can be of use. +*) + +inline procedural "cic:/CoRN/transc/PowerSeries/FPowerSeries'.con". + +(*#* +This function is also continuous and has a good convergence ratio. +*) + +inline procedural "cic:/CoRN/transc/PowerSeries/FPowerSeries'_cont.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/included_FPowerSeries'.con". + +(* begin show *) + +alias id "Ha'" = "cic:/CoRN/transc/PowerSeries/Power_Series/Ha'.var". + +(* end show *) + +inline procedural "cic:/CoRN/transc/PowerSeries/FPowerSeries'_conv'.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/FPowerSeries'_conv.con". + +(* UNEXPORTED +End Power_Series +*) + +(* UNEXPORTED +Hint Resolve FPowerSeries'_cont: continuous. +*) + +(* UNEXPORTED +Section More_on_PowerSeries +*) + +(*#* +%\begin{convention}% Let [F] and [G] be the power series defined +respectively by [a] and by [fun n => (a (S n))]. +%\end{convention}% +*) + +alias id "x0" = "cic:/CoRN/transc/PowerSeries/More_on_PowerSeries/x0.var". + +alias id "a" = "cic:/CoRN/transc/PowerSeries/More_on_PowerSeries/a.var". + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/PowerSeries/More_on_PowerSeries/F.con" "More_on_PowerSeries__". + +inline procedural "cic:/CoRN/transc/PowerSeries/More_on_PowerSeries/G.con" "More_on_PowerSeries__". + +(* end hide *) + +(* begin show *) + +alias id "Hf" = "cic:/CoRN/transc/PowerSeries/More_on_PowerSeries/Hf.var". + +alias id "Hf'" = "cic:/CoRN/transc/PowerSeries/More_on_PowerSeries/Hf'.var". + +alias id "Hg" = "cic:/CoRN/transc/PowerSeries/More_on_PowerSeries/Hg.var". + +(* end show *) + +(*#* We get a comparison test for power series. *) + +inline procedural "cic:/CoRN/transc/PowerSeries/FPowerSeries'_comp.con". + +(*#* And a rule for differentiation. *) + +(* UNEXPORTED +Opaque nring fac. +*) + +inline procedural "cic:/CoRN/transc/PowerSeries/Derivative_FPowerSeries1'.con". + +(* UNEXPORTED +End More_on_PowerSeries +*) + +(* UNEXPORTED +Section Definitions +*) + +(*#* **Function definitions through power series + +We now define the exponential, sine and cosine functions as power +series, and prove their convergence. Tangent is defined as the +quotient of sine over cosine. +*) + +inline procedural "cic:/CoRN/transc/PowerSeries/Exp_ps.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/sin_seq.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/sin_ps.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/cos_seq.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/cos_ps.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Exp_conv'.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Exp_conv.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/sin_conv.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/cos_conv.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Expon.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Sine.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Cosine.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Tang.con". + +(*#* +Some auxiliary domain results. +*) + +inline procedural "cic:/CoRN/transc/PowerSeries/Exp_domain.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/sin_domain.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/cos_domain.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/included_Exp.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/included_Sin.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/included_Cos.con". + +(*#* +Definition of the logarithm. +*) + +inline procedural "cic:/CoRN/transc/PowerSeries/log_defn_lemma.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Logarithm.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Hint Resolve included_Exp included_Sin included_Cos: included. +*) + +(*#* +As most of these functions are total, it makes sense to treat them as setoid functions on the reals. In the case of logarithm and tangent, this is not possible; however, we still define some abbreviations for aesthetical reasons. +*) + +inline procedural "cic:/CoRN/transc/PowerSeries/Exp.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Sin.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Cos.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Log.con". + +inline procedural "cic:/CoRN/transc/PowerSeries/Tan.con". + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/RealPowers.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/RealPowers.mma new file mode 100644 index 000000000..0f55d9769 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/RealPowers.mma @@ -0,0 +1,195 @@ +(**************************************************************************) +(* ___ *) +(* ||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: RealPowers.v,v 1.5 2004/04/23 10:01:08 lcf Exp $ *) + +(*#* printing [!] %\ensuremath{\hat{\ }}% #^# *) + +(*#* printing {!} %\ensuremath{\hat{\ }}% #^# *) + +include "transc/Exponential.ma". + +(* UNEXPORTED +Opaque Expon. +*) + +(*#* *Arbitrary Real Powers + +**Powers of Real Numbers + +We now define +$x^y=e^{y\times\log(x)}$#xy=ey*log(x)#, whenever +[x [>] 0], inspired by the rules for manipulating these expressions. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power.con". + +(* NOTATION +Notation "x [!] y [//] Hy" := (power x y Hy) (at level 20). +*) + +(*#* +This definition yields a well defined, strongly extensional function +which extends the algebraic exponentiation to an integer power and +still has all the good properties of that operation; when [x [=] e] it +coincides with the exponential function. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power_wd.con". + +inline procedural "cic:/CoRN/transc/RealPowers/power_strext.con". + +inline procedural "cic:/CoRN/transc/RealPowers/power_plus.con". + +inline procedural "cic:/CoRN/transc/RealPowers/power_inv.con". + +(* UNEXPORTED +Hint Resolve power_wd power_plus power_inv: algebra. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power_minus.con". + +inline procedural "cic:/CoRN/transc/RealPowers/power_nat.con". + +(* UNEXPORTED +Hint Resolve power_minus power_nat: algebra. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power_zero.con". + +inline procedural "cic:/CoRN/transc/RealPowers/power_one.con". + +(* UNEXPORTED +Hint Resolve power_zero power_one: algebra. +*) + +(* UNEXPORTED +Opaque nexp_op. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power_int.con". + +(* UNEXPORTED +Hint Resolve power_int: algebra. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/Exp_power.con". + +inline procedural "cic:/CoRN/transc/RealPowers/mult_power.con". + +inline procedural "cic:/CoRN/transc/RealPowers/recip_power.con". + +(* UNEXPORTED +Hint Resolve Exp_power mult_power recip_power: algebra. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/div_power.con". + +(* UNEXPORTED +Hint Resolve div_power: algebra. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power_ap_zero.con". + +inline procedural "cic:/CoRN/transc/RealPowers/power_mult.con". + +inline procedural "cic:/CoRN/transc/RealPowers/power_pos.con". + +(* UNEXPORTED +Hint Resolve power_mult: algebra. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power_recip.con". + +(* UNEXPORTED +Hint Resolve power_recip: algebra. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/power_div.con". + +(* UNEXPORTED +Hint Resolve power_div: algebra. +*) + +(* UNEXPORTED +Section Power_Function +*) + +(*#* **Power Function + +This operation on real numbers gives birth to an analogous operation +on partial functions which preserves continuity. + +%\begin{convention}% Let [F, G : PartIR]. +%\end{convention}% +*) + +alias id "J" = "cic:/CoRN/transc/RealPowers/Power_Function/J.var". + +alias id "F" = "cic:/CoRN/transc/RealPowers/Power_Function/F.var". + +alias id "G" = "cic:/CoRN/transc/RealPowers/Power_Function/G.var". + +inline procedural "cic:/CoRN/transc/RealPowers/FPower.con". + +inline procedural "cic:/CoRN/transc/RealPowers/FPower_domain.con". + +inline procedural "cic:/CoRN/transc/RealPowers/Continuous_power.con". + +(* UNEXPORTED +End Power_Function +*) + +(* NOTATION +Notation "F {!} G" := (FPower F G) (at level 20). +*) + +(* UNEXPORTED +Section More_on_Power_Function +*) + +(* UNEXPORTED +Opaque Expon Logarithm. +*) + +(*#* From global continuity we can obviously get local continuity: *) + +inline procedural "cic:/CoRN/transc/RealPowers/continuous_I_power.con". + +(*#* The rule for differentiation is a must. *) + +(* UNEXPORTED +Transparent Logarithm. +*) + +(* UNEXPORTED +Opaque Logarithm. +*) + +inline procedural "cic:/CoRN/transc/RealPowers/Derivative_power.con". + +inline procedural "cic:/CoRN/transc/RealPowers/Diffble_power.con". + +(* UNEXPORTED +End More_on_Power_Function +*) + +(* UNEXPORTED +Hint Resolve Derivative_power: derivate. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/SinCos.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/SinCos.mma new file mode 100644 index 000000000..3ff87c6c6 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/SinCos.mma @@ -0,0 +1,174 @@ +(**************************************************************************) +(* ___ *) +(* ||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: SinCos.v,v 1.6 2004/04/23 10:01:08 lcf Exp $ *) + +include "transc/Trigonometric.ma". + +(* UNEXPORTED +Section Sum_and_so_on +*) + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/SinCos/Sum_and_so_on/F.con" "Sum_and_so_on__". + +inline procedural "cic:/CoRN/transc/SinCos/Sum_and_so_on/G.con" "Sum_and_so_on__". + +inline procedural "cic:/CoRN/transc/SinCos/Sum_and_so_on/F'.con" "Sum_and_so_on__". + +inline procedural "cic:/CoRN/transc/SinCos/Sum_and_so_on/G'.con" "Sum_and_so_on__". + +(* end hide *) + +inline procedural "cic:/CoRN/transc/SinCos/Sin_plus.con". + +inline procedural "cic:/CoRN/transc/SinCos/Cos_plus.con". + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +(* UNEXPORTED +Hint Resolve Cos_plus Sin_plus: algebra. +*) + +(*#* As a corollary we get the rule for the tangent of the sum. *) + +inline procedural "cic:/CoRN/transc/SinCos/Tan_plus.con". + +(* UNEXPORTED +Transparent Sine Cosine. +*) + +(*#* Sine, cosine and tangent of [[--]x]. *) + +inline procedural "cic:/CoRN/transc/SinCos/Cos_inv.con". + +inline procedural "cic:/CoRN/transc/SinCos/Sin_inv.con". + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +(* UNEXPORTED +Hint Resolve Cos_inv Sin_inv: algebra. +*) + +inline procedural "cic:/CoRN/transc/SinCos/Tan_inv.con". + +(* UNEXPORTED +Transparent Sine Cosine. +*) + +(*#* +The fundamental formulas of trigonometry: $\cos(x)^2+\sin(x)^2=1$#cos(x)2+sin(x)2=1# and, equivalently, $1+\tan(x)^2=\frac1{\cos(x)^2}$#1+tan(x)2=1/(cos(x)2)#. +*) + +(* UNEXPORTED +Hint Resolve Cos_zero: algebra. +*) + +inline procedural "cic:/CoRN/transc/SinCos/FFT.con". + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +(* UNEXPORTED +Hint Resolve FFT: algebra. +*) + +inline procedural "cic:/CoRN/transc/SinCos/FFT'.con". + +(* UNEXPORTED +End Sum_and_so_on +*) + +(* UNEXPORTED +Hint Resolve Derivative_Sin Derivative_Cos: derivate. +*) + +(* UNEXPORTED +Hint Resolve Continuous_Sin Continuous_Cos: continuous. +*) + +(* UNEXPORTED +Hint Resolve Sin_zero Cos_zero Tan_zero Sin_plus Cos_plus Tan_plus Sin_inv + Cos_inv Tan_inv FFT FFT': algebra. +*) + +(* UNEXPORTED +Opaque Min Sine Cosine. +*) + +(* UNEXPORTED +Section Basic_Properties +*) + +(*#* **Basic properties + +We now prove most of the usual trigonometric (in)equalities. + +Sine, cosine and tangent are strongly extensional and well defined. +*) + +inline procedural "cic:/CoRN/transc/SinCos/Sin_strext.con". + +inline procedural "cic:/CoRN/transc/SinCos/Cos_strext.con". + +inline procedural "cic:/CoRN/transc/SinCos/Tan_strext.con". + +inline procedural "cic:/CoRN/transc/SinCos/Sin_wd.con". + +inline procedural "cic:/CoRN/transc/SinCos/Cos_wd.con". + +inline procedural "cic:/CoRN/transc/SinCos/Tan_wd.con". + +(*#* +The sine and cosine produce values in [[-1,1]]. +*) + +inline procedural "cic:/CoRN/transc/SinCos/AbsIR_Sin_leEq_One.con". + +inline procedural "cic:/CoRN/transc/SinCos/AbsIR_Cos_leEq_One.con". + +inline procedural "cic:/CoRN/transc/SinCos/Sin_leEq_One.con". + +inline procedural "cic:/CoRN/transc/SinCos/Cos_leEq_One.con". + +(*#* +If the cosine is positive then the sine is in [(-1,1)]. +*) + +inline procedural "cic:/CoRN/transc/SinCos/Sin_less_One.con". + +inline procedural "cic:/CoRN/transc/SinCos/AbsIR_Sin_less_One.con". + +(* UNEXPORTED +End Basic_Properties +*) + +(* UNEXPORTED +Hint Resolve Sin_wd Cos_wd Tan_wd: algebra. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/TaylorSeries.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/TaylorSeries.mma new file mode 100644 index 000000000..758d5afa6 --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/TaylorSeries.mma @@ -0,0 +1,256 @@ +(**************************************************************************) +(* ___ *) +(* ||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: TaylorSeries.v,v 1.7 2004/04/23 10:01:08 lcf Exp $ *) + +include "transc/PowerSeries.ma". + +include "ftc/Taylor.ma". + +(*#* *Taylor Series + +We now generalize our work on Taylor's theorem to define the Taylor +series of an infinitely many times differentiable function as a power +series. We prove convergence (always) of the Taylor series and give +criteria for when the sum of this series is the original function. + +**Definitions + +%\begin{convention}% Let [J] be a proper interval and [F] an +infinitely many times differentiable function in [J]. Let [a] be a +point of [J]. +%\end{convention}% +*) + +(* UNEXPORTED +Section Definitions +*) + +alias id "J" = "cic:/CoRN/transc/TaylorSeries/Definitions/J.var". + +alias id "pJ" = "cic:/CoRN/transc/TaylorSeries/Definitions/pJ.var". + +alias id "F" = "cic:/CoRN/transc/TaylorSeries/Definitions/F.var". + +alias id "diffF" = "cic:/CoRN/transc/TaylorSeries/Definitions/diffF.var". + +alias id "a" = "cic:/CoRN/transc/TaylorSeries/Definitions/a.var". + +alias id "Ha" = "cic:/CoRN/transc/TaylorSeries/Definitions/Ha.var". + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series'.con". + +(*#* +%\begin{convention}% Assume also that [f] is the sequence of +derivatives of [F]. +%\end{convention}% +*) + +alias id "f" = "cic:/CoRN/transc/TaylorSeries/Definitions/f.var". + +alias id "derF" = "cic:/CoRN/transc/TaylorSeries/Definitions/derF.var". + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series.con". + +(* UNEXPORTED +Opaque N_Deriv. +*) + +(*#* Characterizations of the Taylor remainder. *) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Rem_char.con". + +inline procedural "cic:/CoRN/transc/TaylorSeries/abs_Taylor_Rem_char.con". + +(* UNEXPORTED +End Definitions +*) + +(* UNEXPORTED +Section Convergence_in_IR +*) + +(*#* **Convergence + +Our interval is now the real line. We begin by proving some helpful +continuity properties, then define a boundedness condition for the +derivatives of [F] that guarantees convergence of its Taylor series to +[F]. +*) + +alias id "H" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/H.var". + +alias id "F" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/F.var". + +alias id "a" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/a.var". + +alias id "Ha" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/Ha.var". + +alias id "f" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/f.var". + +alias id "derF" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/derF.var". + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series_imp_cont.con". + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series_lemma_cont.con". + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_bnd.con". + +(* begin show *) + +alias id "bndf" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/bndf.var". + +(* end show *) + +(* UNEXPORTED +Opaque nexp_op fac. +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/H1.con" "Convergence_in_IR__". + +(* UNEXPORTED +Transparent nexp_op. +*) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series_conv_lemma1.con". + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series_conv_lemma2.con". + +(* end hide *) + +(*#* The Taylor series always converges on the realline. *) + +(* UNEXPORTED +Transparent nexp_op. +*) + +(* UNEXPORTED +Opaque nexp_op. +*) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series_conv_IR.con". + +(* begin hide *) + +(* UNEXPORTED +Transparent nexp_op. +*) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_majoration_lemma.con". + +(* UNEXPORTED +Opaque N_Deriv fac. +*) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series_conv_lemma3.con". + +(* end hide *) + +(*#* +We now prove that, under our assumptions, it actually converges to the +original function. For generality and also usability, however, we +will separately assume convergence. +*) + +(* begin show *) + +alias id "Hf" = "cic:/CoRN/transc/TaylorSeries/Convergence_in_IR/Hf.var". + +(* end show *) + +(* UNEXPORTED +Transparent fac. +*) + +(* UNEXPORTED +Opaque mult. +*) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_Series_conv_to_fun.con". + +(* UNEXPORTED +End Convergence_in_IR +*) + +(* UNEXPORTED +Section Other_Results +*) + +(*#* +The condition for the previous lemma is not very easy to prove. We +give some helpful lemmas. +*) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_bnd_trans.con". + +(* begin hide *) + +(* UNEXPORTED +Opaque nexp_op. +*) + +inline procedural "cic:/CoRN/transc/TaylorSeries/convergence_lemma.con". + +(* end hide *) + +inline procedural "cic:/CoRN/transc/TaylorSeries/bnd_imp_Taylor_bnd.con". + +(*#* +Finally, a uniqueness criterium: two functions [F] and [G] are equal, +provided that their derivatives coincide at a given point and their +Taylor series converge to themselves. +*) + +alias id "F" = "cic:/CoRN/transc/TaylorSeries/Other_Results/F.var". + +alias id "G" = "cic:/CoRN/transc/TaylorSeries/Other_Results/G.var". + +alias id "a" = "cic:/CoRN/transc/TaylorSeries/Other_Results/a.var". + +alias id "f" = "cic:/CoRN/transc/TaylorSeries/Other_Results/f.var". + +alias id "g" = "cic:/CoRN/transc/TaylorSeries/Other_Results/g.var". + +alias id "derF" = "cic:/CoRN/transc/TaylorSeries/Other_Results/derF.var". + +alias id "derG" = "cic:/CoRN/transc/TaylorSeries/Other_Results/derG.var". + +alias id "bndf" = "cic:/CoRN/transc/TaylorSeries/Other_Results/bndf.var". + +alias id "bndg" = "cic:/CoRN/transc/TaylorSeries/Other_Results/bndg.var". + +(* begin show *) + +alias id "Heq" = "cic:/CoRN/transc/TaylorSeries/Other_Results/Heq.var". + +(* end show *) + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Other_Results/Hf.con" "Other_Results__". + +(* end hide *) + +inline procedural "cic:/CoRN/transc/TaylorSeries/Taylor_unique_crit.con". + +(* UNEXPORTED +End Other_Results +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/TrigMon.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/TrigMon.mma new file mode 100644 index 000000000..36e35ac4f --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/TrigMon.mma @@ -0,0 +1,101 @@ +(**************************************************************************) +(* ___ *) +(* ||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: TrigMon.v,v 1.9 2004/04/23 10:01:08 lcf Exp $ *) + +include "transc/Pi.ma". + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +(*#* +Sign properties: cosine is positive in +$(-\frac{\pi}2,\frac{\pi}2)$#(-π/2,π/2)#, sine in +$(0,\pi)$#(0,π)# and tangent in $(0,\frac{\pi}2)$#0,π/2)#. +*) + +inline procedural "cic:/CoRN/transc/TrigMon/Cos_pos.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Sin_pos.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Tan_pos.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Cos_nonneg.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Sin_nonneg.con". + +(*#* Consequences. *) + +inline procedural "cic:/CoRN/transc/TrigMon/Abs_Sin_less_One.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Abs_Cos_less_One.con". + +(*#* +Sine is (strictly) increasing in [[ [--]Pi[/]Two,Pi[/]Two]]; cosine +is (strictly) decreasing in [[Zero,Pi]]. +*) + +inline procedural "cic:/CoRN/transc/TrigMon/Sin_resp_leEq.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Cos_resp_leEq.con". + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/TrigMon/Cos_resp_less_aux.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Cos_resp_less_aux'.con". + +(* end hide *) + +inline procedural "cic:/CoRN/transc/TrigMon/Cos_resp_less.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Sin_resp_less.con". + +(* UNEXPORTED +Section Tangent +*) + +(*#* **Derivative of Tangent + +Finally, two formulas for the derivative of the tangent function and +monotonicity properties. +*) + +inline procedural "cic:/CoRN/transc/TrigMon/bnd_Cos.con". + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +inline procedural "cic:/CoRN/transc/TrigMon/Derivative_Tan_1.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Derivative_Tan_2.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Tan_resp_less.con". + +inline procedural "cic:/CoRN/transc/TrigMon/Tan_resp_leEq.con". + +(* UNEXPORTED +End Tangent +*) + +(* UNEXPORTED +Hint Resolve Derivative_Tan_1 Derivative_Tan_2: derivate. +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transc/Trigonometric.mma b/helm/software/matita/contribs/CoRN-Procedural/transc/Trigonometric.mma new file mode 100644 index 000000000..8c20f075d --- /dev/null +++ b/helm/software/matita/contribs/CoRN-Procedural/transc/Trigonometric.mma @@ -0,0 +1,214 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Trigonometric.v,v 1.5 2004/04/23 10:01:08 lcf Exp $ *) + +include "transc/TaylorSeries.ma". + +(*#* *The Trigonometric Functions + +In this section, we explore the properties of the trigonometric functions which we previously defined. +*) + +(* UNEXPORTED +Section Lemmas +*) + +(*#* First, we need a lemma on mappings. *) + +inline procedural "cic:/CoRN/transc/Trigonometric/maps_translation.con". + +(* UNEXPORTED +End Lemmas +*) + +(* UNEXPORTED +Section Sine_and_Cosine +*) + +(*#* Sine, cosine and tangent at [Zero]. *) + +inline procedural "cic:/CoRN/transc/Trigonometric/Sin_zero.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Cos_zero.con". + +(* UNEXPORTED +Hint Resolve Sin_zero Cos_zero: algebra. +*) + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +inline procedural "cic:/CoRN/transc/Trigonometric/Tan_zero.con". + +(* UNEXPORTED +Transparent Sine Cosine. +*) + +(*#* +Continuity of sine and cosine are trivial. +*) + +inline procedural "cic:/CoRN/transc/Trigonometric/Continuous_Sin.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Continuous_Cos.con". + +(*#* +The rules for the derivative of the sine and cosine function; we begin by proving that their defining sequences can be expressed in terms of one another. +*) + +inline procedural "cic:/CoRN/transc/Trigonometric/cos_sin_seq.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/sin_cos_seq.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Derivative_Sin.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Derivative_Cos.con". + +(* UNEXPORTED +Hint Resolve Derivative_Sin Derivative_Cos: derivate. +*) + +(* UNEXPORTED +Hint Resolve Continuous_Sin Continuous_Cos: continuous. +*) + +(* UNEXPORTED +Section Sine_of_Sum +*) + +(*#* +We now prove the rule for the sine and cosine of the sum. These rules +have to be proved first as functional equalities, which is why we also +state the results in a function form (which we won't do in other +situations). + +%\begin{convention}% Let: + - [F := fun y => Sine[o] (FId{+} [-C-]y)]; + - [G := fun y => (Sine{*} [-C-] (Cos y)) {+} (Cosine{*} [-C-] (Sin y))]. + +%\end{convention}% +*) + +(* begin hide *) + +inline procedural "cic:/CoRN/transc/Trigonometric/Sine_and_Cosine/Sine_of_Sum/F.con" "Sine_and_Cosine__Sine_of_Sum__". + +inline procedural "cic:/CoRN/transc/Trigonometric/Sine_and_Cosine/Sine_of_Sum/G.con" "Sine_and_Cosine__Sine_of_Sum__". + +inline procedural "cic:/CoRN/transc/Trigonometric/Sine_and_Cosine/Sine_of_Sum/F'.con" "Sine_and_Cosine__Sine_of_Sum__". + +inline procedural "cic:/CoRN/transc/Trigonometric/Sine_and_Cosine/Sine_of_Sum/G'.con" "Sine_and_Cosine__Sine_of_Sum__". + +(* end hide *) + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +inline procedural "cic:/CoRN/transc/Trigonometric/Sin_plus_Taylor_bnd_lft.con". + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +(* UNEXPORTED +Opaque FAbs. +*) + +(* UNEXPORTED +Transparent FAbs. +*) + +inline procedural "cic:/CoRN/transc/Trigonometric/Sin_plus_Taylor_bnd_rht.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Sin_plus_eq.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Sin_plus_der_lft.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Sin_plus_der_rht.con". + +inline procedural "cic:/CoRN/transc/Trigonometric/Sin_plus_fun.con". + +(* UNEXPORTED +End Sine_of_Sum +*) + +(* UNEXPORTED +Opaque Sine Cosine. +*) + +inline procedural "cic:/CoRN/transc/Trigonometric/Cos_plus_fun.con". + +(* UNEXPORTED +End Sine_and_Cosine +*) + diff --git a/helm/software/matita/contribs/CoRN-Procedural/transcript.conf.xml b/helm/software/matita/contribs/CoRN-Procedural/transcript.conf.xml deleted file mode 100644 index ba028de36..000000000 --- a/helm/software/matita/contribs/CoRN-Procedural/transcript.conf.xml +++ /dev/null @@ -1,7 +0,0 @@ - - -
- matita.ma.templ - 14 -
-
diff --git a/helm/software/matita/matitaInit.ml b/helm/software/matita/matitaInit.ml index 129f2dabd..5ca8ffc82 100644 --- a/helm/software/matita/matitaInit.ml +++ b/helm/software/matita/matitaInit.ml @@ -170,10 +170,6 @@ let extra_cmdline_specs = ref [] let add_cmdline_spec l = extra_cmdline_specs := l @ !extra_cmdline_specs let parse_cmdline init_status = - let dump fname = - let atexit = MatitacLib.dump fname in - at_exit atexit - in if not (already_configured [CmdLine] init_status) then begin wants [Registry] init_status; let includes = ref [] in @@ -221,8 +217,6 @@ let parse_cmdline init_status = Helm_registry.set_bool "matita.system" true), ("Act on the system library instead of the user one" ^ "\n WARNING: not for the casual user"); - "-dump", Arg.String dump, - " Dump with expanded macros to "; "-v", Arg.Unit (fun () -> Helm_registry.set_bool "matita.verbose" true), "Verbose mode"; diff --git a/helm/software/matita/matitacLib.mli b/helm/software/matita/matitacLib.mli index 034aaedaf..7eaf1743e 100644 --- a/helm/software/matita/matitacLib.mli +++ b/helm/software/matita/matitacLib.mli @@ -23,10 +23,7 @@ * http://helm.cs.unibo.it/ *) -(* ma from mma generation: ma file -> atexit function *) -val dump: string -> 'a -> 'a - module Make : sig - val make: string -> string list -> bool + val make: string -> string list -> bool end diff --git a/helm/software/matita/matitadep.ml b/helm/software/matita/matitadep.ml index c0d784637..050fa220e 100644 --- a/helm/software/matita/matitadep.ml +++ b/helm/software/matita/matitadep.ml @@ -40,7 +40,8 @@ let fix_name f = else f in HExtlib.normalize_path f - + +(* FG: old function left for reference *) let exclude excluded_files files = let map file = not (List.mem (fix_name file) excluded_files) in List.filter map files @@ -48,7 +49,6 @@ let exclude excluded_files files = let main () = (* let _ = print_times "inizio" in *) let include_paths = ref [] in - let excluded_files = ref [] in let use_stdout = ref false in (* all are maps from "file" to "something" *) let include_deps = Hashtbl.create 13 in @@ -57,7 +57,6 @@ let main () = let dot_name = "depends" in let dot_file = ref "" in let set_dot_file () = dot_file := dot_name^".dot" in - let set_excluded_file name = excluded_files := name :: !excluded_files in (* helpers *) let rec baseuri_of_script s = try Hashtbl.find baseuri_of s @@ -91,8 +90,6 @@ let main () = MatitaInit.add_cmdline_spec ["-dot", Arg.Unit set_dot_file, "Save dependency graph in dot format and generate a png"; - "-exclude", Arg.String set_excluded_file, - "Exclude a file from the dependences"; "-stdout", Arg.Set use_stdout, "Print dependences on stdout" ]; @@ -127,7 +124,6 @@ let main () = prerr_endline ("\nEnter one of these directories and retry"); exit 1 in - let args = exclude !excluded_files args in let ma_files = args in (* here we go *) (* fills: @@ -150,22 +146,30 @@ let main () = try DependenciesParser.deps_of_file ma_file with Sys_error _ -> [] in + let handle_uri uri = + if not (Http_getter_storage.is_legacy uri) then + let dep = resolve uri ma_baseuri in + match dep with + | None -> () + | Some u -> + match script_of_baseuri ma_file u with + | Some d -> Hashtbl.add include_deps ma_file d + | None -> () + in + let handle_script path = + ignore (baseuri_of_script path); + Hashtbl.add include_deps ma_file path + in List.iter (function - | DependenciesParser.UriDep uri -> + | DependenciesParser.UriDep uri -> let uri = UriManager.string_of_uri uri in - if not (Http_getter_storage.is_legacy uri) then - let dep = resolve uri ma_baseuri in - (match dep with - | None -> () - | Some u -> - match script_of_baseuri ma_file u with - | Some d -> Hashtbl.add include_deps ma_file d - | None -> ()) - | DependenciesParser.InlineDep path - | DependenciesParser.IncludeDep path -> - ignore (baseuri_of_script path); - Hashtbl.add include_deps ma_file path) + handle_uri uri + | DependenciesParser.InlineDep path -> + if Librarian.is_uri path + then handle_uri path else handle_script path + | DependenciesParser.IncludeDep path -> + handle_script path) dependencies) ma_files; (* generate regular depend output *) @@ -214,5 +218,3 @@ let main () = HLog.message ("Type 'eog "^dot_name^".png' to view the graph"); end; (* let _ = print_times "fine" in () *) - - -- 2.39.2