diff options
55 files changed, 3777 insertions, 3874 deletions
@@ -38,10 +38,10 @@ kernel/indtypes.cmi: kernel/declarations.cmi kernel/entries.cmi \ kernel/univ.cmi kernel/inductive.cmi: kernel/declarations.cmi kernel/environ.cmi \ kernel/names.cmi kernel/term.cmi kernel/univ.cmi -kernel/mod_typing.cmi: kernel/declarations.cmi kernel/entries.cmi \ - kernel/environ.cmi kernel/modops.cmi: kernel/declarations.cmi kernel/entries.cmi \ kernel/environ.cmi kernel/names.cmi kernel/univ.cmi lib/util.cmi +kernel/mod_typing.cmi: kernel/declarations.cmi kernel/entries.cmi \ + kernel/environ.cmi kernel/names.cmi: lib/pp.cmi lib/predicate.cmi kernel/reduction.cmi: kernel/environ.cmi kernel/sign.cmi kernel/term.cmi \ kernel/univ.cmi @@ -61,9 +61,6 @@ kernel/typeops.cmi: kernel/entries.cmi kernel/environ.cmi kernel/names.cmi \ kernel/univ.cmi: kernel/names.cmi lib/pp.cmi lib/bignat.cmi: lib/pp.cmi lib/pp.cmi: lib/pp_control.cmi -lib/rtree.cmi: lib/pp.cmi -lib/system.cmi: lib/pp.cmi -lib/util.cmi: lib/pp.cmi library/declare.cmi: kernel/cooking.cmi library/decl_kinds.cmo \ kernel/declarations.cmi library/dischargedhypsmap.cmi kernel/entries.cmi \ kernel/indtypes.cmi library/libnames.cmi library/libobject.cmi \ @@ -93,6 +90,9 @@ library/nameops.cmi: kernel/names.cmi lib/pp.cmi library/nametab.cmi: library/libnames.cmi kernel/names.cmi lib/pp.cmi \ kernel/sign.cmi lib/util.cmi library/summary.cmi: library/libnames.cmi kernel/names.cmi +lib/rtree.cmi: lib/pp.cmi +lib/system.cmi: lib/pp.cmi +lib/util.cmi: lib/pp.cmi parsing/ast.cmi: parsing/coqast.cmi lib/dyn.cmi interp/genarg.cmi \ library/libnames.cmi kernel/names.cmi lib/pp.cmi interp/topconstr.cmi \ lib/util.cmi @@ -304,20 +304,20 @@ toplevel/recordobj.cmi: library/libnames.cmi proofs/tacexpr.cmo toplevel/searchisos.cmi: library/libobject.cmi kernel/names.cmi \ kernel/term.cmi toplevel/toplevel.cmi: parsing/pcoq.cmi lib/pp.cmi -toplevel/vernac.cmi: parsing/pcoq.cmi lib/util.cmi toplevel/vernacexpr.cmo toplevel/vernacentries.cmi: kernel/environ.cmi pretyping/evd.cmi \ library/libnames.cmi kernel/names.cmi kernel/term.cmi \ interp/topconstr.cmi toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi toplevel/vernacinterp.cmi: proofs/tacexpr.cmo +toplevel/vernac.cmi: parsing/pcoq.cmi lib/util.cmi toplevel/vernacexpr.cmo contrib/cc/ccalgo.cmi: kernel/names.cmi kernel/term.cmi contrib/cc/ccproof.cmi: contrib/cc/ccalgo.cmi kernel/names.cmi contrib/correctness/past.cmi: kernel/names.cmi contrib/correctness/ptype.cmi \ kernel/term.cmi interp/topconstr.cmi lib/util.cmi -contrib/correctness/pcic.cmi: contrib/correctness/past.cmi \ - pretyping/rawterm.cmi contrib/correctness/pcicenv.cmi: kernel/names.cmi \ contrib/correctness/penv.cmi contrib/correctness/prename.cmi \ kernel/sign.cmi kernel/term.cmi +contrib/correctness/pcic.cmi: contrib/correctness/past.cmi \ + pretyping/rawterm.cmi contrib/correctness/pdb.cmi: kernel/names.cmi contrib/correctness/past.cmi \ contrib/correctness/ptype.cmi contrib/correctness/peffect.cmi: kernel/names.cmi lib/pp.cmi @@ -546,6 +546,12 @@ kernel/inductive.cmo: kernel/declarations.cmi kernel/environ.cmi \ kernel/inductive.cmx: kernel/declarations.cmx kernel/environ.cmx \ kernel/names.cmx kernel/reduction.cmx kernel/sign.cmx kernel/term.cmx \ kernel/type_errors.cmx kernel/univ.cmx lib/util.cmx kernel/inductive.cmi +kernel/modops.cmo: kernel/declarations.cmi kernel/entries.cmi \ + kernel/environ.cmi kernel/names.cmi lib/pp.cmi kernel/term.cmi \ + kernel/univ.cmi lib/util.cmi kernel/modops.cmi +kernel/modops.cmx: kernel/declarations.cmx kernel/entries.cmx \ + kernel/environ.cmx kernel/names.cmx lib/pp.cmx kernel/term.cmx \ + kernel/univ.cmx lib/util.cmx kernel/modops.cmi kernel/mod_typing.cmo: kernel/declarations.cmi kernel/entries.cmi \ kernel/environ.cmi kernel/modops.cmi kernel/names.cmi \ kernel/reduction.cmi kernel/subtyping.cmi kernel/term_typing.cmi \ @@ -554,12 +560,6 @@ kernel/mod_typing.cmx: kernel/declarations.cmx kernel/entries.cmx \ kernel/environ.cmx kernel/modops.cmx kernel/names.cmx \ kernel/reduction.cmx kernel/subtyping.cmx kernel/term_typing.cmx \ kernel/typeops.cmx kernel/univ.cmx lib/util.cmx kernel/mod_typing.cmi -kernel/modops.cmo: kernel/declarations.cmi kernel/entries.cmi \ - kernel/environ.cmi kernel/names.cmi lib/pp.cmi kernel/term.cmi \ - kernel/univ.cmi lib/util.cmi kernel/modops.cmi -kernel/modops.cmx: kernel/declarations.cmx kernel/entries.cmx \ - kernel/environ.cmx kernel/names.cmx lib/pp.cmx kernel/term.cmx \ - kernel/univ.cmx lib/util.cmx kernel/modops.cmi kernel/names.cmo: lib/hashcons.cmi lib/pp.cmi lib/predicate.cmi lib/util.cmi \ kernel/names.cmi kernel/names.cmx: lib/hashcons.cmx lib/pp.cmx lib/predicate.cmx lib/util.cmx \ @@ -642,34 +642,24 @@ lib/edit.cmo: lib/bstack.cmi lib/pp.cmi lib/util.cmi lib/edit.cmi lib/edit.cmx: lib/bstack.cmx lib/pp.cmx lib/util.cmx lib/edit.cmi lib/explore.cmo: lib/explore.cmi lib/explore.cmx: lib/explore.cmi -lib/gmap.cmo: lib/gmap.cmi -lib/gmap.cmx: lib/gmap.cmi lib/gmapl.cmo: lib/gmap.cmi lib/util.cmi lib/gmapl.cmi lib/gmapl.cmx: lib/gmap.cmx lib/util.cmx lib/gmapl.cmi +lib/gmap.cmo: lib/gmap.cmi +lib/gmap.cmx: lib/gmap.cmi lib/gset.cmo: lib/gset.cmi lib/gset.cmx: lib/gset.cmi lib/hashcons.cmo: lib/hashcons.cmi lib/hashcons.cmx: lib/hashcons.cmi lib/options.cmo: lib/util.cmi lib/options.cmi lib/options.cmx: lib/util.cmx lib/options.cmi -lib/pp.cmo: lib/pp_control.cmi lib/pp.cmi -lib/pp.cmx: lib/pp_control.cmx lib/pp.cmi lib/pp_control.cmo: lib/pp_control.cmi lib/pp_control.cmx: lib/pp_control.cmi +lib/pp.cmo: lib/pp_control.cmi lib/pp.cmi +lib/pp.cmx: lib/pp_control.cmx lib/pp.cmi lib/predicate.cmo: lib/predicate.cmi lib/predicate.cmx: lib/predicate.cmi lib/profile.cmo: lib/profile.cmi lib/profile.cmx: lib/profile.cmi -lib/rtree.cmo: lib/pp.cmi lib/util.cmi lib/rtree.cmi -lib/rtree.cmx: lib/pp.cmx lib/util.cmx lib/rtree.cmi -lib/stamps.cmo: lib/stamps.cmi -lib/stamps.cmx: lib/stamps.cmi -lib/system.cmo: config/coq_config.cmi lib/pp.cmi lib/util.cmi lib/system.cmi -lib/system.cmx: config/coq_config.cmx lib/pp.cmx lib/util.cmx lib/system.cmi -lib/tlm.cmo: lib/gmap.cmi lib/gset.cmi lib/tlm.cmi -lib/tlm.cmx: lib/gmap.cmx lib/gset.cmx lib/tlm.cmi -lib/util.cmo: lib/pp.cmi lib/util.cmi -lib/util.cmx: lib/pp.cmx lib/util.cmi library/declare.cmo: library/decl_kinds.cmo kernel/declarations.cmi \ library/dischargedhypsmap.cmi kernel/entries.cmi kernel/environ.cmi \ library/global.cmi library/impargs.cmi kernel/indtypes.cmi \ @@ -772,6 +762,16 @@ library/states.cmx: library/lib.cmx library/library.cmx library/summary.cmx \ lib/system.cmx library/states.cmi library/summary.cmo: lib/dyn.cmi lib/pp.cmi lib/util.cmi library/summary.cmi library/summary.cmx: lib/dyn.cmx lib/pp.cmx lib/util.cmx library/summary.cmi +lib/rtree.cmo: lib/pp.cmi lib/util.cmi lib/rtree.cmi +lib/rtree.cmx: lib/pp.cmx lib/util.cmx lib/rtree.cmi +lib/stamps.cmo: lib/stamps.cmi +lib/stamps.cmx: lib/stamps.cmi +lib/system.cmo: config/coq_config.cmi lib/pp.cmi lib/util.cmi lib/system.cmi +lib/system.cmx: config/coq_config.cmx lib/pp.cmx lib/util.cmx lib/system.cmi +lib/tlm.cmo: lib/gmap.cmi lib/gset.cmi lib/tlm.cmi +lib/tlm.cmx: lib/gmap.cmx lib/gset.cmx lib/tlm.cmi +lib/util.cmo: lib/pp.cmi lib/util.cmi +lib/util.cmx: lib/pp.cmx lib/util.cmi parsing/argextend.cmo: parsing/ast.cmi interp/genarg.cmi parsing/pcoq.cmi \ parsing/q_coqast.cmo parsing/q_util.cmi lib/util.cmi \ toplevel/vernacexpr.cmo @@ -1748,10 +1748,10 @@ tactics/wcclausenv.cmx: proofs/clenv.cmx kernel/environ.cmx \ proofs/proof_trees.cmx pretyping/reductionops.cmx proofs/refiner.cmx \ kernel/sign.cmx proofs/tacmach.cmx kernel/term.cmx pretyping/termops.cmx \ lib/util.cmx tactics/wcclausenv.cmi -tools/coq_vo2xml.cmo: config/coq_config.cmi toplevel/usage.cmi -tools/coq_vo2xml.cmx: config/coq_config.cmx toplevel/usage.cmx tools/coqdep.cmo: config/coq_config.cmi tools/coqdep_lexer.cmo tools/coqdep.cmx: config/coq_config.cmx tools/coqdep_lexer.cmx +tools/coq_vo2xml.cmo: config/coq_config.cmi toplevel/usage.cmi +tools/coq_vo2xml.cmx: config/coq_config.cmx toplevel/usage.cmx tools/gallina.cmo: tools/gallina_lexer.cmo tools/gallina.cmx: tools/gallina_lexer.cmx toplevel/cerrors.cmo: parsing/ast.cmi pretyping/cases.cmi toplevel/himsg.cmi \ @@ -1956,14 +1956,6 @@ toplevel/toplevel.cmx: toplevel/cerrors.cmx library/lib.cmx \ toplevel/vernac.cmx toplevel/vernacexpr.cmx toplevel/toplevel.cmi toplevel/usage.cmo: config/coq_config.cmi toplevel/usage.cmi toplevel/usage.cmx: config/coq_config.cmx toplevel/usage.cmi -toplevel/vernac.cmo: parsing/coqast.cmi library/lib.cmi library/library.cmi \ - kernel/names.cmi lib/options.cmi parsing/pcoq.cmi lib/pp.cmi \ - library/states.cmi lib/system.cmi lib/util.cmi toplevel/vernacentries.cmi \ - toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi toplevel/vernac.cmi -toplevel/vernac.cmx: parsing/coqast.cmx library/lib.cmx library/library.cmx \ - kernel/names.cmx lib/options.cmx parsing/pcoq.cmx lib/pp.cmx \ - library/states.cmx lib/system.cmx lib/util.cmx toplevel/vernacentries.cmx \ - toplevel/vernacexpr.cmx toplevel/vernacinterp.cmx toplevel/vernac.cmi toplevel/vernacentries.cmo: tactics/auto.cmi toplevel/class.cmi \ pretyping/classops.cmi toplevel/command.cmi interp/constrextern.cmi \ interp/constrintern.cmi library/decl_kinds.cmo library/declaremods.cmi \ @@ -2024,6 +2016,14 @@ toplevel/vernacinterp.cmx: parsing/ast.cmx parsing/coqast.cmx \ kernel/names.cmx lib/options.cmx lib/pp.cmx proofs/proof_type.cmx \ proofs/tacexpr.cmx tactics/tacinterp.cmx lib/util.cmx \ toplevel/vernacexpr.cmx toplevel/vernacinterp.cmi +toplevel/vernac.cmo: parsing/coqast.cmi library/lib.cmi library/library.cmi \ + kernel/names.cmi lib/options.cmi parsing/pcoq.cmi lib/pp.cmi \ + library/states.cmi lib/system.cmi lib/util.cmi toplevel/vernacentries.cmi \ + toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi toplevel/vernac.cmi +toplevel/vernac.cmx: parsing/coqast.cmx library/lib.cmx library/library.cmx \ + kernel/names.cmx lib/options.cmx parsing/pcoq.cmx lib/pp.cmx \ + library/states.cmx lib/system.cmx lib/util.cmx toplevel/vernacentries.cmx \ + toplevel/vernacexpr.cmx toplevel/vernacinterp.cmx toplevel/vernac.cmi contrib/cc/ccalgo.cmo: kernel/names.cmi kernel/term.cmi contrib/cc/ccalgo.cmi contrib/cc/ccalgo.cmx: kernel/names.cmx kernel/term.cmx contrib/cc/ccalgo.cmi contrib/cc/ccproof.cmo: contrib/cc/ccalgo.cmi kernel/names.cmi \ @@ -2044,6 +2044,18 @@ contrib/cc/cctac.cmx: contrib/cc/ccalgo.cmx contrib/cc/ccproof.cmx \ lib/pp.cmx parsing/pptactic.cmx proofs/proof_type.cmx proofs/refiner.cmx \ tactics/tacinterp.cmx proofs/tacmach.cmx tactics/tacticals.cmx \ tactics/tactics.cmx kernel/term.cmx lib/util.cmx +contrib/correctness/pcicenv.cmo: library/global.cmi kernel/names.cmi \ + contrib/correctness/past.cmi contrib/correctness/penv.cmi \ + contrib/correctness/pmisc.cmi contrib/correctness/pmonad.cmi \ + contrib/correctness/prename.cmi contrib/correctness/ptype.cmi \ + contrib/correctness/putil.cmi kernel/sign.cmi kernel/term.cmi \ + kernel/univ.cmi contrib/correctness/pcicenv.cmi +contrib/correctness/pcicenv.cmx: library/global.cmx kernel/names.cmx \ + contrib/correctness/past.cmi contrib/correctness/penv.cmx \ + contrib/correctness/pmisc.cmx contrib/correctness/pmonad.cmx \ + contrib/correctness/prename.cmx contrib/correctness/ptype.cmi \ + contrib/correctness/putil.cmx kernel/sign.cmx kernel/term.cmx \ + kernel/univ.cmx contrib/correctness/pcicenv.cmi contrib/correctness/pcic.cmo: kernel/declarations.cmi library/declare.cmi \ pretyping/detyping.cmi kernel/entries.cmi library/global.cmi \ kernel/indtypes.cmi library/libnames.cmi library/nameops.cmi \ @@ -2060,18 +2072,6 @@ contrib/correctness/pcic.cmx: kernel/declarations.cmx library/declare.cmx \ kernel/sign.cmx kernel/term.cmx pretyping/termops.cmx \ interp/topconstr.cmx kernel/typeops.cmx lib/util.cmx \ toplevel/vernacexpr.cmx contrib/correctness/pcic.cmi -contrib/correctness/pcicenv.cmo: library/global.cmi kernel/names.cmi \ - contrib/correctness/past.cmi contrib/correctness/penv.cmi \ - contrib/correctness/pmisc.cmi contrib/correctness/pmonad.cmi \ - contrib/correctness/prename.cmi contrib/correctness/ptype.cmi \ - contrib/correctness/putil.cmi kernel/sign.cmi kernel/term.cmi \ - kernel/univ.cmi contrib/correctness/pcicenv.cmi -contrib/correctness/pcicenv.cmx: library/global.cmx kernel/names.cmx \ - contrib/correctness/past.cmi contrib/correctness/penv.cmx \ - contrib/correctness/pmisc.cmx contrib/correctness/pmonad.cmx \ - contrib/correctness/prename.cmx contrib/correctness/ptype.cmi \ - contrib/correctness/putil.cmx kernel/sign.cmx kernel/term.cmx \ - kernel/univ.cmx contrib/correctness/pcicenv.cmi contrib/correctness/pdb.cmo: library/declare.cmi library/global.cmi \ kernel/names.cmi library/nametab.cmi contrib/correctness/past.cmi \ contrib/correctness/peffect.cmi contrib/correctness/penv.cmi \ @@ -2610,6 +2610,14 @@ contrib/interface/pbp.cmx: interp/coqlib.cmx contrib/interface/ctast.cmx \ tactics/tacinterp.cmx proofs/tacmach.cmx tactics/tacticals.cmx \ tactics/tactics.cmx kernel/term.cmx interp/topconstr.cmx \ pretyping/typing.cmx lib/util.cmx contrib/interface/pbp.cmi +contrib/interface/showproof_ct.cmo: contrib/interface/ascent.cmi \ + parsing/esyntax.cmi library/global.cmi toplevel/metasyntax.cmi lib/pp.cmi \ + parsing/printer.cmi contrib/interface/translate.cmi \ + contrib/interface/vtp.cmi contrib/interface/xlate.cmi +contrib/interface/showproof_ct.cmx: contrib/interface/ascent.cmi \ + parsing/esyntax.cmx library/global.cmx toplevel/metasyntax.cmx lib/pp.cmx \ + parsing/printer.cmx contrib/interface/translate.cmx \ + contrib/interface/vtp.cmx contrib/interface/xlate.cmx contrib/interface/showproof.cmo: proofs/clenv.cmi interp/constrintern.cmi \ parsing/coqast.cmi kernel/declarations.cmi kernel/environ.cmi \ pretyping/evd.cmi interp/genarg.cmi library/global.cmi \ @@ -2634,14 +2642,6 @@ contrib/interface/showproof.cmx: proofs/clenv.cmx interp/constrintern.cmx \ pretyping/termops.cmx contrib/interface/translate.cmx \ pretyping/typing.cmx lib/util.cmx toplevel/vernacinterp.cmx \ contrib/interface/showproof.cmi -contrib/interface/showproof_ct.cmo: contrib/interface/ascent.cmi \ - parsing/esyntax.cmi library/global.cmi toplevel/metasyntax.cmi lib/pp.cmi \ - parsing/printer.cmi contrib/interface/translate.cmi \ - contrib/interface/vtp.cmi contrib/interface/xlate.cmi -contrib/interface/showproof_ct.cmx: contrib/interface/ascent.cmi \ - parsing/esyntax.cmx library/global.cmx toplevel/metasyntax.cmx lib/pp.cmx \ - parsing/printer.cmx contrib/interface/translate.cmx \ - contrib/interface/vtp.cmx contrib/interface/xlate.cmx contrib/interface/translate.cmo: contrib/interface/ascent.cmi parsing/ast.cmi \ contrib/interface/ctast.cmo kernel/environ.cmi pretyping/evarutil.cmi \ pretyping/evd.cmi library/libobject.cmi library/library.cmi \ @@ -2810,12 +2810,12 @@ contrib/romega/refl_omega.cmx: parsing/ast.cmx tactics/auto.cmx \ proofs/proof_type.cmx kernel/reduction.cmx kernel/sign.cmx \ proofs/tacmach.cmx tactics/tacticals.cmx tactics/tactics.cmx \ kernel/term.cmx lib/util.cmx -contrib/xml/acic.cmo: kernel/names.cmi kernel/term.cmi -contrib/xml/acic.cmx: kernel/names.cmx kernel/term.cmx contrib/xml/acic2Xml.cmo: contrib/xml/acic.cmo contrib/xml/cic2acic.cmo \ kernel/names.cmi kernel/term.cmi lib/util.cmi contrib/xml/xml.cmi contrib/xml/acic2Xml.cmx: contrib/xml/acic.cmx contrib/xml/cic2acic.cmx \ kernel/names.cmx kernel/term.cmx lib/util.cmx contrib/xml/xml.cmx +contrib/xml/acic.cmo: kernel/names.cmi kernel/term.cmi +contrib/xml/acic.cmx: kernel/names.cmx kernel/term.cmx contrib/xml/cic2acic.cmo: contrib/xml/acic.cmo library/declare.cmi \ library/dischargedhypsmap.cmi contrib/xml/doubleTypeInference.cmi \ kernel/environ.cmi pretyping/evarutil.cmi pretyping/evd.cmi \ @@ -2870,8 +2870,6 @@ contrib/xml/proofTree2Xml.cmx: contrib/xml/acic.cmx contrib/xml/acic2Xml.cmx \ contrib/xml/xml.cmx contrib/xml/unshare.cmo: contrib/xml/unshare.cmi contrib/xml/unshare.cmx: contrib/xml/unshare.cmi -contrib/xml/xml.cmo: contrib/xml/xml.cmi -contrib/xml/xml.cmx: contrib/xml/xml.cmi contrib/xml/xmlcommand.cmo: contrib/xml/acic.cmo contrib/xml/acic2Xml.cmo \ contrib/xml/cic2acic.cmo library/decl_kinds.cmo kernel/declarations.cmi \ library/declare.cmi kernel/environ.cmi pretyping/evd.cmi \ @@ -2898,6 +2896,8 @@ contrib/xml/xmlentries.cmx: toplevel/cerrors.cmx parsing/egrammar.cmx \ parsing/extend.cmx interp/genarg.cmx parsing/pcoq.cmx lib/pp.cmx \ parsing/pptactic.cmx tactics/tacinterp.cmx lib/util.cmx \ toplevel/vernacinterp.cmx contrib/xml/xmlcommand.cmx +contrib/xml/xml.cmo: contrib/xml/xml.cmi +contrib/xml/xml.cmx: contrib/xml/xml.cmi tactics/tauto.cmo: parsing/grammar.cma tactics/tauto.cmx: parsing/grammar.cma tactics/eqdecide.cmo: parsing/grammar.cma diff --git a/.depend.coq b/.depend.coq index 011ca0f33..ed13d21eb 100644 --- a/.depend.coq +++ b/.depend.coq @@ -1,54 +1,57 @@ -theories/Reals/TypeSyntax.vo: theories/Reals/TypeSyntax.v theories/Reals/Rdefinitions.vo: theories/Reals/Rdefinitions.v theories/ZArith/ZArith_base.vo theories/Reals/TypeSyntax.vo theories/Reals/Rsyntax.vo: theories/Reals/Rsyntax.v theories/Reals/Rdefinitions.vo theories/Reals/Raxioms.vo: theories/Reals/Raxioms.v theories/ZArith/ZArith_base.vo theories/Reals/Rsyntax.vo theories/Reals/TypeSyntax.vo theories/Reals/Rbase.vo: theories/Reals/Rbase.v theories/Reals/Raxioms.vo contrib/ring/ZArithRing.vo contrib/omega/Omega.vo contrib/field/Field.vo theories/Reals/DiscrR.vo: theories/Reals/DiscrR.v theories/Reals/Rbase.vo theories/Reals/RealsB.vo: theories/Reals/RealsB.v theories/Reals/Rdefinitions.vo theories/Reals/TypeSyntax.vo theories/Reals/Raxioms.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo -theories/Reals/R_Ifp.vo: theories/Reals/R_Ifp.v theories/Reals/Rbase.vo contrib/omega/Omega.vo -theories/Reals/Rbasic_fun.vo: theories/Reals/Rbasic_fun.v theories/Reals/R_Ifp.vo theories/Reals/Rbase.vo contrib/fourier/Fourier.vo -theories/Reals/R_sqr.vo: theories/Reals/R_sqr.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo +theories/Reals/R_Ifp.vo: theories/Reals/R_Ifp.v theories/Reals/RealsB.vo contrib/omega/Omega.vo +theories/Reals/Rbasic_fun.vo: theories/Reals/Rbasic_fun.v theories/Reals/RealsB.vo theories/Reals/R_Ifp.vo contrib/fourier/Fourier.vo +theories/Reals/R_sqr.vo: theories/Reals/R_sqr.v theories/Reals/RealsB.vo theories/Reals/Rbasic_fun.vo theories/Reals/SplitAbsolu.vo: theories/Reals/SplitAbsolu.v theories/Reals/Rbasic_fun.vo -theories/Reals/SplitRmult.vo: theories/Reals/SplitRmult.v theories/Reals/Rbase.vo -theories/Reals/Rfunctions.vo: theories/Reals/Rfunctions.v theories/Reals/Rlimit.vo contrib/omega/Omega.vo theories/ZArith/Zpower.vo -theories/Reals/Rlimit.vo: theories/Reals/Rlimit.v theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Logic/Classical_Prop.vo theories/Reals/DiscrR.vo contrib/fourier/Fourier.vo theories/Reals/SplitAbsolu.vo -theories/Reals/Rderiv.vo: theories/Reals/Rderiv.v theories/Reals/Rfunctions.vo theories/Reals/DiscrR.vo contrib/fourier/Fourier.vo theories/Logic/Classical_Pred_Type.vo contrib/omega/Omega.vo -theories/Reals/Rseries.vo: theories/Reals/Rseries.v theories/Reals/Rderiv.vo theories/Logic/Classical.vo theories/Arith/Compare.vo -theories/Reals/Rtrigo_fun.vo: theories/Reals/Rtrigo_fun.v theories/Reals/Rseries.vo -theories/Reals/Alembert.vo: theories/Reals/Alembert.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Rtrigo_fun.vo -theories/Reals/Binome.vo: theories/Reals/Binome.v theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Alembert.vo -theories/Reals/Rsigma.vo: theories/Reals/Rsigma.v theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo -theories/Reals/Rcomplet.vo: theories/Reals/Rcomplet.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Logic/Classical.vo -theories/Reals/Alembert_compl.vo: theories/Reals/Alembert_compl.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Rcomplet.vo theories/Reals/Alembert.vo -theories/Reals/AltSeries.vo: theories/Reals/AltSeries.v theories/Arith/Even.vo theories/Arith/Div2.vo theories/Arith/Max.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Rcomplet.vo theories/Reals/Binome.vo -theories/Reals/Rtrigo_def.vo: theories/Reals/Rtrigo_def.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Alembert.vo theories/Reals/AltSeries.vo -theories/Reals/Rtrigo_alt.vo: theories/Reals/Rtrigo_alt.v theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rcomplet.vo theories/Reals/Rtrigo_def.vo -theories/Reals/Rprod.vo: theories/Reals/Rprod.v theories/Arith/Compare.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo -theories/Reals/Cauchy_prod.vo: theories/Reals/Cauchy_prod.v theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo -theories/Reals/Cv_prop.vo: theories/Reals/Cv_prop.v theories/Arith/Max.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Rcomplet.vo theories/Reals/AltSeries.vo -theories/Reals/Cos_rel.vo: theories/Reals/Cos_rel.v theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cauchy_prod.vo -theories/Reals/Cos_plus.vo: theories/Reals/Cos_plus.v theories/Arith/Max.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Rprod.vo theories/Reals/Cv_prop.vo theories/Reals/Cos_rel.vo -theories/Reals/Rtrigo.vo: theories/Reals/Rtrigo.v theories/ZArith/ZArith_base.vo theories/ZArith/Zcomplements.vo theories/Logic/Classical_Prop.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/R_sqr.vo theories/Reals/Rfunctions.vo theories/Reals/Rsigma.vo theories/Reals/Rlimit.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cos_plus.vo -theories/Reals/Ranalysis1.vo: theories/Reals/Ranalysis1.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo -theories/Reals/Rtopology.vo: theories/Reals/Rtopology.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/DiscrR.vo theories/Reals/Rderiv.vo theories/Reals/Alembert.vo theories/Reals/Ranalysis1.vo theories/Logic/Classical_Prop.vo theories/Logic/Classical_Pred_Type.vo -theories/Reals/TAF.vo: theories/Reals/TAF.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rlimit.vo theories/Reals/Ranalysis1.vo theories/Reals/Rtopology.vo -theories/Reals/PSeries_reg.vo: theories/Reals/PSeries_reg.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/Rsigma.vo theories/Reals/Alembert.vo theories/Reals/Alembert_compl.vo theories/Reals/Binome.vo theories/Reals/Cv_prop.vo theories/Reals/Rcomplet.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cos_plus.vo theories/Reals/Ranalysis1.vo theories/Arith/Max.vo theories/Arith/Even.vo -theories/Reals/Exp_prop.vo: theories/Reals/Exp_prop.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Rseries.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cauchy_prod.vo theories/Reals/Binome.vo theories/Reals/Cos_plus.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo theories/Arith/Div2.vo theories/Arith/Even.vo theories/Arith/Max.vo -theories/Reals/Rtrigo_reg.vo: theories/Reals/Rtrigo_reg.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo -theories/Reals/Rsqrt_def.vo: theories/Reals/Rsqrt_def.v theories/Bool/Sumbool.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Rcomplet.vo theories/Reals/AltSeries.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cv_prop.vo theories/Reals/Ranalysis1.vo -theories/Reals/R_sqrt.vo: theories/Reals/R_sqrt.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rsqrt_def.vo -theories/Reals/Rtrigo_calc.vo: theories/Reals/Rtrigo_calc.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rtrigo.vo theories/Reals/R_sqrt.vo -theories/Reals/Ranalysis2.vo: theories/Reals/Ranalysis2.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo contrib/omega/Omega.vo -theories/Reals/Ranalysis3.vo: theories/Reals/Ranalysis3.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis2.vo -theories/Reals/Sqrt_reg.vo: theories/Reals/Sqrt_reg.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rderiv.vo theories/Reals/R_sqr.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/R_sqrt.vo -theories/Reals/Ranalysis4.vo: theories/Reals/Ranalysis4.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/R_sqrt.vo theories/Reals/Ranalysis2.vo theories/Reals/Ranalysis3.vo theories/Reals/Exp_prop.vo theories/Reals/Rtrigo_reg.vo theories/Reals/Sqrt_reg.vo -theories/Reals/Ranalysis.vo: theories/Reals/Ranalysis.v theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis2.vo theories/Reals/Ranalysis3.vo theories/Reals/Ranalysis4.vo -theories/Reals/Rgeom.vo: theories/Reals/Rgeom.v theories/Reals/Rbase.vo theories/Reals/R_sqr.vo theories/Reals/Rtrigo.vo theories/Reals/R_sqrt.vo -theories/Reals/NewtonInt.vo: theories/Reals/NewtonInt.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/DiscrR.vo theories/Reals/Rderiv.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/R_sqrt.vo theories/Reals/Ranalysis4.vo theories/Reals/Rtopology.vo theories/Reals/TAF.vo -theories/Reals/RiemannInt_SF.vo: theories/Reals/RiemannInt_SF.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rlimit.vo theories/Reals/Alembert.vo theories/Reals/Ranalysis1.vo theories/Reals/Rtopology.vo theories/Reals/NewtonInt.vo -theories/Reals/RiemannInt.vo: theories/Reals/RiemannInt.v theories/Reals/Rsqrt_def.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rlimit.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Rcomplet.vo theories/Reals/Cv_prop.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Rderiv.vo theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis4.vo theories/Reals/Exp_prop.vo theories/Reals/Rtopology.vo theories/Reals/NewtonInt.vo theories/Reals/RiemannInt_SF.vo theories/Logic/Classical_Pred_Type.vo theories/Arith/Max.vo -theories/Reals/Rpower.vo: theories/Reals/Rpower.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/AltSeries.vo theories/Reals/Rcomplet.vo theories/Reals/Rprod.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cos_plus.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo theories/Reals/Exp_prop.vo theories/Reals/Rsqrt_def.vo theories/Reals/R_sqrt.vo theories/Reals/TAF.vo theories/Reals/Ranalysis4.vo -theories/Reals/Reals.vo: theories/Reals/Reals.v theories/Reals/Rdefinitions.vo theories/Reals/TypeSyntax.vo theories/Reals/Raxioms.vo theories/Reals/Rbase.vo theories/Reals/R_Ifp.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/R_sqrt.vo theories/Reals/Rsigma.vo theories/Reals/Rlimit.vo theories/Reals/Rfunctions.vo theories/Reals/Rtrigo.vo theories/Reals/Rtrigo_calc.vo theories/Reals/Rgeom.vo theories/Reals/Rpower.vo theories/Reals/Rderiv.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rcomplet.vo theories/Reals/Alembert_compl.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Ranalysis.vo theories/Reals/Rtopology.vo theories/Reals/TAF.vo theories/Reals/NewtonInt.vo theories/Reals/RiemannInt.vo theories/Reals/DiscrR.vo theories/Reals/SplitRmult.vo theories/Reals/SplitAbsolu.vo +theories/Reals/SplitRmult.vo: theories/Reals/SplitRmult.v theories/Reals/RealsB.vo +theories/Reals/ArithProp.vo: theories/Reals/ArithProp.v theories/Reals/RealsB.vo theories/Reals/Rbasic_fun.vo theories/Arith/Even.vo theories/Arith/Div2.vo +theories/Reals/Rfunctions.vo: theories/Reals/Rfunctions.v theories/Reals/RealsB.vo theories/Reals/R_Ifp.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/SplitAbsolu.vo theories/Reals/SplitRmult.vo theories/Reals/ArithProp.vo contrib/omega/Omega.vo theories/ZArith/Zpower.vo +theories/Reals/Rseries.vo: theories/Reals/Rseries.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Logic/Classical.vo theories/Arith/Compare.vo +theories/Reals/SeqProp.vo: theories/Reals/SeqProp.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Logic/Classical.vo theories/Arith/Max.vo +theories/Reals/Rcomplet.vo: theories/Reals/Rcomplet.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/SeqProp.vo theories/Arith/Max.vo +theories/Reals/PartSum.vo: theories/Reals/PartSum.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/Rcomplet.vo theories/Arith/Max.vo +theories/Reals/AltSeries.vo: theories/Reals/AltSeries.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/SeqProp.vo theories/Reals/PartSum.vo theories/Arith/Max.vo +theories/Reals/Binome.vo: theories/Reals/Binome.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/PartSum.vo +theories/Reals/Rsigma.vo: theories/Reals/Rsigma.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/PartSum.vo +theories/Reals/Rprod.vo: theories/Reals/Rprod.v theories/Arith/Compare.vo theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/PartSum.vo theories/Reals/Binome.vo +theories/Reals/Cauchy_prod.vo: theories/Reals/Cauchy_prod.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/PartSum.vo +theories/Reals/Alembert.vo: theories/Reals/Alembert.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/SeqProp.vo theories/Reals/PartSum.vo theories/Arith/Max.vo +theories/Reals/SeqSeries.vo: theories/Reals/SeqSeries.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/SeqProp.vo theories/Reals/Rcomplet.vo theories/Reals/PartSum.vo theories/Reals/AltSeries.vo theories/Reals/Binome.vo theories/Reals/Rsigma.vo theories/Reals/Rprod.vo theories/Reals/Cauchy_prod.vo theories/Reals/Alembert.vo +theories/Reals/Rtrigo_fun.vo: theories/Reals/Rtrigo_fun.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo +theories/Reals/Rtrigo_def.vo: theories/Reals/Rtrigo_def.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo_fun.vo theories/Arith/Max.vo +theories/Reals/Rtrigo_alt.vo: theories/Reals/Rtrigo_alt.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo_def.vo +theories/Reals/Cos_rel.vo: theories/Reals/Cos_rel.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo_def.vo +theories/Reals/Cos_plus.vo: theories/Reals/Cos_plus.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo_def.vo theories/Reals/Cos_rel.vo theories/Arith/Max.vo +theories/Reals/Rtrigo.vo: theories/Reals/Rtrigo.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cos_rel.vo theories/Reals/Cos_plus.vo theories/ZArith/ZArith_base.vo theories/ZArith/Zcomplements.vo theories/Logic/Classical_Prop.vo +theories/Reals/Rlimit.vo: theories/Reals/Rlimit.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Logic/Classical_Prop.vo contrib/fourier/Fourier.vo +theories/Reals/Rderiv.vo: theories/Reals/Rderiv.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rlimit.vo contrib/fourier/Fourier.vo theories/Logic/Classical_Prop.vo theories/Logic/Classical_Pred_Type.vo contrib/omega/Omega.vo +theories/Reals/RList.vo: theories/Reals/RList.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo +theories/Reals/Ranalysis1.vo: theories/Reals/Ranalysis1.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo +theories/Reals/Ranalysis2.vo: theories/Reals/Ranalysis2.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Ranalysis1.vo contrib/omega/Omega.vo +theories/Reals/Ranalysis3.vo: theories/Reals/Ranalysis3.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis2.vo +theories/Reals/Rtopology.vo: theories/Reals/Rtopology.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Ranalysis1.vo theories/Reals/RList.vo theories/Logic/Classical_Prop.vo theories/Logic/Classical_Pred_Type.vo +theories/Reals/TAF.vo: theories/Reals/TAF.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Ranalysis1.vo theories/Reals/Rtopology.vo +theories/Reals/PSeries_reg.vo: theories/Reals/PSeries_reg.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Ranalysis1.vo theories/Arith/Max.vo theories/Arith/Even.vo +theories/Reals/Exp_prop.vo: theories/Reals/Exp_prop.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo theories/Arith/Div2.vo theories/Arith/Even.vo theories/Arith/Max.vo +theories/Reals/Rtrigo_reg.vo: theories/Reals/Rtrigo_reg.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo +theories/Reals/Rsqrt_def.vo: theories/Reals/Rsqrt_def.v theories/Bool/Sumbool.vo theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Ranalysis1.vo +theories/Reals/R_sqrt.vo: theories/Reals/R_sqrt.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rsqrt_def.vo +theories/Reals/Rtrigo_calc.vo: theories/Reals/Rtrigo_calc.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/R_sqrt.vo +theories/Reals/Rgeom.vo: theories/Reals/Rgeom.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/R_sqrt.vo +theories/Reals/Sqrt_reg.vo: theories/Reals/Sqrt_reg.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Ranalysis1.vo theories/Reals/R_sqrt.vo +theories/Reals/Ranalysis4.vo: theories/Reals/Ranalysis4.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis3.vo theories/Reals/Exp_prop.vo +theories/Reals/Rpower.vo: theories/Reals/Rpower.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/Exp_prop.vo theories/Reals/Rsqrt_def.vo theories/Reals/R_sqrt.vo theories/Reals/TAF.vo theories/Reals/Ranalysis4.vo +theories/Reals/Ranalysis.vo: theories/Reals/Ranalysis.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Rtrigo.vo theories/Reals/SeqSeries.vo theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis2.vo theories/Reals/Ranalysis3.vo theories/Reals/Rtopology.vo theories/Reals/TAF.vo theories/Reals/PSeries_reg.vo theories/Reals/Exp_prop.vo theories/Reals/Rtrigo_reg.vo theories/Reals/Rsqrt_def.vo theories/Reals/R_sqrt.vo theories/Reals/Rtrigo_calc.vo theories/Reals/Rgeom.vo theories/Reals/RList.vo theories/Reals/Sqrt_reg.vo theories/Reals/Ranalysis4.vo theories/Reals/Rpower.vo +theories/Reals/NewtonInt.vo: theories/Reals/NewtonInt.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis.vo +theories/Reals/RiemannInt_SF.vo: theories/Reals/RiemannInt_SF.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/Ranalysis.vo theories/Logic/Classical_Prop.vo +theories/Reals/RiemannInt.vo: theories/Reals/RiemannInt.v theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Ranalysis.vo theories/Reals/RealsB.vo theories/Reals/RiemannInt_SF.vo theories/Logic/Classical_Prop.vo theories/Logic/Classical_Pred_Type.vo theories/Arith/Max.vo +theories/Reals/Integration.vo: theories/Reals/Integration.v theories/Reals/NewtonInt.vo theories/Reals/RiemannInt_SF.vo theories/Reals/RiemannInt.vo +theories/Reals/Reals.vo: theories/Reals/Reals.v theories/Reals/RealsB.vo theories/Reals/Rfunctions.vo theories/Reals/SeqSeries.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis.vo theories/Reals/Integration.vo theories/Init/Datatypes.vo: theories/Init/Datatypes.v theories/Init/DatatypesSyntax.vo: theories/Init/DatatypesSyntax.v theories/Init/Datatypes.vo theories/Init/Peano.vo: theories/Init/Peano.v theories/Init/Logic.vo theories/Init/LogicSyntax.vo theories/Init/Datatypes.vo @@ -175,57 +178,12 @@ theories/Wellfounded/Union.vo: theories/Wellfounded/Union.v theories/Relations/R theories/Wellfounded/Wellfounded.vo: theories/Wellfounded/Wellfounded.v theories/Wellfounded/Disjoint_Union.vo theories/Wellfounded/Inclusion.vo theories/Wellfounded/Inverse_Image.vo theories/Wellfounded/Lexicographic_Exponentiation.vo theories/Wellfounded/Lexicographic_Product.vo theories/Wellfounded/Transitive_Closure.vo theories/Wellfounded/Union.vo theories/Wellfounded/Well_Ordering.vo theories/Wellfounded/Well_Ordering.vo: theories/Wellfounded/Well_Ordering.v theories/Logic/Eqdep.vo theories/Wellfounded/Lexicographic_Product.vo: theories/Wellfounded/Lexicographic_Product.v theories/Logic/Eqdep.vo theories/Relations/Relation_Operators.vo theories/Wellfounded/Transitive_Closure.vo -theories/Reals/TypeSyntax.vo: theories/Reals/TypeSyntax.v theories/Reals/Rdefinitions.vo: theories/Reals/Rdefinitions.v theories/ZArith/ZArith_base.vo theories/Reals/TypeSyntax.vo theories/Reals/Rsyntax.vo: theories/Reals/Rsyntax.v theories/Reals/Rdefinitions.vo theories/Reals/Raxioms.vo: theories/Reals/Raxioms.v theories/ZArith/ZArith_base.vo theories/Reals/Rsyntax.vo theories/Reals/TypeSyntax.vo theories/Reals/Rbase.vo: theories/Reals/Rbase.v theories/Reals/Raxioms.vo contrib/ring/ZArithRing.vo contrib/omega/Omega.vo contrib/field/Field.vo theories/Reals/DiscrR.vo: theories/Reals/DiscrR.v theories/Reals/Rbase.vo theories/Reals/RealsB.vo: theories/Reals/RealsB.v theories/Reals/Rdefinitions.vo theories/Reals/TypeSyntax.vo theories/Reals/Raxioms.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo -theories/Reals/R_Ifp.vo: theories/Reals/R_Ifp.v theories/Reals/Rbase.vo contrib/omega/Omega.vo -theories/Reals/Rbasic_fun.vo: theories/Reals/Rbasic_fun.v theories/Reals/R_Ifp.vo theories/Reals/Rbase.vo contrib/fourier/Fourier.vo -theories/Reals/R_sqr.vo: theories/Reals/R_sqr.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo -theories/Reals/SplitAbsolu.vo: theories/Reals/SplitAbsolu.v theories/Reals/Rbasic_fun.vo -theories/Reals/SplitRmult.vo: theories/Reals/SplitRmult.v theories/Reals/Rbase.vo -theories/Reals/Rfunctions.vo: theories/Reals/Rfunctions.v theories/Reals/Rlimit.vo contrib/omega/Omega.vo theories/ZArith/Zpower.vo -theories/Reals/Rlimit.vo: theories/Reals/Rlimit.v theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Logic/Classical_Prop.vo theories/Reals/DiscrR.vo contrib/fourier/Fourier.vo theories/Reals/SplitAbsolu.vo -theories/Reals/Rderiv.vo: theories/Reals/Rderiv.v theories/Reals/Rfunctions.vo theories/Reals/DiscrR.vo contrib/fourier/Fourier.vo theories/Logic/Classical_Pred_Type.vo contrib/omega/Omega.vo -theories/Reals/Rseries.vo: theories/Reals/Rseries.v theories/Reals/Rderiv.vo theories/Logic/Classical.vo theories/Arith/Compare.vo -theories/Reals/Rtrigo_fun.vo: theories/Reals/Rtrigo_fun.v theories/Reals/Rseries.vo -theories/Reals/Alembert.vo: theories/Reals/Alembert.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Rtrigo_fun.vo -theories/Reals/Binome.vo: theories/Reals/Binome.v theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Alembert.vo -theories/Reals/Rsigma.vo: theories/Reals/Rsigma.v theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo -theories/Reals/Rcomplet.vo: theories/Reals/Rcomplet.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Logic/Classical.vo -theories/Reals/Alembert_compl.vo: theories/Reals/Alembert_compl.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Rcomplet.vo theories/Reals/Alembert.vo -theories/Reals/AltSeries.vo: theories/Reals/AltSeries.v theories/Arith/Even.vo theories/Arith/Div2.vo theories/Arith/Max.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Rcomplet.vo theories/Reals/Binome.vo -theories/Reals/Rtrigo_def.vo: theories/Reals/Rtrigo_def.v theories/Arith/Max.vo theories/Reals/Raxioms.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Alembert.vo theories/Reals/AltSeries.vo -theories/Reals/Rtrigo_alt.vo: theories/Reals/Rtrigo_alt.v theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rcomplet.vo theories/Reals/Rtrigo_def.vo -theories/Reals/Rprod.vo: theories/Reals/Rprod.v theories/Arith/Compare.vo theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo -theories/Reals/Cauchy_prod.vo: theories/Reals/Cauchy_prod.v theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo -theories/Reals/Cv_prop.vo: theories/Reals/Cv_prop.v theories/Arith/Max.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Rcomplet.vo theories/Reals/AltSeries.vo -theories/Reals/Cos_rel.vo: theories/Reals/Cos_rel.v theories/Reals/Rbase.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cauchy_prod.vo -theories/Reals/Cos_plus.vo: theories/Reals/Cos_plus.v theories/Arith/Max.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Rprod.vo theories/Reals/Cv_prop.vo theories/Reals/Cos_rel.vo -theories/Reals/Rtrigo.vo: theories/Reals/Rtrigo.v theories/ZArith/ZArith_base.vo theories/ZArith/Zcomplements.vo theories/Logic/Classical_Prop.vo theories/Reals/DiscrR.vo theories/Reals/Rbase.vo theories/Reals/R_sqr.vo theories/Reals/Rfunctions.vo theories/Reals/Rsigma.vo theories/Reals/Rlimit.vo theories/Reals/Binome.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cos_plus.vo -theories/Reals/Ranalysis1.vo: theories/Reals/Ranalysis1.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo -theories/Reals/Rtopology.vo: theories/Reals/Rtopology.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/DiscrR.vo theories/Reals/Rderiv.vo theories/Reals/Alembert.vo theories/Reals/Ranalysis1.vo theories/Logic/Classical_Prop.vo theories/Logic/Classical_Pred_Type.vo -theories/Reals/TAF.vo: theories/Reals/TAF.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rlimit.vo theories/Reals/Ranalysis1.vo theories/Reals/Rtopology.vo -theories/Reals/PSeries_reg.vo: theories/Reals/PSeries_reg.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/Rsigma.vo theories/Reals/Alembert.vo theories/Reals/Alembert_compl.vo theories/Reals/Binome.vo theories/Reals/Cv_prop.vo theories/Reals/Rcomplet.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cos_plus.vo theories/Reals/Ranalysis1.vo theories/Arith/Max.vo theories/Arith/Even.vo -theories/Reals/Exp_prop.vo: theories/Reals/Exp_prop.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Rseries.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cauchy_prod.vo theories/Reals/Binome.vo theories/Reals/Cos_plus.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo theories/Arith/Div2.vo theories/Arith/Even.vo theories/Arith/Max.vo -theories/Reals/Rtrigo_reg.vo: theories/Reals/Rtrigo_reg.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Binome.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo -theories/Reals/Rsqrt_def.vo: theories/Reals/Rsqrt_def.v theories/Bool/Sumbool.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Rcomplet.vo theories/Reals/AltSeries.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cv_prop.vo theories/Reals/Ranalysis1.vo -theories/Reals/R_sqrt.vo: theories/Reals/R_sqrt.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rsqrt_def.vo -theories/Reals/Rtrigo_calc.vo: theories/Reals/Rtrigo_calc.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rseries.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rtrigo.vo theories/Reals/R_sqrt.vo -theories/Reals/Ranalysis2.vo: theories/Reals/Ranalysis2.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo contrib/omega/Omega.vo -theories/Reals/Ranalysis3.vo: theories/Reals/Ranalysis3.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis2.vo -theories/Reals/Sqrt_reg.vo: theories/Reals/Sqrt_reg.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rderiv.vo theories/Reals/R_sqr.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/R_sqrt.vo -theories/Reals/Ranalysis4.vo: theories/Reals/Ranalysis4.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/Rlimit.vo theories/Reals/Rderiv.vo theories/Reals/DiscrR.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/R_sqrt.vo theories/Reals/Ranalysis2.vo theories/Reals/Ranalysis3.vo theories/Reals/Exp_prop.vo theories/Reals/Rtrigo_reg.vo theories/Reals/Sqrt_reg.vo -theories/Reals/Ranalysis.vo: theories/Reals/Ranalysis.v theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis2.vo theories/Reals/Ranalysis3.vo theories/Reals/Ranalysis4.vo -theories/Reals/Rgeom.vo: theories/Reals/Rgeom.v theories/Reals/Rbase.vo theories/Reals/R_sqr.vo theories/Reals/Rtrigo.vo theories/Reals/R_sqrt.vo -theories/Reals/NewtonInt.vo: theories/Reals/NewtonInt.v theories/Reals/Rbase.vo theories/Reals/Rbasic_fun.vo theories/Reals/DiscrR.vo theories/Reals/Rderiv.vo theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo theories/Reals/R_sqrt.vo theories/Reals/Ranalysis4.vo theories/Reals/Rtopology.vo theories/Reals/TAF.vo -theories/Reals/RiemannInt_SF.vo: theories/Reals/RiemannInt_SF.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rlimit.vo theories/Reals/Alembert.vo theories/Reals/Ranalysis1.vo theories/Reals/Rtopology.vo theories/Reals/NewtonInt.vo -theories/Reals/RiemannInt.vo: theories/Reals/RiemannInt.v theories/Reals/Rsqrt_def.vo theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rlimit.vo theories/Reals/Rseries.vo theories/Reals/Alembert.vo theories/Reals/Rcomplet.vo theories/Reals/Cv_prop.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Rderiv.vo theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis4.vo theories/Reals/Exp_prop.vo theories/Reals/Rtopology.vo theories/Reals/NewtonInt.vo theories/Reals/RiemannInt_SF.vo theories/Logic/Classical_Pred_Type.vo theories/Arith/Max.vo -theories/Reals/Rpower.vo: theories/Reals/Rpower.v theories/Reals/Rbase.vo theories/Reals/DiscrR.vo theories/Reals/Rbasic_fun.vo theories/Reals/Rfunctions.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/AltSeries.vo theories/Reals/Rcomplet.vo theories/Reals/Rprod.vo theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo theories/Reals/Cos_plus.vo theories/Reals/Ranalysis1.vo theories/Reals/PSeries_reg.vo theories/Reals/Exp_prop.vo theories/Reals/Rsqrt_def.vo theories/Reals/R_sqrt.vo theories/Reals/TAF.vo theories/Reals/Ranalysis4.vo -theories/Reals/Reals.vo: theories/Reals/Reals.v theories/Reals/Rdefinitions.vo theories/Reals/TypeSyntax.vo theories/Reals/Raxioms.vo theories/Reals/Rbase.vo theories/Reals/R_Ifp.vo theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo theories/Reals/R_sqrt.vo theories/Reals/Rsigma.vo theories/Reals/Rlimit.vo theories/Reals/Rfunctions.vo theories/Reals/Rtrigo.vo theories/Reals/Rtrigo_calc.vo theories/Reals/Rgeom.vo theories/Reals/Rpower.vo theories/Reals/Rderiv.vo theories/Reals/Rseries.vo theories/Reals/Binome.vo theories/Reals/Rcomplet.vo theories/Reals/Alembert_compl.vo theories/Reals/Rtrigo_fun.vo theories/Reals/Ranalysis.vo theories/Reals/Rtopology.vo theories/Reals/TAF.vo theories/Reals/NewtonInt.vo theories/Reals/RiemannInt.vo theories/Reals/DiscrR.vo theories/Reals/SplitRmult.vo theories/Reals/SplitAbsolu.vo theories/Setoids/Setoid.vo: theories/Setoids/Setoid.v theories/Sorting/Heap.vo: theories/Sorting/Heap.v theories/Lists/PolyList.vo theories/Sets/Multiset.vo theories/Sorting/Permutation.vo theories/Relations/Relations.vo theories/Sorting/Sorting.vo theories/Sorting/Permutation.vo: theories/Sorting/Permutation.v theories/Relations/Relations.vo theories/Lists/PolyList.vo theories/Sets/Multiset.vo @@ -556,7 +556,7 @@ WELLFOUNDEDVO=theories/Wellfounded/Disjoint_Union.vo \ theories/Wellfounded/Well_Ordering.vo \ theories/Wellfounded/Lexicographic_Product.vo -REALSBASEVO=theories/Reals/TypeSyntax.vo \ +REALSBASEVO=theories/Reals/TypeSyntax.votheories/Reals/ \ theories/Reals/Rdefinitions.vo theories/Reals/Rsyntax.vo \ theories/Reals/Raxioms.vo theories/Reals/Rbase.vo \ theories/Reals/DiscrR.vo theories/Reals/RealsB.vo \ @@ -566,26 +566,28 @@ REALS_basic= REALS_all=theories/Reals/R_Ifp.vo \ theories/Reals/Rbasic_fun.vo theories/Reals/R_sqr.vo \ theories/Reals/SplitAbsolu.vo theories/Reals/SplitRmult.vo \ - theories/Reals/Rfunctions.vo theories/Reals/Rlimit.vo \ - theories/Reals/Rderiv.vo theories/Reals/Rseries.vo \ - theories/Reals/Rtrigo_fun.vo theories/Reals/Alembert.vo \ - theories/Reals/Binome.vo theories/Reals/Rsigma.vo \ - theories/Reals/Rcomplet.vo theories/Reals/Alembert_compl.vo \ - theories/Reals/AltSeries.vo theories/Reals/Rtrigo_def.vo \ - theories/Reals/Rtrigo_alt.vo theories/Reals/Rprod.vo \ - theories/Reals/Cauchy_prod.vo theories/Reals/Cv_prop.vo \ + theories/Reals/ArithProp.vo theories/Reals/Rfunctions.vo \ + theories/Reals/Rseries.vo theories/Reals/SeqProp.vo \ + theories/Reals/Rcomplet.vo theories/Reals/PartSum.vo \ + theories/Reals/AltSeries.vo theories/Reals/Binome.vo \ + theories/Reals/Rsigma.vo theories/Reals/Rprod.vo \ + theories/Reals/Cauchy_prod.vo theories/Reals/Alembert.vo \ + theories/Reals/SeqSeries.vo theories/Reals/Rtrigo_fun.vo \ + theories/Reals/Rtrigo_def.vo theories/Reals/Rtrigo_alt.vo \ theories/Reals/Cos_rel.vo theories/Reals/Cos_plus.vo \ - theories/Reals/Rtrigo.vo theories/Reals/Ranalysis1.vo \ - theories/Reals/Rtopology.vo theories/Reals/TAF.vo \ - theories/Reals/PSeries_reg.vo theories/Reals/Exp_prop.vo \ - theories/Reals/Rtrigo_reg.vo theories/Reals/Rsqrt_def.vo \ - theories/Reals/R_sqrt.vo theories/Reals/Rtrigo_calc.vo \ - theories/Reals/Ranalysis2.vo theories/Reals/Ranalysis3.vo \ + theories/Reals/Rtrigo.vo theories/Reals/Rlimit.vo \ + theories/Reals/Rderiv.vo theories/Reals/RList.vo \ + theories/Reals/Ranalysis1.vo theories/Reals/Ranalysis2.vo \ + theories/Reals/Ranalysis3.vo theories/Reals/Rtopology.vo \ + theories/Reals/TAF.vo theories/Reals/PSeries_reg.vo \ + theories/Reals/Exp_prop.vo theories/Reals/Rtrigo_reg.vo \ + theories/Reals/Rsqrt_def.vo theories/Reals/R_sqrt.vo \ + theories/Reals/Rtrigo_calc.vo theories/Reals/Rgeom.vo \ theories/Reals/Sqrt_reg.vo theories/Reals/Ranalysis4.vo \ - theories/Reals/Ranalysis.vo theories/Reals/Rgeom.vo \ + theories/Reals/Rpower.vo theories/Reals/Ranalysis.vo \ theories/Reals/NewtonInt.vo theories/Reals/RiemannInt_SF.vo \ - theories/Reals/RiemannInt.vo theories/Reals/Rpower.vo \ - theories/Reals/Reals.vo + theories/Reals/RiemannInt.vo theories/Reals/Integration.vo \ + theories/Reals/Reals.vo REALSVO=$(REALSBASEVO) $(REALS_$(REALS)) diff --git a/theories/Reals/Alembert.v b/theories/Reals/Alembert.v index 0424b55f8..d3414317a 100644 --- a/theories/Reals/Alembert.v +++ b/theories/Reals/Alembert.v @@ -8,240 +8,12 @@ (*i $Id$ i*) - -Require Max. -Require Raxioms. -Require DiscrR. -Require Rbase. +Require RealsB. +Require Rfunctions. Require Rseries. -Require Rtrigo_fun. - -(*********************) -(* Lemmes techniques *) -(*********************) - -Lemma not_sym : (r1,r2:R) ``r1<>r2`` -> ``r2<>r1``. -Intros; Red; Intro H0; Rewrite H0 in H; Elim H; Reflexivity. -Qed. - -Lemma Rgt_2_0 : ``0<2``. -Sup0. -Qed. - -Lemma Rgt_3_0 : ``0<3``. -Sup0. -Qed. - -Lemma tech1 : (An:nat->R;N:nat) ((n:nat)``(le n N)``->``0<(An n)``) -> ``0 < (sum_f_R0 An N)``. -Intros; Induction N. -Simpl; Apply H; Apply le_n. -Simpl; Apply gt0_plus_gt0_is_gt0. -Apply HrecN; Intros; Apply H; Apply le_S; Assumption. -Apply H; Apply le_n. -Qed. - -(* Relation de Chasles *) -Lemma tech2 : (An:nat->R;m,n:nat) (lt m n) -> (sum_f_R0 An n) == (Rplus (sum_f_R0 An m) (sum_f_R0 [i:nat]``(An (plus (S m) i))`` (minus n (S m)))). -Intros; Induction n. -Elim (lt_n_O ? H). -Cut (lt m n)\/m=n. -Intro; Elim H0; Intro. -Replace (sum_f_R0 An (S n)) with ``(sum_f_R0 An n)+(An (S n))``; [Idtac | Reflexivity]. -Replace (minus (S n) (S m)) with (S (minus n (S m))). -Replace (sum_f_R0 [i:nat](An (plus (S m) i)) (S (minus n (S m)))) with (Rplus (sum_f_R0 [i:nat](An (plus (S m) i)) (minus n (S m))) (An (plus (S m) (S (minus n (S m)))))); [Idtac | Reflexivity]. -Replace (plus (S m) (S (minus n (S m)))) with (S n). -Rewrite (Hrecn H1). -Ring. -Apply INR_eq; Rewrite S_INR; Rewrite plus_INR; Do 2 Rewrite S_INR; Rewrite minus_INR. -Rewrite S_INR; Ring. -Apply lt_le_S; Assumption. -Apply INR_eq; Rewrite S_INR; Repeat Rewrite minus_INR. -Repeat Rewrite S_INR; Ring. -Apply le_n_S; Apply lt_le_weak; Assumption. -Apply lt_le_S; Assumption. -Rewrite H1; Rewrite <- minus_n_n; Simpl. -Replace (plus n O) with n; [Reflexivity | Ring]. -Inversion H. -Right; Reflexivity. -Left; Apply lt_le_trans with (S m); [Apply lt_n_Sn | Assumption]. -Qed. - -(* Somme d'une suite géométrique *) -Lemma tech3 : (k:R;N:nat) ``k<>1`` -> (sum_f_R0 [i:nat](pow k i) N)==``(1-(pow k (S N)))/(1-k)``. -Intros; Cut ``1-k<>0``. -Intro; Induction N. -Simpl; Rewrite Rmult_1r; Unfold Rdiv; Rewrite <- Rinv_r_sym. -Reflexivity. -Apply H0. -Replace (sum_f_R0 ([i:nat](pow k i)) (S N)) with (Rplus (sum_f_R0 [i:nat](pow k i) N) (pow k (S N))); [Idtac | Reflexivity]; Rewrite HrecN; Replace ``(1-(pow k (S N)))/(1-k)+(pow k (S N))`` with ``((1-(pow k (S N)))+(1-k)*(pow k (S N)))/(1-k)``. -Apply r_Rmult_mult with ``1-k``. -Unfold Rdiv; Do 2 Rewrite <- (Rmult_sym ``/(1-k)``); Repeat Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym; [ Do 2 Rewrite Rmult_1l; Simpl; Ring | Apply H0]. -Apply H0. -Unfold Rdiv; Rewrite Rmult_Rplus_distrl; Rewrite (Rmult_sym ``1-k``); Repeat Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym. -Rewrite Rmult_1r; Reflexivity. -Apply H0. -Apply Rminus_eq_contra; Red; Intro; Elim H; Symmetry; Assumption. -Qed. - -Lemma tech4 : (An:nat->R;k:R;N:nat) ``0<=k`` -> ((i:nat)``(An (S i))<k*(An i)``) -> ``(An N)<=(An O)*(pow k N)``. -Intros; Induction N. -Simpl; Right; Ring. -Apply Rle_trans with ``k*(An N)``. -Left; Apply (H0 N). -Replace (S N) with (plus N (1)); [Idtac | Ring]. -Rewrite pow_add; Simpl; Rewrite Rmult_1r; Replace ``(An O)*((pow k N)*k)`` with ``k*((An O)*(pow k N))``; [Idtac | Ring]; Apply Rle_monotony. -Assumption. -Apply HrecN. -Qed. - -Lemma tech5 : (An:nat->R;N:nat) (sum_f_R0 An (S N))==``(sum_f_R0 An N)+(An (S N))``. -Intros; Reflexivity. -Qed. - -Lemma tech6 : (An:nat->R;k:R;N:nat) ``0<=k`` -> ((i:nat)``(An (S i))<k*(An i)``) -> (Rle (sum_f_R0 An N) (Rmult (An O) (sum_f_R0 [i:nat](pow k i) N))). -Intros; Induction N. -Simpl; Right; Ring. -Apply Rle_trans with (Rplus (Rmult (An O) (sum_f_R0 [i:nat](pow k i) N)) (An (S N))). -Rewrite tech5; Do 2 Rewrite <- (Rplus_sym (An (S N))); Apply Rle_compatibility. -Apply HrecN. -Rewrite tech5 ; Rewrite Rmult_Rplus_distr; Apply Rle_compatibility. -Apply tech4; Assumption. -Qed. - -Lemma tech7 : (r1,r2:R) ``r1<>0`` -> ``r2<>0`` -> ``r1<>r2`` -> ``/r1<>/r2``. -Intros; Red; Intro. -Assert H3 := (Rmult_mult_r r1 ? ? H2). -Rewrite <- Rinv_r_sym in H3; [Idtac | Assumption]. -Assert H4 := (Rmult_mult_r r2 ? ? H3). -Rewrite Rmult_1r in H4; Rewrite <- Rmult_assoc in H4. -Rewrite Rinv_r_simpl_m in H4; [Idtac | Assumption]. -Elim H1; Symmetry; Assumption. -Qed. - -Lemma tech8 : (n,i:nat) (le n (plus (S n) i)). -Intros; Induction i. -Replace (plus (S n) O) with (S n); [Apply le_n_Sn | Ring]. -Replace (plus (S n) (S i)) with (S (plus (S n) i)). -Apply le_S; Assumption. -Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Do 2 Rewrite S_INR; Ring. -Qed. - -Lemma tech9 : (Un:nat->R) (Un_growing Un) -> ((m,n:nat)(le m n)->``(Un m)<=(Un n)``). -Intros; Unfold Un_growing in H. -Induction n. -Induction m. -Right; Reflexivity. -Elim (le_Sn_O ? H0). -Cut (le m n)\/m=(S n). -Intro; Elim H1; Intro. -Apply Rle_trans with (Un n). -Apply Hrecn; Assumption. -Apply H. -Rewrite H2; Right; Reflexivity. -Inversion H0. -Right; Reflexivity. -Left; Assumption. -Qed. - -Lemma tech10 : (Un:nat->R;x:R) (Un_growing Un) -> (is_lub (EUn Un) x) -> (Un_cv Un x). -Intros; Cut (bound (EUn Un)). -Intro; Assert H2 := (Un_cv_crit ? H H1). -Elim H2; Intros. -Case (total_order_T x x0); Intro. -Elim s; Intro. -Cut (n:nat)``(Un n)<=x``. -Intro; Unfold Un_cv in H3; Cut ``0<x0-x``. -Intro; Elim (H3 ``x0-x`` H5); Intros. -Cut (ge x1 x1). -Intro; Assert H8 := (H6 x1 H7). -Unfold R_dist in H8; Rewrite Rabsolu_left1 in H8. -Rewrite Ropp_distr2 in H8; Unfold Rminus in H8. -Assert H9 := (Rlt_anti_compatibility ``x0`` ? ? H8). -Assert H10 := (Ropp_Rlt ? ? H9). -Assert H11 := (H4 x1). -Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H10 H11)). -Apply Rle_minus; Apply Rle_trans with x. -Apply H4. -Left; Assumption. -Unfold ge; Apply le_n. -Apply Rgt_minus; Assumption. -Intro; Unfold is_lub in H0; Unfold is_upper_bound in H0; Elim H0; Intros. -Apply H4; Unfold EUn; Exists n; Reflexivity. -Rewrite b; Assumption. -Cut ((n:nat)``(Un n)<=x0``). -Intro; Unfold is_lub in H0; Unfold is_upper_bound in H0; Elim H0; Intros. -Cut (y:R)(EUn Un y)->``y<=x0``. -Intro; Assert H8 := (H6 ? H7). -Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H8 r)). -Unfold EUn; Intros; Elim H7; Intros. -Rewrite H8; Apply H4. -Intro; Case (total_order_Rle (Un n) x0); Intro. -Assumption. -Cut (n0:nat)(le n n0) -> ``x0<(Un n0)``. -Intro; Unfold Un_cv in H3; Cut ``0<(Un n)-x0``. -Intro; Elim (H3 ``(Un n)-x0`` H5); Intros. -Cut (ge (max n x1) x1). -Intro; Assert H8 := (H6 (max n x1) H7). -Unfold R_dist in H8. -Rewrite Rabsolu_right in H8. -Unfold Rminus in H8; Do 2 Rewrite <- (Rplus_sym ``-x0``) in H8. -Assert H9 := (Rlt_anti_compatibility ? ? ? H8). -Cut ``(Un n)<=(Un (max n x1))``. -Intro; Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H10 H9)). -Apply tech9; [Assumption | Apply le_max_l]. -Apply Rge_trans with ``(Un n)-x0``. -Unfold Rminus; Apply Rle_sym1; Do 2 Rewrite <- (Rplus_sym ``-x0``); Apply Rle_compatibility. -Apply tech9; [Assumption | Apply le_max_l]. -Left; Assumption. -Unfold ge; Apply le_max_r. -Apply Rlt_anti_compatibility with x0. -Rewrite Rplus_Or; Unfold Rminus; Rewrite (Rplus_sym x0); Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or; Apply H4; Apply le_n. -Intros; Apply Rlt_le_trans with (Un n). -Case (total_order_Rlt_Rle x0 (Un n)); Intro. -Assumption. -Elim n0; Assumption. -Apply tech9; Assumption. -Unfold bound; Exists x; Unfold is_lub in H0; Elim H0; Intros; Assumption. -Qed. - -Lemma tech11 : (An,Bn,Cn:nat->R;N:nat) ((i:nat) (An i)==``(Bn i)-(Cn i)``) -> (sum_f_R0 An N)==``(sum_f_R0 Bn N)-(sum_f_R0 Cn N)``. -Intros; Induction N. -Simpl; Apply H. -Do 3 Rewrite tech5; Rewrite HrecN; Rewrite (H (S N)); Ring. -Qed. - -Lemma tech12 : (An:nat->R;x:R;l:R) (Un_cv [N:nat](sum_f_R0 [i:nat]``(An i)*(pow x i)`` N) l) -> (Pser An x l). -Intros; Unfold Pser; Unfold infinit_sum; Unfold Un_cv in H; Assumption. -Qed. - -Lemma tech13 : (An:nat->R;k:R) ``0<=k<1`` -> (Un_cv [n:nat](Rabsolu ``(An (S n))/(An n)``) k) -> (EXT k0 : R | ``k<k0<1`` /\ (EX N:nat | (n:nat) (le N n)->``(Rabsolu ((An (S n))/(An n)))<k0``)). -Intros; Exists ``k+(1-k)/2``. -Split. -Split. -Pattern 1 k; Rewrite <- Rplus_Or; Apply Rlt_compatibility. -Unfold Rdiv; Apply Rmult_lt_pos. -Apply Rlt_anti_compatibility with k; Rewrite Rplus_Or; Replace ``k+(1-k)`` with R1; [Elim H; Intros; Assumption | Ring]. -Apply Rlt_Rinv; Apply Rgt_2_0. -Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. -Unfold Rdiv; Rewrite Rmult_1r; Rewrite Rmult_Rplus_distr; Pattern 1 ``2``; Rewrite Rmult_sym; Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]; Rewrite Rmult_1r; Replace ``2*k+(1-k)`` with ``1+k``; [Idtac | Ring]. -Elim H; Intros. -Apply Rlt_compatibility; Assumption. -Unfold Un_cv in H0; Cut ``0<(1-k)/2``. -Intro; Elim (H0 ``(1-k)/2`` H1); Intros. -Exists x; Intros. -Assert H4 := (H2 n H3). -Unfold R_dist in H4; Rewrite <- Rabsolu_Rabsolu; Replace ``(Rabsolu ((An (S n))/(An n)))`` with ``((Rabsolu ((An (S n))/(An n)))-k)+k``; [Idtac | Ring]; Apply Rle_lt_trans with ``(Rabsolu ((Rabsolu ((An (S n))/(An n)))-k))+(Rabsolu k)``. -Apply Rabsolu_triang. -Rewrite (Rabsolu_right k). -Apply Rlt_anti_compatibility with ``-k``; Rewrite <- (Rplus_sym k); Repeat Rewrite <- Rplus_assoc; Rewrite Rplus_Ropp_l; Repeat Rewrite Rplus_Ol; Apply H4. -Apply Rle_sym1; Elim H; Intros; Assumption. -Unfold Rdiv; Apply Rmult_lt_pos. -Apply Rlt_anti_compatibility with k; Rewrite Rplus_Or; Elim H; Intros; Replace ``k+(1-k)`` with R1; [Assumption | Ring]. -Apply Rlt_Rinv; Apply Rgt_2_0. -Qed. - -Definition SigT := Specif.sigT. +Require SeqProp. +Require PartSum. +Require Max. (*************************************************) (* Différentes versions du critère de D'Alembert *) @@ -252,7 +24,7 @@ Intros An H H0. Cut (sigTT R [l:R](is_lub (EUn [N:nat](sum_f_R0 An N)) l)) -> (SigT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). Intro; Apply X. Apply complet. -Unfold Un_cv in H0; Unfold bound; Cut ``0</2``; [Intro | Apply Rlt_Rinv; Apply Rgt_2_0]. +Unfold Un_cv in H0; Unfold bound; Cut ``0</2``; [Intro | Apply Rlt_Rinv; Sup0]. Elim (H0 ``/2`` H1); Intros. Exists ``(sum_f_R0 An x)+2*(An (S x))``. Unfold is_upper_bound; Intros; Unfold EUn in H3; Elim H3; Intros. @@ -263,10 +35,10 @@ Replace (sum_f_R0 An x) with (Rplus (sum_f_R0 An x1) (sum_f_R0 [i:nat](An (plus Pattern 1 (sum_f_R0 An x1); Rewrite <- Rplus_Or; Rewrite Rplus_assoc; Apply Rle_compatibility. Left; Apply gt0_plus_gt0_is_gt0. Apply tech1; Intros; Apply H. -Apply Rmult_lt_pos; [Apply Rgt_2_0 | Apply H]. +Apply Rmult_lt_pos; [Sup0 | Apply H]. Symmetry; Apply tech2; Assumption. Rewrite b; Pattern 1 (sum_f_R0 An x); Rewrite <- Rplus_Or; Apply Rle_compatibility. -Left; Apply Rmult_lt_pos; [Apply Rgt_2_0 | Apply H]. +Left; Apply Rmult_lt_pos; [Sup0 | Apply H]. Replace (sum_f_R0 An x1) with (Rplus (sum_f_R0 An x) (sum_f_R0 [i:nat](An (plus (S x) i)) (minus x1 (S x)))). Apply Rle_compatibility. Cut (Rle (sum_f_R0 [i:nat](An (plus (S x) i)) (minus x1 (S x))) (Rmult (An (S x)) (sum_f_R0 [i:nat](pow ``/2`` i) (minus x1 (S x))))). @@ -278,11 +50,11 @@ Rewrite tech3. Replace ``1-/2`` with ``/2``. Unfold Rdiv; Rewrite Rinv_Rinv. Pattern 3 ``2``; Rewrite <- Rmult_1r; Rewrite <- (Rmult_sym ``2``); Apply Rle_monotony. -Left; Apply Rgt_2_0. +Left; Sup0. Left; Apply Rlt_anti_compatibility with ``(pow (/2) (S (minus x1 (S x))))``. Replace ``(pow (/2) (S (minus x1 (S x))))+(1-(pow (/2) (S (minus x1 (S x)))))`` with R1; [Idtac | Ring]. Rewrite <- (Rplus_sym ``1``); Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rlt_compatibility. -Apply pow_lt; Apply Rlt_Rinv; Apply Rgt_2_0. +Apply pow_lt; Apply Rlt_Rinv; Sup0. DiscrR. Apply r_Rmult_mult with ``2``. Rewrite Rminus_distr; Rewrite <- Rinv_r_sym. @@ -292,7 +64,7 @@ DiscrR. Pattern 3 R1; Replace R1 with ``/1``; [Apply tech7; DiscrR | Apply Rinv_R1]. Replace (An (S x)) with (An (plus (S x) O)). Apply (tech6 [i:nat](An (plus (S x) i)) ``/2``). -Left; Apply Rlt_Rinv; Apply Rgt_2_0. +Left; Apply Rlt_Rinv; Sup0. Intro; Cut (n:nat)(ge n x)->``(An (S n))</2*(An n)``. Intro; Replace (plus (S x) (S i)) with (S (plus (S x) i)). Apply H6; Unfold ge; Apply tech8. @@ -342,7 +114,7 @@ Rewrite Rminus_distr; Repeat Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym. Ring. DiscrR. DiscrR. -Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rgt_2_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]. Cut (n:nat)``/2*(Rabsolu (An n))<=(Wn n)<=(3*/2)*(Rabsolu (An n))``. Intro; Cut (n:nat)``/(Wn n)<=2*/(Rabsolu (An n))``. Intro; Cut (n:nat)``(Wn (S n))/(Wn n)<=3*(Rabsolu (An (S n))/(An n))``. @@ -354,12 +126,12 @@ Unfold R_dist; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Rewrite Rabsolu_ Apply Rle_lt_trans with ``3*(Rabsolu ((An (S n))/(An n)))``. Apply H6. Apply Rlt_monotony_contra with ``/3``. -Apply Rlt_Rinv; Apply Rgt_3_0. +Apply Rlt_Rinv; Sup0. Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]; Rewrite Rmult_1l; Rewrite <- (Rmult_sym eps); Unfold Rdiv in H11; Exact H11. Left; Change ``0<(Wn (S n))/(Wn n)``; Unfold Rdiv; Apply Rmult_lt_pos. Apply H2. Apply Rlt_Rinv; Apply H2. -Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rgt_3_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]. Intro; Unfold Rdiv; Rewrite Rabsolu_mult; Rewrite <- Rmult_assoc; Replace ``3`` with ``2*(3*/2)``; [Idtac | Rewrite <- Rmult_assoc; Apply Rinv_r_simpl_m; DiscrR]; Apply Rle_trans with ``(Wn (S n))*2*/(Rabsolu (An n))``. Rewrite Rmult_assoc; Apply Rle_monotony. Left; Apply H2. @@ -367,7 +139,7 @@ Apply H5. Rewrite Rabsolu_Rinv. Replace ``(Wn (S n))*2*/(Rabsolu (An n))`` with ``(2*/(Rabsolu (An n)))*(Wn (S n))``; [Idtac | Ring]; Replace ``2*(3*/2)*(Rabsolu (An (S n)))*/(Rabsolu (An n))`` with ``(2*/(Rabsolu (An n)))*((3*/2)*(Rabsolu (An (S n))))``; [Idtac | Ring]; Apply Rle_monotony. Left; Apply Rmult_lt_pos. -Apply Rgt_2_0. +Sup0. Apply Rlt_Rinv; Apply Rabsolu_pos_lt; Apply H. Elim (H4 (S n)); Intros; Assumption. Apply H. @@ -378,7 +150,7 @@ Apply Rle_monotony_contra with (Rabsolu (An n)). Apply Rabsolu_pos_lt; Apply H. Rewrite Rmult_1r; Replace ``(Rabsolu (An n))*((Wn n)*(2*/(Rabsolu (An n))))`` with ``2*(Wn n)*((Rabsolu (An n))*/(Rabsolu (An n)))``; [Idtac | Ring]; Rewrite <- Rinv_r_sym. Rewrite Rmult_1r; Apply Rle_monotony_contra with ``/2``. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. Rewrite Rmult_1l; Elim (H4 n); Intros; Assumption. DiscrR. @@ -386,12 +158,12 @@ Apply Rabsolu_no_R0; Apply H. Red; Intro; Assert H6 := (H2 n); Rewrite H5 in H6; Elim (Rlt_antirefl ? H6). Intro; Split. Unfold Wn; Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Apply Rle_monotony. -Left; Apply Rlt_Rinv; Apply Rgt_2_0. +Left; Apply Rlt_Rinv; Sup0. Pattern 1 (Rabsolu (An n)); Rewrite <- Rplus_Or; Rewrite double; Unfold Rminus; Rewrite Rplus_assoc; Apply Rle_compatibility. Apply Rle_anti_compatibility with (An n). Rewrite Rplus_Or; Rewrite (Rplus_sym (An n)); Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or; Apply Rle_Rabsolu. Unfold Wn; Unfold Rdiv; Repeat Rewrite <- (Rmult_sym ``/2``); Repeat Rewrite Rmult_assoc; Apply Rle_monotony. -Left; Apply Rlt_Rinv; Apply Rgt_2_0. +Left; Apply Rlt_Rinv; Sup0. Unfold Rminus; Rewrite double; Replace ``3*(Rabsolu (An n))`` with ``(Rabsolu (An n))+(Rabsolu (An n))+(Rabsolu (An n))``; [Idtac | Ring]; Repeat Rewrite Rplus_assoc; Repeat Apply Rle_compatibility. Rewrite <- Rabsolu_Ropp; Apply Rle_Rabsolu. Cut (n:nat)``/2*(Rabsolu (An n))<=(Vn n)<=(3*/2)*(Rabsolu (An n))``. @@ -405,12 +177,12 @@ Unfold R_dist; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Rewrite Rabsolu_ Apply Rle_lt_trans with ``3*(Rabsolu ((An (S n))/(An n)))``. Apply H5. Apply Rlt_monotony_contra with ``/3``. -Apply Rlt_Rinv; Apply Rgt_3_0. +Apply Rlt_Rinv; Sup0. Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]; Rewrite Rmult_1l; Rewrite <- (Rmult_sym eps); Unfold Rdiv in H10; Exact H10. Left; Change ``0<(Vn (S n))/(Vn n)``; Unfold Rdiv; Apply Rmult_lt_pos. Apply H1. Apply Rlt_Rinv; Apply H1. -Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rgt_3_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]. Intro; Unfold Rdiv; Rewrite Rabsolu_mult; Rewrite <- Rmult_assoc; Replace ``3`` with ``2*(3*/2)``; [Idtac | Rewrite <- Rmult_assoc; Apply Rinv_r_simpl_m; DiscrR]; Apply Rle_trans with ``(Vn (S n))*2*/(Rabsolu (An n))``. Rewrite Rmult_assoc; Apply Rle_monotony. Left; Apply H1. @@ -418,7 +190,7 @@ Apply H4. Rewrite Rabsolu_Rinv. Replace ``(Vn (S n))*2*/(Rabsolu (An n))`` with ``(2*/(Rabsolu (An n)))*(Vn (S n))``; [Idtac | Ring]; Replace ``2*(3*/2)*(Rabsolu (An (S n)))*/(Rabsolu (An n))`` with ``(2*/(Rabsolu (An n)))*((3*/2)*(Rabsolu (An (S n))))``; [Idtac | Ring]; Apply Rle_monotony. Left; Apply Rmult_lt_pos. -Apply Rgt_2_0. +Sup0. Apply Rlt_Rinv; Apply Rabsolu_pos_lt; Apply H. Elim (H3 (S n)); Intros; Assumption. Apply H. @@ -429,7 +201,7 @@ Apply Rle_monotony_contra with (Rabsolu (An n)). Apply Rabsolu_pos_lt; Apply H. Rewrite Rmult_1r; Replace ``(Rabsolu (An n))*((Vn n)*(2*/(Rabsolu (An n))))`` with ``2*(Vn n)*((Rabsolu (An n))*/(Rabsolu (An n)))``; [Idtac | Ring]; Rewrite <- Rinv_r_sym. Rewrite Rmult_1r; Apply Rle_monotony_contra with ``/2``. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. Rewrite Rmult_1l; Elim (H3 n); Intros; Assumption. DiscrR. @@ -437,19 +209,19 @@ Apply Rabsolu_no_R0; Apply H. Red; Intro; Assert H5 := (H1 n); Rewrite H4 in H5; Elim (Rlt_antirefl ? H5). Intro; Split. Unfold Vn; Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Apply Rle_monotony. -Left; Apply Rlt_Rinv; Apply Rgt_2_0. +Left; Apply Rlt_Rinv; Sup0. Pattern 1 (Rabsolu (An n)); Rewrite <- Rplus_Or; Rewrite double; Rewrite Rplus_assoc; Apply Rle_compatibility. Apply Rle_anti_compatibility with ``-(An n)``; Rewrite Rplus_Or; Rewrite <- (Rplus_sym (An n)); Rewrite <- Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Ol; Rewrite <- Rabsolu_Ropp; Apply Rle_Rabsolu. Unfold Vn; Unfold Rdiv; Repeat Rewrite <- (Rmult_sym ``/2``); Repeat Rewrite Rmult_assoc; Apply Rle_monotony. -Left; Apply Rlt_Rinv; Apply Rgt_2_0. +Left; Apply Rlt_Rinv; Sup0. Unfold Rminus; Rewrite double; Replace ``3*(Rabsolu (An n))`` with ``(Rabsolu (An n))+(Rabsolu (An n))+(Rabsolu (An n))``; [Idtac | Ring]; Repeat Rewrite Rplus_assoc; Repeat Apply Rle_compatibility; Apply Rle_Rabsolu. Intro; Unfold Wn; Unfold Rdiv; Rewrite <- (Rmult_Or ``/2``); Rewrite <- (Rmult_sym ``/2``); Apply Rlt_monotony. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Apply Rlt_anti_compatibility with (An n); Rewrite Rplus_Or; Unfold Rminus; Rewrite (Rplus_sym (An n)); Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or; Apply Rle_lt_trans with (Rabsolu (An n)). Apply Rle_Rabsolu. Rewrite double; Pattern 1 (Rabsolu (An n)); Rewrite <- Rplus_Or; Apply Rlt_compatibility; Apply Rabsolu_pos_lt; Apply H. Intro; Unfold Vn; Unfold Rdiv; Rewrite <- (Rmult_Or ``/2``); Rewrite <- (Rmult_sym ``/2``); Apply Rlt_monotony. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Apply Rlt_anti_compatibility with ``-(An n)``; Rewrite Rplus_Or; Unfold Rminus; Rewrite (Rplus_sym ``-(An n)``); Rewrite Rplus_assoc; Rewrite Rplus_Ropp_r; Rewrite Rplus_Or; Apply Rle_lt_trans with (Rabsolu (An n)). Rewrite <- Rabsolu_Ropp; Apply Rle_Rabsolu. Rewrite double; Pattern 1 (Rabsolu (An n)); Rewrite <- Rplus_Or; Apply Rlt_compatibility; Apply Rabsolu_pos_lt; Apply H. @@ -598,3 +370,179 @@ Exists (sum_f_R0 An O); Unfold EUn; Exists O; Reflexivity. Intro; Elim X; Intros. Apply Specif.existT with x; Apply tech10; [Unfold Un_growing; Intro; Rewrite tech5; Pattern 1 (sum_f_R0 An n); Rewrite <- Rplus_Or; Apply Rle_compatibility; Left; Apply H | Apply p]. Qed. + +Lemma Alembert_strong_general : (An:nat->R;k:R) ``0<=k<1`` -> ((n:nat)``(An n)<>0``) -> (Un_cv [n:nat](Rabsolu ``(An (S n))/(An n)``) k) -> (SigT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). +Intros. +Cut (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)) -> (SigT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). +Intro Hyp0; Apply Hyp0. +Apply cv_cauchy_2. +Apply cauchy_abs. +Apply cv_cauchy_1. +Cut (SigT R [l:R](Un_cv [N:nat](sum_f_R0 [i:nat](Rabsolu (An i)) N) l)) -> (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 [i:nat](Rabsolu (An i)) N) l)). +Intro Hyp; Apply Hyp. +Apply (Alembert_strong_positive [i:nat](Rabsolu (An i)) k). +Assumption. +Intro; Apply Rabsolu_pos_lt; Apply H0. +Unfold Un_cv. +Unfold Un_cv in H1. +Unfold Rdiv. +Intros. +Elim (H1 eps H2); Intros. +Exists x; Intros. +Rewrite <- Rabsolu_Rinv. +Rewrite <- Rabsolu_mult. +Rewrite Rabsolu_Rabsolu. +Unfold Rdiv in H3; Apply H3; Assumption. +Apply H0. +Intro. +Elim X; Intros. +Apply existTT with x. +Assumption. +Intro. +Elim X; Intros. +Apply Specif.existT with x. +Assumption. +Qed. + +(* Convergence de la SE dans le disque D(O,1/k) *) +(* le cas k=0 est decrit par le theoreme "Alembert" *) +Lemma Alembert_strong : (An:nat->R;x,k:R) ``0<k`` -> ((n:nat)``(An n)<>0``) -> (Un_cv [n:nat](Rabsolu ``(An (S n))/(An n)``) k) -> ``(Rabsolu x)</k`` -> (SigT R [l:R](Pser An x l)). +Intros. +Cut (SigT R [l:R](Un_cv [N:nat](sum_f_R0 [i:nat]``(An i)*(pow x i)`` N) l)). +Intro. +Elim X; Intros. +Apply Specif.existT with x0. +Apply tech12; Assumption. +Case (total_order_T x R0); Intro. +Elim s; Intro. +EApply Alembert_strong_general with ``k*(Rabsolu x)``. +Split. +Unfold Rdiv; Apply Rmult_le_pos. +Left; Assumption. +Left; Apply Rabsolu_pos_lt. +Red; Intro; Rewrite H3 in a; Elim (Rlt_antirefl ? a). +Apply Rlt_monotony_contra with ``/k``. +Apply Rlt_Rinv; Assumption. +Rewrite <- Rmult_assoc. +Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l. +Rewrite Rmult_1r; Assumption. +Red; Intro; Rewrite H3 in H; Elim (Rlt_antirefl ? H). +Intro; Apply prod_neq_R0. +Apply H0. +Apply pow_nonzero. +Red; Intro; Rewrite H3 in a; Elim (Rlt_antirefl ? a). +Unfold Un_cv; Unfold Un_cv in H1. +Intros. +Cut ``0<eps/(Rabsolu x)``. +Intro. +Elim (H1 ``eps/(Rabsolu x)`` H4); Intros. +Exists x0. +Intros. +Replace ``((An (S n))*(pow x (S n)))/((An n)*(pow x n))`` with ``(An (S n))/(An n)*x``. +Unfold R_dist. +Rewrite Rabsolu_mult. +Replace ``(Rabsolu ((An (S n))/(An n)))*(Rabsolu x)-k*(Rabsolu x)`` with ``(Rabsolu x)*((Rabsolu ((An (S n))/(An n)))-k)``; [Idtac | Ring]. +Rewrite Rabsolu_mult. +Rewrite Rabsolu_Rabsolu. +Apply Rlt_monotony_contra with ``/(Rabsolu x)``. +Apply Rlt_Rinv; Apply Rabsolu_pos_lt. +Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). +Rewrite <- Rmult_assoc. +Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l. +Rewrite <- (Rmult_sym eps). +Unfold R_dist in H5. +Unfold Rdiv; Unfold Rdiv in H5; Apply H5; Assumption. +Apply Rabsolu_no_R0. +Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). +Unfold Rdiv; Replace (S n) with (plus n (1)); [Idtac | Ring]. +Rewrite pow_add. +Simpl. +Rewrite Rmult_1r. +Rewrite Rinv_Rmult. +Replace ``(An (plus n (S O)))*((pow x n)*x)*(/(An n)*/(pow x n))`` with ``(An (plus n (S O)))*/(An n)*x*((pow x n)*/(pow x n))``; [Idtac | Ring]. +Rewrite <- Rinv_r_sym. +Rewrite Rmult_1r; Reflexivity. +Apply pow_nonzero. +Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). +Apply H0. +Apply pow_nonzero. +Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). +Unfold Rdiv; Apply Rmult_lt_pos. +Assumption. +Apply Rlt_Rinv; Apply Rabsolu_pos_lt. +Red; Intro H7; Rewrite H7 in a; Elim (Rlt_antirefl ? a). +Apply Specif.existT with (An O). +Unfold Un_cv. +Intros. +Exists O. +Intros. +Unfold R_dist. +Replace (sum_f_R0 [i:nat]``(An i)*(pow x i)`` n) with (An O). +Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Assumption. +Induction n. +Simpl; Ring. +Rewrite tech5. +Rewrite <- Hrecn. +Rewrite b; Simpl; Ring. +Unfold ge; Apply le_O_n. +EApply Alembert_strong_general with ``k*(Rabsolu x)``. +Split. +Unfold Rdiv; Apply Rmult_le_pos. +Left; Assumption. +Left; Apply Rabsolu_pos_lt. +Red; Intro; Rewrite H3 in r; Elim (Rlt_antirefl ? r). +Apply Rlt_monotony_contra with ``/k``. +Apply Rlt_Rinv; Assumption. +Rewrite <- Rmult_assoc. +Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l. +Rewrite Rmult_1r; Assumption. +Red; Intro; Rewrite H3 in H; Elim (Rlt_antirefl ? H). +Intro; Apply prod_neq_R0. +Apply H0. +Apply pow_nonzero. +Red; Intro; Rewrite H3 in r; Elim (Rlt_antirefl ? r). +Unfold Un_cv; Unfold Un_cv in H1. +Intros. +Cut ``0<eps/(Rabsolu x)``. +Intro. +Elim (H1 ``eps/(Rabsolu x)`` H4); Intros. +Exists x0. +Intros. +Replace ``((An (S n))*(pow x (S n)))/((An n)*(pow x n))`` with ``(An (S n))/(An n)*x``. +Unfold R_dist. +Rewrite Rabsolu_mult. +Replace ``(Rabsolu ((An (S n))/(An n)))*(Rabsolu x)-k*(Rabsolu x)`` with ``(Rabsolu x)*((Rabsolu ((An (S n))/(An n)))-k)``; [Idtac | Ring]. +Rewrite Rabsolu_mult. +Rewrite Rabsolu_Rabsolu. +Apply Rlt_monotony_contra with ``/(Rabsolu x)``. +Apply Rlt_Rinv; Apply Rabsolu_pos_lt. +Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). +Rewrite <- Rmult_assoc. +Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l. +Rewrite <- (Rmult_sym eps). +Unfold R_dist in H5. +Unfold Rdiv; Unfold Rdiv in H5; Apply H5; Assumption. +Apply Rabsolu_no_R0. +Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). +Unfold Rdiv; Replace (S n) with (plus n (1)); [Idtac | Ring]. +Rewrite pow_add. +Simpl. +Rewrite Rmult_1r. +Rewrite Rinv_Rmult. +Replace ``(An (plus n (S O)))*((pow x n)*x)*(/(An n)*/(pow x n))`` with ``(An (plus n (S O)))*/(An n)*x*((pow x n)*/(pow x n))``; [Idtac | Ring]. +Rewrite <- Rinv_r_sym. +Rewrite Rmult_1r; Reflexivity. +Apply pow_nonzero. +Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). +Apply H0. +Apply pow_nonzero. +Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). +Unfold Rdiv; Apply Rmult_lt_pos. +Assumption. +Apply Rlt_Rinv; Apply Rabsolu_pos_lt. +Red; Intro H7; Rewrite H7 in r; Elim (Rlt_antirefl ? r). +Qed.
\ No newline at end of file diff --git a/theories/Reals/Alembert_compl.v b/theories/Reals/Alembert_compl.v deleted file mode 100644 index a0daa7dd7..000000000 --- a/theories/Reals/Alembert_compl.v +++ /dev/null @@ -1,320 +0,0 @@ -(***********************************************************************) -(* v * The Coq Proof Assistant / The Coq Development Team *) -(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) -(* \VV/ *************************************************************) -(* // * This file is distributed under the terms of the *) -(* * GNU Lesser General Public License Version 2.1 *) -(***********************************************************************) - -(*i $Id$ i*) - -Require Max. -Require Raxioms. -Require DiscrR. -Require Rbase. -Require Rseries. -Require Rcomplet. -Require Alembert. - -(* Le critère de Cauchy pour les séries *) -Definition Cauchy_crit_series [An:nat->R] : Prop := (Cauchy_crit [N:nat](sum_f_R0 An N)). - -(**********) -Lemma sum_growing : (An,Bn:nat->R;N:nat) ((n:nat)``(An n)<=(Bn n)``)->``(sum_f_R0 An N)<=(sum_f_R0 Bn N)``. -Intros. -Induction N. -Simpl; Apply H. -Do 2 Rewrite tech5. -Apply Rle_trans with ``(sum_f_R0 An N)+(Bn (S N))``. -Apply Rle_compatibility; Apply H. -Do 2 Rewrite <- (Rplus_sym (Bn (S N))). -Apply Rle_compatibility; Apply HrecN. -Qed. - -(**********) -Lemma Rabsolu_triang_gen : (An:nat->R;N:nat) (Rle (Rabsolu (sum_f_R0 An N)) (sum_f_R0 [i:nat](Rabsolu (An i)) N)). -Intros. -Induction N. -Simpl. -Right; Reflexivity. -Do 2 Rewrite tech5. -Apply Rle_trans with ``(Rabsolu ((sum_f_R0 An N)))+(Rabsolu (An (S N)))``. -Apply Rabsolu_triang. -Do 2 Rewrite <- (Rplus_sym (Rabsolu (An (S N)))). -Apply Rle_compatibility; Apply HrecN. -Qed. - -(**********) -Lemma cond_pos_sum : (An:nat->R;N:nat) ((n:nat)``0<=(An n)``) -> ``0<=(sum_f_R0 An N)``. -Intros. -Induction N. -Simpl; Apply H. -Rewrite tech5. -Apply ge0_plus_ge0_is_ge0. -Apply HrecN. -Apply H. -Qed. - -(* Si (|An|) verifie le critere de Cauchy pour les séries , alors (An) aussi *) -Lemma cauchy_abs : (An:nat->R) (Cauchy_crit_series [i:nat](Rabsolu (An i))) -> (Cauchy_crit_series An). -Unfold Cauchy_crit_series; Unfold Cauchy_crit. -Intros. -Elim (H eps H0); Intros. -Exists x. -Intros. -Cut (Rle (R_dist (sum_f_R0 An n) (sum_f_R0 An m)) (R_dist (sum_f_R0 [i:nat](Rabsolu (An i)) n) (sum_f_R0 [i:nat](Rabsolu (An i)) m))). -Intro. -Apply Rle_lt_trans with (R_dist (sum_f_R0 [i:nat](Rabsolu (An i)) n) (sum_f_R0 [i:nat](Rabsolu (An i)) m)). -Assumption. -Apply H1; Assumption. -Assert H4 := (lt_eq_lt_dec n m). -Elim H4; Intro. -Elim a; Intro. -Rewrite (tech2 An n m); [Idtac | Assumption]. -Rewrite (tech2 [i:nat](Rabsolu (An i)) n m); [Idtac | Assumption]. -Unfold R_dist. -Unfold Rminus. -Do 2 Rewrite Ropp_distr1. -Do 2 Rewrite <- Rplus_assoc. -Do 2 Rewrite Rplus_Ropp_r. -Do 2 Rewrite Rplus_Ol. -Do 2 Rewrite Rabsolu_Ropp. -Rewrite (Rabsolu_right (sum_f_R0 [i:nat](Rabsolu (An (plus (S n) i))) (minus m (S n)))). -Pose Bn:=[i:nat](An (plus (S n) i)). -Replace [i:nat](Rabsolu (An (plus (S n) i))) with [i:nat](Rabsolu (Bn i)). -Apply Rabsolu_triang_gen. -Unfold Bn; Reflexivity. -Apply Rle_sym1. -Apply cond_pos_sum. -Intro; Apply Rabsolu_pos. -Rewrite b. -Unfold R_dist. -Unfold Rminus; Do 2 Rewrite Rplus_Ropp_r. -Rewrite Rabsolu_R0; Right; Reflexivity. -Rewrite (tech2 An m n); [Idtac | Assumption]. -Rewrite (tech2 [i:nat](Rabsolu (An i)) m n); [Idtac | Assumption]. -Unfold R_dist. -Unfold Rminus. -Do 2 Rewrite Rplus_assoc. -Rewrite (Rplus_sym (sum_f_R0 An m)). -Rewrite (Rplus_sym (sum_f_R0 [i:nat](Rabsolu (An i)) m)). -Do 2 Rewrite Rplus_assoc. -Do 2 Rewrite Rplus_Ropp_l. -Do 2 Rewrite Rplus_Or. -Rewrite (Rabsolu_right (sum_f_R0 [i:nat](Rabsolu (An (plus (S m) i))) (minus n (S m)))). -Pose Bn:=[i:nat](An (plus (S m) i)). -Replace [i:nat](Rabsolu (An (plus (S m) i))) with [i:nat](Rabsolu (Bn i)). -Apply Rabsolu_triang_gen. -Unfold Bn; Reflexivity. -Apply Rle_sym1. -Apply cond_pos_sum. -Intro; Apply Rabsolu_pos. -Qed. - -(**********) -Lemma cv_cauchy_1 : (An:nat->R) (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)) -> (Cauchy_crit_series An). -Intros. -Elim X; Intros. -Unfold Un_cv in p. -Unfold Cauchy_crit_series; Unfold Cauchy_crit. -Intros. -Cut ``0<eps/2``. -Intro. -Elim (p ``eps/2`` H0); Intros. -Exists x0. -Intros. -Apply Rle_lt_trans with ``(R_dist (sum_f_R0 An n) x)+(R_dist (sum_f_R0 An m) x)``. -Unfold R_dist. -Replace ``(sum_f_R0 An n)-(sum_f_R0 An m)`` with ``((sum_f_R0 An n)-x)+ -((sum_f_R0 An m)-x)``; [Idtac | Ring]. -Rewrite <- (Rabsolu_Ropp ``(sum_f_R0 An m)-x``). -Apply Rabsolu_triang. -Apply Rlt_le_trans with ``eps/2+eps/2``. -Apply Rplus_lt. -Apply H1; Assumption. -Apply H1; Assumption. -Right; Symmetry; Apply double_var. -Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rgt_2_0]. -Qed. - -Lemma cv_cauchy_2 : (An:nat->R) (Cauchy_crit_series An) -> (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). -Intros. -Apply R_complet. -Unfold Cauchy_crit_series in H. -Exact H. -Qed. - -Lemma Alembert_strong_general : (An:nat->R;k:R) ``0<=k<1`` -> ((n:nat)``(An n)<>0``) -> (Un_cv [n:nat](Rabsolu ``(An (S n))/(An n)``) k) -> (SigT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). -Intros. -Cut (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)) -> (SigT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). -Intro Hyp0; Apply Hyp0. -Apply cv_cauchy_2. -Apply cauchy_abs. -Apply cv_cauchy_1. -Cut (SigT R [l:R](Un_cv [N:nat](sum_f_R0 [i:nat](Rabsolu (An i)) N) l)) -> (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 [i:nat](Rabsolu (An i)) N) l)). -Intro Hyp; Apply Hyp. -Apply (Alembert_strong_positive [i:nat](Rabsolu (An i)) k). -Assumption. -Intro; Apply Rabsolu_pos_lt; Apply H0. -Unfold Un_cv. -Unfold Un_cv in H1. -Unfold Rdiv. -Intros. -Elim (H1 eps H2); Intros. -Exists x; Intros. -Rewrite <- Rabsolu_Rinv. -Rewrite <- Rabsolu_mult. -Rewrite Rabsolu_Rabsolu. -Unfold Rdiv in H3; Apply H3; Assumption. -Apply H0. -Intro. -Elim X; Intros. -Apply existTT with x. -Assumption. -Intro. -Elim X; Intros. -Apply Specif.existT with x. -Assumption. -Qed. - -(* Convergence de la SE dans le disque D(O,1/k) *) -(* le cas k=0 est decrit par le theoreme "Alembert" *) -Lemma Alembert_strong : (An:nat->R;x,k:R) ``0<k`` -> ((n:nat)``(An n)<>0``) -> (Un_cv [n:nat](Rabsolu ``(An (S n))/(An n)``) k) -> ``(Rabsolu x)</k`` -> (SigT R [l:R](Pser An x l)). -Intros. -Cut (SigT R [l:R](Un_cv [N:nat](sum_f_R0 [i:nat]``(An i)*(pow x i)`` N) l)). -Intro. -Elim X; Intros. -Apply Specif.existT with x0. -Apply tech12; Assumption. -Case (total_order_T x R0); Intro. -Elim s; Intro. -EApply Alembert_strong_general with ``k*(Rabsolu x)``. -Split. -Unfold Rdiv; Apply Rmult_le_pos. -Left; Assumption. -Left; Apply Rabsolu_pos_lt. -Red; Intro; Rewrite H3 in a; Elim (Rlt_antirefl ? a). -Apply Rlt_monotony_contra with ``/k``. -Apply Rlt_Rinv; Assumption. -Rewrite <- Rmult_assoc. -Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l. -Rewrite Rmult_1r; Assumption. -Red; Intro; Rewrite H3 in H; Elim (Rlt_antirefl ? H). -Intro; Apply prod_neq_R0. -Apply H0. -Apply pow_nonzero. -Red; Intro; Rewrite H3 in a; Elim (Rlt_antirefl ? a). -Unfold Un_cv; Unfold Un_cv in H1. -Intros. -Cut ``0<eps/(Rabsolu x)``. -Intro. -Elim (H1 ``eps/(Rabsolu x)`` H4); Intros. -Exists x0. -Intros. -Replace ``((An (S n))*(pow x (S n)))/((An n)*(pow x n))`` with ``(An (S n))/(An n)*x``. -Unfold R_dist. -Rewrite Rabsolu_mult. -Replace ``(Rabsolu ((An (S n))/(An n)))*(Rabsolu x)-k*(Rabsolu x)`` with ``(Rabsolu x)*((Rabsolu ((An (S n))/(An n)))-k)``; [Idtac | Ring]. -Rewrite Rabsolu_mult. -Rewrite Rabsolu_Rabsolu. -Apply Rlt_monotony_contra with ``/(Rabsolu x)``. -Apply Rlt_Rinv; Apply Rabsolu_pos_lt. -Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). -Rewrite <- Rmult_assoc. -Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l. -Rewrite <- (Rmult_sym eps). -Unfold R_dist in H5. -Unfold Rdiv; Unfold Rdiv in H5; Apply H5; Assumption. -Apply Rabsolu_no_R0. -Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). -Unfold Rdiv; Replace (S n) with (plus n (1)); [Idtac | Ring]. -Rewrite pow_add. -Simpl. -Rewrite Rmult_1r. -Rewrite Rinv_Rmult. -Replace ``(An (plus n (S O)))*((pow x n)*x)*(/(An n)*/(pow x n))`` with ``(An (plus n (S O)))*/(An n)*x*((pow x n)*/(pow x n))``; [Idtac | Ring]. -Rewrite <- Rinv_r_sym. -Rewrite Rmult_1r; Reflexivity. -Apply pow_nonzero. -Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). -Apply H0. -Apply pow_nonzero. -Red; Intro; Rewrite H7 in a; Elim (Rlt_antirefl ? a). -Unfold Rdiv; Apply Rmult_lt_pos. -Assumption. -Apply Rlt_Rinv; Apply Rabsolu_pos_lt. -Red; Intro H7; Rewrite H7 in a; Elim (Rlt_antirefl ? a). -Apply Specif.existT with (An O). -Unfold Un_cv. -Intros. -Exists O. -Intros. -Unfold R_dist. -Replace (sum_f_R0 [i:nat]``(An i)*(pow x i)`` n) with (An O). -Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Assumption. -Induction n. -Simpl; Ring. -Rewrite tech5. -Rewrite <- Hrecn. -Rewrite b; Simpl; Ring. -Unfold ge; Apply le_O_n. -EApply Alembert_strong_general with ``k*(Rabsolu x)``. -Split. -Unfold Rdiv; Apply Rmult_le_pos. -Left; Assumption. -Left; Apply Rabsolu_pos_lt. -Red; Intro; Rewrite H3 in r; Elim (Rlt_antirefl ? r). -Apply Rlt_monotony_contra with ``/k``. -Apply Rlt_Rinv; Assumption. -Rewrite <- Rmult_assoc. -Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l. -Rewrite Rmult_1r; Assumption. -Red; Intro; Rewrite H3 in H; Elim (Rlt_antirefl ? H). -Intro; Apply prod_neq_R0. -Apply H0. -Apply pow_nonzero. -Red; Intro; Rewrite H3 in r; Elim (Rlt_antirefl ? r). -Unfold Un_cv; Unfold Un_cv in H1. -Intros. -Cut ``0<eps/(Rabsolu x)``. -Intro. -Elim (H1 ``eps/(Rabsolu x)`` H4); Intros. -Exists x0. -Intros. -Replace ``((An (S n))*(pow x (S n)))/((An n)*(pow x n))`` with ``(An (S n))/(An n)*x``. -Unfold R_dist. -Rewrite Rabsolu_mult. -Replace ``(Rabsolu ((An (S n))/(An n)))*(Rabsolu x)-k*(Rabsolu x)`` with ``(Rabsolu x)*((Rabsolu ((An (S n))/(An n)))-k)``; [Idtac | Ring]. -Rewrite Rabsolu_mult. -Rewrite Rabsolu_Rabsolu. -Apply Rlt_monotony_contra with ``/(Rabsolu x)``. -Apply Rlt_Rinv; Apply Rabsolu_pos_lt. -Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). -Rewrite <- Rmult_assoc. -Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l. -Rewrite <- (Rmult_sym eps). -Unfold R_dist in H5. -Unfold Rdiv; Unfold Rdiv in H5; Apply H5; Assumption. -Apply Rabsolu_no_R0. -Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). -Unfold Rdiv; Replace (S n) with (plus n (1)); [Idtac | Ring]. -Rewrite pow_add. -Simpl. -Rewrite Rmult_1r. -Rewrite Rinv_Rmult. -Replace ``(An (plus n (S O)))*((pow x n)*x)*(/(An n)*/(pow x n))`` with ``(An (plus n (S O)))*/(An n)*x*((pow x n)*/(pow x n))``; [Idtac | Ring]. -Rewrite <- Rinv_r_sym. -Rewrite Rmult_1r; Reflexivity. -Apply pow_nonzero. -Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). -Apply H0. -Apply pow_nonzero. -Red; Intro; Rewrite H7 in r; Elim (Rlt_antirefl ? r). -Unfold Rdiv; Apply Rmult_lt_pos. -Assumption. -Apply Rlt_Rinv; Apply Rabsolu_pos_lt. -Red; Intro H7; Rewrite H7 in r; Elim (Rlt_antirefl ? r). -Qed.
\ No newline at end of file diff --git a/theories/Reals/AltSeries.v b/theories/Reals/AltSeries.v index d8c25e1c3..3bf7249b3 100644 --- a/theories/Reals/AltSeries.v +++ b/theories/Reals/AltSeries.v @@ -8,52 +8,17 @@ (*i $Id$ i*) -Require Even. -Require Div2. -Require Max. -Require DiscrR. +Require RealsB. +Require Rfunctions. Require Rseries. -Require Alembert. -Require Rcomplet. -Require Binome. - -(* Tout entier s'ecrit sous la forme 2p ou 2p+1 *) -Lemma even_odd_cor : (n:nat) (EX p : nat | n=(mult (2) p)\/n=(S (mult (2) p))). -Intro. -Assert H := (even_or_odd n). -Exists (div2 n). -Assert H0 := (even_odd_double n). -Elim H0; Intros. -Elim H1; Intros H3 _. -Elim H2; Intros H4 _. -Replace (mult (2) (div2 n)) with (Div2.double (div2 n)). -Elim H; Intro. -Left. -Apply H3; Assumption. -Right. -Apply H4; Assumption. -Unfold Div2.double; Ring. -Qed. +Require SeqProp. +Require PartSum. +Require Max. (**********) Definition tg_alt [Un:nat->R] : nat->R := [i:nat]``(pow (-1) i)*(Un i)``. Definition positivity_sui [Un:nat->R] : Prop := (n:nat)``0<=(Un n)``. -(**********) -Lemma pow_1_even : (n:nat) ``(pow (-1) (mult (S (S O)) n))==1``. -Intro; Induction n. -Reflexivity. -Replace (mult (2) (S n)) with (plus (2) (mult (2) n)). -Rewrite pow_add; Rewrite Hrecn; Simpl; Ring. -Replace (S n) with (plus n (1)); [Ring | Ring]. -Qed. - -(**********) -Lemma pow_1_odd : (n:nat) ``(pow (-1) (S (mult (S (S O)) n)))==-1``. -Intro; Replace (S (mult (2) n)) with (plus (mult (2) n) (1)); [Idtac | Ring]. -Rewrite pow_add; Rewrite pow_1_even; Simpl; Ring. -Qed. - (* Croissance des sommes partielles impaires *) Lemma CV_ALT_step1 : (Un:nat->R) (Un_decreasing Un) -> (Un_growing [N:nat](sum_f_R0 (tg_alt Un) (S (mult (2) N)))). Intros; Unfold Un_growing; Intro. @@ -147,25 +112,6 @@ Unfold tg_alt; Simpl; Ring. Apply lt_O_Sn. Qed. -(**********) -Lemma pow_1_abs : (n:nat) ``(Rabsolu (pow (-1) n))==1``. -Intro; Induction n. -Simpl; Apply Rabsolu_R1. -Replace (S n) with (plus n (1)); [Rewrite pow_add | Ring]. -Rewrite Rabsolu_mult. -Rewrite Hrecn; Rewrite Rmult_1l; Simpl; Rewrite Rmult_1r; Rewrite Rabsolu_Ropp; Apply Rabsolu_R1. -Qed. - -(* 2m <= 2n => m<=n *) -Lemma le_double : (m,n:nat) (le (mult (2) m) (mult (2) n)) -> (le m n). -Intros; Apply INR_le. -Assert H1 := (le_INR ? ? H). -Do 2 Rewrite mult_INR in H1. -Apply Rle_monotony_contra with ``(INR (S (S O)))``. -Replace (INR (S (S O))) with ``2``; [Apply Rgt_2_0 | Reflexivity]. -Assumption. -Qed. - (* Ceci donne quasiment le résultat sur la convergence des séries alternées *) Lemma CV_ALT : (Un:nat->R) (Un_decreasing Un) -> (positivity_sui Un) -> (Un_cv Un R0) -> (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 (tg_alt Un) N) l)). Intros. @@ -197,9 +143,9 @@ Rewrite tech5; Ring. Rewrite H12; Apply Rlt_trans with ``eps/2``. Apply H7; Assumption. Unfold Rdiv; Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Rewrite (Rmult_sym ``2``); Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Rewrite Rmult_1r | DiscrR]. -Rewrite Rlimit.double. +Rewrite Rbase.double. Pattern 1 eps; Rewrite <- (Rplus_Or eps); Apply Rlt_compatibility; Assumption. Elim H10; Intro; Apply le_double. Rewrite <- H11; Apply le_trans with N. @@ -214,52 +160,6 @@ Apply le_max_l. Assumption. Qed. -(**********) -Lemma growing_ineq : (Un:nat->R;l:R) (Un_growing Un) -> (Un_cv Un l) -> ((n:nat)``(Un n)<=l``). -Intros; Case (total_order_T (Un n) l); Intro. -Elim s; Intro. -Left; Assumption. -Right; Assumption. -Cut ``0<(Un n)-l``. -Intro; Unfold Un_cv in H0; Unfold R_dist in H0. -Elim (H0 ``(Un n)-l`` H1); Intros N1 H2. -Pose N := (max n N1). -Cut ``(Un n)-l<=(Un N)-l``. -Intro; Cut ``(Un N)-l<(Un n)-l``. -Intro; Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H3 H4)). -Apply Rle_lt_trans with ``(Rabsolu ((Un N)-l))``. -Apply Rle_Rabsolu. -Apply H2. -Unfold ge N; Apply le_max_r. -Unfold Rminus; Do 2 Rewrite <- (Rplus_sym ``-l``); Apply Rle_compatibility. -Apply tech9. -Assumption. -Unfold N; Apply le_max_l. -Apply Rlt_anti_compatibility with l. -Rewrite Rplus_Or. -Replace ``l+((Un n)-l)`` with (Un n); [Assumption | Ring]. -Qed. - -(* Un->l => (-Un) -> (-l) *) -Lemma CV_opp : (An:nat->R;l:R) (Un_cv An l) -> (Un_cv (opp_sui An) ``-l``). -Intros An l. -Unfold Un_cv; Unfold R_dist; Intros. -Elim (H eps H0); Intros. -Exists x; Intros. -Unfold opp_sui; Replace ``-(An n)- (-l)`` with ``-((An n)-l)``; [Rewrite Rabsolu_Ropp | Ring]. -Apply H1; Assumption. -Qed. - -(**********) -Lemma decreasing_ineq : (Un:nat->R;l:R) (Un_decreasing Un) -> (Un_cv Un l) -> ((n:nat)``l<=(Un n)``). -Intros. -Assert H1 := (decreasing_growing ? H). -Assert H2 := (CV_opp ? ? H0). -Assert H3 := (growing_ineq ? ? H1 H2). -Apply Ropp_Rle. -Unfold opp_sui in H3; Apply H3. -Qed. - (************************************************) (* Théorème de convergence des séries alternées *) (* *) @@ -338,7 +238,7 @@ Qed. Lemma PI_tg_cv : (Un_cv PI_tg R0). Unfold Un_cv; Unfold R_dist; Intros. -Cut ``0<2*eps``; [Intro | Apply Rmult_lt_pos; [Apply Rgt_2_0 | Assumption]]. +Cut ``0<2*eps``; [Intro | Apply Rmult_lt_pos; [Sup0 | Assumption]]. Assert H1 := (archimed ``/(2*eps)``). Cut (Zle `0` ``(up (/(2*eps)))``). Intro; Assert H3 := (IZN ``(up (/(2*eps)))`` H2). @@ -369,10 +269,10 @@ Symmetry; Apply S_pred with O. Assumption. Apply Rle_lt_trans with ``/(INR (mult (S (S O)) N))``. Apply Rle_monotony_contra with ``(INR (mult (S (S O)) N))``. -Rewrite mult_INR; Apply Rmult_lt_pos; [Apply Rgt_2_0 | Apply lt_INR_0; Assumption]. +Rewrite mult_INR; Apply Rmult_lt_pos; [Simpl; Sup0 | Apply lt_INR_0; Assumption]. Rewrite <- Rinv_r_sym. Apply Rle_monotony_contra with ``(INR (mult (S (S O)) n))``. -Rewrite mult_INR; Apply Rmult_lt_pos; [Apply Rgt_2_0 | Apply lt_INR_0; Assumption]. +Rewrite mult_INR; Apply Rmult_lt_pos; [Simpl; Sup0 | Apply lt_INR_0; Assumption]. Rewrite (Rmult_sym (INR (mult (S (S O)) n))); Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym. Do 2 Rewrite Rmult_1r; Apply le_INR. Apply mult_le; Assumption. @@ -388,7 +288,7 @@ Rewrite mult_INR. Rewrite Rinv_Rmult. Replace (INR (S (S O))) with ``2``; [Idtac | Reflexivity]. Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym; [Idtac | DiscrR]. Rewrite Rmult_1l; Apply Rlt_monotony_contra with (INR N). Apply lt_INR_0; Assumption. @@ -457,7 +357,7 @@ Unfold Rdiv in H; Apply Rlt_le_trans with ``(sum_f_R0 (tg_alt PI_tg) (S (mult (S Simpl; Unfold tg_alt; Simpl; Rewrite Rmult_1l; Rewrite Rmult_1r; Apply Rlt_anti_compatibility with ``(PI_tg (S O))``. Rewrite Rplus_Or; Replace ``(PI_tg (S O))+((PI_tg O)+ -1*(PI_tg (S O)))`` with ``(PI_tg O)``; [Unfold PI_tg | Ring]. Simpl; Apply Rinv_lt. -Rewrite Rmult_1l; Replace ``2+1`` with ``3``; [Apply Rgt_3_0 | Ring]. -Rewrite Rplus_sym; Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rlt_compatibility; Apply Rgt_2_0. +Rewrite Rmult_1l; Replace ``2+1`` with ``3``; [Sup0 | Ring]. +Rewrite Rplus_sym; Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rlt_compatibility; Sup0. Assumption. Qed. diff --git a/theories/Reals/ArithProp.v b/theories/Reals/ArithProp.v new file mode 100644 index 000000000..f768c7b7a --- /dev/null +++ b/theories/Reals/ArithProp.v @@ -0,0 +1,132 @@ +(***********************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) +(* \VV/ *************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(***********************************************************************) + +(*i $Id$ i*) + +Require RealsB. +Require Rbasic_fun. +Require Even. +Require Div2. + +Lemma minus_neq_O : (n,i:nat) (lt i n) -> ~(minus n i)=O. +Intros; Red; Intro. +Cut (n,m:nat) (le m n) -> (minus n m)=O -> n=m. +Intro; Assert H2 := (H1 ? ? (lt_le_weak ? ? H) H0); Rewrite H2 in H; Elim (lt_n_n ? H). +Pose R := [n,m:nat](le m n)->(minus n m)=(0)->n=m. +Cut ((n,m:nat)(R n m)) -> ((n0,m:nat)(le m n0)->(minus n0 m)=(0)->n0=m). +Intro; Apply H1. +Apply nat_double_ind. +Unfold R; Intros; Inversion H2; Reflexivity. +Unfold R; Intros; Simpl in H3; Assumption. +Unfold R; Intros; Simpl in H4; Assert H5 := (le_S_n ? ? H3); Assert H6 := (H2 H5 H4); Rewrite H6; Reflexivity. +Unfold R; Intros; Apply H1; Assumption. +Qed. + +Lemma le_minusni_n : (n,i:nat) (le i n)->(le (minus n i) n). +Pose R := [m,n:nat] (le n m) -> (le (minus m n) m). +Cut ((m,n:nat)(R m n)) -> ((n,i:nat)(le i n)->(le (minus n i) n)). +Intro; Apply H. +Apply nat_double_ind. +Unfold R; Intros; Simpl; Apply le_n. +Unfold R; Intros; Simpl; Apply le_n. +Unfold R; Intros; Simpl; Apply le_trans with n. +Apply H0; Apply le_S_n; Assumption. +Apply le_n_Sn. +Unfold R; Intros; Apply H; Assumption. +Qed. + +Lemma lt_minus_O_lt : (m,n:nat) (lt m n) -> (lt O (minus n m)). +Intros n m; Pattern n m; Apply nat_double_ind; [ + Intros; Rewrite <- minus_n_O; Assumption +| Intros; Elim (lt_n_O ? H) +| Intros; Simpl; Apply H; Apply lt_S_n; Assumption]. +Qed. + +(* Tout entier s'ecrit sous la forme 2p ou 2p+1 *) +Lemma even_odd_cor : (n:nat) (EX p : nat | n=(mult (2) p)\/n=(S (mult (2) p))). +Intro. +Assert H := (even_or_odd n). +Exists (div2 n). +Assert H0 := (even_odd_double n). +Elim H0; Intros. +Elim H1; Intros H3 _. +Elim H2; Intros H4 _. +Replace (mult (2) (div2 n)) with (Div2.double (div2 n)). +Elim H; Intro. +Left. +Apply H3; Assumption. +Right. +Apply H4; Assumption. +Unfold Div2.double; Ring. +Qed. + +(* 2m <= 2n => m<=n *) +Lemma le_double : (m,n:nat) (le (mult (2) m) (mult (2) n)) -> (le m n). +Intros; Apply INR_le. +Assert H1 := (le_INR ? ? H). +Do 2 Rewrite mult_INR in H1. +Apply Rle_monotony_contra with ``(INR (S (S O)))``. +Replace (INR (S (S O))) with ``2``; [Sup0 | Reflexivity]. +Assumption. +Qed. + +(* Here, we have the euclidian division *) +(* This lemma is used in the proof of sin_eq_0 : (sin x)=0<->x=kPI *) +Lemma euclidian_division : (x,y:R) ``y<>0`` -> (EXT k:Z | (EXT r : R | ``x==(IZR k)*y+r``/\``0<=r<(Rabsolu y)``)). +Intros. +Pose k0 := Cases (case_Rabsolu y) of + (leftT _) => (Zminus `1` (up ``x/-y``)) + | (rightT _) => (Zminus (up ``x/y``) `1`) end. +Exists k0. +Exists ``x-(IZR k0)*y``. +Split. +Ring. +Unfold k0; Case (case_Rabsolu y); Intro. +Assert H0 := (archimed ``x/-y``); Rewrite <- Z_R_minus; Simpl; Unfold Rminus. +Replace ``-((1+ -(IZR (up (x/( -y)))))*y)`` with ``((IZR (up (x/-y)))-1)*y``; [Idtac | Ring]. +Split. +Apply Rle_monotony_contra with ``/-y``. +Apply Rlt_Rinv; Apply Rgt_RO_Ropp; Exact r. +Rewrite Rmult_Or; Rewrite (Rmult_sym ``/-y``); Rewrite Rmult_Rplus_distrl; Rewrite <- Ropp_Rinv; [Idtac | Assumption]. +Rewrite Rmult_assoc; Repeat Rewrite Ropp_mul3; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]. +Apply Rle_anti_compatibility with ``(IZR (up (x/( -y))))-x/( -y)``. +Rewrite Rplus_Or; Unfold Rdiv; Pattern 4 ``/-y``; Rewrite <- Ropp_Rinv; [Idtac | Assumption]. +Replace ``(IZR (up (x*/ -y)))-x* -/y+( -(x*/y)+ -((IZR (up (x*/ -y)))-1))`` with R1; [Idtac | Ring]. +Elim H0; Intros _ H1; Unfold Rdiv in H1; Exact H1. +Rewrite (Rabsolu_left ? r); Apply Rlt_monotony_contra with ``/-y``. +Apply Rlt_Rinv; Apply Rgt_RO_Ropp; Exact r. +Rewrite <- Rinv_l_sym. +Rewrite (Rmult_sym ``/-y``); Rewrite Rmult_Rplus_distrl; Rewrite <- Ropp_Rinv; [Idtac | Assumption]. +Rewrite Rmult_assoc; Repeat Rewrite Ropp_mul3; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]; Apply Rlt_anti_compatibility with ``((IZR (up (x/( -y))))-1)``. +Replace ``(IZR (up (x/( -y))))-1+1`` with ``(IZR (up (x/( -y))))``; [Idtac | Ring]. +Replace ``(IZR (up (x/( -y))))-1+( -(x*/y)+ -((IZR (up (x/( -y))))-1))`` with ``-(x*/y)``; [Idtac | Ring]. +Rewrite <- Ropp_mul3; Rewrite (Ropp_Rinv ? H); Elim H0; Unfold Rdiv; Intros H1 _; Exact H1. +Apply Ropp_neq; Assumption. +Assert H0 := (archimed ``x/y``); Rewrite <- Z_R_minus; Simpl; Cut ``0<y``. +Intro; Unfold Rminus; Replace ``-(((IZR (up (x/y)))+ -1)*y)`` with ``(1-(IZR (up (x/y))))*y``; [Idtac | Ring]. +Split. +Apply Rle_monotony_contra with ``/y``. +Apply Rlt_Rinv; Assumption. +Rewrite Rmult_Or; Rewrite (Rmult_sym ``/y``); Rewrite Rmult_Rplus_distrl; Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]; Apply Rle_anti_compatibility with ``(IZR (up (x/y)))-x/y``; Rewrite Rplus_Or; Unfold Rdiv; Replace ``(IZR (up (x*/y)))-x*/y+(x*/y+(1-(IZR (up (x*/y)))))`` with R1; [Idtac | Ring]; Elim H0; Intros _ H2; Unfold Rdiv in H2; Exact H2. +Rewrite (Rabsolu_right ? r); Apply Rlt_monotony_contra with ``/y``. +Apply Rlt_Rinv; Assumption. +Rewrite <- (Rinv_l_sym ? H); Rewrite (Rmult_sym ``/y``); Rewrite Rmult_Rplus_distrl; Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]; Apply Rlt_anti_compatibility with ``((IZR (up (x/y)))-1)``; Replace ``(IZR (up (x/y)))-1+1`` with ``(IZR (up (x/y)))``; [Idtac | Ring]; Replace ``(IZR (up (x/y)))-1+(x*/y+(1-(IZR (up (x/y)))))`` with ``x*/y``; [Idtac | Ring]; Elim H0; Unfold Rdiv; Intros H2 _; Exact H2. +Case (total_order_T R0 y); Intro. +Elim s; Intro. +Assumption. +Elim H; Symmetry; Exact b. +Assert H1 := (Rle_sym2 ? ? r); Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H1 r0)). +Qed. + +Lemma tech8 : (n,i:nat) (le n (plus (S n) i)). +Intros; Induction i. +Replace (plus (S n) O) with (S n); [Apply le_n_Sn | Ring]. +Replace (plus (S n) (S i)) with (S (plus (S n) i)). +Apply le_S; Assumption. +Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Do 2 Rewrite S_INR; Ring. +Qed.
\ No newline at end of file diff --git a/theories/Reals/Binome.v b/theories/Reals/Binome.v index dae7fa148..8f5ee9f46 100644 --- a/theories/Reals/Binome.v +++ b/theories/Reals/Binome.v @@ -8,10 +8,9 @@ (*i $Id$ i*) -Require DiscrR. -Require Rbase. -Require Rtrigo_fun. -Require Alembert. +Require RealsB. +Require Rfunctions. +Require PartSum. Definition C [n,p:nat] : R := ``(INR (fact n))/((INR (fact p))*(INR (fact (minus n p))))``. @@ -40,20 +39,6 @@ Intro; Reflexivity. Apply minus_Sn_m; Assumption. Qed. -Lemma minus_neq_O : (n,i:nat) (lt i n) -> ~(minus n i)=O. -Intros; Red; Intro. -Cut (n,m:nat) (le m n) -> (minus n m)=O -> n=m. -Intro; Assert H2 := (H1 ? ? (lt_le_weak ? ? H) H0); Rewrite H2 in H; Elim (lt_n_n ? H). -Pose R := [n,m:nat](le m n)->(minus n m)=(0)->n=m. -Cut ((n,m:nat)(R n m)) -> ((n0,m:nat)(le m n0)->(minus n0 m)=(0)->n0=m). -Intro; Apply H1. -Apply nat_double_ind. -Unfold R; Intros; Inversion H2; Reflexivity. -Unfold R; Intros; Simpl in H3; Assumption. -Unfold R; Intros; Simpl in H4; Assert H5 := (le_S_n ? ? H3); Assert H6 := (H2 H5 H4); Rewrite H6; Reflexivity. -Unfold R; Intros; Apply H1; Assumption. -Qed. - Lemma pascal_step3 : (n,i:nat) (lt i n) -> (C n (S i)) == ``(INR (minus n i))/(INR (S i))*(C n i)``. Intros; Unfold C. Cut (n:nat) (fact (S n))=(mult (S n) (fact n)). @@ -79,19 +64,6 @@ Apply lt_le_S; Assumption. Intro; Reflexivity. Qed. -Lemma le_minusni_n : (n,i:nat) (le i n)->(le (minus n i) n). -Pose R := [m,n:nat] (le n m) -> (le (minus m n) m). -Cut ((m,n:nat)(R m n)) -> ((n,i:nat)(le i n)->(le (minus n i) n)). -Intro; Apply H. -Apply nat_double_ind. -Unfold R; Intros; Simpl; Apply le_n. -Unfold R; Intros; Simpl; Apply le_n. -Unfold R; Intros; Simpl; Apply le_trans with n. -Apply H0; Apply le_S_n; Assumption. -Apply le_n_Sn. -Unfold R; Intros; Apply H; Assumption. -Qed. - (**********) Lemma pascal : (n,i:nat) (lt i n) -> ``(C n i)+(C n (S i))==(C (S n) (S i))``. Intros. @@ -134,50 +106,6 @@ Apply not_O_INR; Discriminate. Apply lt_le_weak; Assumption. Qed. -Lemma scal_sum : (An:nat->R;N:nat;x:R) (Rmult x (sum_f_R0 An N))==(sum_f_R0 [i:nat]``(An i)*x`` N). -Intros; Induction N. -Simpl; Ring. -Do 2 Rewrite tech5. -Rewrite Rmult_Rplus_distr; Rewrite <- HrecN; Ring. -Qed. - -Lemma decomp_sum : (An:nat->R;N:nat) (lt O N) -> (sum_f_R0 An N)==(Rplus (An O) (sum_f_R0 [i:nat](An (S i)) (pred N))). -Intros; Induction N. -Elim (lt_n_n ? H). -Cut (lt O N)\/N=O. -Intro; Elim H0; Intro. -Cut (S (pred N))=(pred (S N)). -Intro; Rewrite <- H2. -Do 2 Rewrite tech5. -Replace (S (S (pred N))) with (S N). -Rewrite (HrecN H1); Ring. -Rewrite H2; Simpl; Reflexivity. -Assert H2 := (O_or_S N). -Elim H2; Intros. -Elim a; Intros. -Rewrite <- p. -Simpl; Reflexivity. -Rewrite <- b in H1; Elim (lt_n_n ? H1). -Rewrite H1; Simpl; Reflexivity. -Inversion H. -Right; Reflexivity. -Left; Apply lt_le_trans with (1); [Apply lt_O_Sn | Assumption]. -Qed. - -Lemma plus_sum : (An,Bn:nat->R;N:nat) (sum_f_R0 [i:nat]``(An i)+(Bn i)`` N)==``(sum_f_R0 An N)+(sum_f_R0 Bn N)``. -Intros; Induction N. -Simpl; Ring. -Do 3 Rewrite tech5; Rewrite HrecN; Ring. -Qed. - -Lemma sum_eq : (An,Bn:nat->R;N:nat) ((i:nat)(le i N)->(An i)==(Bn i)) -> (sum_f_R0 An N)==(sum_f_R0 Bn N). -Intros; Induction N. -Simpl; Apply H; Apply le_n. -Do 2 Rewrite tech5; Rewrite HrecN. -Rewrite (H (S N)); [Reflexivity | Apply le_n]. -Intros; Apply H; Apply le_trans with N; [Assumption | Apply le_n_Sn]. -Qed. - (*********************) (* Formule du binôme *) (*********************) diff --git a/theories/Reals/Cauchy_prod.v b/theories/Reals/Cauchy_prod.v index 7a409002b..4c29ea626 100644 --- a/theories/Reals/Cauchy_prod.v +++ b/theories/Reals/Cauchy_prod.v @@ -8,10 +8,10 @@ (*i $Id$ i*) -Require Rbase. +Require RealsB. +Require Rfunctions. Require Rseries. -Require Alembert. -Require Binome. +Require PartSum. (**********) Lemma sum_N_predN : (An:nat->R;N:nat) (lt O N) -> (sum_f_R0 An N)==``(sum_f_R0 An (pred N)) + (An N)``. diff --git a/theories/Reals/Cos_plus.v b/theories/Reals/Cos_plus.v index 6e3e82ff1..29e8cbe00 100644 --- a/theories/Reals/Cos_plus.v +++ b/theories/Reals/Cos_plus.v @@ -8,28 +8,12 @@ (*i $Id$ i*) -Require Max. -Require Rbase. -Require DiscrR. -Require Rseries. -Require Binome. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo_def. -Require Rtrigo_alt. -Require Export Rprod. -Require Export Cv_prop. -Require Export Cos_rel. - -Lemma pow_mult : (x:R;n1,n2:nat) (pow x (mult n1 n2))==(pow (pow x n1) n2). -Intros; Induction n2. -Simpl; Replace (mult n1 O) with O; [Reflexivity | Ring]. -Replace (mult n1 (S n2)) with (plus (mult n1 n2) n1). -Replace (S n2) with (plus n2 (1)); [Idtac | Ring]. -Do 2 Rewrite pow_add. -Rewrite Hrecn2. -Simpl. -Ring. -Apply INR_eq; Rewrite plus_INR; Do 2 Rewrite mult_INR; Rewrite S_INR; Ring. -Qed. +Require Cos_rel. +Require Max. Definition Majxy [x,y:R] : nat->R := [n:nat](Rdiv (pow (Rmax R1 (Rmax (Rabsolu x) (Rabsolu y))) (mult (4) (S n))) (INR (fact n))). @@ -76,103 +60,6 @@ Unfold C. Apply RmaxLess1. Qed. -Lemma sum_Rle : (An,Bn:nat->R;N:nat) ((n:nat)(le n N)->``(An n)<=(Bn n)``) -> ``(sum_f_R0 An N)<=(sum_f_R0 Bn N)``. -Intros. -Induction N. -Simpl; Apply H. -Apply le_n. -Do 2 Rewrite tech5. -Apply Rle_trans with ``(sum_f_R0 An N)+(Bn (S N))``. -Apply Rle_compatibility. -Apply H. -Apply le_n. -Do 2 Rewrite <- (Rplus_sym ``(Bn (S N))``). -Apply Rle_compatibility. -Apply HrecN. -Intros; Apply H. -Apply le_trans with N; [Assumption | Apply le_n_Sn]. -Qed. - -Lemma sum_Rabsolu : (An:nat->R;N:nat) (Rle (Rabsolu (sum_f_R0 An N)) (sum_f_R0 [l:nat](Rabsolu (An l)) N)). -Intros. -Induction N. -Simpl. -Right; Reflexivity. -Do 2 Rewrite tech5. -Apply Rle_trans with ``(Rabsolu (sum_f_R0 An N))+(Rabsolu (An (S N)))``. -Apply Rabsolu_triang. -Do 2 Rewrite <- (Rplus_sym (Rabsolu (An (S N)))). -Apply Rle_compatibility. -Apply HrecN. -Qed. - -Lemma fact_growing : (m,n:nat) (le m n) -> (le (fact m) (fact n)). -Intros. -Cut (Un_growing [n:nat](INR (fact n))). -Intro. -Apply INR_le. -Apply Rle_sym2. -Apply (growing_prop [l:nat](INR (fact l))). -Exact H0. -Unfold ge; Exact H. -Unfold Un_growing. -Intros. -Simpl. -Rewrite plus_INR. -Pattern 1 (INR (fact n0)); Rewrite <- Rplus_Or. -Apply Rle_compatibility. -Apply pos_INR. -Qed. - -Lemma pow_incr : (x,y:R;n:nat) ``0<=x<=y`` -> ``(pow x n)<=(pow y n)``. -Intros. -Induction n. -Right; Reflexivity. -Simpl. -Elim H; Intros. -Apply Rle_trans with ``y*(pow x n)``. -Do 2 Rewrite <- (Rmult_sym (pow x n)). -Apply Rle_monotony. -Apply pow_le; Assumption. -Assumption. -Apply Rle_monotony. -Apply Rle_trans with x; Assumption. -Apply Hrecn. -Qed. - -Lemma pow_R1_Rle : (x:R;k:nat) ``1<=x`` -> ``1<=(pow x k)``. -Intros. -Induction k. -Right; Reflexivity. -Simpl. -Apply Rle_trans with ``x*1``. -Rewrite Rmult_1r; Assumption. -Apply Rle_monotony. -Left; Apply Rlt_le_trans with R1; [Apply Rlt_R0_R1 | Assumption]. -Exact Hreck. -Qed. - -Lemma Rle_pow : (x:R;m,n:nat) ``1<=x`` -> (le m n) -> ``(pow x m)<=(pow x n)``. -Intros. -Replace n with (plus (minus n m) m). -Rewrite pow_add. -Rewrite Rmult_sym. -Pattern 1 (pow x m); Rewrite <- Rmult_1r. -Apply Rle_monotony. -Apply pow_le; Left; Apply Rlt_le_trans with R1; [Apply Rlt_R0_R1 | Assumption]. -Apply pow_R1_Rle; Assumption. -Rewrite plus_sym. -Symmetry; Apply le_plus_minus; Assumption. -Qed. - -Lemma sum_cte : (x:R;N:nat) (sum_f_R0 [_:nat]x N) == ``x*(INR (S N))``. -Intros. -Induction N. -Simpl; Ring. -Rewrite tech5. -Rewrite HrecN; Repeat Rewrite S_INR; Ring. -Qed. - Lemma reste1_maj : (x,y:R;N:nat) (lt O N) -> ``(Rabsolu (Reste1 x y N))<=(Majxy x y (pred N))``. Intros. Pose C := (Rmax R1 (Rmax (Rabsolu x) (Rabsolu y))). diff --git a/theories/Reals/Cos_rel.v b/theories/Reals/Cos_rel.v index 5072e2773..7640a9bf2 100644 --- a/theories/Reals/Cos_rel.v +++ b/theories/Reals/Cos_rel.v @@ -8,34 +8,10 @@ (*i $Id$ i*) -Require Rbase. -Require Rseries. -Require Alembert. -Require Binome. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo_def. -Require Rtrigo_alt. -Require Export Cauchy_prod. - -Lemma minus_sum : (An,Bn:nat->R;N:nat) (sum_f_R0 [i:nat]``(An i)-(Bn i)`` N)==``(sum_f_R0 An N)-(sum_f_R0 Bn N)``. -Intros; Induction N. -Simpl; Ring. -Do 3 Rewrite tech5; Rewrite HrecN; Ring. -Qed. - -Lemma sum_decomposition : (An:nat->R;N:nat) (Rplus (sum_f_R0 [l:nat](An (mult (2) l)) (S N)) (sum_f_R0 [l:nat](An (S (mult (2) l))) N))==(sum_f_R0 An (mult (2) (S N))). -Intros. -Induction N. -Simpl; Ring. -Rewrite tech5. -Rewrite (tech5 [l:nat](An (S (mult (2) l))) N). -Replace (mult (2) (S (S N))) with (S (S (mult (2) (S N)))). -Rewrite (tech5 An (S (mult (2) (S N)))). -Rewrite (tech5 An (mult (2) (S N))). -Rewrite <- HrecN. -Ring. -Apply INR_eq; Do 2 Rewrite S_INR; Do 2 Rewrite mult_INR;Repeat Rewrite S_INR. -Ring. -Qed. Definition A1 [x:R] : nat->R := [N:nat](sum_f_R0 [k:nat]``(pow (-1) k)/(INR (fact (mult (S (S O)) k)))*(pow x (mult (S (S O)) k))`` N). diff --git a/theories/Reals/Cv_prop.v b/theories/Reals/Cv_prop.v deleted file mode 100644 index 197bd42ba..000000000 --- a/theories/Reals/Cv_prop.v +++ /dev/null @@ -1,224 +0,0 @@ -(***********************************************************************) -(* v * The Coq Proof Assistant / The Coq Development Team *) -(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) -(* \VV/ *************************************************************) -(* // * This file is distributed under the terms of the *) -(* * GNU Lesser General Public License Version 2.1 *) -(***********************************************************************) - -(*i $Id$ i*) - -Require Max. -Require Rbase. -Require DiscrR. -Require Rseries. -Require Rcomplet. -Require AltSeries. - -(* Unicité de la limite pour les suites convergentes *) -Lemma UL_suite : (Un:nat->R;l1,l2:R) (Un_cv Un l1) -> (Un_cv Un l2) -> l1==l2. -Intros Un l1 l2; Unfold Un_cv; Unfold R_dist; Intros. -Apply cond_eq. -Intros; Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. -Elim (H ``eps/2`` H2); Intros. -Elim (H0 ``eps/2`` H2); Intros. -Pose N := (max x x0). -Apply Rle_lt_trans with ``(Rabsolu (l1 -(Un N)))+(Rabsolu ((Un N)-l2))``. -Replace ``l1-l2`` with ``(l1-(Un N))+((Un N)-l2)``; [Apply Rabsolu_triang | Ring]. -Rewrite (double_var eps); Apply Rplus_lt. -Rewrite <- Rabsolu_Ropp; Rewrite Ropp_distr2; Apply H3; Unfold ge N; Apply le_max_l. -Apply H4; Unfold ge N; Apply le_max_r. -Qed. - -(* La limite de la somme de deux suites convergentes est la somme des limites *) -Lemma CV_plus : (An,Bn:nat->R;l1,l2:R) (Un_cv An l1) -> (Un_cv Bn l2) -> (Un_cv [i:nat]``(An i)+(Bn i)`` ``l1+l2``). -Unfold Un_cv; Unfold R_dist; Intros. -Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. -Elim (H ``eps/2`` H2); Intros. -Elim (H0 ``eps/2`` H2); Intros. -Pose N := (max x x0). -Exists N; Intros. -Replace ``(An n)+(Bn n)-(l1+l2)`` with ``((An n)-l1)+((Bn n)-l2)``; [Idtac | Ring]. -Apply Rle_lt_trans with ``(Rabsolu ((An n)-l1))+(Rabsolu ((Bn n)-l2))``. -Apply Rabsolu_triang. -Rewrite (double_var eps); Apply Rplus_lt. -Apply H3; Unfold ge; Apply le_trans with N; [Unfold N; Apply le_max_l | Assumption]. -Apply H4; Unfold ge; Apply le_trans with N; [Unfold N; Apply le_max_r | Assumption]. -Qed. - -(* ||a|-|b||<=|a-b| *) -Lemma Rabsolu_triang_inv2 : (a,b:R) ``(Rabsolu ((Rabsolu a)-(Rabsolu b)))<=(Rabsolu (a-b))``. -Cut (a,b:R) ``(Rabsolu b)<=(Rabsolu a)``->``(Rabsolu ((Rabsolu a)-(Rabsolu b))) <= (Rabsolu (a-b))``. -Intros; Case (total_order_T (Rabsolu a) (Rabsolu b)); Intro. -Elim s; Intro. -Rewrite <- (Rabsolu_Ropp ``(Rabsolu a)-(Rabsolu b)``); Rewrite <- (Rabsolu_Ropp ``a-b``); Do 2 Rewrite Ropp_distr2. -Apply H; Left; Assumption. -Rewrite b0; Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Apply Rabsolu_pos. -Apply H; Left; Assumption. -Intros; Replace ``(Rabsolu ((Rabsolu a)-(Rabsolu b)))`` with ``(Rabsolu a)-(Rabsolu b)``. -Apply Rabsolu_triang_inv. -Rewrite (Rabsolu_right ``(Rabsolu a)-(Rabsolu b)``); [Reflexivity | Apply Rle_sym1; Apply Rle_anti_compatibility with (Rabsolu b); Rewrite Rplus_Or; Replace ``(Rabsolu b)+((Rabsolu a)-(Rabsolu b))`` with (Rabsolu a); [Assumption | Ring]]. -Qed. - -(* Lien convergence / convergence absolue *) -Lemma cv_cvabs : (Un:nat->R;l:R) (Un_cv Un l) -> (Un_cv [i:nat](Rabsolu (Un i)) (Rabsolu l)). -Unfold Un_cv; Unfold R_dist; Intros. -Elim (H eps H0); Intros. -Exists x; Intros. -Apply Rle_lt_trans with ``(Rabsolu ((Un n)-l))``. -Apply Rabsolu_triang_inv2. -Apply H1; Assumption. -Qed. - -(* Toute suite convergente est de Cauchy *) -Lemma CV_Cauchy : (Un:nat->R) (sigTT R [l:R](Un_cv Un l)) -> (Cauchy_crit Un). -Intros; Elim X; Intros. -Unfold Cauchy_crit; Intros. -Unfold Un_cv in p; Unfold R_dist in p. -Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. -Elim (p ``eps/2`` H0); Intros. -Exists x0; Intros. -Unfold R_dist; Apply Rle_lt_trans with ``(Rabsolu ((Un n)-x))+(Rabsolu (x-(Un m)))``. -Replace ``(Un n)-(Un m)`` with ``((Un n)-x)+(x-(Un m))``; [Apply Rabsolu_triang | Ring]. -Rewrite (double_var eps); Apply Rplus_lt. -Apply H1; Assumption. -Rewrite <- Rabsolu_Ropp; Rewrite Ropp_distr2; Apply H1; Assumption. -Qed. - -(**********) -Lemma maj_by_pos : (Un:nat->R) (sigTT R [l:R](Un_cv Un l)) -> (EXT l:R | ``0<l``/\((n:nat)``(Rabsolu (Un n))<=l``)). -Intros; Elim X; Intros. -Cut (sigTT R [l:R](Un_cv [k:nat](Rabsolu (Un k)) l)). -Intro. -Assert H := (CV_Cauchy [k:nat](Rabsolu (Un k)) X0). -Assert H0 := (cauchy_bound [k:nat](Rabsolu (Un k)) H). -Elim H0; Intros. -Exists ``x0+1``. -Cut ``0<=x0``. -Intro. -Split. -Apply ge0_plus_gt0_is_gt0; [Assumption | Apply Rlt_R0_R1]. -Intros. -Apply Rle_trans with x0. -Unfold is_upper_bound in H1. -Apply H1. -Exists n; Reflexivity. -Pattern 1 x0; Rewrite <- Rplus_Or; Apply Rle_compatibility; Left; Apply Rlt_R0_R1. -Apply Rle_trans with (Rabsolu (Un O)). -Apply Rabsolu_pos. -Unfold is_upper_bound in H1. -Apply H1. -Exists O; Reflexivity. -Apply existTT with (Rabsolu x). -Apply cv_cvabs; Assumption. -Qed. - -(* La limite du produit de deux suites convergentes est le produit des limites *) -Lemma CV_mult : (An,Bn:nat->R;l1,l2:R) (Un_cv An l1) -> (Un_cv Bn l2) -> (Un_cv [i:nat]``(An i)*(Bn i)`` ``l1*l2``). -Intros. -Cut (sigTT R [l:R](Un_cv An l)). -Intro. -Assert H1 := (maj_by_pos An X). -Elim H1; Intros M H2. -Elim H2; Intros. -Unfold Un_cv; Unfold R_dist; Intros. -Cut ``0<eps/(2*M)``. -Intro. -Case (Req_EM l2 R0); Intro. -Unfold Un_cv in H0; Unfold R_dist in H0. -Elim (H0 ``eps/(2*M)`` H6); Intros. -Exists x; Intros. -Apply Rle_lt_trans with ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))+(Rabsolu ((An n)*l2-l1*l2))``. -Replace ``(An n)*(Bn n)-l1*l2`` with ``((An n)*(Bn n)-(An n)*l2)+((An n)*l2-l1*l2)``; [Apply Rabsolu_triang | Ring]. -Replace ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))`` with ``(Rabsolu (An n))*(Rabsolu ((Bn n)-l2))``. -Replace ``(Rabsolu ((An n)*l2-l1*l2))`` with R0. -Rewrite Rplus_Or. -Apply Rle_lt_trans with ``M*(Rabsolu ((Bn n)-l2))``. -Do 2 Rewrite <- (Rmult_sym ``(Rabsolu ((Bn n)-l2))``). -Apply Rle_monotony. -Apply Rabsolu_pos. -Apply H4. -Apply Rlt_monotony_contra with ``/M``. -Apply Rlt_Rinv; Apply H3. -Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l; Rewrite (Rmult_sym ``/M``). -Apply Rlt_trans with ``eps/(2*M)``. -Apply H8; Assumption. -Unfold Rdiv; Rewrite Rinv_Rmult. -Apply Rlt_monotony_contra with ``2``. -Sup0. -Replace ``2*(eps*(/2*/M))`` with ``(2*/2)*(eps*/M)``; [Idtac | Ring]. -Rewrite <- Rinv_r_sym. -Rewrite Rmult_1l; Rewrite double. -Pattern 1 ``eps*/M``; Rewrite <- Rplus_Or. -Apply Rlt_compatibility; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Assumption]. -DiscrR. -DiscrR. -Red; Intro; Rewrite H10 in H3; Elim (Rlt_antirefl ? H3). -Red; Intro; Rewrite H10 in H3; Elim (Rlt_antirefl ? H3). -Rewrite H7; Do 2 Rewrite Rmult_Or; Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Reflexivity. -Replace ``(An n)*(Bn n)-(An n)*l2`` with ``(An n)*((Bn n)-l2)``; [Idtac | Ring]. -Symmetry; Apply Rabsolu_mult. -Cut ``0<eps/(2*(Rabsolu l2))``. -Intro. -Unfold Un_cv in H; Unfold R_dist in H; Unfold Un_cv in H0; Unfold R_dist in H0. -Elim (H ``eps/(2*(Rabsolu l2))`` H8); Intros N1 H9. -Elim (H0 ``eps/(2*M)`` H6); Intros N2 H10. -Pose N := (max N1 N2). -Exists N; Intros. -Apply Rle_lt_trans with ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))+(Rabsolu ((An n)*l2-l1*l2))``. -Replace ``(An n)*(Bn n)-l1*l2`` with ``((An n)*(Bn n)-(An n)*l2)+((An n)*l2-l1*l2)``; [Apply Rabsolu_triang | Ring]. -Replace ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))`` with ``(Rabsolu (An n))*(Rabsolu ((Bn n)-l2))``. -Replace ``(Rabsolu ((An n)*l2-l1*l2))`` with ``(Rabsolu l2)*(Rabsolu ((An n)-l1))``. -Rewrite (double_var eps); Apply Rplus_lt. -Apply Rle_lt_trans with ``M*(Rabsolu ((Bn n)-l2))``. -Do 2 Rewrite <- (Rmult_sym ``(Rabsolu ((Bn n)-l2))``). -Apply Rle_monotony. -Apply Rabsolu_pos. -Apply H4. -Apply Rlt_monotony_contra with ``/M``. -Apply Rlt_Rinv; Apply H3. -Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l; Rewrite (Rmult_sym ``/M``). -Apply Rlt_le_trans with ``eps/(2*M)``. -Apply H10. -Unfold ge; Apply le_trans with N. -Unfold N; Apply le_max_r. -Assumption. -Unfold Rdiv; Rewrite Rinv_Rmult. -Right; Ring. -DiscrR. -Red; Intro; Rewrite H12 in H3; Elim (Rlt_antirefl ? H3). -Red; Intro; Rewrite H12 in H3; Elim (Rlt_antirefl ? H3). -Apply Rlt_monotony_contra with ``/(Rabsolu l2)``. -Apply Rlt_Rinv; Apply Rabsolu_pos_lt; Assumption. -Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l; Apply Rlt_le_trans with ``eps/(2*(Rabsolu l2))``. -Apply H9. -Unfold ge; Apply le_trans with N. -Unfold N; Apply le_max_l. -Assumption. -Unfold Rdiv; Right; Rewrite Rinv_Rmult. -Ring. -DiscrR. -Apply Rabsolu_no_R0; Assumption. -Apply Rabsolu_no_R0; Assumption. -Replace ``(An n)*l2-l1*l2`` with ``l2*((An n)-l1)``; [Symmetry; Apply Rabsolu_mult | Ring]. -Replace ``(An n)*(Bn n)-(An n)*l2`` with ``(An n)*((Bn n)-l2)``; [Symmetry; Apply Rabsolu_mult | Ring]. -Unfold Rdiv; Apply Rmult_lt_pos. -Assumption. -Apply Rlt_Rinv; Apply Rmult_lt_pos; [Sup0 | Apply Rabsolu_pos_lt; Assumption]. -Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rmult_lt_pos; [Sup0 | Assumption]]. -Apply existTT with l1; Assumption. -Qed. - -(**********) -Lemma CV_minus : (An,Bn:nat->R;l1,l2:R) (Un_cv An l1) -> (Un_cv Bn l2) -> (Un_cv [i:nat]``(An i)-(Bn i)`` ``l1-l2``). -Intros. -Replace [i:nat]``(An i)-(Bn i)`` with [i:nat]``(An i)+((opp_sui Bn) i)``. -Unfold Rminus; Apply CV_plus. -Assumption. -Apply CV_opp; Assumption. -Unfold Rminus opp_sui; Reflexivity. -Qed. - diff --git a/theories/Reals/Exp_prop.v b/theories/Reals/Exp_prop.v index 92f1e5293..ae6433466 100644 --- a/theories/Reals/Exp_prop.v +++ b/theories/Reals/Exp_prop.v @@ -8,15 +8,10 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. -Require Rtrigo_fun. -Require Rseries. -Require Rtrigo_def. -Require Rtrigo_alt. -Require Cauchy_prod. -Require Binome. -Require Cos_plus. +Require RealsB. +Require Rfunctions. +Require SeqSeries. +Require Rtrigo. Require Ranalysis1. Require PSeries_reg. Require Div2. @@ -395,7 +390,7 @@ Rewrite <- mult_INR; Apply H1. Reflexivity. Left; Apply lt_INR_0; Apply H. Left; Apply Rmult_lt_pos. -Apply Rgt_2_0. +Sup0. Apply lt_INR_0; Apply div2_not_R0. Apply lt_n_S; Apply H. Cut (lt (1) (S N)). @@ -499,7 +494,7 @@ Apply INR_eq; Do 2 Rewrite S_INR; Do 2 Rewrite mult_INR; Repeat Rewrite S_INR; R Symmetry ; Apply S_pred with O; Apply H7. Apply INR_lt. Apply Rlt_monotony_contra with (INR (2)). -Apply Rgt_2_0. +Simpl; Sup0. Rewrite Rmult_Or; Rewrite <- mult_INR. Apply lt_INR_0. Rewrite <- H6. @@ -529,7 +524,7 @@ Apply H2; Unfold ge. Cut (le (mult (2) (S N0)) n). Intro; Apply le_S_n. Apply INR_le; Apply Rle_monotony_contra with (INR (2)). -Apply Rgt_2_0. +Simpl; Sup0. Do 2 Rewrite <- mult_INR; Apply le_INR. Apply le_trans with n. Apply H4. @@ -552,7 +547,7 @@ Apply INR_eq; Do 2 Rewrite S_INR; Do 2 Rewrite mult_INR; Repeat Rewrite S_INR; R Symmetry; Apply S_pred with O; Apply H8. Apply INR_lt. Apply Rlt_monotony_contra with (INR (2)). -Apply Rgt_2_0. +Simpl; Sup0. Rewrite Rmult_Or; Rewrite <- mult_INR. Apply lt_INR_0. Rewrite <- H7. diff --git a/theories/Reals/Integration.v b/theories/Reals/Integration.v new file mode 100644 index 000000000..3a081406a --- /dev/null +++ b/theories/Reals/Integration.v @@ -0,0 +1,13 @@ +(***********************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) +(* \VV/ *************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(***********************************************************************) + +(*i $Id$ i*) + +Require Export NewtonInt. +Require Export RiemannInt_SF. +Require Export RiemannInt.
\ No newline at end of file diff --git a/theories/Reals/NewtonInt.v b/theories/Reals/NewtonInt.v index 7386cbb12..031870b93 100644 --- a/theories/Reals/NewtonInt.v +++ b/theories/Reals/NewtonInt.v @@ -8,22 +8,15 @@ (*i $Id$ i*) -Require Rbase. -Require Rbasic_fun. -Require DiscrR. -Require Rderiv. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo. -Require Ranalysis1. -Require R_sqrt. -Require Ranalysis4. -Require Rtopology. -Require TAF. +Require Ranalysis. (*******************************************) (* Newton's Integral *) (*******************************************) - -Definition antiderivative [f,g:R->R;a,b:R] : Prop := ((x:R)``a<=x<=b``->(EXT pr : (derivable_pt g x) | (f x)==(derive_pt g x pr)))/\``a<=b``. Definition Newton_integrable [f:R->R;a,b:R] : Type := (sigTT ? [g:R->R](antiderivative f g a b)\/(antiderivative f g b a)). @@ -62,61 +55,6 @@ Lemma NewtonInt_P3 : (f:R->R;a,b:R;X:(Newton_integrable f a b)) (Newton_integrab Unfold Newton_integrable; Intros; Elim X; Intros g H; Apply existTT with g; Tauto. Defined. -Definition constant_D_eq [f:R->R;D:R->Prop;c:R] : Prop := (x:R) (D x) -> (f x)==c. - -(* If f has a null derivative in ]a,b[ and is continue in [a,b], *) -(* then f is constant on [a,b] *) -Lemma null_derivative_loc : (f:R->R;a,b:R;pr:(x:R)``a<x<b``->(derivable_pt f x)) ((x:R)``a<=x<=b``->(continuity_pt f x)) -> ((x:R;P:``a<x<b``)(derive_pt f x (pr x P))==R0) -> (constant_D_eq f [x:R]``a<=x<=b`` (f a)). -Intros; Unfold constant_D_eq; Intros; Case (total_order_T a b); Intro. -Elim s; Intro. -Assert H2 : (y:R)``a<y<x``->(derivable_pt id y). -Intros; Apply derivable_pt_id. -Assert H3 : (y:R)``a<=y<=x``->(continuity_pt id y). -Intros; Apply derivable_continuous; Apply derivable_id. -Assert H4 : (y:R)``a<y<x``->(derivable_pt f y). -Intros; Apply pr; Elim H4; Intros; Split. -Assumption. -Elim H1; Intros; Apply Rlt_le_trans with x; Assumption. -Assert H5 : (y:R)``a<=y<=x``->(continuity_pt f y). -Intros; Apply H; Elim H5; Intros; Split. -Assumption. -Elim H1; Intros; Apply Rle_trans with x; Assumption. -Elim H1; Clear H1; Intros; Elim H1; Clear H1; Intro. -Assert H7 := (TAF_gen f id a x H4 H2 H1 H5 H3). -Elim H7; Intros; Elim H8; Intros; Assert H10 : ``a<x0<b``. -Elim x1; Intros; Split. -Assumption. -Apply Rlt_le_trans with x; Assumption. -Assert H11 : ``(derive_pt f x0 (H4 x0 x1))==0``. -Replace (derive_pt f x0 (H4 x0 x1)) with (derive_pt f x0 (pr x0 H10)); [Apply H0 | Apply pr_nu]. -Assert H12 : ``(derive_pt id x0 (H2 x0 x1))==1``. -Apply derive_pt_eq_0; Apply derivable_pt_lim_id. -Rewrite H11 in H9; Rewrite H12 in H9; Rewrite Rmult_Or in H9; Rewrite Rmult_1r in H9; Apply Rminus_eq; Symmetry; Assumption. -Rewrite H1; Reflexivity. -Assert H2 : x==a. -Rewrite <- b0 in H1; Elim H1; Intros; Apply Rle_antisym; Assumption. -Rewrite H2; Reflexivity. -Elim H1; Intros; Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? (Rle_trans ? ? ? H2 H3) r)). -Qed. - -(* La primitive est unique a une constante pres *) -Lemma antiderivative_Ucte : (f,g1,g2:R->R;a,b:R) (antiderivative f g1 a b) -> (antiderivative f g2 a b) -> (EXT c:R | (x:R)``a<=x<=b``->``(g1 x)==(g2 x)+c``). -Unfold antiderivative; Intros; Elim H; Clear H; Intros; Elim H0; Clear H0; Intros H0 _; Exists ``(g1 a)-(g2 a)``; Intros; Assert H3 : (x:R)``a<=x<=b``->(derivable_pt g1 x). -Intros; Unfold derivable_pt; Apply Specif.existT with (f x0); Elim (H x0 H3); Intros; EApply derive_pt_eq_1; Symmetry; Apply H4. -Assert H4 : (x:R)``a<=x<=b``->(derivable_pt g2 x). -Intros; Unfold derivable_pt; Apply Specif.existT with (f x0); Elim (H0 x0 H4); Intros; EApply derive_pt_eq_1; Symmetry; Apply H5. -Assert H5 : (x:R)``a<x<b``->(derivable_pt (minus_fct g1 g2) x). -Intros; Elim H5; Intros; Apply derivable_pt_minus; [Apply H3; Split; Left; Assumption | Apply H4; Split; Left; Assumption]. -Assert H6 : (x:R)``a<=x<=b``->(continuity_pt (minus_fct g1 g2) x). -Intros; Apply derivable_continuous_pt; Apply derivable_pt_minus; [Apply H3 | Apply H4]; Assumption. -Assert H7 : (x:R;P:``a<x<b``)(derive_pt (minus_fct g1 g2) x (H5 x P))==``0``. -Intros; Elim P; Intros; Apply derive_pt_eq_0; Replace R0 with ``(f x0)-(f x0)``; [Idtac | Ring]. -Assert H9 : ``a<=x0<=b``. -Split; Left; Assumption. -Apply derivable_pt_lim_minus; [Elim (H ? H9) | Elim (H0 ? H9)]; Intros; EApply derive_pt_eq_1; Symmetry; Apply H10. -Assert H8 := (null_derivative_loc (minus_fct g1 g2) a b H5 H6 H7); Unfold constant_D_eq in H8; Assert H9 := (H8 ? H2); Unfold minus_fct in H9; Rewrite <- H9; Ring. -Qed. - (* $\int_a^b f = -\int_b^a f$ *) Lemma NewtonInt_P4 : (f:R->R;a,b:R;pr:(Newton_integrable f a b)) ``(NewtonInt f a b pr)==-(NewtonInt f b a (NewtonInt_P3 f a b pr))``. Intros; Unfold Newton_integrable in pr; Elim pr; Intros; Elim p; Intro. diff --git a/theories/Reals/PSeries_reg.v b/theories/Reals/PSeries_reg.v index 743e1184d..d056387f4 100644 --- a/theories/Reals/PSeries_reg.v +++ b/theories/Reals/PSeries_reg.v @@ -8,18 +8,9 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. +Require RealsB. Require Rfunctions. -Require Rseries. -Require Rsigma. -Require Alembert. -Require Alembert_compl. -Require Binome. -Require Cv_prop. -Require Rcomplet. -Require Rtrigo_alt. -Require Cos_plus. +Require SeqSeries. Require Ranalysis1. Require Max. Require Even. @@ -32,286 +23,8 @@ Definition CVN_r [fn:nat->R->R;r:posreal] : Type := (SigT ? [An:nat->R](sigTT R Definition CVN_R [fn:nat->R->R] : Type := (r:posreal) (CVN_r fn r). -Definition SP [fn:nat->R->R;N:nat] : R->R := [x:R](sum_f_R0 [k:nat]``(fn k x)`` N). - Definition SFL [fn:nat->R->R;cv:(x:R)(sigTT ? [l:R](Un_cv [N:nat](SP fn N x) l))] : R-> R := [y:R](Cases (cv y) of (existTT a b) => a end). -(**********) -Lemma sum_incr : (An:nat->R;N:nat;l:R) (Un_cv [n:nat](sum_f_R0 An n) l) -> ((n:nat)``0<=(An n)``) -> ``(sum_f_R0 An N)<=l``. -Intros; Case (total_order_T (sum_f_R0 An N) l); Intro. -Elim s; Intro. -Left; Apply a. -Right; Apply b. -Cut (Un_growing [n:nat](sum_f_R0 An n)). -Intro; Pose l1 := (sum_f_R0 An N). -Fold l1 in r. -Unfold Un_cv in H; Cut ``0<l1-l``. -Intro; Elim (H ? H2); Intros. -Pose N0 := (max x N); Cut (ge N0 x). -Intro; Assert H5 := (H3 N0 H4). -Cut ``l1<=(sum_f_R0 An N0)``. -Intro; Unfold R_dist in H5; Rewrite Rabsolu_right in H5. -Cut ``(sum_f_R0 An N0)<l1``. -Intro; Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H7 H6)). -Apply Rlt_anti_compatibility with ``-l``. -Do 2 Rewrite (Rplus_sym ``-l``). -Apply H5. -Apply Rle_sym1; Apply Rle_anti_compatibility with l. -Rewrite Rplus_Or; Replace ``l+((sum_f_R0 An N0)-l)`` with (sum_f_R0 An N0); [Idtac | Ring]; Apply Rle_trans with l1. -Left; Apply r. -Apply H6. -Unfold l1; Apply Rle_sym2; Apply (growing_prop [k:nat](sum_f_R0 An k)). -Apply H1. -Unfold ge N0; Apply le_max_r. -Unfold ge N0; Apply le_max_l. -Apply Rlt_anti_compatibility with l; Rewrite Rplus_Or; Replace ``l+(l1-l)`` with l1; [Apply r | Ring]. -Unfold Un_growing; Intro; Simpl; Pattern 1 (sum_f_R0 An n); Rewrite <- Rplus_Or; Apply Rle_compatibility; Apply H0. -Qed. - -(**********) -Lemma sum_cv_maj : (An:nat->R;fn:nat->R->R;x,l1,l2:R) (Un_cv [n:nat](SP fn n x) l1) -> (Un_cv [n:nat](sum_f_R0 An n) l2) -> ((n:nat)``(Rabsolu (fn n x))<=(An n)``) -> ``(Rabsolu l1)<=l2``. -Intros; Case (total_order_T (Rabsolu l1) l2); Intro. -Elim s; Intro. -Left; Apply a. -Right; Apply b. -Cut (n0:nat)``(Rabsolu (SP fn n0 x))<=(sum_f_R0 An n0)``. -Intro; Cut ``0<((Rabsolu l1)-l2)/2``. -Intro; Unfold Un_cv in H H0. -Elim (H ? H3); Intros Na H4. -Elim (H0 ? H3); Intros Nb H5. -Pose N := (max Na Nb). -Unfold R_dist in H4 H5. -Cut ``(Rabsolu ((sum_f_R0 An N)-l2))<((Rabsolu l1)-l2)/2``. -Intro; Cut ``(Rabsolu ((Rabsolu l1)-(Rabsolu (SP fn N x))))<((Rabsolu l1)-l2)/2``. -Intro; Cut ``(sum_f_R0 An N)<((Rabsolu l1)+l2)/2``. -Intro; Cut ``((Rabsolu l1)+l2)/2<(Rabsolu (SP fn N x))``. -Intro; Cut ``(sum_f_R0 An N)<(Rabsolu (SP fn N x))``. -Intro; Assert H11 := (H2 N). -Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H11 H10)). -Apply Rlt_trans with ``((Rabsolu l1)+l2)/2``; Assumption. -Case (case_Rabsolu ``(Rabsolu l1)-(Rabsolu (SP fn N x))``); Intro. -Apply Rlt_trans with (Rabsolu l1). -Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. -Unfold Rdiv; Rewrite (Rmult_sym ``2``); Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym. -Rewrite Rmult_1r; Rewrite double; Apply Rlt_compatibility; Apply r. -DiscrR. -Apply (Rminus_lt ? ? r0). -Rewrite (Rabsolu_right ? r0) in H7. -Apply Rlt_anti_compatibility with ``((Rabsolu l1)-l2)/2-(Rabsolu (SP fn N x))``. -Replace ``((Rabsolu l1)-l2)/2-(Rabsolu (SP fn N x))+((Rabsolu l1)+l2)/2`` with ``(Rabsolu l1)-(Rabsolu (SP fn N x))``. -Unfold Rminus; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or; Apply H7. -Unfold Rdiv; Rewrite Rmult_Rplus_distrl; Rewrite <- (Rmult_sym ``/2``); Rewrite Rminus_distr; Repeat Rewrite (Rmult_sym ``/2``); Pattern 1 (Rabsolu l1); Rewrite double_var; Unfold Rdiv; Ring. -Case (case_Rabsolu ``(sum_f_R0 An N)-l2``); Intro. -Apply Rlt_trans with l2. -Apply (Rminus_lt ? ? r0). -Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. -Rewrite (double l2); Unfold Rdiv; Rewrite (Rmult_sym ``2``); Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym. -Rewrite Rmult_1r; Rewrite (Rplus_sym (Rabsolu l1)); Apply Rlt_compatibility; Apply r. -DiscrR. -Rewrite (Rabsolu_right ? r0) in H6; Apply Rlt_anti_compatibility with ``-l2``. -Replace ``-l2+((Rabsolu l1)+l2)/2`` with ``((Rabsolu l1)-l2)/2``. -Rewrite Rplus_sym; Apply H6. -Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Rewrite Rminus_distr; Rewrite Rmult_Rplus_distrl; Pattern 2 l2; Rewrite double_var; Repeat Rewrite (Rmult_sym ``/2``); Rewrite Ropp_distr1; Unfold Rdiv; Ring. -Apply Rle_lt_trans with ``(Rabsolu ((SP fn N x)-l1))``. -Rewrite <- Rabsolu_Ropp; Rewrite Ropp_distr3; Apply Rabsolu_triang_inv2. -Apply H4; Unfold ge N; Apply le_max_l. -Apply H5; Unfold ge N; Apply le_max_r. -Unfold Rdiv; Apply Rmult_lt_pos. -Apply Rlt_anti_compatibility with l2. -Rewrite Rplus_Or; Replace ``l2+((Rabsolu l1)-l2)`` with (Rabsolu l1); [Apply r | Ring]. -Apply Rlt_Rinv; Apply Rgt_2_0. -Intros; Induction n0. -Unfold SP; Simpl; Apply H1. -Unfold SP; Simpl. -Apply Rle_trans with (Rplus (Rabsolu (sum_f_R0 [k:nat](fn k x) n0)) (Rabsolu (fn (S n0) x))). -Apply Rabsolu_triang. -Apply Rle_trans with ``(sum_f_R0 An n0)+(Rabsolu (fn (S n0) x))``. -Do 2 Rewrite <- (Rplus_sym (Rabsolu (fn (S n0) x))). -Apply Rle_compatibility; Apply Hrecn0. -Apply Rle_compatibility; Apply H1. -Qed. - -(**********) -Lemma sum_maj1 : (fn:nat->R->R;An:nat->R;x,l1,l2:R;N:nat) (Un_cv [n:nat](SP fn n x) l1) -> (Un_cv [n:nat](sum_f_R0 An n) l2) -> ((n:nat)``(Rabsolu (fn n x))<=(An n)``) -> ``(Rabsolu (l1-(SP fn N x)))<=l2-(sum_f_R0 An N)``. -Intros; Cut (sigTT R [l:R](Un_cv [n:nat](sum_f_R0 [l:nat](fn (plus (S N) l) x) n) l)). -Intro; Cut (sigTT R [l:R](Un_cv [n:nat](sum_f_R0 [l:nat](An (plus (S N) l)) n) l)). -Intro; Elim X; Intros l1N H2. -Elim X0; Intros l2N H3. -Cut ``l1-(SP fn N x)==l1N``. -Intro; Cut ``l2-(sum_f_R0 An N)==l2N``. -Intro; Rewrite H4; Rewrite H5. -Apply sum_cv_maj with [l:nat](An (plus (S N) l)) [l:nat][x:R](fn (plus (S N) l) x) x. -Unfold SP; Apply H2. -Apply H3. -Intros; Apply H1. -Symmetry; EApply UL_suite. -Apply H3. -Unfold Un_cv in H0; Unfold Un_cv; Intros; Elim (H0 eps H5); Intros N0 H6. -Unfold R_dist in H6; Exists N0; Intros. -Unfold R_dist; Replace (Rminus (sum_f_R0 [l:nat](An (plus (S N) l)) n) (Rminus l2 (sum_f_R0 An N))) with (Rminus (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) l2); [Idtac | Ring]. -Replace (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) with (sum_f_R0 An (S (plus N n))). -Apply H6; Unfold ge; Apply le_trans with n. -Apply H7. -Apply le_trans with (plus N n). -Apply le_plus_r. -Apply le_n_Sn. -Cut (le O N). -Cut (lt N (S (plus N n))). -Intros; Assert H10 := (sigma_split An H9 H8). -Unfold sigma in H10. -Do 2 Rewrite <- minus_n_O in H10. -Replace (sum_f_R0 An (S (plus N n))) with (sum_f_R0 [k:nat](An (plus (0) k)) (S (plus N n))). -Replace (sum_f_R0 An N) with (sum_f_R0 [k:nat](An (plus (0) k)) N). -Cut (minus (S (plus N n)) (S N))=n. -Intro; Rewrite H11 in H10. -Apply H10. -Apply INR_eq; Rewrite minus_INR. -Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. -Apply le_n_S; Apply le_plus_l. -Apply sum_eq; Intros. -Reflexivity. -Apply sum_eq; Intros. -Reflexivity. -Apply le_lt_n_Sm; Apply le_plus_l. -Apply le_O_n. -Symmetry; EApply UL_suite. -Apply H2. -Unfold Un_cv in H; Unfold Un_cv; Intros. -Elim (H eps H4); Intros N0 H5. -Unfold R_dist in H5; Exists N0; Intros. -Unfold R_dist SP; Replace (Rminus (sum_f_R0 [l:nat](fn (plus (S N) l) x) n) (Rminus l1 (sum_f_R0 [k:nat](fn k x) N))) with (Rminus (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) l1); [Idtac | Ring]. -Replace (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) with (sum_f_R0 [k:nat](fn k x) (S (plus N n))). -Unfold SP in H5; Apply H5; Unfold ge; Apply le_trans with n. -Apply H6. -Apply le_trans with (plus N n). -Apply le_plus_r. -Apply le_n_Sn. -Cut (le O N). -Cut (lt N (S (plus N n))). -Intros; Assert H9 := (sigma_split [k:nat](fn k x) H8 H7). -Unfold sigma in H9. -Do 2 Rewrite <- minus_n_O in H9. -Replace (sum_f_R0 [k:nat](fn k x) (S (plus N n))) with (sum_f_R0 [k:nat](fn (plus (0) k) x) (S (plus N n))). -Replace (sum_f_R0 [k:nat](fn k x) N) with (sum_f_R0 [k:nat](fn (plus (0) k) x) N). -Cut (minus (S (plus N n)) (S N))=n. -Intro; Rewrite H10 in H9. -Apply H9. -Apply INR_eq; Rewrite minus_INR. -Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. -Apply le_n_S; Apply le_plus_l. -Apply sum_eq; Intros. -Reflexivity. -Apply sum_eq; Intros. -Reflexivity. -Apply le_lt_n_Sm. -Apply le_plus_l. -Apply le_O_n. -Apply existTT with ``l2-(sum_f_R0 An N)``. -Unfold Un_cv in H0; Unfold Un_cv; Intros. -Elim (H0 eps H2); Intros N0 H3. -Unfold R_dist in H3; Exists N0; Intros. -Unfold R_dist; Replace (Rminus (sum_f_R0 [l:nat](An (plus (S N) l)) n) (Rminus l2 (sum_f_R0 An N))) with (Rminus (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) l2); [Idtac | Ring]. -Replace (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) with (sum_f_R0 An (S (plus N n))). -Apply H3; Unfold ge; Apply le_trans with n. -Apply H4. -Apply le_trans with (plus N n). -Apply le_plus_r. -Apply le_n_Sn. -Cut (le O N). -Cut (lt N (S (plus N n))). -Intros; Assert H7 := (sigma_split An H6 H5). -Unfold sigma in H7. -Do 2 Rewrite <- minus_n_O in H7. -Replace (sum_f_R0 An (S (plus N n))) with (sum_f_R0 [k:nat](An (plus (0) k)) (S (plus N n))). -Replace (sum_f_R0 An N) with (sum_f_R0 [k:nat](An (plus (0) k)) N). -Cut (minus (S (plus N n)) (S N))=n. -Intro; Rewrite H8 in H7. -Apply H7. -Apply INR_eq; Rewrite minus_INR. -Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. -Apply le_n_S; Apply le_plus_l. -Apply sum_eq; Intros. -Reflexivity. -Apply sum_eq; Intros. -Reflexivity. -Apply le_lt_n_Sm. -Apply le_plus_l. -Apply le_O_n. -Apply existTT with ``l1-(SP fn N x)``. -Unfold Un_cv in H; Unfold Un_cv; Intros. -Elim (H eps H2); Intros N0 H3. -Unfold R_dist in H3; Exists N0; Intros. -Unfold R_dist SP. -Replace (Rminus (sum_f_R0 [l:nat](fn (plus (S N) l) x) n) (Rminus l1 (sum_f_R0 [k:nat](fn k x) N))) with (Rminus (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) l1); [Idtac | Ring]. -Replace (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) with (sum_f_R0 [k:nat](fn k x) (S (plus N n))). -Unfold SP in H3; Apply H3. -Unfold ge; Apply le_trans with n. -Apply H4. -Apply le_trans with (plus N n). -Apply le_plus_r. -Apply le_n_Sn. -Cut (le O N). -Cut (lt N (S (plus N n))). -Intros; Assert H7 := (sigma_split [k:nat](fn k x) H6 H5). -Unfold sigma in H7. -Do 2 Rewrite <- minus_n_O in H7. -Replace (sum_f_R0 [k:nat](fn k x) (S (plus N n))) with (sum_f_R0 [k:nat](fn (plus (0) k) x) (S (plus N n))). -Replace (sum_f_R0 [k:nat](fn k x) N) with (sum_f_R0 [k:nat](fn (plus (0) k) x) N). -Cut (minus (S (plus N n)) (S N))=n. -Intro; Rewrite H8 in H7. -Apply H7. -Apply INR_eq; Rewrite minus_INR. -Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. -Apply le_n_S; Apply le_plus_l. -Apply sum_eq; Intros. -Reflexivity. -Apply sum_eq; Intros. -Reflexivity. -Apply le_lt_n_Sm. -Apply le_plus_l. -Apply le_O_n. -Qed. - -Lemma pow1 : (n:nat) (pow R1 n)==R1. -Intro; Induction n. -Reflexivity. -Simpl; Rewrite Hrecn; Rewrite Rmult_1r; Reflexivity. -Qed. - -Lemma pow_Rabs : (x:R;n:nat) ``(pow x n)<=(pow (Rabsolu x) n)``. -Intros; Induction n. -Right; Reflexivity. -Simpl; Case (case_Rabsolu x); Intro. -Apply Rle_trans with (Rabsolu ``x*(pow x n)``). -Apply Rle_Rabsolu. -Rewrite Rabsolu_mult. -Apply Rle_monotony. -Apply Rabsolu_pos. -Right; Symmetry; Apply Pow_Rabsolu. -Pattern 1 (Rabsolu x); Rewrite (Rabsolu_right x r); Apply Rle_monotony. -Apply Rle_sym2; Exact r. -Apply Hrecn. -Qed. - -Lemma pow_maj_Rabs : (x,y:R;n:nat) ``(Rabsolu y)<=x`` -> ``(pow y n)<=(pow x n)``. -Intros; Cut ``0<=x``. -Intro; Apply Rle_trans with (pow (Rabsolu y) n). -Apply pow_Rabs. -Induction n. -Right; Reflexivity. -Simpl; Apply Rle_trans with ``x*(pow (Rabsolu y) n)``. -Do 2 Rewrite <- (Rmult_sym (pow (Rabsolu y) n)). -Apply Rle_monotony. -Apply pow_le; Apply Rabsolu_pos. -Assumption. -Apply Rle_monotony. -Apply H0. -Apply Hrecn. -Apply Rle_trans with (Rabsolu y); [Apply Rabsolu_pos | Exact H]. -Qed. - (* Dans un espace complet, la convergence normale implique la convergence uniforme *) Lemma CVN_CVU : (fn:nat->R->R;cv:(x:R)(sigTT ? [l:R](Un_cv [N:nat](SP fn N x) l));r:posreal) (CVN_r fn r) -> (CVU [n:nat](SP fn n) (SFL fn cv) ``0`` r). @@ -355,7 +68,7 @@ Qed. Lemma CVU_continuity : (fn:nat->R->R;f:R->R;x:R;r:posreal) (CVU fn f x r) -> ((n:nat)(y:R) (Boule x r y)->(continuity_pt (fn n) y)) -> ((y:R) (Boule x r y) -> (continuity_pt f y)). Intros; Unfold continuity_pt; Unfold continue_in; Unfold limit1_in; Unfold limit_in; Simpl; Unfold R_dist; Intros. Unfold CVU in H. -Cut ``0<eps/3``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rgt_3_0]]. +Cut ``0<eps/3``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. Elim (H ? H3); Intros N0 H4. Assert H5 := (H0 N0 y H1). Cut (EXT del : posreal | (h:R) ``(Rabsolu h)<del`` -> (Boule x r ``y+h``) ). @@ -448,45 +161,6 @@ Apply H1. Unfold Boule; Simpl; Rewrite minus_R0; Pattern 1 (Rabsolu x); Rewrite <- Rplus_Or; Apply Rlt_compatibility; Apply Rlt_R0_R1. Qed. -(* Théorème de comparaison de convergence pour les séries *) -Lemma Rseries_CV_comp : (An,Bn:nat->R) ((n:nat)``0<=(An n)<=(Bn n)``) -> (sigTT ? [l:R](Un_cv [N:nat](sum_f_R0 Bn N) l)) -> (sigTT ? [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). -Intros; Apply cv_cauchy_2. -Assert H0 := (cv_cauchy_1 ? X). -Unfold Cauchy_crit_series; Unfold Cauchy_crit. -Intros; Elim (H0 eps H1); Intros. -Exists x; Intros. -Cut (Rle (R_dist (sum_f_R0 An n) (sum_f_R0 An m)) (R_dist (sum_f_R0 Bn n) (sum_f_R0 Bn m))). -Intro; Apply Rle_lt_trans with (R_dist (sum_f_R0 Bn n) (sum_f_R0 Bn m)). -Assumption. -Apply H2; Assumption. -Assert H5 := (lt_eq_lt_dec n m). -Elim H5; Intro. -Elim a; Intro. -Rewrite (tech2 An n m); [Idtac | Assumption]. -Rewrite (tech2 Bn n m); [Idtac | Assumption]. -Unfold R_dist; Unfold Rminus; Do 2 Rewrite Ropp_distr1; Do 2 Rewrite <- Rplus_assoc; Do 2 Rewrite Rplus_Ropp_r; Do 2 Rewrite Rplus_Ol; Do 2 Rewrite Rabsolu_Ropp; Repeat Rewrite Rabsolu_right. -Apply sum_Rle; Intros. -Elim (H (plus (S n) n0)); Intros. -Apply H8. -Apply Rle_sym1; Apply cond_pos_sum; Intro. -Elim (H (plus (S n) n0)); Intros. -Apply Rle_trans with (An (plus (S n) n0)); Assumption. -Apply Rle_sym1; Apply cond_pos_sum; Intro. -Elim (H (plus (S n) n0)); Intros; Assumption. -Rewrite b; Unfold R_dist; Unfold Rminus; Do 2 Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Right; Reflexivity. -Rewrite (tech2 An m n); [Idtac | Assumption]. -Rewrite (tech2 Bn m n); [Idtac | Assumption]. -Unfold R_dist; Unfold Rminus; Do 2 Rewrite Rplus_assoc; Rewrite (Rplus_sym (sum_f_R0 An m)); Rewrite (Rplus_sym (sum_f_R0 Bn m)); Do 2 Rewrite Rplus_assoc; Do 2 Rewrite Rplus_Ropp_l; Do 2 Rewrite Rplus_Or; Repeat Rewrite Rabsolu_right. -Apply sum_Rle; Intros. -Elim (H (plus (S m) n0)); Intros; Apply H8. -Apply Rle_sym1; Apply cond_pos_sum; Intro. -Elim (H (plus (S m) n0)); Intros. -Apply Rle_trans with (An (plus (S m) n0)); Assumption. -Apply Rle_sym1. -Apply cond_pos_sum; Intro. -Elim (H (plus (S m) n0)); Intros; Assumption. -Qed. - (* Grace a la completude de R, on a le lemme suivant *) Lemma CVN_R_CVS : (fn:nat->R->R) (CVN_R fn) -> ((x:R)(sigTT ? [l:R](Un_cv [N:nat](SP fn N x) l))). Intros; Apply R_complet. diff --git a/theories/Reals/PartSum.v b/theories/Reals/PartSum.v new file mode 100644 index 000000000..24d145392 --- /dev/null +++ b/theories/Reals/PartSum.v @@ -0,0 +1,474 @@ +(***********************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) +(* \VV/ *************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(***********************************************************************) + +(*i $Id$ i*) + +Require RealsB. +Require Rfunctions. +Require Rseries. +Require Rcomplet. +Require Max. + +Lemma tech1 : (An:nat->R;N:nat) ((n:nat)``(le n N)``->``0<(An n)``) -> ``0 < (sum_f_R0 An N)``. +Intros; Induction N. +Simpl; Apply H; Apply le_n. +Simpl; Apply gt0_plus_gt0_is_gt0. +Apply HrecN; Intros; Apply H; Apply le_S; Assumption. +Apply H; Apply le_n. +Qed. + +(* Relation de Chasles *) +Lemma tech2 : (An:nat->R;m,n:nat) (lt m n) -> (sum_f_R0 An n) == (Rplus (sum_f_R0 An m) (sum_f_R0 [i:nat]``(An (plus (S m) i))`` (minus n (S m)))). +Intros; Induction n. +Elim (lt_n_O ? H). +Cut (lt m n)\/m=n. +Intro; Elim H0; Intro. +Replace (sum_f_R0 An (S n)) with ``(sum_f_R0 An n)+(An (S n))``; [Idtac | Reflexivity]. +Replace (minus (S n) (S m)) with (S (minus n (S m))). +Replace (sum_f_R0 [i:nat](An (plus (S m) i)) (S (minus n (S m)))) with (Rplus (sum_f_R0 [i:nat](An (plus (S m) i)) (minus n (S m))) (An (plus (S m) (S (minus n (S m)))))); [Idtac | Reflexivity]. +Replace (plus (S m) (S (minus n (S m)))) with (S n). +Rewrite (Hrecn H1). +Ring. +Apply INR_eq; Rewrite S_INR; Rewrite plus_INR; Do 2 Rewrite S_INR; Rewrite minus_INR. +Rewrite S_INR; Ring. +Apply lt_le_S; Assumption. +Apply INR_eq; Rewrite S_INR; Repeat Rewrite minus_INR. +Repeat Rewrite S_INR; Ring. +Apply le_n_S; Apply lt_le_weak; Assumption. +Apply lt_le_S; Assumption. +Rewrite H1; Rewrite <- minus_n_n; Simpl. +Replace (plus n O) with n; [Reflexivity | Ring]. +Inversion H. +Right; Reflexivity. +Left; Apply lt_le_trans with (S m); [Apply lt_n_Sn | Assumption]. +Qed. + +(* Somme d'une suite géométrique *) +Lemma tech3 : (k:R;N:nat) ``k<>1`` -> (sum_f_R0 [i:nat](pow k i) N)==``(1-(pow k (S N)))/(1-k)``. +Intros; Cut ``1-k<>0``. +Intro; Induction N. +Simpl; Rewrite Rmult_1r; Unfold Rdiv; Rewrite <- Rinv_r_sym. +Reflexivity. +Apply H0. +Replace (sum_f_R0 ([i:nat](pow k i)) (S N)) with (Rplus (sum_f_R0 [i:nat](pow k i) N) (pow k (S N))); [Idtac | Reflexivity]; Rewrite HrecN; Replace ``(1-(pow k (S N)))/(1-k)+(pow k (S N))`` with ``((1-(pow k (S N)))+(1-k)*(pow k (S N)))/(1-k)``. +Apply r_Rmult_mult with ``1-k``. +Unfold Rdiv; Do 2 Rewrite <- (Rmult_sym ``/(1-k)``); Repeat Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym; [ Do 2 Rewrite Rmult_1l; Simpl; Ring | Apply H0]. +Apply H0. +Unfold Rdiv; Rewrite Rmult_Rplus_distrl; Rewrite (Rmult_sym ``1-k``); Repeat Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym. +Rewrite Rmult_1r; Reflexivity. +Apply H0. +Apply Rminus_eq_contra; Red; Intro; Elim H; Symmetry; Assumption. +Qed. + +Lemma tech4 : (An:nat->R;k:R;N:nat) ``0<=k`` -> ((i:nat)``(An (S i))<k*(An i)``) -> ``(An N)<=(An O)*(pow k N)``. +Intros; Induction N. +Simpl; Right; Ring. +Apply Rle_trans with ``k*(An N)``. +Left; Apply (H0 N). +Replace (S N) with (plus N (1)); [Idtac | Ring]. +Rewrite pow_add; Simpl; Rewrite Rmult_1r; Replace ``(An O)*((pow k N)*k)`` with ``k*((An O)*(pow k N))``; [Idtac | Ring]; Apply Rle_monotony. +Assumption. +Apply HrecN. +Qed. + +Lemma tech5 : (An:nat->R;N:nat) (sum_f_R0 An (S N))==``(sum_f_R0 An N)+(An (S N))``. +Intros; Reflexivity. +Qed. + +Lemma tech6 : (An:nat->R;k:R;N:nat) ``0<=k`` -> ((i:nat)``(An (S i))<k*(An i)``) -> (Rle (sum_f_R0 An N) (Rmult (An O) (sum_f_R0 [i:nat](pow k i) N))). +Intros; Induction N. +Simpl; Right; Ring. +Apply Rle_trans with (Rplus (Rmult (An O) (sum_f_R0 [i:nat](pow k i) N)) (An (S N))). +Rewrite tech5; Do 2 Rewrite <- (Rplus_sym (An (S N))); Apply Rle_compatibility. +Apply HrecN. +Rewrite tech5 ; Rewrite Rmult_Rplus_distr; Apply Rle_compatibility. +Apply tech4; Assumption. +Qed. + +Lemma tech7 : (r1,r2:R) ``r1<>0`` -> ``r2<>0`` -> ``r1<>r2`` -> ``/r1<>/r2``. +Intros; Red; Intro. +Assert H3 := (Rmult_mult_r r1 ? ? H2). +Rewrite <- Rinv_r_sym in H3; [Idtac | Assumption]. +Assert H4 := (Rmult_mult_r r2 ? ? H3). +Rewrite Rmult_1r in H4; Rewrite <- Rmult_assoc in H4. +Rewrite Rinv_r_simpl_m in H4; [Idtac | Assumption]. +Elim H1; Symmetry; Assumption. +Qed. + +Lemma tech11 : (An,Bn,Cn:nat->R;N:nat) ((i:nat) (An i)==``(Bn i)-(Cn i)``) -> (sum_f_R0 An N)==``(sum_f_R0 Bn N)-(sum_f_R0 Cn N)``. +Intros; Induction N. +Simpl; Apply H. +Do 3 Rewrite tech5; Rewrite HrecN; Rewrite (H (S N)); Ring. +Qed. + +Lemma tech12 : (An:nat->R;x:R;l:R) (Un_cv [N:nat](sum_f_R0 [i:nat]``(An i)*(pow x i)`` N) l) -> (Pser An x l). +Intros; Unfold Pser; Unfold infinit_sum; Unfold Un_cv in H; Assumption. +Qed. + +Lemma scal_sum : (An:nat->R;N:nat;x:R) (Rmult x (sum_f_R0 An N))==(sum_f_R0 [i:nat]``(An i)*x`` N). +Intros; Induction N. +Simpl; Ring. +Do 2 Rewrite tech5. +Rewrite Rmult_Rplus_distr; Rewrite <- HrecN; Ring. +Qed. + +Lemma decomp_sum : (An:nat->R;N:nat) (lt O N) -> (sum_f_R0 An N)==(Rplus (An O) (sum_f_R0 [i:nat](An (S i)) (pred N))). +Intros; Induction N. +Elim (lt_n_n ? H). +Cut (lt O N)\/N=O. +Intro; Elim H0; Intro. +Cut (S (pred N))=(pred (S N)). +Intro; Rewrite <- H2. +Do 2 Rewrite tech5. +Replace (S (S (pred N))) with (S N). +Rewrite (HrecN H1); Ring. +Rewrite H2; Simpl; Reflexivity. +Assert H2 := (O_or_S N). +Elim H2; Intros. +Elim a; Intros. +Rewrite <- p. +Simpl; Reflexivity. +Rewrite <- b in H1; Elim (lt_n_n ? H1). +Rewrite H1; Simpl; Reflexivity. +Inversion H. +Right; Reflexivity. +Left; Apply lt_le_trans with (1); [Apply lt_O_Sn | Assumption]. +Qed. + +Lemma plus_sum : (An,Bn:nat->R;N:nat) (sum_f_R0 [i:nat]``(An i)+(Bn i)`` N)==``(sum_f_R0 An N)+(sum_f_R0 Bn N)``. +Intros; Induction N. +Simpl; Ring. +Do 3 Rewrite tech5; Rewrite HrecN; Ring. +Qed. + +Lemma sum_eq : (An,Bn:nat->R;N:nat) ((i:nat)(le i N)->(An i)==(Bn i)) -> (sum_f_R0 An N)==(sum_f_R0 Bn N). +Intros; Induction N. +Simpl; Apply H; Apply le_n. +Do 2 Rewrite tech5; Rewrite HrecN. +Rewrite (H (S N)); [Reflexivity | Apply le_n]. +Intros; Apply H; Apply le_trans with N; [Assumption | Apply le_n_Sn]. +Qed. + +(* Unicité de la limite d'une série convergente *) +Lemma unicite_sum : (An:nat->R;l1,l2:R) (infinit_sum An l1) -> (infinit_sum An l2) -> l1 == l2. +Unfold infinit_sum; Intros. +Case (Req_EM l1 l2); Intro. +Assumption. +Cut ``0<(Rabsolu ((l1-l2)/2))``; [Intro | Apply Rabsolu_pos_lt]. +Elim (H ``(Rabsolu ((l1-l2)/2))`` H2); Intros. +Elim (H0 ``(Rabsolu ((l1-l2)/2))`` H2); Intros. +Pose N := (max x0 x); Cut (ge N x0). +Cut (ge N x). +Intros; Assert H7 := (H3 N H5); Assert H8 := (H4 N H6). +Cut ``(Rabsolu (l1-l2)) <= (R_dist (sum_f_R0 An N) l1) + (R_dist (sum_f_R0 An N) l2)``. +Intro; Assert H10 := (Rplus_lt ? ? ? ? H7 H8); Assert H11 := (Rle_lt_trans ? ? ? H9 H10); Unfold Rdiv in H11; Rewrite Rabsolu_mult in H11. +Cut ``(Rabsolu (/2))==/2``. +Intro; Rewrite H12 in H11; Assert H13 := double_var; Unfold Rdiv in H13; Rewrite <- H13 in H11. +Elim (Rlt_antirefl ? H11). +Apply Rabsolu_right; Left; Change ``0</2``; Apply Rlt_Rinv; Cut ~(O=(2)); [Intro H20; Generalize (lt_INR_0 (2) (neq_O_lt (2) H20)); Unfold INR; Intro; Assumption | Discriminate]. +Unfold R_dist; Rewrite <- (Rabsolu_Ropp ``(sum_f_R0 An N)-l1``); Rewrite Ropp_distr3. +Replace ``l1-l2`` with ``((l1-(sum_f_R0 An N)))+((sum_f_R0 An N)-l2)``; [Idtac | Ring]. +Apply Rabsolu_triang. +Unfold ge; Unfold N; Apply le_max_r. +Unfold ge; Unfold N; Apply le_max_l. +Unfold Rdiv; Apply prod_neq_R0. +Apply Rminus_eq_contra; Assumption. +Apply Rinv_neq_R0; DiscrR. +Qed. + +Lemma minus_sum : (An,Bn:nat->R;N:nat) (sum_f_R0 [i:nat]``(An i)-(Bn i)`` N)==``(sum_f_R0 An N)-(sum_f_R0 Bn N)``. +Intros; Induction N. +Simpl; Ring. +Do 3 Rewrite tech5; Rewrite HrecN; Ring. +Qed. + +Lemma sum_decomposition : (An:nat->R;N:nat) (Rplus (sum_f_R0 [l:nat](An (mult (2) l)) (S N)) (sum_f_R0 [l:nat](An (S (mult (2) l))) N))==(sum_f_R0 An (mult (2) (S N))). +Intros. +Induction N. +Simpl; Ring. +Rewrite tech5. +Rewrite (tech5 [l:nat](An (S (mult (2) l))) N). +Replace (mult (2) (S (S N))) with (S (S (mult (2) (S N)))). +Rewrite (tech5 An (S (mult (2) (S N)))). +Rewrite (tech5 An (mult (2) (S N))). +Rewrite <- HrecN. +Ring. +Apply INR_eq; Do 2 Rewrite S_INR; Do 2 Rewrite mult_INR;Repeat Rewrite S_INR. +Ring. +Qed. + +Lemma sum_Rle : (An,Bn:nat->R;N:nat) ((n:nat)(le n N)->``(An n)<=(Bn n)``) -> ``(sum_f_R0 An N)<=(sum_f_R0 Bn N)``. +Intros. +Induction N. +Simpl; Apply H. +Apply le_n. +Do 2 Rewrite tech5. +Apply Rle_trans with ``(sum_f_R0 An N)+(Bn (S N))``. +Apply Rle_compatibility. +Apply H. +Apply le_n. +Do 2 Rewrite <- (Rplus_sym ``(Bn (S N))``). +Apply Rle_compatibility. +Apply HrecN. +Intros; Apply H. +Apply le_trans with N; [Assumption | Apply le_n_Sn]. +Qed. + +Lemma sum_Rabsolu : (An:nat->R;N:nat) (Rle (Rabsolu (sum_f_R0 An N)) (sum_f_R0 [l:nat](Rabsolu (An l)) N)). +Intros. +Induction N. +Simpl. +Right; Reflexivity. +Do 2 Rewrite tech5. +Apply Rle_trans with ``(Rabsolu (sum_f_R0 An N))+(Rabsolu (An (S N)))``. +Apply Rabsolu_triang. +Do 2 Rewrite <- (Rplus_sym (Rabsolu (An (S N)))). +Apply Rle_compatibility. +Apply HrecN. +Qed. + +Lemma sum_cte : (x:R;N:nat) (sum_f_R0 [_:nat]x N) == ``x*(INR (S N))``. +Intros. +Induction N. +Simpl; Ring. +Rewrite tech5. +Rewrite HrecN; Repeat Rewrite S_INR; Ring. +Qed. + +(**********) +Lemma sum_growing : (An,Bn:nat->R;N:nat) ((n:nat)``(An n)<=(Bn n)``)->``(sum_f_R0 An N)<=(sum_f_R0 Bn N)``. +Intros. +Induction N. +Simpl; Apply H. +Do 2 Rewrite tech5. +Apply Rle_trans with ``(sum_f_R0 An N)+(Bn (S N))``. +Apply Rle_compatibility; Apply H. +Do 2 Rewrite <- (Rplus_sym (Bn (S N))). +Apply Rle_compatibility; Apply HrecN. +Qed. + +(**********) +Lemma Rabsolu_triang_gen : (An:nat->R;N:nat) (Rle (Rabsolu (sum_f_R0 An N)) (sum_f_R0 [i:nat](Rabsolu (An i)) N)). +Intros. +Induction N. +Simpl. +Right; Reflexivity. +Do 2 Rewrite tech5. +Apply Rle_trans with ``(Rabsolu ((sum_f_R0 An N)))+(Rabsolu (An (S N)))``. +Apply Rabsolu_triang. +Do 2 Rewrite <- (Rplus_sym (Rabsolu (An (S N)))). +Apply Rle_compatibility; Apply HrecN. +Qed. + +(**********) +Lemma cond_pos_sum : (An:nat->R;N:nat) ((n:nat)``0<=(An n)``) -> ``0<=(sum_f_R0 An N)``. +Intros. +Induction N. +Simpl; Apply H. +Rewrite tech5. +Apply ge0_plus_ge0_is_ge0. +Apply HrecN. +Apply H. +Qed. + +(* Le critère de Cauchy pour les séries *) +Definition Cauchy_crit_series [An:nat->R] : Prop := (Cauchy_crit [N:nat](sum_f_R0 An N)). + +(* Si (|An|) verifie le critere de Cauchy pour les séries , alors (An) aussi *) +Lemma cauchy_abs : (An:nat->R) (Cauchy_crit_series [i:nat](Rabsolu (An i))) -> (Cauchy_crit_series An). +Unfold Cauchy_crit_series; Unfold Cauchy_crit. +Intros. +Elim (H eps H0); Intros. +Exists x. +Intros. +Cut (Rle (R_dist (sum_f_R0 An n) (sum_f_R0 An m)) (R_dist (sum_f_R0 [i:nat](Rabsolu (An i)) n) (sum_f_R0 [i:nat](Rabsolu (An i)) m))). +Intro. +Apply Rle_lt_trans with (R_dist (sum_f_R0 [i:nat](Rabsolu (An i)) n) (sum_f_R0 [i:nat](Rabsolu (An i)) m)). +Assumption. +Apply H1; Assumption. +Assert H4 := (lt_eq_lt_dec n m). +Elim H4; Intro. +Elim a; Intro. +Rewrite (tech2 An n m); [Idtac | Assumption]. +Rewrite (tech2 [i:nat](Rabsolu (An i)) n m); [Idtac | Assumption]. +Unfold R_dist. +Unfold Rminus. +Do 2 Rewrite Ropp_distr1. +Do 2 Rewrite <- Rplus_assoc. +Do 2 Rewrite Rplus_Ropp_r. +Do 2 Rewrite Rplus_Ol. +Do 2 Rewrite Rabsolu_Ropp. +Rewrite (Rabsolu_right (sum_f_R0 [i:nat](Rabsolu (An (plus (S n) i))) (minus m (S n)))). +Pose Bn:=[i:nat](An (plus (S n) i)). +Replace [i:nat](Rabsolu (An (plus (S n) i))) with [i:nat](Rabsolu (Bn i)). +Apply Rabsolu_triang_gen. +Unfold Bn; Reflexivity. +Apply Rle_sym1. +Apply cond_pos_sum. +Intro; Apply Rabsolu_pos. +Rewrite b. +Unfold R_dist. +Unfold Rminus; Do 2 Rewrite Rplus_Ropp_r. +Rewrite Rabsolu_R0; Right; Reflexivity. +Rewrite (tech2 An m n); [Idtac | Assumption]. +Rewrite (tech2 [i:nat](Rabsolu (An i)) m n); [Idtac | Assumption]. +Unfold R_dist. +Unfold Rminus. +Do 2 Rewrite Rplus_assoc. +Rewrite (Rplus_sym (sum_f_R0 An m)). +Rewrite (Rplus_sym (sum_f_R0 [i:nat](Rabsolu (An i)) m)). +Do 2 Rewrite Rplus_assoc. +Do 2 Rewrite Rplus_Ropp_l. +Do 2 Rewrite Rplus_Or. +Rewrite (Rabsolu_right (sum_f_R0 [i:nat](Rabsolu (An (plus (S m) i))) (minus n (S m)))). +Pose Bn:=[i:nat](An (plus (S m) i)). +Replace [i:nat](Rabsolu (An (plus (S m) i))) with [i:nat](Rabsolu (Bn i)). +Apply Rabsolu_triang_gen. +Unfold Bn; Reflexivity. +Apply Rle_sym1. +Apply cond_pos_sum. +Intro; Apply Rabsolu_pos. +Qed. + +(**********) +Lemma cv_cauchy_1 : (An:nat->R) (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)) -> (Cauchy_crit_series An). +Intros. +Elim X; Intros. +Unfold Un_cv in p. +Unfold Cauchy_crit_series; Unfold Cauchy_crit. +Intros. +Cut ``0<eps/2``. +Intro. +Elim (p ``eps/2`` H0); Intros. +Exists x0. +Intros. +Apply Rle_lt_trans with ``(R_dist (sum_f_R0 An n) x)+(R_dist (sum_f_R0 An m) x)``. +Unfold R_dist. +Replace ``(sum_f_R0 An n)-(sum_f_R0 An m)`` with ``((sum_f_R0 An n)-x)+ -((sum_f_R0 An m)-x)``; [Idtac | Ring]. +Rewrite <- (Rabsolu_Ropp ``(sum_f_R0 An m)-x``). +Apply Rabsolu_triang. +Apply Rlt_le_trans with ``eps/2+eps/2``. +Apply Rplus_lt. +Apply H1; Assumption. +Apply H1; Assumption. +Right; Symmetry; Apply double_var. +Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]. +Qed. + +Lemma cv_cauchy_2 : (An:nat->R) (Cauchy_crit_series An) -> (sigTT R [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). +Intros. +Apply R_complet. +Unfold Cauchy_crit_series in H. +Exact H. +Qed. + +(**********) +Lemma sum_eq_R0 : (An:nat->R;N:nat) ((n:nat)(le n N)->``(An n)==0``) -> (sum_f_R0 An N)==R0. +Intros; Induction N. +Simpl; Apply H; Apply le_n. +Rewrite tech5; Rewrite HrecN; [Rewrite Rplus_Ol; Apply H; Apply le_n | Intros; Apply H; Apply le_trans with N; [Assumption | Apply le_n_Sn]]. +Qed. + +Definition SP [fn:nat->R->R;N:nat] : R->R := [x:R](sum_f_R0 [k:nat]``(fn k x)`` N). + +(**********) +Lemma sum_incr : (An:nat->R;N:nat;l:R) (Un_cv [n:nat](sum_f_R0 An n) l) -> ((n:nat)``0<=(An n)``) -> ``(sum_f_R0 An N)<=l``. +Intros; Case (total_order_T (sum_f_R0 An N) l); Intro. +Elim s; Intro. +Left; Apply a. +Right; Apply b. +Cut (Un_growing [n:nat](sum_f_R0 An n)). +Intro; Pose l1 := (sum_f_R0 An N). +Fold l1 in r. +Unfold Un_cv in H; Cut ``0<l1-l``. +Intro; Elim (H ? H2); Intros. +Pose N0 := (max x N); Cut (ge N0 x). +Intro; Assert H5 := (H3 N0 H4). +Cut ``l1<=(sum_f_R0 An N0)``. +Intro; Unfold R_dist in H5; Rewrite Rabsolu_right in H5. +Cut ``(sum_f_R0 An N0)<l1``. +Intro; Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H7 H6)). +Apply Rlt_anti_compatibility with ``-l``. +Do 2 Rewrite (Rplus_sym ``-l``). +Apply H5. +Apply Rle_sym1; Apply Rle_anti_compatibility with l. +Rewrite Rplus_Or; Replace ``l+((sum_f_R0 An N0)-l)`` with (sum_f_R0 An N0); [Idtac | Ring]; Apply Rle_trans with l1. +Left; Apply r. +Apply H6. +Unfold l1; Apply Rle_sym2; Apply (growing_prop [k:nat](sum_f_R0 An k)). +Apply H1. +Unfold ge N0; Apply le_max_r. +Unfold ge N0; Apply le_max_l. +Apply Rlt_anti_compatibility with l; Rewrite Rplus_Or; Replace ``l+(l1-l)`` with l1; [Apply r | Ring]. +Unfold Un_growing; Intro; Simpl; Pattern 1 (sum_f_R0 An n); Rewrite <- Rplus_Or; Apply Rle_compatibility; Apply H0. +Qed. + +(**********) +Lemma sum_cv_maj : (An:nat->R;fn:nat->R->R;x,l1,l2:R) (Un_cv [n:nat](SP fn n x) l1) -> (Un_cv [n:nat](sum_f_R0 An n) l2) -> ((n:nat)``(Rabsolu (fn n x))<=(An n)``) -> ``(Rabsolu l1)<=l2``. +Intros; Case (total_order_T (Rabsolu l1) l2); Intro. +Elim s; Intro. +Left; Apply a. +Right; Apply b. +Cut (n0:nat)``(Rabsolu (SP fn n0 x))<=(sum_f_R0 An n0)``. +Intro; Cut ``0<((Rabsolu l1)-l2)/2``. +Intro; Unfold Un_cv in H H0. +Elim (H ? H3); Intros Na H4. +Elim (H0 ? H3); Intros Nb H5. +Pose N := (max Na Nb). +Unfold R_dist in H4 H5. +Cut ``(Rabsolu ((sum_f_R0 An N)-l2))<((Rabsolu l1)-l2)/2``. +Intro; Cut ``(Rabsolu ((Rabsolu l1)-(Rabsolu (SP fn N x))))<((Rabsolu l1)-l2)/2``. +Intro; Cut ``(sum_f_R0 An N)<((Rabsolu l1)+l2)/2``. +Intro; Cut ``((Rabsolu l1)+l2)/2<(Rabsolu (SP fn N x))``. +Intro; Cut ``(sum_f_R0 An N)<(Rabsolu (SP fn N x))``. +Intro; Assert H11 := (H2 N). +Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H11 H10)). +Apply Rlt_trans with ``((Rabsolu l1)+l2)/2``; Assumption. +Case (case_Rabsolu ``(Rabsolu l1)-(Rabsolu (SP fn N x))``); Intro. +Apply Rlt_trans with (Rabsolu l1). +Apply Rlt_monotony_contra with ``2``. +Sup0. +Unfold Rdiv; Rewrite (Rmult_sym ``2``); Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym. +Rewrite Rmult_1r; Rewrite double; Apply Rlt_compatibility; Apply r. +DiscrR. +Apply (Rminus_lt ? ? r0). +Rewrite (Rabsolu_right ? r0) in H7. +Apply Rlt_anti_compatibility with ``((Rabsolu l1)-l2)/2-(Rabsolu (SP fn N x))``. +Replace ``((Rabsolu l1)-l2)/2-(Rabsolu (SP fn N x))+((Rabsolu l1)+l2)/2`` with ``(Rabsolu l1)-(Rabsolu (SP fn N x))``. +Unfold Rminus; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or; Apply H7. +Unfold Rdiv; Rewrite Rmult_Rplus_distrl; Rewrite <- (Rmult_sym ``/2``); Rewrite Rminus_distr; Repeat Rewrite (Rmult_sym ``/2``); Pattern 1 (Rabsolu l1); Rewrite double_var; Unfold Rdiv; Ring. +Case (case_Rabsolu ``(sum_f_R0 An N)-l2``); Intro. +Apply Rlt_trans with l2. +Apply (Rminus_lt ? ? r0). +Apply Rlt_monotony_contra with ``2``. +Sup0. +Rewrite (double l2); Unfold Rdiv; Rewrite (Rmult_sym ``2``); Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym. +Rewrite Rmult_1r; Rewrite (Rplus_sym (Rabsolu l1)); Apply Rlt_compatibility; Apply r. +DiscrR. +Rewrite (Rabsolu_right ? r0) in H6; Apply Rlt_anti_compatibility with ``-l2``. +Replace ``-l2+((Rabsolu l1)+l2)/2`` with ``((Rabsolu l1)-l2)/2``. +Rewrite Rplus_sym; Apply H6. +Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Rewrite Rminus_distr; Rewrite Rmult_Rplus_distrl; Pattern 2 l2; Rewrite double_var; Repeat Rewrite (Rmult_sym ``/2``); Rewrite Ropp_distr1; Unfold Rdiv; Ring. +Apply Rle_lt_trans with ``(Rabsolu ((SP fn N x)-l1))``. +Rewrite <- Rabsolu_Ropp; Rewrite Ropp_distr3; Apply Rabsolu_triang_inv2. +Apply H4; Unfold ge N; Apply le_max_l. +Apply H5; Unfold ge N; Apply le_max_r. +Unfold Rdiv; Apply Rmult_lt_pos. +Apply Rlt_anti_compatibility with l2. +Rewrite Rplus_Or; Replace ``l2+((Rabsolu l1)-l2)`` with (Rabsolu l1); [Apply r | Ring]. +Apply Rlt_Rinv; Sup0. +Intros; Induction n0. +Unfold SP; Simpl; Apply H1. +Unfold SP; Simpl. +Apply Rle_trans with (Rplus (Rabsolu (sum_f_R0 [k:nat](fn k x) n0)) (Rabsolu (fn (S n0) x))). +Apply Rabsolu_triang. +Apply Rle_trans with ``(sum_f_R0 An n0)+(Rabsolu (fn (S n0) x))``. +Do 2 Rewrite <- (Rplus_sym (Rabsolu (fn (S n0) x))). +Apply Rle_compatibility; Apply Hrecn0. +Apply Rle_compatibility; Apply H1. +Qed. diff --git a/theories/Reals/RList.v b/theories/Reals/RList.v new file mode 100644 index 000000000..1d2b6c23b --- /dev/null +++ b/theories/Reals/RList.v @@ -0,0 +1,426 @@ +(***********************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) +(* \VV/ *************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(***********************************************************************) + +(*i $Id$ i*) + +Require RealsB. +Require Rfunctions. + +Inductive Rlist : Type := +| nil : Rlist +| cons : R -> Rlist -> Rlist. + +Fixpoint In [x:R;l:Rlist] : Prop := +Cases l of +| nil => False +| (cons a l') => ``x==a``\/(In x l') end. + +Fixpoint longueur [l:Rlist] : nat := +Cases l of +| nil => O +| (cons a l') => (S (longueur l')) end. + +(* Cette fonction renvoie le maximum des éléments d'une liste non vide *) +Fixpoint MaxRlist [l:Rlist] : R := + Cases l of + | nil => R0 (* valeur de retour si la liste de départ est vide *) + | (cons a l1) => + Cases l1 of + | nil => a + | (cons a' l2) => (Rmax a (MaxRlist l1)) + end +end. + +Fixpoint MinRlist [l:Rlist] : R := +Cases l of + | nil => R1 (* valeur de retour si la liste de départ est vide *) + | (cons a l1) => + Cases l1 of + | nil => a + | (cons a' l2) => (Rmin a (MinRlist l1)) + end +end. + +Lemma MaxRlist_P1 : (l:Rlist;x:R) (In x l)->``x<=(MaxRlist l)``. +Intros; Induction l. +Simpl in H; Elim H. +Induction l. +Simpl in H; Elim H; Intro. +Simpl; Right; Assumption. +Elim H0. +Replace (MaxRlist (cons r (cons r0 l))) with (Rmax r (MaxRlist (cons r0 l))). +Simpl in H; Decompose [or] H. +Rewrite H0; Apply RmaxLess1. +Unfold Rmax; Case (total_order_Rle r (MaxRlist (cons r0 l))); Intro. +Apply Hrecl; Simpl; Tauto. +Apply Rle_trans with (MaxRlist (cons r0 l)); [Apply Hrecl; Simpl; Tauto | Left; Auto with real]. +Unfold Rmax; Case (total_order_Rle r (MaxRlist (cons r0 l))); Intro. +Apply Hrecl; Simpl; Tauto. +Apply Rle_trans with (MaxRlist (cons r0 l)); [Apply Hrecl; Simpl; Tauto | Left; Auto with real]. +Reflexivity. +Qed. + +Fixpoint AbsList [l:Rlist] : R->Rlist := +[x:R] Cases l of +| nil => nil +| (cons a l') => (cons ``(Rabsolu (a-x))/2`` (AbsList l' x)) +end. + +Lemma MinRlist_P1 : (l:Rlist;x:R) (In x l)->``(MinRlist l)<=x``. +Intros; Induction l. +Simpl in H; Elim H. +Induction l. +Simpl in H; Elim H; Intro. +Simpl; Right; Symmetry; Assumption. +Elim H0. +Replace (MinRlist (cons r (cons r0 l))) with (Rmin r (MinRlist (cons r0 l))). +Simpl in H; Decompose [or] H. +Rewrite H0; Apply Rmin_l. +Unfold Rmin; Case (total_order_Rle r (MinRlist (cons r0 l))); Intro. +Apply Rle_trans with (MinRlist (cons r0 l)). +Assumption. +Apply Hrecl; Simpl; Tauto. +Apply Hrecl; Simpl; Tauto. +Apply Rle_trans with (MinRlist (cons r0 l)). +Apply Rmin_r. +Apply Hrecl; Simpl; Tauto. +Reflexivity. +Qed. + +Lemma AbsList_P1 : (l:Rlist;x,y:R) (In y l) -> (In ``(Rabsolu (y-x))/2`` (AbsList l x)). +Intros; Induction l. +Elim H. +Simpl; Simpl in H; Elim H; Intro. +Left; Rewrite H0; Reflexivity. +Right; Apply Hrecl; Assumption. +Qed. + +Lemma MinRlist_P2 : (l:Rlist) ((y:R)(In y l)->``0<y``)->``0<(MinRlist l)``. +Intros; Induction l. +Apply Rlt_R0_R1. +Induction l. +Simpl; Apply H; Simpl; Tauto. +Replace (MinRlist (cons r (cons r0 l))) with (Rmin r (MinRlist (cons r0 l))). +Unfold Rmin; Case (total_order_Rle r (MinRlist (cons r0 l))); Intro. +Apply H; Simpl; Tauto. +Apply Hrecl; Intros; Apply H; Simpl; Simpl in H0; Tauto. +Reflexivity. +Qed. + +Lemma AbsList_P2 : (l:Rlist;x,y:R) (In y (AbsList l x)) -> (EXT z : R | (In z l)/\``y==(Rabsolu (z-x))/2``). +Intros; Induction l. +Elim H. +Elim H; Intro. +Exists r; Split. +Simpl; Tauto. +Assumption. +Assert H1 := (Hrecl H0); Elim H1; Intros; Elim H2; Clear H2; Intros; Exists x0; Simpl; Simpl in H2; Tauto. +Qed. + +Lemma MaxRlist_P2 : (l:Rlist) (EXT y:R | (In y l)) -> (In (MaxRlist l) l). +Intros; Induction l. +Simpl in H; Elim H; Trivial. +Induction l. +Simpl; Left; Reflexivity. +Change (In (Rmax r (MaxRlist (cons r0 l))) (cons r (cons r0 l))); Unfold Rmax; Case (total_order_Rle r (MaxRlist (cons r0 l))); Intro. +Right; Apply Hrecl; Exists r0; Left; Reflexivity. +Left; Reflexivity. +Qed. + +Fixpoint pos_Rl [l:Rlist] : nat->R := +[i:nat] Cases l of +| nil => R0 +| (cons a l') => + Cases i of + | O => a + | (S i') => (pos_Rl l' i') + end +end. + +Lemma pos_Rl_P1 : (l:Rlist;a:R) (lt O (longueur l)) -> (pos_Rl (cons a l) (longueur l))==(pos_Rl l (pred (longueur l))). +Intros; Induction l; [Elim (lt_n_O ? H) | Simpl; Case (longueur l); [Reflexivity | Intro; Reflexivity]]. +Qed. + +Lemma pos_Rl_P2 : (l:Rlist;x:R) (In x l)<->(EX i:nat | (lt i (longueur l))/\x==(pos_Rl l i)). +Intros; Induction l. +Split; Intro; [Elim H | Elim H; Intros; Elim H0; Intros; Elim (lt_n_O ? H1)]. +Split; Intro. +Elim H; Intro. +Exists O; Split; [Simpl; Apply lt_O_Sn | Simpl; Apply H0]. +Elim Hrecl; Intros; Assert H3 := (H1 H0); Elim H3; Intros; Elim H4; Intros; Exists (S x0); Split; [Simpl; Apply lt_n_S; Assumption | Simpl; Assumption]. +Elim H; Intros; Elim H0; Intros; Elim (zerop x0); Intro. +Rewrite a in H2; Simpl in H2; Left; Assumption. +Right; Elim Hrecl; Intros; Apply H4; Assert H5 : (S (pred x0))=x0. +Symmetry; Apply S_pred with O; Assumption. +Exists (pred x0); Split; [Simpl in H1; Apply lt_S_n; Rewrite H5; Assumption | Rewrite <- H5 in H2; Simpl in H2; Assumption]. +Qed. + +Lemma Rlist_P1 : (l:Rlist;P:R->R->Prop) ((x:R)(In x l)->(EXT y:R | (P x y))) -> (EXT l':Rlist | (longueur l)=(longueur l')/\(i:nat) (lt i (longueur l))->(P (pos_Rl l i) (pos_Rl l' i))). +Intros; Induction l. +Exists nil; Intros; Split; [Reflexivity | Intros; Simpl in H0; Elim (lt_n_O ? H0)]. +Assert H0 : (In r (cons r l)). +Simpl; Left; Reflexivity. +Assert H1 := (H ? H0); Assert H2 : (x:R)(In x l)->(EXT y:R | (P x y)). +Intros; Apply H; Simpl; Right; Assumption. +Assert H3 := (Hrecl H2); Elim H1; Intros; Elim H3; Intros; Exists (cons x x0); Intros; Elim H5; Clear H5; Intros; Split. +Simpl; Rewrite H5; Reflexivity. +Intros; Elim (zerop i); Intro. +Rewrite a; Simpl; Assumption. +Assert H8 : i=(S (pred i)). +Apply S_pred with O; Assumption. +Rewrite H8; Simpl; Apply H6; Simpl in H7; Apply lt_S_n; Rewrite <- H8; Assumption. +Qed. + +Definition ordered_Rlist [l:Rlist] : Prop := (i:nat) (lt i (pred (longueur l))) -> (Rle (pos_Rl l i) (pos_Rl l (S i))). + +Fixpoint insert [l:Rlist] : R->Rlist := +[x:R] Cases l of +| nil => (cons x nil) +| (cons a l') => + Cases (total_order_Rle a x) of + | (leftT _) => (cons a (insert l' x)) + | (rightT _) => (cons x l) + end +end. + +Fixpoint cons_Rlist [l:Rlist] : Rlist->Rlist := +[k:Rlist] Cases l of +| nil => k +| (cons a l') => (cons a (cons_Rlist l' k)) end. + +Fixpoint cons_ORlist [k:Rlist] : Rlist->Rlist := +[l:Rlist] Cases k of +| nil => l +| (cons a k') => (cons_ORlist k' (insert l a)) +end. + +Fixpoint app_Rlist [l:Rlist] : (R->R)->Rlist := +[f:R->R] Cases l of +| nil => nil +| (cons a l') => (cons (f a) (app_Rlist l' f)) +end. + +Fixpoint mid_Rlist [l:Rlist] : R->Rlist := +[x:R] Cases l of +| nil => nil +| (cons a l') => (cons ``(x+a)/2`` (mid_Rlist l' a)) +end. + +Definition Rtail [l:Rlist] : Rlist := +Cases l of +| nil => nil +| (cons a l') => l' +end. + +Definition FF [l:Rlist;f:R->R] : Rlist := +Cases l of +| nil => nil +| (cons a l') => (app_Rlist (mid_Rlist l' a) f) +end. + +Lemma RList_P0 : (l:Rlist;a:R) ``(pos_Rl (insert l a) O) == a`` \/ ``(pos_Rl (insert l a) O) == (pos_Rl l O)``. +Intros; Induction l; [Left; Reflexivity | Simpl; Case (total_order_Rle r a); Intro; [Right; Reflexivity | Left; Reflexivity]]. +Qed. + +Lemma RList_P1 : (l:Rlist;a:R) (ordered_Rlist l) -> (ordered_Rlist (insert l a)). +Intros; Induction l. +Simpl; Unfold ordered_Rlist; Intros; Simpl in H0; Elim (lt_n_O ? H0). +Simpl; Case (total_order_Rle r a); Intro. +Assert H1 : (ordered_Rlist l). +Unfold ordered_Rlist; Unfold ordered_Rlist in H; Intros; Assert H1 : (lt (S i) (pred (longueur (cons r l)))); [Simpl; Replace (longueur l) with (S (pred (longueur l))); [Apply lt_n_S; Assumption | Symmetry; Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H1 in H0; Simpl in H0; Elim (lt_n_O ? H0)] | Apply (H ? H1)]. +Assert H2 := (Hrecl H1); Unfold ordered_Rlist; Intros; Induction i. +Simpl; Assert H3 := (RList_P0 l a); Elim H3; Intro. +Rewrite H4; Assumption. +Induction l; [Simpl; Assumption | Rewrite H4; Apply (H O); Simpl; Apply lt_O_Sn]. +Simpl; Apply H2; Simpl in H0; Apply lt_S_n; Replace (S (pred (longueur (insert l a)))) with (longueur (insert l a)); [Assumption | Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H3 in H0; Elim (lt_n_O ? H0)]. +Unfold ordered_Rlist; Intros; Induction i; [Simpl; Auto with real | Change ``(pos_Rl (cons r l) i)<=(pos_Rl (cons r l) (S i))``; Apply H; Simpl in H0; Simpl; Apply (lt_S_n ? ? H0)]. +Qed. + +Lemma RList_P2 : (l1,l2:Rlist) (ordered_Rlist l2) ->(ordered_Rlist (cons_ORlist l1 l2)). +Induction l1; [Intros; Simpl; Apply H | Intros; Simpl; Apply H; Apply RList_P1; Assumption]. +Qed. + +Lemma RList_P3 : (l:Rlist;x:R) (In x l) <-> (EX i:nat | x==(pos_Rl l i)/\(lt i (longueur l))). +Intros; Split; Intro; Induction l. +Elim H. +Elim H; Intro; [Exists O; Split; [Apply H0 | Simpl; Apply lt_O_Sn] | Elim (Hrecl H0); Intros; Elim H1; Clear H1; Intros; Exists (S x0); Split; [Apply H1 | Simpl; Apply lt_n_S; Assumption]]. +Elim H; Intros; Elim H0; Intros; Elim (lt_n_O ? H2). +Simpl; Elim H; Intros; Elim H0; Clear H0; Intros; Induction x0; [Left; Apply H0 | Right; Apply Hrecl; Exists x0; Split; [Apply H0 | Simpl in H1; Apply lt_S_n; Assumption]]. +Qed. + +Lemma RList_P4 : (l1:Rlist;a:R) (ordered_Rlist (cons a l1)) -> (ordered_Rlist l1). +Intros; Unfold ordered_Rlist; Intros; Apply (H (S i)); Simpl; Replace (longueur l1) with (S (pred (longueur l1))); [Apply lt_n_S; Assumption | Symmetry; Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H1 in H0; Elim (lt_n_O ? H0)]. +Qed. + +Lemma RList_P5 : (l:Rlist;x:R) (ordered_Rlist l) -> (In x l) -> ``(pos_Rl l O)<=x``. +Intros; Induction l; [Elim H0 | Simpl; Elim H0; Intro; [Rewrite H1; Right; Reflexivity | Apply Rle_trans with (pos_Rl l O); [Apply (H O); Simpl; Induction l; [Elim H1 | Simpl; Apply lt_O_Sn] | Apply Hrecl; [EApply RList_P4; Apply H | Assumption]]]]. +Qed. + +Lemma RList_P6 : (l:Rlist) (ordered_Rlist l)<->((i,j:nat)(le i j)->(lt j (longueur l))->``(pos_Rl l i)<=(pos_Rl l j)``). +Induction l; Split; Intro. +Intros; Right; Reflexivity. +Unfold ordered_Rlist; Intros; Simpl in H0; Elim (lt_n_O ? H0). +Intros; Induction i; [Induction j; [Right; Reflexivity | Simpl; Apply Rle_trans with (pos_Rl r0 O); [Apply (H0 O); Simpl; Simpl in H2; Apply neq_O_lt; Red; Intro; Rewrite <- H3 in H2; Assert H4 := (lt_S_n ? ? H2); Elim (lt_n_O ? H4) | Elim H; Intros; Apply H3; [Apply RList_P4 with r; Assumption | Apply le_O_n | Simpl in H2; Apply lt_S_n; Assumption]]] | Induction j; [Elim (le_Sn_O ? H1) | Simpl; Elim H; Intros; Apply H3; [Apply RList_P4 with r; Assumption | Apply le_S_n; Assumption | Simpl in H2; Apply lt_S_n; Assumption]]]. +Unfold ordered_Rlist; Intros; Apply H0; [Apply le_n_Sn | Simpl; Simpl in H1; Apply lt_n_S; Assumption]. +Qed. + +Lemma RList_P7 : (l:Rlist;x:R) (ordered_Rlist l) -> (In x l) -> ``x<=(pos_Rl l (pred (longueur l)))``. +Intros; Assert H1 := (RList_P6 l); Elim H1; Intros H2 _; Assert H3 := (H2 H); Clear H1 H2; Assert H1 := (RList_P3 l x); Elim H1; Clear H1; Intros; Assert H4 := (H1 H0); Elim H4; Clear H4; Intros; Elim H4; Clear H4; Intros; Rewrite H4; Assert H6 : (longueur l)=(S (pred (longueur l))). +Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H6 in H5; Elim (lt_n_O ? H5). +Apply H3; [Rewrite H6 in H5; Apply lt_n_Sm_le; Assumption | Apply lt_pred_n_n; Apply neq_O_lt; Red; Intro; Rewrite <- H7 in H5; Elim (lt_n_O ? H5)]. +Qed. + +Lemma RList_P8 : (l:Rlist;a,x:R) (In x (insert l a)) <-> x==a\/(In x l). +Induction l. +Intros; Split; Intro; Simpl in H; Apply H. +Intros; Split; Intro; [Simpl in H0; Generalize H0; Case (total_order_Rle r a); Intros; [Simpl in H1; Elim H1; Intro; [Right; Left; Assumption |Elim (H a x); Intros; Elim (H3 H2); Intro; [Left; Assumption | Right; Right; Assumption]] | Simpl in H1; Decompose [or] H1; [Left; Assumption | Right; Left; Assumption | Right; Right; Assumption]] | Simpl; Case (total_order_Rle r a); Intro; [Simpl in H0; Decompose [or] H0; [Right; Elim (H a x); Intros; Apply H3; Left | Left | Right; Elim (H a x); Intros; Apply H3; Right] | Simpl in H0; Decompose [or] H0; [Left | Right; Left | Right; Right]]; Assumption]. +Qed. + +Lemma RList_P9 : (l1,l2:Rlist;x:R) (In x (cons_ORlist l1 l2)) <-> (In x l1)\/(In x l2). +Induction l1. +Intros; Split; Intro; [Simpl in H; Right; Assumption | Simpl; Elim H; Intro; [Elim H0 | Assumption]]. +Intros; Split. +Simpl; Intros; Elim (H (insert l2 r) x); Intros; Assert H3 := (H1 H0); Elim H3; Intro; [Left; Right; Assumption | Elim (RList_P8 l2 r x); Intros H5 _; Assert H6 := (H5 H4); Elim H6; Intro; [Left; Left; Assumption | Right; Assumption]]. +Intro; Simpl; Elim (H (insert l2 r) x); Intros _ H1; Apply H1; Elim H0; Intro; [Elim H2; Intro; [Right; Elim (RList_P8 l2 r x); Intros _ H4; Apply H4; Left; Assumption | Left; Assumption] | Right; Elim (RList_P8 l2 r x); Intros _ H3; Apply H3; Right; Assumption]. +Qed. + +Lemma RList_P10 : (l:Rlist;a:R) (longueur (insert l a))==(S (longueur l)). +Intros; Induction l; [Reflexivity | Simpl; Case (total_order_Rle r a); Intro; [Simpl; Rewrite Hrecl; Reflexivity | Reflexivity]]. +Qed. + +Lemma RList_P11 : (l1,l2:Rlist) (longueur (cons_ORlist l1 l2))=(plus (longueur l1) (longueur l2)). +Induction l1; [Intro; Reflexivity | Intros; Simpl; Rewrite (H (insert l2 r)); Rewrite RList_P10; Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring]. +Qed. + +Lemma RList_P12 : (l:Rlist;i:nat;f:R->R) (lt i (longueur l)) -> (pos_Rl (app_Rlist l f) i)==(f (pos_Rl l i)). +Induction l; [Intros; Elim (lt_n_O ? H) | Intros; Induction i; [Reflexivity | Simpl; Apply H; Apply lt_S_n; Apply H0]]. +Qed. + +Lemma RList_P13 : (l:Rlist;i:nat;a:R) (lt i (pred (longueur l))) -> ``(pos_Rl (mid_Rlist l a) (S i)) == ((pos_Rl l i)+(pos_Rl l (S i)))/2``. +Induction l. +Intros; Simpl in H; Elim (lt_n_O ? H). +Induction r0. +Intros; Simpl in H0; Elim (lt_n_O ? H0). +Intros; Simpl in H1; Induction i. +Reflexivity. +Change ``(pos_Rl (mid_Rlist (cons r1 r2) r) (S i)) == ((pos_Rl (cons r1 r2) i)+(pos_Rl (cons r1 r2) (S i)))/2``; Apply H0; Simpl; Apply lt_S_n; Assumption. +Qed. + +Lemma RList_P14 : (l:Rlist;a:R) (longueur (mid_Rlist l a))=(longueur l). +Induction l; Intros; [Reflexivity | Simpl; Rewrite (H r); Reflexivity]. +Qed. + +Lemma RList_P15 : (l1,l2:Rlist) (ordered_Rlist l1) -> (ordered_Rlist l2) -> (pos_Rl l1 O)==(pos_Rl l2 O) -> (pos_Rl (cons_ORlist l1 l2) O)==(pos_Rl l1 O). +Intros; Apply Rle_antisym. +Induction l1; [Simpl; Simpl in H1; Right; Symmetry; Assumption | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons r l1) (0))); Intros; Assert H4 : (In (pos_Rl (cons r l1) (0)) (cons r l1))\/(In (pos_Rl (cons r l1) (0)) l2); [Left; Left; Reflexivity | Assert H5 := (H3 H4); Apply RList_P5; [Apply RList_P2; Assumption | Assumption]]]. +Induction l1; [Simpl; Simpl in H1; Right; Assumption | Assert H2 : (In (pos_Rl (cons_ORlist (cons r l1) l2) (0)) (cons_ORlist (cons r l1) l2)); [Elim (RList_P3 (cons_ORlist (cons r l1) l2) (pos_Rl (cons_ORlist (cons r l1) l2) (0))); Intros; Apply H3; Exists O; Split; [Reflexivity | Rewrite RList_P11; Simpl; Apply lt_O_Sn] | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons_ORlist (cons r l1) l2) (0))); Intros; Assert H5 := (H3 H2); Elim H5; Intro; [Apply RList_P5; Assumption | Rewrite H1; Apply RList_P5; Assumption]]]. +Qed. + +Lemma RList_P16 : (l1,l2:Rlist) (ordered_Rlist l1) -> (ordered_Rlist l2) -> (pos_Rl l1 (pred (longueur l1)))==(pos_Rl l2 (pred (longueur l2))) -> (pos_Rl (cons_ORlist l1 l2) (pred (longueur (cons_ORlist l1 l2))))==(pos_Rl l1 (pred (longueur l1))). +Intros; Apply Rle_antisym. +Induction l1. +Simpl; Simpl in H1; Right; Symmetry; Assumption. +Assert H2 : (In (pos_Rl (cons_ORlist (cons r l1) l2) (pred (longueur (cons_ORlist (cons r l1) l2)))) (cons_ORlist (cons r l1) l2)); [Elim (RList_P3 (cons_ORlist (cons r l1) l2) (pos_Rl (cons_ORlist (cons r l1) l2) (pred (longueur (cons_ORlist (cons r l1) l2))))); Intros; Apply H3; Exists (pred (longueur (cons_ORlist (cons r l1) l2))); Split; [Reflexivity | Rewrite RList_P11; Simpl; Apply lt_n_Sn] | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons_ORlist (cons r l1) l2) (pred (longueur (cons_ORlist (cons r l1) l2))))); Intros; Assert H5 := (H3 H2); Elim H5; Intro; [Apply RList_P7; Assumption | Rewrite H1; Apply RList_P7; Assumption]]. +Induction l1. +Simpl; Simpl in H1; Right; Assumption. +Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons r l1) (pred (longueur (cons r l1))))); Intros; Assert H4 : (In (pos_Rl (cons r l1) (pred (longueur (cons r l1)))) (cons r l1))\/(In (pos_Rl (cons r l1) (pred (longueur (cons r l1)))) l2); [Left; Change (In (pos_Rl (cons r l1) (longueur l1)) (cons r l1)); Elim (RList_P3 (cons r l1) (pos_Rl (cons r l1) (longueur l1))); Intros; Apply H5; Exists (longueur l1); Split; [Reflexivity | Simpl; Apply lt_n_Sn] | Assert H5 := (H3 H4); Apply RList_P7; [Apply RList_P2; Assumption | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons r l1) (pred (longueur (cons r l1))))); Intros; Apply H7; Left; Elim (RList_P3 (cons r l1) (pos_Rl (cons r l1) (pred (longueur (cons r l1))))); Intros; Apply H9; Exists (pred (longueur (cons r l1))); Split; [Reflexivity | Simpl; Apply lt_n_Sn]]]. +Qed. + +Lemma RList_P17 : (l1:Rlist;x:R;i:nat) (ordered_Rlist l1) -> (In x l1) -> ``(pos_Rl l1 i)<x`` -> (lt i (pred (longueur l1))) -> ``(pos_Rl l1 (S i))<=x``. +Induction l1. +Intros; Elim H0. +Intros; Induction i. +Simpl; Elim H1; Intro; [Simpl in H2; Rewrite H4 in H2; Elim (Rlt_antirefl ? H2) | Apply RList_P5; [Apply RList_P4 with r; Assumption | Assumption]]. +Simpl; Simpl in H2; Elim H1; Intro. +Rewrite H4 in H2; Assert H5 : ``r<=(pos_Rl r0 i)``; [Apply Rle_trans with (pos_Rl r0 O); [Apply (H0 O); Simpl; Simpl in H3; Apply neq_O_lt; Red; Intro; Rewrite <- H5 in H3; Elim (lt_n_O ? H3) | Elim (RList_P6 r0); Intros; Apply H5; [Apply RList_P4 with r; Assumption | Apply le_O_n | Simpl in H3; Apply lt_S_n; Apply lt_trans with (longueur r0); [Apply H3 | Apply lt_n_Sn]]] | Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H5 H2))]. +Apply H; Try Assumption; [Apply RList_P4 with r; Assumption | Simpl in H3; Apply lt_S_n; Replace (S (pred (longueur r0))) with (longueur r0); [Apply H3 | Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H5 in H3; Elim (lt_n_O ? H3)]]. +Qed. + +Lemma RList_P18 : (l:Rlist;f:R->R) (longueur (app_Rlist l f))=(longueur l). +Induction l; Intros; [Reflexivity | Simpl; Rewrite H; Reflexivity]. +Qed. + +Lemma RList_P19 : (l:Rlist) ~l==nil -> (EXT r:R | (EXT r0:Rlist | l==(cons r r0))). +Intros; Induction l; [Elim H; Reflexivity | Exists r; Exists l; Reflexivity]. +Qed. + +Lemma RList_P20 : (l:Rlist) (le (2) (longueur l)) -> (EXT r:R | (EXT r1:R | (EXT l':Rlist | l==(cons r (cons r1 l'))))). +Intros; Induction l; [Simpl in H; Elim (le_Sn_O ? H) | Induction l; [Simpl in H; Elim (le_Sn_O ? (le_S_n ? ? H)) | Exists r; Exists r0; Exists l; Reflexivity]]. +Qed. + +Lemma RList_P21 : (l,l':Rlist) l==l' -> (Rtail l)==(Rtail l'). +Intros; Rewrite H; Reflexivity. +Qed. + +Lemma RList_P22 : (l1,l2:Rlist) ~l1==nil -> (pos_Rl (cons_Rlist l1 l2) O)==(pos_Rl l1 O). +Induction l1; [Intros; Elim H; Reflexivity | Intros; Reflexivity]. +Qed. + +Lemma RList_P23 : (l1,l2:Rlist) (longueur (cons_Rlist l1 l2))==(plus (longueur l1) (longueur l2)). +Induction l1; [Intro; Reflexivity | Intros; Simpl; Rewrite H; Reflexivity]. +Qed. + +Lemma RList_P24 : (l1,l2:Rlist) ~l2==nil -> (pos_Rl (cons_Rlist l1 l2) (pred (longueur (cons_Rlist l1 l2)))) == (pos_Rl l2 (pred (longueur l2))). +Induction l1. +Intros; Reflexivity. +Intros; Rewrite <- (H l2 H0); Induction l2. +Elim H0; Reflexivity. +Do 2 Rewrite RList_P23; Replace (plus (longueur (cons r r0)) (longueur (cons r1 l2))) with (S (S (plus (longueur r0) (longueur l2)))); [Replace (plus (longueur r0) (longueur (cons r1 l2))) with (S (plus (longueur r0) (longueur l2))); [Reflexivity | Simpl; Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring] | Simpl; Apply INR_eq; Do 3 Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring]. +Qed. + +Lemma RList_P25 : (l1,l2:Rlist) (ordered_Rlist l1) -> (ordered_Rlist l2) -> ``(pos_Rl l1 (pred (longueur l1)))<=(pos_Rl l2 O)`` -> (ordered_Rlist (cons_Rlist l1 l2)). +Induction l1. +Intros; Simpl; Assumption. +Induction r0. +Intros; Simpl; Simpl in H2; Unfold ordered_Rlist; Intros; Simpl in H3. +Induction i. +Simpl; Assumption. +Change ``(pos_Rl l2 i)<=(pos_Rl l2 (S i))``; Apply (H1 i); Apply lt_S_n; Replace (S (pred (longueur l2))) with (longueur l2); [Assumption | Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H4 in H3; Elim (lt_n_O ? H3)]. +Intros; Clear H; Assert H : (ordered_Rlist (cons_Rlist (cons r1 r2) l2)). +Apply H0; Try Assumption. +Apply RList_P4 with r; Assumption. +Unfold ordered_Rlist; Intros; Simpl in H4; Induction i. +Simpl; Apply (H1 O); Simpl; Apply lt_O_Sn. +Change ``(pos_Rl (cons_Rlist (cons r1 r2) l2) i)<=(pos_Rl (cons_Rlist (cons r1 r2) l2) (S i))``; Apply (H i); Simpl; Apply lt_S_n; Assumption. +Qed. + +Lemma RList_P26 : (l1,l2:Rlist;i:nat) (lt i (longueur l1)) -> (pos_Rl (cons_Rlist l1 l2) i)==(pos_Rl l1 i). +Induction l1. +Intros; Elim (lt_n_O ? H). +Intros; Induction i. +Apply RList_P22; Discriminate. +Apply (H l2 i); Simpl in H0; Apply lt_S_n; Assumption. +Qed. + +Lemma RList_P27 : (l1,l2,l3:Rlist) (cons_Rlist l1 (cons_Rlist l2 l3))==(cons_Rlist (cons_Rlist l1 l2) l3). +Induction l1; Intros; [Reflexivity | Simpl; Rewrite (H l2 l3); Reflexivity]. +Qed. + +Lemma RList_P28 : (l:Rlist) (cons_Rlist l nil)==l. +Induction l; [Reflexivity | Intros; Simpl; Rewrite H; Reflexivity]. +Qed. + +Lemma RList_P29 : (l2,l1:Rlist;i:nat) (le (longueur l1) i) -> (lt i (longueur (cons_Rlist l1 l2))) -> (pos_Rl (cons_Rlist l1 l2) i)==(pos_Rl l2 (minus i (longueur l1))). +Induction l2. +Intros; Rewrite RList_P28 in H0; Elim (lt_n_n ? (le_lt_trans ? ? ? H H0)). +Intros; Replace (cons_Rlist l1 (cons r r0)) with (cons_Rlist (cons_Rlist l1 (cons r nil)) r0). +Inversion H0. +Rewrite <- minus_n_n; Simpl; Rewrite RList_P26. +Clear l2 r0 H i H0 H1 H2; Induction l1. +Reflexivity. +Simpl; Assumption. +Rewrite RList_P23; Rewrite plus_sym; Simpl; Apply lt_n_Sn. +Replace (minus (S m) (longueur l1)) with (S (minus (S m) (S (longueur l1)))). +Rewrite H3; Simpl; Replace (S (longueur l1)) with (longueur (cons_Rlist l1 (cons r nil))). +Apply (H (cons_Rlist l1 (cons r nil)) i). +Rewrite RList_P23; Rewrite plus_sym; Simpl; Rewrite <- H3; Apply le_n_S; Assumption. +Repeat Rewrite RList_P23; Simpl; Rewrite RList_P23 in H1; Rewrite plus_sym in H1; Simpl in H1; Rewrite (plus_sym (longueur l1)); Simpl; Rewrite plus_sym; Apply H1. +Rewrite RList_P23; Rewrite plus_sym; Reflexivity. +Change (S (minus m (longueur l1)))=(minus (S m) (longueur l1)); Apply minus_Sn_m; Assumption. +Replace (cons r r0) with (cons_Rlist (cons r nil) r0); [Symmetry; Apply RList_P27 | Reflexivity]. +Qed.
\ No newline at end of file diff --git a/theories/Reals/R_Ifp.v b/theories/Reals/R_Ifp.v index 2152188b6..33e60448a 100644 --- a/theories/Reals/R_Ifp.v +++ b/theories/Reals/R_Ifp.v @@ -13,7 +13,7 @@ (* *) (**********************************************************) -Require Export Rbase. +Require RealsB. Require Omega. (*********************************************************) diff --git a/theories/Reals/R_sqr.v b/theories/Reals/R_sqr.v index d4bbac27c..2cd6e2fb9 100644 --- a/theories/Reals/R_sqr.v +++ b/theories/Reals/R_sqr.v @@ -8,11 +8,9 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. +Require RealsB. Require Rbasic_fun. - (****************************************************) (* Rsqr : some results *) (****************************************************) @@ -233,7 +231,3 @@ Left; Apply Rminus_eq; Assumption. Right; Apply Rminus_eq; Unfold Rminus; Rewrite Ropp_Ropp; Assumption. Ring. Qed. - - - - diff --git a/theories/Reals/R_sqrt.v b/theories/Reals/R_sqrt.v index e550469fa..eb3f967a3 100644 --- a/theories/Reals/R_sqrt.v +++ b/theories/Reals/R_sqrt.v @@ -8,11 +8,9 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. -Require Rbasic_fun. -Require R_sqr. -Require Export Rsqrt_def. +Require RealsB. +Require Rfunctions. +Require Rsqrt_def. (* Voici un prolongement continu de Rsqrt sur R *) Definition sqrt : R->R := [x:R](Cases (case_Rabsolu x) of diff --git a/theories/Reals/Ranalysis.v b/theories/Reals/Ranalysis.v index 95046d292..672722233 100644 --- a/theories/Reals/Ranalysis.v +++ b/theories/Reals/Ranalysis.v @@ -8,7 +8,472 @@ (*i $Id$ i*) +Require RealsB. +Require Rfunctions. +Require Rtrigo. +Require SeqSeries. Require Export Ranalysis1. Require Export Ranalysis2. Require Export Ranalysis3. +Require Export Rtopology. +Require Export TAF. +Require Export PSeries_reg. +Require Export Exp_prop. +Require Export Rtrigo_reg. +Require Export Rsqrt_def. +Require Export R_sqrt. +Require Export Rtrigo_calc. +Require Export Rgeom. +Require Export RList. +Require Export Sqrt_reg. Require Export Ranalysis4. +Require Export Rpower. + +Axiom AppVar : R. + +(**********) +Tactic Definition IntroHypG trm := +Match trm With +|[(plus_fct ?1 ?2)] -> + (Match Context With + |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 + |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 + | _ -> Idtac) +|[(minus_fct ?1 ?2)] -> + (Match Context With + |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 + |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 + | _ -> Idtac) +|[(mult_fct ?1 ?2)] -> + (Match Context With + |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 + |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 + | _ -> Idtac) +|[(div_fct ?1 ?2)] -> Let aux = ?2 In + (Match Context With + |[_:(x0:R)``(aux x0)<>0``|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 + |[_:(x0:R)``(aux x0)<>0``|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 + |[|-(derivable ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1; IntroHypG ?2 | Try Assumption] + |[|-(continuity ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1; IntroHypG ?2 | Try Assumption] + | _ -> Idtac) +|[(comp ?1 ?2)] -> + (Match Context With + |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 + |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 + | _ -> Idtac) +|[(opp_fct ?1)] -> + (Match Context With + |[|-(derivable ?)] -> IntroHypG ?1 + |[|-(continuity ?)] -> IntroHypG ?1 + | _ -> Idtac) +|[(inv_fct ?1)] -> Let aux = ?1 In + (Match Context With + |[_:(x0:R)``(aux x0)<>0``|-(derivable ?)] -> IntroHypG ?1 + |[_:(x0:R)``(aux x0)<>0``|-(continuity ?)] -> IntroHypG ?1 + |[|-(derivable ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1 | Try Assumption] + |[|-(continuity ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1| Try Assumption] + | _ -> Idtac) +|[cos] -> Idtac +|[sin] -> Idtac +|[cosh] -> Idtac +|[sinh] -> Idtac +|[exp] -> Idtac +|[Rsqr] -> Idtac +|[sqrt] -> Idtac +|[id] -> Idtac +|[(fct_cte ?)] -> Idtac +|[(pow_fct ?)] -> Idtac +|[Rabsolu] -> Idtac +|[?1] -> Let p = ?1 In + (Match Context With + |[_:(derivable p)|- ?] -> Idtac + |[|-(derivable p)] -> Idtac + |[|-(derivable ?)] -> Cut True -> (derivable p); [Intro HYPPD; Cut (derivable p); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] + | [_:(continuity p)|- ?] -> Idtac + |[|-(continuity p)] -> Idtac + |[|-(continuity ?)] -> Cut True -> (continuity p); [Intro HYPPD; Cut (continuity p); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] + | _ -> Idtac). + +(**********) +Tactic Definition IntroHypL trm pt := +Match trm With +|[(plus_fct ?1 ?2)] -> + (Match Context With + |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + | _ -> Idtac) +|[(minus_fct ?1 ?2)] -> + (Match Context With + |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + | _ -> Idtac) +|[(mult_fct ?1 ?2)] -> + (Match Context With + |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + | _ -> Idtac) +|[(div_fct ?1 ?2)] -> Let aux = ?2 In + (Match Context With + |[_:``(aux pt)<>0``|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[_:``(aux pt)<>0``|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[_:``(aux pt)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt + |[id:(x0:R)``(aux x0)<>0``|-(derivable_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt; IntroHypL ?2 pt + |[id:(x0:R)``(aux x0)<>0``|-(continuity_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt; IntroHypL ?2 pt + |[id:(x0:R)``(aux x0)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt; IntroHypL ?2 pt + |[|-(derivable_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt; IntroHypL ?2 pt | Try Assumption] + |[|-(continuity_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt; IntroHypL ?2 pt | Try Assumption] + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt; IntroHypL ?2 pt | Try Assumption] + | _ -> Idtac) +|[(comp ?1 ?2)] -> + (Match Context With + |[|-(derivable_pt ? ?)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In IntroHypL ?1 pt_f1; IntroHypL ?2 pt + |[|-(continuity_pt ? ?)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In IntroHypL ?1 pt_f1; IntroHypL ?2 pt + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In IntroHypL ?1 pt_f1; IntroHypL ?2 pt + | _ -> Idtac) +|[(opp_fct ?1)] -> + (Match Context With + |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt + |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt + | _ -> Idtac) +|[(inv_fct ?1)] -> Let aux = ?1 In + (Match Context With + |[_:``(aux pt)<>0``|-(derivable_pt ? ?)] -> IntroHypL ?1 pt + |[_:``(aux pt)<>0``|-(continuity_pt ? ?)] -> IntroHypL ?1 pt + |[_:``(aux pt)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt + |[id:(x0:R)``(aux x0)<>0``|-(derivable_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt + |[id:(x0:R)``(aux x0)<>0``|-(continuity_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt + |[id:(x0:R)``(aux x0)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt + |[|-(derivable_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt | Try Assumption] + |[|-(continuity_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt| Try Assumption] + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt | Try Assumption] + | _ -> Idtac) +|[cos] -> Idtac +|[sin] -> Idtac +|[cosh] -> Idtac +|[sinh] -> Idtac +|[exp] -> Idtac +|[Rsqr] -> Idtac +|[id] -> Idtac +|[(fct_cte ?)] -> Idtac +|[(pow_fct ?)] -> Idtac +|[sqrt] -> + (Match Context With + |[|-(derivable_pt ? ?)] -> Cut ``0<pt``; [Intro | Try Assumption] + |[|-(continuity_pt ? ?)] -> Cut ``0<=pt``; [Intro | Try Assumption] + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut ``0<pt``; [Intro | Try Assumption] + | _ -> Idtac) +|[Rabsolu] -> + (Match Context With + |[|-(derivable_pt ? ?)] -> Cut ``pt<>0``; [Intro | Try Assumption] + | _ -> Idtac) +|[?1] -> Let p = ?1 In + (Match Context With + |[_:(derivable_pt p pt)|- ?] -> Idtac + |[|-(derivable_pt p pt)] -> Idtac + |[|-(derivable_pt ? ?)] -> Cut True -> (derivable_pt p pt); [Intro HYPPD; Cut (derivable_pt p pt); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] + |[_:(continuity_pt p pt)|- ?] -> Idtac + |[|-(continuity_pt p pt)] -> Idtac + |[|-(continuity_pt ? ?)] -> Cut True -> (continuity_pt p pt); [Intro HYPPD; Cut (continuity_pt p pt); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] + |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut True -> (derivable_pt p pt); [Intro HYPPD; Cut (derivable_pt p pt); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] + | _ -> Idtac). + +(**********) +Recursive Tactic Definition IsDiff_pt := +Match Context With + (* fonctions de base *) + [|-(derivable_pt Rsqr ?)] -> Apply derivable_pt_Rsqr +|[|-(derivable_pt id ?1)] -> Apply (derivable_pt_id ?1) +|[|-(derivable_pt (fct_cte ?) ?)] -> Apply derivable_pt_const +|[|-(derivable_pt sin ?)] -> Apply derivable_pt_sin +|[|-(derivable_pt cos ?)] -> Apply derivable_pt_cos +|[|-(derivable_pt sinh ?)] -> Apply derivable_pt_sinh +|[|-(derivable_pt cosh ?)] -> Apply derivable_pt_cosh +|[|-(derivable_pt exp ?)] -> Apply derivable_pt_exp +|[|-(derivable_pt (pow_fct ?) ?)] -> Unfold pow_fct; Apply derivable_pt_pow +|[|-(derivable_pt sqrt ?1)] -> Apply (derivable_pt_sqrt ?1); Assumption Orelse Unfold plus_fct minus_fct opp_fct mult_fct div_fct inv_fct comp id fct_cte pow_fct +|[|-(derivable_pt Rabsolu ?1)] -> Apply (derivable_pt_Rabsolu ?1); Assumption Orelse Unfold plus_fct minus_fct opp_fct mult_fct div_fct inv_fct comp id fct_cte pow_fct + (* regles de differentiabilite *) + (* PLUS *) +|[|-(derivable_pt (plus_fct ?1 ?2) ?3)] -> Apply (derivable_pt_plus ?1 ?2 ?3); IsDiff_pt + (* MOINS *) +|[|-(derivable_pt (minus_fct ?1 ?2) ?3)] -> Apply (derivable_pt_minus ?1 ?2 ?3); IsDiff_pt + (* OPPOSE *) +|[|-(derivable_pt (opp_fct ?1) ?2)] -> Apply (derivable_pt_opp ?1 ?2); IsDiff_pt + (* MULTIPLICATION PAR UN SCALAIRE *) +|[|-(derivable_pt (mult_real_fct ?1 ?2) ?3)] -> Apply (derivable_pt_scal ?2 ?1 ?3); IsDiff_pt + (* MULTIPLICATION *) +|[|-(derivable_pt (mult_fct ?1 ?2) ?3)] -> Apply (derivable_pt_mult ?1 ?2 ?3); IsDiff_pt + (* DIVISION *) + |[|-(derivable_pt (div_fct ?1 ?2) ?3)] -> Apply (derivable_pt_div ?1 ?2 ?3); [IsDiff_pt | IsDiff_pt | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp pow_fct id fct_cte] + (* INVERSION *) + |[|-(derivable_pt (inv_fct ?1) ?2)] -> Apply (derivable_pt_inv ?1 ?2); [Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp pow_fct id fct_cte | IsDiff_pt] + (* COMPOSITION *) +|[|-(derivable_pt (comp ?1 ?2) ?3)] -> Apply (derivable_pt_comp ?2 ?1 ?3); IsDiff_pt +|[_:(derivable_pt ?1 ?2)|-(derivable_pt ?1 ?2)] -> Assumption +|[_:(derivable ?1) |- (derivable_pt ?1 ?2)] -> Cut (derivable ?1); [Intro HypDDPT; Apply HypDDPT | Assumption] +|[|-True->(derivable_pt ? ?)] -> Intro HypTruE; Clear HypTruE; IsDiff_pt +| _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. + +(**********) +Recursive Tactic Definition IsDiff_glob := +Match Context With + (* fonctions de base *) + [|-(derivable Rsqr)] -> Apply derivable_Rsqr + |[|-(derivable id)] -> Apply derivable_id + |[|-(derivable (fct_cte ?))] -> Apply derivable_const + |[|-(derivable sin)] -> Apply derivable_sin + |[|-(derivable cos)] -> Apply derivable_cos + |[|-(derivable cosh)] -> Apply derivable_cosh + |[|-(derivable sinh)] -> Apply derivable_sinh + |[|-(derivable exp)] -> Apply derivable_exp + |[|-(derivable (pow_fct ?))] -> Unfold pow_fct; Apply derivable_pow + (* regles de differentiabilite *) + (* PLUS *) + |[|-(derivable (plus_fct ?1 ?2))] -> Apply (derivable_plus ?1 ?2); IsDiff_glob + (* MOINS *) + |[|-(derivable (minus_fct ?1 ?2))] -> Apply (derivable_minus ?1 ?2); IsDiff_glob + (* OPPOSE *) + |[|-(derivable (opp_fct ?1))] -> Apply (derivable_opp ?1); IsDiff_glob + (* MULTIPLICATION PAR UN SCALAIRE *) + |[|-(derivable (mult_real_fct ?1 ?2))] -> Apply (derivable_scal ?2 ?1); IsDiff_glob + (* MULTIPLICATION *) + |[|-(derivable (mult_fct ?1 ?2))] -> Apply (derivable_mult ?1 ?2); IsDiff_glob + (* DIVISION *) + |[|-(derivable (div_fct ?1 ?2))] -> Apply (derivable_div ?1 ?2); [IsDiff_glob | IsDiff_glob | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct] + (* INVERSION *) + |[|-(derivable (inv_fct ?1))] -> Apply (derivable_inv ?1); [Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct | IsDiff_glob] + (* COMPOSITION *) + |[|-(derivable (comp sqrt ?))] -> Unfold derivable; Intro; Try IsDiff_pt + |[|-(derivable (comp Rabsolu ?))] -> Unfold derivable; Intro; Try IsDiff_pt + |[|-(derivable (comp ?1 ?2))] -> Apply (derivable_comp ?2 ?1); IsDiff_glob + |[_:(derivable ?1)|-(derivable ?1)] -> Assumption + |[|-True->(derivable ?)] -> Intro HypTruE; Clear HypTruE; IsDiff_glob + | _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. + +(**********) +Recursive Tactic Definition IsCont_pt := +Match Context With + (* fonctions de base *) + [|-(continuity_pt Rsqr ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_Rsqr +|[|-(continuity_pt id ?1)] -> Apply derivable_continuous_pt; Apply (derivable_pt_id ?1) +|[|-(continuity_pt (fct_cte ?) ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_const +|[|-(continuity_pt sin ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_sin +|[|-(continuity_pt cos ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_cos +|[|-(continuity_pt sinh ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_sinh +|[|-(continuity_pt cosh ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_cosh +|[|-(continuity_pt exp ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_exp +|[|-(continuity_pt (pow_fct ?) ?)] -> Unfold pow_fct; Apply derivable_continuous_pt; Apply derivable_pt_pow +|[|-(continuity_pt sqrt ?1)] -> Apply continuity_pt_sqrt; Assumption Orelse Unfold plus_fct minus_fct opp_fct mult_fct div_fct inv_fct comp id fct_cte pow_fct +|[|-(continuity_pt Rabsolu ?1)] -> Apply (continuity_Rabsolu ?1) + (* regles de differentiabilite *) + (* PLUS *) +|[|-(continuity_pt (plus_fct ?1 ?2) ?3)] -> Apply (continuity_pt_plus ?1 ?2 ?3); IsCont_pt + (* MOINS *) +|[|-(continuity_pt (minus_fct ?1 ?2) ?3)] -> Apply (continuity_pt_minus ?1 ?2 ?3); IsCont_pt + (* OPPOSE *) +|[|-(continuity_pt (opp_fct ?1) ?2)] -> Apply (continuity_pt_opp ?1 ?2); IsCont_pt + (* MULTIPLICATION PAR UN SCALAIRE *) +|[|-(continuity_pt (mult_real_fct ?1 ?2) ?3)] -> Apply (continuity_pt_scal ?2 ?1 ?3); IsCont_pt + (* MULTIPLICATION *) +|[|-(continuity_pt (mult_fct ?1 ?2) ?3)] -> Apply (continuity_pt_mult ?1 ?2 ?3); IsCont_pt + (* DIVISION *) + |[|-(continuity_pt (div_fct ?1 ?2) ?3)] -> Apply (continuity_pt_div ?1 ?2 ?3); [IsCont_pt | IsCont_pt | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp id fct_cte pow_fct] + (* INVERSION *) + |[|-(continuity_pt (inv_fct ?1) ?2)] -> Apply (continuity_pt_inv ?1 ?2); [IsCont_pt | Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp id fct_cte pow_fct] + (* COMPOSITION *) +|[|-(continuity_pt (comp ?1 ?2) ?3)] -> Apply (continuity_pt_comp ?2 ?1 ?3); IsCont_pt +|[_:(continuity_pt ?1 ?2)|-(continuity_pt ?1 ?2)] -> Assumption +|[_:(continuity ?1) |- (continuity_pt ?1 ?2)] -> Cut (continuity ?1); [Intro HypDDPT; Apply HypDDPT | Assumption] +|[_:(derivable_pt ?1 ?2)|-(continuity_pt ?1 ?2)] -> Apply derivable_continuous_pt; Assumption +|[_:(derivable ?1)|-(continuity_pt ?1 ?2)] -> Cut (continuity ?1); [Intro HypDDPT; Apply HypDDPT | Apply derivable_continuous; Assumption] +|[|-True->(continuity_pt ? ?)] -> Intro HypTruE; Clear HypTruE; IsCont_pt +| _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. + +(**********) +Recursive Tactic Definition IsCont_glob := +Match Context With + (* fonctions de base *) + [|-(continuity Rsqr)] -> Apply derivable_continuous; Apply derivable_Rsqr + |[|-(continuity id)] -> Apply derivable_continuous; Apply derivable_id + |[|-(continuity (fct_cte ?))] -> Apply derivable_continuous; Apply derivable_const + |[|-(continuity sin)] -> Apply derivable_continuous; Apply derivable_sin + |[|-(continuity cos)] -> Apply derivable_continuous; Apply derivable_cos + |[|-(continuity exp)] -> Apply derivable_continuous; Apply derivable_exp + |[|-(continuity (pow_fct ?))] -> Unfold pow_fct; Apply derivable_continuous; Apply derivable_pow + |[|-(continuity sinh)] -> Apply derivable_continuous; Apply derivable_sinh + |[|-(continuity cosh)] -> Apply derivable_continuous; Apply derivable_cosh + |[|-(continuity Rabsolu)] -> Apply continuity_Rabsolu + (* regles de continuite *) + (* PLUS *) +|[|-(continuity (plus_fct ?1 ?2))] -> Apply (continuity_plus ?1 ?2); Try IsCont_glob Orelse Assumption + (* MOINS *) +|[|-(continuity (minus_fct ?1 ?2))] -> Apply (continuity_minus ?1 ?2); Try IsCont_glob Orelse Assumption + (* OPPOSE *) +|[|-(continuity (opp_fct ?1))] -> Apply (continuity_opp ?1); Try IsCont_glob Orelse Assumption + (* INVERSE *) +|[|-(continuity (inv_fct ?1))] -> Apply (continuity_inv ?1); Try IsCont_glob Orelse Assumption + (* MULTIPLICATION PAR UN SCALAIRE *) +|[|-(continuity (mult_real_fct ?1 ?2))] -> Apply (continuity_scal ?2 ?1); Try IsCont_glob Orelse Assumption + (* MULTIPLICATION *) +|[|-(continuity (mult_fct ?1 ?2))] -> Apply (continuity_mult ?1 ?2); Try IsCont_glob Orelse Assumption + (* DIVISION *) + |[|-(continuity (div_fct ?1 ?2))] -> Apply (continuity_div ?1 ?2); [Try IsCont_glob Orelse Assumption | Try IsCont_glob Orelse Assumption | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte pow_fct] + (* COMPOSITION *) + |[|-(continuity (comp sqrt ?))] -> Unfold continuity_pt; Intro; Try IsCont_pt + |[|-(continuity (comp ?1 ?2))] -> Apply (continuity_comp ?2 ?1); Try IsCont_glob Orelse Assumption + |[_:(continuity ?1)|-(continuity ?1)] -> Assumption + |[|-True->(continuity ?)] -> Intro HypTruE; Clear HypTruE; IsCont_glob + |[_:(derivable ?1)|-(continuity ?1)] -> Apply derivable_continuous; Assumption + | _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. + +(**********) +Recursive Tactic Definition RewTerm trm := +Match trm With +| [(Rplus ?1 ?2)] -> Let p1= (RewTerm ?1) And p2 = (RewTerm ?2) In + (Match p1 With + [(fct_cte ?3)] -> + (Match p2 With + | [(fct_cte ?4)] -> '(fct_cte (Rplus ?3 ?4)) + | _ -> '(plus_fct p1 p2)) + | _ -> '(plus_fct p1 p2)) +| [(Rminus ?1 ?2)] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In + (Match p1 With + [(fct_cte ?3)] -> + (Match p2 With + | [(fct_cte ?4)] -> '(fct_cte (Rminus ?3 ?4)) + | _ -> '(minus_fct p1 p2)) + | _ -> '(minus_fct p1 p2)) +| [(Rdiv ?1 ?2)] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In + (Match p1 With + [(fct_cte ?3)] -> + (Match p2 With + | [(fct_cte ?4)] -> '(fct_cte (Rdiv ?3 ?4)) + | _ -> '(div_fct p1 p2)) + | _ -> + (Match p2 With + | [(fct_cte ?4)] -> '(mult_fct p1 (fct_cte (Rinv ?4))) + | _ -> '(div_fct p1 p2))) +| [(Rmult ?1 (Rinv ?2))] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In + (Match p1 With + [(fct_cte ?3)] -> + (Match p2 With + | [(fct_cte ?4)] -> '(fct_cte (Rdiv ?3 ?4)) + | _ -> '(div_fct p1 p2)) + | _ -> + (Match p2 With + | [(fct_cte ?4)] -> '(mult_fct p1 (fct_cte (Rinv ?4))) + | _ -> '(div_fct p1 p2))) +| [(Rmult ?1 ?2)] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In + (Match p1 With + [(fct_cte ?3)] -> + (Match p2 With + | [(fct_cte ?4)] -> '(fct_cte (Rmult ?3 ?4)) + | _ -> '(mult_fct p1 p2)) + | _ -> '(mult_fct p1 p2)) +| [(Ropp ?1)] -> Let p = (RewTerm ?1) In + (Match p With + [(fct_cte ?2)] -> '(fct_cte (Ropp ?2)) + | _ -> '(opp_fct p)) +| [(Rinv ?1)] -> Let p = (RewTerm ?1) In + (Match p With + [(fct_cte ?2)] -> '(fct_cte (Rinv ?2)) + | _ -> '(inv_fct p)) +| [(?1 AppVar)] -> '?1 +| [(?1 ?2)] -> Let p = (RewTerm ?2) In + (Match p With + | [(fct_cte ?3)] -> '(fct_cte (?1 ?3)) + | _ -> '(comp ?1 p)) +| [AppVar] -> 'id +| [(pow AppVar ?1)] -> '(pow_fct ?1) +| [(pow ?1 ?2)] -> Let p = (RewTerm ?1) In + (Match p With + | [(fct_cte ?3)] -> '(fct_cte (pow_fct ?2 ?3)) + | _ -> '(comp (pow_fct ?2) p)) +| [?1]-> '(fct_cte ?1). + +(**********) +Recursive Tactic Definition ConsProof trm pt := +Match trm With +| [(plus_fct ?1 ?2)] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_plus ?1 ?2 pt p1 p2) +| [(minus_fct ?1 ?2)] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_minus ?1 ?2 pt p1 p2) +| [(mult_fct ?1 ?2)] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_mult ?1 ?2 pt p1 p2) +| [(div_fct ?1 ?2)] -> + (Match Context With + |[id:~((?2 pt)==R0) |- ?] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_div ?1 ?2 pt p1 p2 id) + | _ -> 'False) +| [(inv_fct ?1)] -> + (Match Context With + |[id:~((?1 pt)==R0) |- ?] -> Let p1 = (ConsProof ?1 pt) In '(derivable_pt_inv ?1 pt p1 id) + | _ -> 'False) +| [(comp ?1 ?2)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In Let p1 = (ConsProof ?1 pt_f1) And p2 = (ConsProof ?2 pt) In '(derivable_pt_comp ?2 ?1 pt p2 p1) +| [(opp_fct ?1)] -> Let p1 = (ConsProof ?1 pt) In '(derivable_pt_opp ?1 pt p1) +| [sin] -> '(derivable_pt_sin pt) +| [cos] -> '(derivable_pt_cos pt) +| [sinh] -> '(derivable_pt_sinh pt) +| [cosh] -> '(derivable_pt_cosh pt) +| [exp] -> '(derivable_pt_exp pt) +| [id] -> '(derivable_pt_id pt) +| [Rsqr] -> '(derivable_pt_Rsqr pt) +| [sqrt] -> + (Match Context With + |[id:(Rlt R0 pt) |- ?] -> '(derivable_pt_sqrt pt id) + | _ -> 'False) +| [(fct_cte ?1)] -> '(derivable_pt_const ?1 pt) +| [?1] -> Let aux = ?1 In + (Match Context With + [ id : (derivable_pt aux pt) |- ?] -> 'id + |[ id : (derivable aux) |- ?] -> '(id pt) + | _ -> 'False). + +(**********) +Recursive Tactic Definition SimplifyDerive trm pt := +Match trm With +| [(plus_fct ?1 ?2)] -> Try Rewrite derive_pt_plus; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt +| [(minus_fct ?1 ?2)] -> Try Rewrite derive_pt_minus; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt +| [(mult_fct ?1 ?2)] -> Try Rewrite derive_pt_mult; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt +| [(div_fct ?1 ?2)] -> Try Rewrite derive_pt_div; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt +| [(comp ?1 ?2)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In Try Rewrite derive_pt_comp; SimplifyDerive ?1 pt_f1; SimplifyDerive ?2 pt +| [(opp_fct ?1)] -> Try Rewrite derive_pt_opp; SimplifyDerive ?1 pt +| [(inv_fct ?1)] -> Try Rewrite derive_pt_inv; SimplifyDerive ?1 pt +| [(fct_cte ?1)] -> Try Rewrite derive_pt_const +| [id] -> Try Rewrite derive_pt_id +| [sin] -> Try Rewrite derive_pt_sin +| [cos] -> Try Rewrite derive_pt_cos +| [sinh] -> Try Rewrite derive_pt_sinh +| [cosh] -> Try Rewrite derive_pt_cosh +| [exp] -> Try Rewrite derive_pt_exp +| [Rsqr] -> Try Rewrite derive_pt_Rsqr +| [sqrt] -> Try Rewrite derive_pt_sqrt +| [?1] -> Let aux = ?1 In + (Match Context With + [ id : (eqT ? (derive_pt aux pt ?2) ?); H : (derivable aux) |- ? ] -> Try Replace (derive_pt aux pt (H pt)) with (derive_pt aux pt ?2); [Rewrite id | Apply pr_nu] + |[ id : (eqT ? (derive_pt aux pt ?2) ?); H : (derivable_pt aux pt) |- ? ] -> Try Replace (derive_pt aux pt H) with (derive_pt aux pt ?2); [Rewrite id | Apply pr_nu] + | _ -> Idtac ) +| _ -> Idtac. + +(**********) +Tactic Definition Regularity () := +Match Context With +| [|-(derivable_pt ?1 ?2)] -> +Let trm = Eval Cbv Beta in (?1 AppVar) In +Let aux = (RewTerm trm) In IntroHypL aux ?2; Try (Change (derivable_pt aux ?2); IsDiff_pt) Orelse IsDiff_pt +| [|-(derivable ?1)] -> +Let trm = Eval Cbv Beta in (?1 AppVar) In +Let aux = (RewTerm trm) In IntroHypG aux; Try (Change (derivable aux); IsDiff_glob) Orelse IsDiff_glob +| [|-(continuity ?1)] -> +Let trm = Eval Cbv Beta in (?1 AppVar) In +Let aux = (RewTerm trm) In IntroHypG aux; Try (Change (continuity aux); IsCont_glob) Orelse IsCont_glob +| [|-(continuity_pt ?1 ?2)] -> +Let trm = Eval Cbv Beta in (?1 AppVar) In +Let aux = (RewTerm trm) In IntroHypL aux ?2; Try (Change (continuity_pt aux ?2); IsCont_pt) Orelse IsCont_pt +| [|-(eqT ? (derive_pt ?1 ?2 ?3) ?4)] -> +Let trm = Eval Cbv Beta in (?1 AppVar) In +Let aux = (RewTerm trm) In +IntroHypL aux ?2; Let aux2 = (ConsProof aux ?2) In Try (Replace (derive_pt ?1 ?2 ?3) with (derive_pt aux ?2 aux2); [SimplifyDerive aux ?2; Try Unfold plus_fct minus_fct mult_fct div_fct id fct_cte inv_fct opp_fct; Try Ring | Try Apply pr_nu]) Orelse IsDiff_pt. + +(**********) +Tactic Definition Reg () := Regularity ().
\ No newline at end of file diff --git a/theories/Reals/Ranalysis1.v b/theories/Reals/Ranalysis1.v index 71c0da760..8ba7c1e22 100644 --- a/theories/Reals/Ranalysis1.v +++ b/theories/Reals/Ranalysis1.v @@ -8,13 +8,10 @@ (*i $Id$ i*) -Require Rbase. -Require Rbasic_fun. -Require R_sqr. -Require Rlimit. -Require Rderiv. -Require DiscrR. -Require Rtrigo. +Require RealsB. +Require Rfunctions. +Require Export Rlimit. +Require Export Rderiv. (****************************************************) (** Basic operations on functions *) @@ -44,6 +41,9 @@ Definition constant [f:R->R] : Prop := (x,y:R) ``(f x)==(f y)``. (**********) Definition no_cond : R->Prop := [x:R] True. +(**********) +Definition constant_D_eq [f:R->R;D:R->Prop;c:R] : Prop := (x:R) (D x) -> (f x)==c. + (***************************************************) (** Definition of continuity as a limit *) (***************************************************) @@ -180,6 +180,7 @@ Definition derivable [f:R->R] := (x:R)(derivable_pt f x). Definition derive_pt [f:R->R;x:R;pr:(derivable_pt f x)] := (projT1 ? ? pr). Definition derive [f:R->R;pr:(derivable f)] := [x:R](derive_pt f x (pr x)). +Definition antiderivative [f,g:R->R;a,b:R] : Prop := ((x:R)``a<=x<=b``->(EXT pr : (derivable_pt g x) | (f x)==(derive_pt g x pr)))/\``a<=b``. (************************************) (** Class of differential functions *) (************************************) @@ -204,10 +205,10 @@ Unfold R_dist; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Unfold Rdiv; Rew Replace ``(Rabsolu (/2))`` with ``/2``. Replace (Rabsolu alp) with alp. Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Rewrite (Rmult_sym ``2``); Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]; Rewrite Rmult_1r; Rewrite double; Pattern 1 alp; Replace alp with ``alp+0``; [Idtac | Ring]; Apply Rlt_compatibility; Assumption. Symmetry; Apply Rabsolu_right; Left; Assumption. -Symmetry; Apply Rabsolu_right; Left; Change ``0</2``; Apply Rlt_Rinv; Apply Rgt_2_0. +Symmetry; Apply Rabsolu_right; Left; Change ``0</2``; Apply Rlt_Rinv; Sup0. Qed. Lemma unicite_step2 : (f:R->R;x,l:R) (derivable_pt_lim f x l) -> (limit1_in [h:R]``((f (x+h))-(f x))/h`` [h:R]``h<>0`` l R0). @@ -768,7 +769,7 @@ Intros; Case (total_order R0 (derive_pt f c pr)); Intro. Assert H3 := (derivable_derive f c pr). Elim H3; Intros l H4; Rewrite H4 in H2. Assert H5 := (derive_pt_eq_1 f c l pr H4). -Cut ``0<l/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rgt_2_0]]. +Cut ``0<l/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. Elim (H5 ``l/2`` H6); Intros delta H7. Cut ``0<(b-c)/2``. Intro; Cut ``(Rmin delta/2 ((b-c)/2))<>0``. @@ -818,7 +819,7 @@ Assert H15 := (Rle_compatibility ``c`` ``(Rmin (delta/2) ((b-c)/2))`` ``(b-c)/2` Apply Rle_lt_trans with ``c+(b-c)/2``. Assumption. Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Replace ``2*(c+(b-c)/2)`` with ``c+b``. Replace ``2*b`` with ``b+b``. Apply Rlt_compatibility_r; Assumption. @@ -828,36 +829,36 @@ Repeat Rewrite (Rmult_sym ``2``). Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym. Rewrite Rmult_1r. Ring. -Apply aze. +DiscrR. Apply Rlt_trans with c. Assumption. Pattern 1 c; Rewrite <- (Rplus_Or c); Apply Rlt_compatibility; Assumption. Cut ``0<delta/2``. Intro; Apply (Rmin_stable_in_posreal (mkposreal ``delta/2`` H12) (mkposreal ``(b-c)/2`` H8)). -Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Apply Rgt_2_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Sup0]. Unfold Rabsolu; Case (case_Rabsolu (Rmin ``delta/2`` ``(b-c)/2``)). Intro. Cut ``0<delta/2``. Intro. Generalize (Rmin_stable_in_posreal (mkposreal ``delta/2`` H10) (mkposreal ``(b-c)/2`` H8)); Simpl; Intro; Elim (Rlt_antirefl ``0`` (Rlt_trans ``0`` ``(Rmin (delta/2) ((b-c)/2))`` ``0`` H11 r)). -Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Apply Rgt_2_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Sup0]. Intro; Apply Rle_lt_trans with ``delta/2``. Apply Rmin_l. Unfold Rdiv; Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Rewrite <- (Rmult_sym ``/2``); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym. Rewrite Rmult_1l. Replace ``2*delta`` with ``delta+delta``. Pattern 2 delta; Rewrite <- (Rplus_Or delta); Apply Rlt_compatibility. Rewrite Rplus_Or; Apply (cond_pos delta). Symmetry; Apply double. -Apply aze. +DiscrR. Cut ``0<delta/2``. Intro; Generalize (Rmin_stable_in_posreal (mkposreal ``delta/2`` H9) (mkposreal ``(b-c)/2`` H8)); Simpl; Intro; Red; Intro; Rewrite H11 in H10; Elim (Rlt_antirefl ``0`` H10). -Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Apply Rgt_2_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Sup0]. Unfold Rdiv; Apply Rmult_lt_pos. Generalize (Rlt_compatibility_r ``-c`` c b H0); Rewrite Rplus_Ropp_r; Intro; Assumption. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Elim H2; Intro. Symmetry; Assumption. Generalize (derivable_derive f c pr); Intro; Elim H4; Intros l H5. @@ -898,7 +899,7 @@ Unfold Rdiv in H11; Assumption. Generalize (Rlt_compatibility c ``(Rmax ( -(delta/2)) ((a-c)/2))`` ``0`` H10); Rewrite Rplus_Or; Intro; Apply Rlt_trans with ``c``; Assumption. Generalize (RmaxLess2 ``(-(delta/2))`` ``((a-c)/2)``); Intro; Generalize (Rle_compatibility c ``(a-c)/2`` ``(Rmax ( -(delta/2)) ((a-c)/2))`` H14); Intro; Apply Rlt_le_trans with ``c+(a-c)/2``. Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Replace ``2*(c+(a-c)/2)`` with ``a+c``. Rewrite double. Apply Rlt_compatibility; Assumption. @@ -911,11 +912,11 @@ Unfold Rabsolu; Case (case_Rabsolu (Rmax ``-(delta/2)`` ``(a-c)/2``)). Intro; Generalize (RmaxLess1 ``-(delta/2)`` ``(a-c)/2``); Intro; Generalize (Rle_Ropp ``-(delta/2)`` ``(Rmax ( -(delta/2)) ((a-c)/2))`` H12); Rewrite Ropp_Ropp; Intro; Generalize (Rle_sym2 ``-(Rmax ( -(delta/2)) ((a-c)/2))`` ``delta/2`` H13); Intro; Apply Rle_lt_trans with ``delta/2``. Assumption. Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym. Rewrite Rmult_1l; Rewrite double. Pattern 2 delta; Rewrite <- (Rplus_Or delta); Apply Rlt_compatibility; Rewrite Rplus_Or; Apply (cond_pos delta). -Apply aze. +DiscrR. Cut ``-(delta/2) < 0``. Cut ``(a-c)/2<0``. Intros; Generalize (Rmax_stable_in_negreal (mknegreal ``-(delta/2)`` H13) (mknegreal ``(a-c)/2`` H12)); Simpl; Intro; Generalize (Rle_sym2 ``0`` ``(Rmax ( -(delta/2)) ((a-c)/2))`` r); Intro; Elim (Rlt_antirefl ``0`` (Rle_lt_trans ``0`` ``(Rmax ( -(delta/2)) ((a-c)/2))`` ``0`` H15 H14)). @@ -925,23 +926,23 @@ Unfold Rdiv. Rewrite <- Ropp_mul1. Rewrite (Ropp_distr2 a c). Reflexivity. -Rewrite <- Ropp_O; Apply Rlt_Ropp; Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply (Rlt_Rinv ``2`` Rgt_2_0)]. +Rewrite <- Ropp_O; Apply Rlt_Ropp; Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Assert Hyp : ``0<2``; [Sup0 | Apply (Rlt_Rinv ``2`` Hyp)]]. Red; Intro; Rewrite H11 in H10; Elim (Rlt_antirefl ``0`` H10). Cut ``(a-c)/2<0``. Intro; Cut ``-(delta/2)<0``. Intro; Apply (Rmax_stable_in_negreal (mknegreal ``-(delta/2)`` H11) (mknegreal ``(a-c)/2`` H10)). -Rewrite <- Ropp_O; Apply Rlt_Ropp; Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply (Rlt_Rinv ``2`` Rgt_2_0)]. +Rewrite <- Ropp_O; Apply Rlt_Ropp; Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Assert Hyp : ``0<2``; [Sup0 | Apply (Rlt_Rinv ``2`` Hyp)]]. Rewrite <- Ropp_O; Rewrite <- (Ropp_Ropp ``(a-c)/2``); Apply Rlt_Ropp; Replace ``-((a-c)/2)`` with ``(c-a)/2``. Assumption. Unfold Rdiv. Rewrite <- Ropp_mul1. Rewrite (Ropp_distr2 a c). Reflexivity. -Unfold Rdiv; Apply Rmult_lt_pos; [Generalize (Rlt_compatibility_r ``-a`` a c H); Rewrite Rplus_Ropp_r; Intro; Assumption | Apply (Rlt_Rinv ``2`` Rgt_2_0)]. +Unfold Rdiv; Apply Rmult_lt_pos; [Generalize (Rlt_compatibility_r ``-a`` a c H); Rewrite Rplus_Ropp_r; Intro; Assumption | Assert Hyp : ``0<2``; [Sup0 | Apply (Rlt_Rinv ``2`` Hyp)]]. Replace ``-(l/2)`` with ``(-l)/2``. Unfold Rdiv; Apply Rmult_lt_pos. Rewrite <- Ropp_O; Apply Rlt_Ropp; Assumption. -Apply (Rlt_Rinv ``2`` Rgt_2_0). +Assert Hyp : ``0<2``; [Sup0 | Apply (Rlt_Rinv ``2`` Hyp)]. Unfold Rdiv; Apply Ropp_mul1. Qed. @@ -1003,10 +1004,10 @@ Unfold Rdiv; Apply prod_neq_R0. Generalize (cond_pos delta); Intro; Red; Intro H9; Rewrite H9 in H7; Elim (Rlt_antirefl ``0`` H7). Apply Rinv_neq_R0; DiscrR. Split. -Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Apply Rgt_2_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Sup0]. Replace ``(Rabsolu delta/2)`` with ``delta/2``. Unfold Rdiv; Apply Rlt_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Rewrite (Rmult_sym ``2``). Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]. Rewrite Rmult_1r. @@ -1014,9 +1015,9 @@ Rewrite double. Pattern 1 (pos delta); Rewrite <- Rplus_Or. Apply Rlt_compatibility; Apply (cond_pos delta). Symmetry; Apply Rabsolu_right. -Left; Change ``0<delta/2``; Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Apply Rgt_2_0]. +Left; Change ``0<delta/2``; Unfold Rdiv; Apply Rmult_lt_pos; [Apply (cond_pos delta) | Apply Rlt_Rinv; Sup0]. Unfold Rdiv; Rewrite <- Ropp_mul1; Apply Rmult_lt_pos. Apply Rlt_anti_compatibility with l. Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rplus_Or; Assumption. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Qed.
\ No newline at end of file diff --git a/theories/Reals/Ranalysis2.v b/theories/Reals/Ranalysis2.v index c5a6bb4ce..85c92176f 100644 --- a/theories/Reals/Ranalysis2.v +++ b/theories/Reals/Ranalysis2.v @@ -8,13 +8,8 @@ (*i $Id$ i*) -Require Rbase. -Require Rbasic_fun. -Require R_sqr. -Require Rlimit. -Require Rderiv. -Require DiscrR. -Require Rtrigo. +Require RealsB. +Require Rfunctions. Require Ranalysis1. Require Omega. @@ -57,7 +52,7 @@ Apply Rabsolu_pos. Rewrite Rabsolu_Rinv; [Left; Exact H7 | Assumption]. Apply Rlt_le_trans with ``2/(Rabsolu (f2 x))*(Rabsolu ((eps*(f2 x))/8))``. Apply Rlt_monotony. -Unfold Rdiv; Apply Rmult_lt_pos; [Apply Rgt_2_0 | Apply Rlt_Rinv; Apply Rabsolu_pos_lt; Assumption]. +Unfold Rdiv; Apply Rmult_lt_pos; [Sup0 | Apply Rlt_Rinv; Apply Rabsolu_pos_lt; Assumption]. Exact H8. Right; Unfold Rdiv. Repeat Rewrite Rabsolu_mult. @@ -100,7 +95,7 @@ Apply Rabsolu_pos_lt; Apply Rinv_neq_R0; Assumption. Repeat Rewrite Rabsolu_Rinv; Try Assumption. Rewrite <- (Rmult_sym ``2``). Unfold Rdiv in H8; Exact H8. -Symmetry; Apply Rabsolu_right; Left; Apply Rgt_2_0. +Symmetry; Apply Rabsolu_right; Left; Sup0. Right. Unfold Rsqr Rdiv. Repeat Rewrite Rinv_Rmult; Try Assumption Orelse DiscrR. @@ -114,7 +109,7 @@ Rewrite Rinv_Rmult; DiscrR. Replace ``2*((Rabsolu l1)*(/(Rabsolu (f2 x))*/(Rabsolu (f2 x))))*(eps*((Rabsolu (f2 x))*(Rabsolu (f2 x)))*(/4*/2*/(Rabsolu l1)))`` with ``eps*/4*((Rabsolu l1)*/(Rabsolu l1))*((Rabsolu (f2 x))*/(Rabsolu (f2 x)))*((Rabsolu (f2 x))*/(Rabsolu (f2 x)))*(2*/2)``; [Idtac | Ring]. Repeat Rewrite <- Rinv_r_sym; Try (Apply Rabsolu_no_R0; Assumption) Orelse DiscrR. Ring. -Symmetry; Apply Rabsolu_right; Left; Apply Rgt_2_0. +Symmetry; Apply Rabsolu_right; Left; Sup0. Symmetry; Apply Rabsolu_right; Left; Apply Rgt_8_0. Symmetry; Apply Rabsolu_right; Left; Assumption. Qed. @@ -146,7 +141,7 @@ Apply Rabsolu_pos_lt; Apply Rinv_neq_R0; Assumption. Repeat Rewrite Rabsolu_Rinv; Assumption Orelse Idtac. Rewrite <- (Rmult_sym ``2``). Unfold Rdiv in H9; Exact H9. -Symmetry; Apply Rabsolu_right; Left; Apply Rgt_2_0. +Symmetry; Apply Rabsolu_right; Left; Sup0. Right. Unfold Rsqr Rdiv. Repeat Rewrite Rinv_Rmult; Try Assumption Orelse DiscrR. @@ -160,7 +155,7 @@ Rewrite Rinv_Rmult; DiscrR. Replace ``2*((Rabsolu (f1 x))*(/(Rabsolu (f2 x))*/(Rabsolu (f2 x))))*((Rabsolu (f2 x))*(Rabsolu (f2 x))*eps*(/4*/2*/(Rabsolu (f1 x))))`` with ``eps*/4*((Rabsolu (f2 x))*/(Rabsolu (f2 x)))*((Rabsolu (f2 x))*/(Rabsolu (f2 x)))*((Rabsolu (f1 x))*/(Rabsolu (f1 x)))*(2*/2)``; [Idtac | Ring]. Repeat Rewrite <- Rinv_r_sym; Try DiscrR Orelse (Apply Rabsolu_no_R0; Assumption). Ring. -Symmetry; Apply Rabsolu_right; Left; Apply Rgt_2_0. +Symmetry; Apply Rabsolu_right; Left; Sup0. Symmetry; Apply Rabsolu_right; Left; Apply Rgt_8_0. Symmetry; Apply Rabsolu_right; Left; Assumption. Qed. @@ -196,7 +191,7 @@ Apply Rabsolu_pos_lt; Apply Rinv_neq_R0; Unfold Rsqr; Apply prod_neq_R0; Assump Repeat Rewrite Rabsolu_Rinv; [Idtac | Assumption | Assumption]. Rewrite <- (Rmult_sym ``2``). Unfold Rdiv in H10; Exact H10. -Symmetry; Apply Rabsolu_right; Left; Apply Rgt_2_0. +Symmetry; Apply Rabsolu_right; Left; Sup0. Right; Unfold Rsqr Rdiv. Repeat Rewrite Rinv_Rmult; Try Assumption Orelse DiscrR. Repeat Rewrite Rabsolu_mult. @@ -209,7 +204,7 @@ Rewrite Rinv_Rmult; DiscrR. Replace ``2*(Rabsolu l2)*((Rabsolu (f1 x))*(/(Rabsolu (f2 x))*/(Rabsolu (f2 x))*/(Rabsolu (f2 x))))*((Rabsolu (f2 x))*(Rabsolu (f2 x))*(Rabsolu (f2 x))*eps*(/4*/2*/(Rabsolu (f1 x))*/(Rabsolu l2)))`` with ``eps*/4*((Rabsolu l2)*/(Rabsolu l2))*((Rabsolu (f1 x))*/(Rabsolu (f1 x)))*((Rabsolu (f2 x))*/(Rabsolu (f2 x)))*((Rabsolu (f2 x))*/(Rabsolu (f2 x)))*((Rabsolu (f2 x))*/(Rabsolu (f2 x)))*(2*/2)``; [Idtac | Ring]. Repeat Rewrite <- Rinv_r_sym; Try DiscrR Orelse (Apply Rabsolu_no_R0; Assumption). Ring. -Symmetry; Apply Rabsolu_right; Left; Apply Rgt_2_0. +Symmetry; Apply Rabsolu_right; Left; Sup0. Symmetry; Apply Rabsolu_right; Left; Apply Rgt_8_0. Symmetry; Apply Rabsolu_right; Left; Assumption. Apply prod_neq_R0; Assumption Orelse DiscrR. @@ -280,12 +275,16 @@ Rewrite H8 in H7; Unfold Rminus in H7; Rewrite Rplus_Ol in H7; Rewrite Rabsolu_R Cut ``0<(Rabsolu (f x0))``. Intro; Assert H10 := (Rlt_monotony_contra ? ? ? H9 H7). Cut ``(Rabsolu (/2))==/2``. -Intro; Rewrite H11 in H10; Assert H12 := (Rlt_monotony ``2`` ? ? Rgt_2_0 H10); Rewrite Rmult_1r in H12; Rewrite <- Rinv_r_sym in H12; [Idtac | DiscrR]. +Assert Hyp:``0<2``. +Sup0. +Intro; Rewrite H11 in H10; Assert H12 := (Rlt_monotony ``2`` ? ? Hyp H10); Rewrite Rmult_1r in H12; Rewrite <- Rinv_r_sym in H12; [Idtac | DiscrR]. Cut (Rlt (IZR `1`) (IZR `2`)). Unfold IZR; Unfold INR convert; Simpl; Intro; Elim (Rlt_antirefl ``1`` (Rlt_trans ? ? ? H13 H12)). Apply IZR_lt; Omega. Unfold Rabsolu; Case (case_Rabsolu ``/2``); Intro. -Assert H11 := (Rlt_monotony ``2`` ? ? Rgt_2_0 r); Rewrite Rmult_Or in H11; Rewrite <- Rinv_r_sym in H11; [Idtac | DiscrR]. +Assert Hyp:``0<2``. +Sup0. +Assert H11 := (Rlt_monotony ``2`` ? ? Hyp r); Rewrite Rmult_Or in H11; Rewrite <- Rinv_r_sym in H11; [Idtac | DiscrR]. Elim (Rlt_antirefl ``0`` (Rlt_trans ? ? ? Rlt_R0_R1 H11)). Reflexivity. Apply (Rabsolu_pos_lt ? H0). diff --git a/theories/Reals/Ranalysis3.v b/theories/Reals/Ranalysis3.v index 2a12b2f45..5ffa915dc 100644 --- a/theories/Reals/Ranalysis3.v +++ b/theories/Reals/Ranalysis3.v @@ -8,13 +8,8 @@ (*i $Id$ i*) -Require Rbase. -Require Rbasic_fun. -Require R_sqr. -Require Rlimit. -Require Rderiv. -Require DiscrR. -Require Rtrigo. +Require RealsB. +Require Rfunctions. Require Ranalysis1. Require Ranalysis2. @@ -29,7 +24,7 @@ Unfold div_fct. Assert H3 := (derivable_continuous_pt ? ? X). Unfold continuity_pt in H3; Unfold continue_in in H3; Unfold limit1_in in H3; Unfold limit_in in H3; Unfold dist in H3. Simpl in H3; Unfold R_dist in H3. -Elim (H3 ``(Rabsolu (f2 x))/2``); [Idtac | Unfold Rdiv; Change ``0 < (Rabsolu (f2 x))*/2``; Apply Rmult_lt_pos; [Apply Rabsolu_pos_lt; Assumption | Apply Rlt_Rinv; Apply Rgt_2_0]]. +Elim (H3 ``(Rabsolu (f2 x))/2``); [Idtac | Unfold Rdiv; Change ``0 < (Rabsolu (f2 x))*/2``; Apply Rmult_lt_pos; [Apply Rabsolu_pos_lt; Assumption | Apply Rlt_Rinv; Sup0]]. Clear H3; Intros alp_f2 H3. Cut (x0:R) ``(Rabsolu (x0-x)) < alp_f2`` ->``(Rabsolu ((f2 x0)-(f2 x))) < (Rabsolu (f2 x))/2``. Intro H4. @@ -539,7 +534,7 @@ Repeat Rewrite Rmult_assoc. Rewrite <- Rinv_l_sym. Rewrite Rmult_1r. Apply Rlt_monotony_contra with ``/2``. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Repeat Rewrite (Rmult_sym ``/2``). Repeat Rewrite Rmult_assoc. Rewrite <- Rinv_r_sym. @@ -565,7 +560,7 @@ Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or. Unfold Rminus in H7; Assumption. Intros. Case (Req_EM x x0); Intro. -Rewrite <- H5; Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Unfold Rdiv; Apply Rmult_lt_pos; [Apply Rabsolu_pos_lt; Assumption | Apply Rlt_Rinv; Apply Rgt_2_0]. +Rewrite <- H5; Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Unfold Rdiv; Apply Rmult_lt_pos; [Apply Rabsolu_pos_lt; Assumption | Apply Rlt_Rinv; Sup0]. Elim H3; Intros. Apply H7. Split. diff --git a/theories/Reals/Ranalysis4.v b/theories/Reals/Ranalysis4.v index 52cfb2a7a..63611eea4 100644 --- a/theories/Reals/Ranalysis4.v +++ b/theories/Reals/Ranalysis4.v @@ -8,20 +8,13 @@ (*i $Id$ i*) -Require Rbase. -Require Rbasic_fun. -Require R_sqr. -Require Rlimit. -Require Rderiv. -Require DiscrR. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo. Require Ranalysis1. -Require R_sqrt. -Require Ranalysis2. Require Ranalysis3. -Require Export Exp_prop. -Require Export Rtrigo_reg. -Require Export Sqrt_reg. +Require Exp_prop. (**********) Lemma derivable_pt_inv : (f:R->R;x:R) ``(f x)<>0`` -> (derivable_pt f x) -> (derivable_pt (inv_fct f) x). @@ -316,452 +309,4 @@ Qed. Lemma derive_pt_sinh : (x:R) (derive_pt sinh x (derivable_pt_sinh x))==(cosh x). Intro; Apply derive_pt_eq_0. Apply derivable_pt_lim_sinh. -Qed. - - -(**********) -Tactic Definition IntroHypG trm := -Match trm With -|[(plus_fct ?1 ?2)] -> - (Match Context With - |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 - |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 - | _ -> Idtac) -|[(minus_fct ?1 ?2)] -> - (Match Context With - |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 - |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 - | _ -> Idtac) -|[(mult_fct ?1 ?2)] -> - (Match Context With - |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 - |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 - | _ -> Idtac) -|[(div_fct ?1 ?2)] -> Let aux = ?2 In - (Match Context With - |[_:(x0:R)``(aux x0)<>0``|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 - |[_:(x0:R)``(aux x0)<>0``|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 - |[|-(derivable ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1; IntroHypG ?2 | Try Assumption] - |[|-(continuity ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1; IntroHypG ?2 | Try Assumption] - | _ -> Idtac) -|[(comp ?1 ?2)] -> - (Match Context With - |[|-(derivable ?)] -> IntroHypG ?1; IntroHypG ?2 - |[|-(continuity ?)] -> IntroHypG ?1; IntroHypG ?2 - | _ -> Idtac) -|[(opp_fct ?1)] -> - (Match Context With - |[|-(derivable ?)] -> IntroHypG ?1 - |[|-(continuity ?)] -> IntroHypG ?1 - | _ -> Idtac) -|[(inv_fct ?1)] -> Let aux = ?1 In - (Match Context With - |[_:(x0:R)``(aux x0)<>0``|-(derivable ?)] -> IntroHypG ?1 - |[_:(x0:R)``(aux x0)<>0``|-(continuity ?)] -> IntroHypG ?1 - |[|-(derivable ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1 | Try Assumption] - |[|-(continuity ?)] -> Cut ((x0:R)``(aux x0)<>0``); [Intro; IntroHypG ?1| Try Assumption] - | _ -> Idtac) -|[cos] -> Idtac -|[sin] -> Idtac -|[cosh] -> Idtac -|[sinh] -> Idtac -|[exp] -> Idtac -|[Rsqr] -> Idtac -|[sqrt] -> Idtac -|[id] -> Idtac -|[(fct_cte ?)] -> Idtac -|[(pow_fct ?)] -> Idtac -|[Rabsolu] -> Idtac -|[?1] -> Let p = ?1 In - (Match Context With - |[_:(derivable p)|- ?] -> Idtac - |[|-(derivable p)] -> Idtac - |[|-(derivable ?)] -> Cut True -> (derivable p); [Intro HYPPD; Cut (derivable p); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] - | [_:(continuity p)|- ?] -> Idtac - |[|-(continuity p)] -> Idtac - |[|-(continuity ?)] -> Cut True -> (continuity p); [Intro HYPPD; Cut (continuity p); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] - | _ -> Idtac). - -(**********) -Tactic Definition IntroHypL trm pt := -Match trm With -|[(plus_fct ?1 ?2)] -> - (Match Context With - |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - | _ -> Idtac) -|[(minus_fct ?1 ?2)] -> - (Match Context With - |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - | _ -> Idtac) -|[(mult_fct ?1 ?2)] -> - (Match Context With - |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - | _ -> Idtac) -|[(div_fct ?1 ?2)] -> Let aux = ?2 In - (Match Context With - |[_:``(aux pt)<>0``|-(derivable_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[_:``(aux pt)<>0``|-(continuity_pt ? ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[_:``(aux pt)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt; IntroHypL ?2 pt - |[id:(x0:R)``(aux x0)<>0``|-(derivable_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt; IntroHypL ?2 pt - |[id:(x0:R)``(aux x0)<>0``|-(continuity_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt; IntroHypL ?2 pt - |[id:(x0:R)``(aux x0)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt; IntroHypL ?2 pt - |[|-(derivable_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt; IntroHypL ?2 pt | Try Assumption] - |[|-(continuity_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt; IntroHypL ?2 pt | Try Assumption] - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt; IntroHypL ?2 pt | Try Assumption] - | _ -> Idtac) -|[(comp ?1 ?2)] -> - (Match Context With - |[|-(derivable_pt ? ?)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In IntroHypL ?1 pt_f1; IntroHypL ?2 pt - |[|-(continuity_pt ? ?)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In IntroHypL ?1 pt_f1; IntroHypL ?2 pt - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In IntroHypL ?1 pt_f1; IntroHypL ?2 pt - | _ -> Idtac) -|[(opp_fct ?1)] -> - (Match Context With - |[|-(derivable_pt ? ?)] -> IntroHypL ?1 pt - |[|-(continuity_pt ? ?)] -> IntroHypL ?1 pt - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt - | _ -> Idtac) -|[(inv_fct ?1)] -> Let aux = ?1 In - (Match Context With - |[_:``(aux pt)<>0``|-(derivable_pt ? ?)] -> IntroHypL ?1 pt - |[_:``(aux pt)<>0``|-(continuity_pt ? ?)] -> IntroHypL ?1 pt - |[_:``(aux pt)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> IntroHypL ?1 pt - |[id:(x0:R)``(aux x0)<>0``|-(derivable_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt - |[id:(x0:R)``(aux x0)<>0``|-(continuity_pt ? ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt - |[id:(x0:R)``(aux x0)<>0``|-(eqT ? (derive_pt ? ? ?) ?)] -> Generalize (id pt); Intro; IntroHypL ?1 pt - |[|-(derivable_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt | Try Assumption] - |[|-(continuity_pt ? ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt| Try Assumption] - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut ``(aux pt)<>0``; [Intro; IntroHypL ?1 pt | Try Assumption] - | _ -> Idtac) -|[cos] -> Idtac -|[sin] -> Idtac -|[cosh] -> Idtac -|[sinh] -> Idtac -|[exp] -> Idtac -|[Rsqr] -> Idtac -|[id] -> Idtac -|[(fct_cte ?)] -> Idtac -|[(pow_fct ?)] -> Idtac -|[sqrt] -> - (Match Context With - |[|-(derivable_pt ? ?)] -> Cut ``0<pt``; [Intro | Try Assumption] - |[|-(continuity_pt ? ?)] -> Cut ``0<=pt``; [Intro | Try Assumption] - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut ``0<pt``; [Intro | Try Assumption] - | _ -> Idtac) -|[Rabsolu] -> - (Match Context With - |[|-(derivable_pt ? ?)] -> Cut ``pt<>0``; [Intro | Try Assumption] - | _ -> Idtac) -|[?1] -> Let p = ?1 In - (Match Context With - |[_:(derivable_pt p pt)|- ?] -> Idtac - |[|-(derivable_pt p pt)] -> Idtac - |[|-(derivable_pt ? ?)] -> Cut True -> (derivable_pt p pt); [Intro HYPPD; Cut (derivable_pt p pt); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] - |[_:(continuity_pt p pt)|- ?] -> Idtac - |[|-(continuity_pt p pt)] -> Idtac - |[|-(continuity_pt ? ?)] -> Cut True -> (continuity_pt p pt); [Intro HYPPD; Cut (continuity_pt p pt); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] - |[|-(eqT ? (derive_pt ? ? ?) ?)] -> Cut True -> (derivable_pt p pt); [Intro HYPPD; Cut (derivable_pt p pt); [Intro; Clear HYPPD | Apply HYPPD; Clear HYPPD; Trivial] | Idtac] - | _ -> Idtac). - -(**********) -Recursive Tactic Definition IsDiff_pt := -Match Context With - (* fonctions de base *) - [|-(derivable_pt Rsqr ?)] -> Apply derivable_pt_Rsqr -|[|-(derivable_pt id ?1)] -> Apply (derivable_pt_id ?1) -|[|-(derivable_pt (fct_cte ?) ?)] -> Apply derivable_pt_const -|[|-(derivable_pt sin ?)] -> Apply derivable_pt_sin -|[|-(derivable_pt cos ?)] -> Apply derivable_pt_cos -|[|-(derivable_pt sinh ?)] -> Apply derivable_pt_sinh -|[|-(derivable_pt cosh ?)] -> Apply derivable_pt_cosh -|[|-(derivable_pt exp ?)] -> Apply derivable_pt_exp -|[|-(derivable_pt (pow_fct ?) ?)] -> Unfold pow_fct; Apply derivable_pt_pow -|[|-(derivable_pt sqrt ?1)] -> Apply (derivable_pt_sqrt ?1); Assumption Orelse Unfold plus_fct minus_fct opp_fct mult_fct div_fct inv_fct comp id fct_cte pow_fct -|[|-(derivable_pt Rabsolu ?1)] -> Apply (derivable_pt_Rabsolu ?1); Assumption Orelse Unfold plus_fct minus_fct opp_fct mult_fct div_fct inv_fct comp id fct_cte pow_fct - (* regles de differentiabilite *) - (* PLUS *) -|[|-(derivable_pt (plus_fct ?1 ?2) ?3)] -> Apply (derivable_pt_plus ?1 ?2 ?3); IsDiff_pt - (* MOINS *) -|[|-(derivable_pt (minus_fct ?1 ?2) ?3)] -> Apply (derivable_pt_minus ?1 ?2 ?3); IsDiff_pt - (* OPPOSE *) -|[|-(derivable_pt (opp_fct ?1) ?2)] -> Apply (derivable_pt_opp ?1 ?2); IsDiff_pt - (* MULTIPLICATION PAR UN SCALAIRE *) -|[|-(derivable_pt (mult_real_fct ?1 ?2) ?3)] -> Apply (derivable_pt_scal ?2 ?1 ?3); IsDiff_pt - (* MULTIPLICATION *) -|[|-(derivable_pt (mult_fct ?1 ?2) ?3)] -> Apply (derivable_pt_mult ?1 ?2 ?3); IsDiff_pt - (* DIVISION *) - |[|-(derivable_pt (div_fct ?1 ?2) ?3)] -> Apply (derivable_pt_div ?1 ?2 ?3); [IsDiff_pt | IsDiff_pt | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp pow_fct id fct_cte] - (* INVERSION *) - |[|-(derivable_pt (inv_fct ?1) ?2)] -> Apply (derivable_pt_inv ?1 ?2); [Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp pow_fct id fct_cte | IsDiff_pt] - (* COMPOSITION *) -|[|-(derivable_pt (comp ?1 ?2) ?3)] -> Apply (derivable_pt_comp ?2 ?1 ?3); IsDiff_pt -|[_:(derivable_pt ?1 ?2)|-(derivable_pt ?1 ?2)] -> Assumption -|[_:(derivable ?1) |- (derivable_pt ?1 ?2)] -> Cut (derivable ?1); [Intro HypDDPT; Apply HypDDPT | Assumption] -|[|-True->(derivable_pt ? ?)] -> Intro HypTruE; Clear HypTruE; IsDiff_pt -| _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. - -(**********) -Recursive Tactic Definition IsDiff_glob := -Match Context With - (* fonctions de base *) - [|-(derivable Rsqr)] -> Apply derivable_Rsqr - |[|-(derivable id)] -> Apply derivable_id - |[|-(derivable (fct_cte ?))] -> Apply derivable_const - |[|-(derivable sin)] -> Apply derivable_sin - |[|-(derivable cos)] -> Apply derivable_cos - |[|-(derivable cosh)] -> Apply derivable_cosh - |[|-(derivable sinh)] -> Apply derivable_sinh - |[|-(derivable exp)] -> Apply derivable_exp - |[|-(derivable (pow_fct ?))] -> Unfold pow_fct; Apply derivable_pow - (* regles de differentiabilite *) - (* PLUS *) - |[|-(derivable (plus_fct ?1 ?2))] -> Apply (derivable_plus ?1 ?2); IsDiff_glob - (* MOINS *) - |[|-(derivable (minus_fct ?1 ?2))] -> Apply (derivable_minus ?1 ?2); IsDiff_glob - (* OPPOSE *) - |[|-(derivable (opp_fct ?1))] -> Apply (derivable_opp ?1); IsDiff_glob - (* MULTIPLICATION PAR UN SCALAIRE *) - |[|-(derivable (mult_real_fct ?1 ?2))] -> Apply (derivable_scal ?2 ?1); IsDiff_glob - (* MULTIPLICATION *) - |[|-(derivable (mult_fct ?1 ?2))] -> Apply (derivable_mult ?1 ?2); IsDiff_glob - (* DIVISION *) - |[|-(derivable (div_fct ?1 ?2))] -> Apply (derivable_div ?1 ?2); [IsDiff_glob | IsDiff_glob | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct] - (* INVERSION *) - |[|-(derivable (inv_fct ?1))] -> Apply (derivable_inv ?1); [Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct | IsDiff_glob] - (* COMPOSITION *) - |[|-(derivable (comp sqrt ?))] -> Unfold derivable; Intro; Try IsDiff_pt - |[|-(derivable (comp Rabsolu ?))] -> Unfold derivable; Intro; Try IsDiff_pt - |[|-(derivable (comp ?1 ?2))] -> Apply (derivable_comp ?2 ?1); IsDiff_glob - |[_:(derivable ?1)|-(derivable ?1)] -> Assumption - |[|-True->(derivable ?)] -> Intro HypTruE; Clear HypTruE; IsDiff_glob - | _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. - -(**********) -Recursive Tactic Definition IsCont_pt := -Match Context With - (* fonctions de base *) - [|-(continuity_pt Rsqr ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_Rsqr -|[|-(continuity_pt id ?1)] -> Apply derivable_continuous_pt; Apply (derivable_pt_id ?1) -|[|-(continuity_pt (fct_cte ?) ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_const -|[|-(continuity_pt sin ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_sin -|[|-(continuity_pt cos ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_cos -|[|-(continuity_pt sinh ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_sinh -|[|-(continuity_pt cosh ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_cosh -|[|-(continuity_pt exp ?)] -> Apply derivable_continuous_pt; Apply derivable_pt_exp -|[|-(continuity_pt (pow_fct ?) ?)] -> Unfold pow_fct; Apply derivable_continuous_pt; Apply derivable_pt_pow -|[|-(continuity_pt sqrt ?1)] -> Apply continuity_pt_sqrt; Assumption Orelse Unfold plus_fct minus_fct opp_fct mult_fct div_fct inv_fct comp id fct_cte pow_fct -|[|-(continuity_pt Rabsolu ?1)] -> Apply (continuity_Rabsolu ?1) - (* regles de differentiabilite *) - (* PLUS *) -|[|-(continuity_pt (plus_fct ?1 ?2) ?3)] -> Apply (continuity_pt_plus ?1 ?2 ?3); IsCont_pt - (* MOINS *) -|[|-(continuity_pt (minus_fct ?1 ?2) ?3)] -> Apply (continuity_pt_minus ?1 ?2 ?3); IsCont_pt - (* OPPOSE *) -|[|-(continuity_pt (opp_fct ?1) ?2)] -> Apply (continuity_pt_opp ?1 ?2); IsCont_pt - (* MULTIPLICATION PAR UN SCALAIRE *) -|[|-(continuity_pt (mult_real_fct ?1 ?2) ?3)] -> Apply (continuity_pt_scal ?2 ?1 ?3); IsCont_pt - (* MULTIPLICATION *) -|[|-(continuity_pt (mult_fct ?1 ?2) ?3)] -> Apply (continuity_pt_mult ?1 ?2 ?3); IsCont_pt - (* DIVISION *) - |[|-(continuity_pt (div_fct ?1 ?2) ?3)] -> Apply (continuity_pt_div ?1 ?2 ?3); [IsCont_pt | IsCont_pt | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp id fct_cte pow_fct] - (* INVERSION *) - |[|-(continuity_pt (inv_fct ?1) ?2)] -> Apply (continuity_pt_inv ?1 ?2); [IsCont_pt | Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct comp id fct_cte pow_fct] - (* COMPOSITION *) -|[|-(continuity_pt (comp ?1 ?2) ?3)] -> Apply (continuity_pt_comp ?2 ?1 ?3); IsCont_pt -|[_:(continuity_pt ?1 ?2)|-(continuity_pt ?1 ?2)] -> Assumption -|[_:(continuity ?1) |- (continuity_pt ?1 ?2)] -> Cut (continuity ?1); [Intro HypDDPT; Apply HypDDPT | Assumption] -|[_:(derivable_pt ?1 ?2)|-(continuity_pt ?1 ?2)] -> Apply derivable_continuous_pt; Assumption -|[_:(derivable ?1)|-(continuity_pt ?1 ?2)] -> Cut (continuity ?1); [Intro HypDDPT; Apply HypDDPT | Apply derivable_continuous; Assumption] -|[|-True->(continuity_pt ? ?)] -> Intro HypTruE; Clear HypTruE; IsCont_pt -| _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. - -(**********) -Recursive Tactic Definition IsCont_glob := -Match Context With - (* fonctions de base *) - [|-(continuity Rsqr)] -> Apply derivable_continuous; Apply derivable_Rsqr - |[|-(continuity id)] -> Apply derivable_continuous; Apply derivable_id - |[|-(continuity (fct_cte ?))] -> Apply derivable_continuous; Apply derivable_const - |[|-(continuity sin)] -> Apply derivable_continuous; Apply derivable_sin - |[|-(continuity cos)] -> Apply derivable_continuous; Apply derivable_cos - |[|-(continuity exp)] -> Apply derivable_continuous; Apply derivable_exp - |[|-(continuity (pow_fct ?))] -> Unfold pow_fct; Apply derivable_continuous; Apply derivable_pow - |[|-(continuity sinh)] -> Apply derivable_continuous; Apply derivable_sinh - |[|-(continuity cosh)] -> Apply derivable_continuous; Apply derivable_cosh - |[|-(continuity Rabsolu)] -> Apply continuity_Rabsolu - (* regles de continuite *) - (* PLUS *) -|[|-(continuity (plus_fct ?1 ?2))] -> Apply (continuity_plus ?1 ?2); Try IsCont_glob Orelse Assumption - (* MOINS *) -|[|-(continuity (minus_fct ?1 ?2))] -> Apply (continuity_minus ?1 ?2); Try IsCont_glob Orelse Assumption - (* OPPOSE *) -|[|-(continuity (opp_fct ?1))] -> Apply (continuity_opp ?1); Try IsCont_glob Orelse Assumption - (* INVERSE *) -|[|-(continuity (inv_fct ?1))] -> Apply (continuity_inv ?1); Try IsCont_glob Orelse Assumption - (* MULTIPLICATION PAR UN SCALAIRE *) -|[|-(continuity (mult_real_fct ?1 ?2))] -> Apply (continuity_scal ?2 ?1); Try IsCont_glob Orelse Assumption - (* MULTIPLICATION *) -|[|-(continuity (mult_fct ?1 ?2))] -> Apply (continuity_mult ?1 ?2); Try IsCont_glob Orelse Assumption - (* DIVISION *) - |[|-(continuity (div_fct ?1 ?2))] -> Apply (continuity_div ?1 ?2); [Try IsCont_glob Orelse Assumption | Try IsCont_glob Orelse Assumption | Try Assumption Orelse Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte pow_fct] - (* COMPOSITION *) - |[|-(continuity (comp sqrt ?))] -> Unfold continuity_pt; Intro; Try IsCont_pt - |[|-(continuity (comp ?1 ?2))] -> Apply (continuity_comp ?2 ?1); Try IsCont_glob Orelse Assumption - |[_:(continuity ?1)|-(continuity ?1)] -> Assumption - |[|-True->(continuity ?)] -> Intro HypTruE; Clear HypTruE; IsCont_glob - |[_:(derivable ?1)|-(continuity ?1)] -> Apply derivable_continuous; Assumption - | _ -> Try Unfold plus_fct mult_fct div_fct minus_fct opp_fct inv_fct id fct_cte comp pow_fct. - -(**********) -Recursive Tactic Definition RewTerm trm := -Match trm With -| [(Rplus ?1 ?2)] -> Let p1= (RewTerm ?1) And p2 = (RewTerm ?2) In - (Match p1 With - [(fct_cte ?3)] -> - (Match p2 With - | [(fct_cte ?4)] -> '(fct_cte (Rplus ?3 ?4)) - | _ -> '(plus_fct p1 p2)) - | _ -> '(plus_fct p1 p2)) -| [(Rminus ?1 ?2)] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In - (Match p1 With - [(fct_cte ?3)] -> - (Match p2 With - | [(fct_cte ?4)] -> '(fct_cte (Rminus ?3 ?4)) - | _ -> '(minus_fct p1 p2)) - | _ -> '(minus_fct p1 p2)) -| [(Rdiv ?1 ?2)] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In - (Match p1 With - [(fct_cte ?3)] -> - (Match p2 With - | [(fct_cte ?4)] -> '(fct_cte (Rdiv ?3 ?4)) - | _ -> '(div_fct p1 p2)) - | _ -> - (Match p2 With - | [(fct_cte ?4)] -> '(mult_fct p1 (fct_cte (Rinv ?4))) - | _ -> '(div_fct p1 p2))) -| [(Rmult ?1 (Rinv ?2))] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In - (Match p1 With - [(fct_cte ?3)] -> - (Match p2 With - | [(fct_cte ?4)] -> '(fct_cte (Rdiv ?3 ?4)) - | _ -> '(div_fct p1 p2)) - | _ -> - (Match p2 With - | [(fct_cte ?4)] -> '(mult_fct p1 (fct_cte (Rinv ?4))) - | _ -> '(div_fct p1 p2))) -| [(Rmult ?1 ?2)] -> Let p1 = (RewTerm ?1) And p2 = (RewTerm ?2) In - (Match p1 With - [(fct_cte ?3)] -> - (Match p2 With - | [(fct_cte ?4)] -> '(fct_cte (Rmult ?3 ?4)) - | _ -> '(mult_fct p1 p2)) - | _ -> '(mult_fct p1 p2)) -| [(Ropp ?1)] -> Let p = (RewTerm ?1) In - (Match p With - [(fct_cte ?2)] -> '(fct_cte (Ropp ?2)) - | _ -> '(opp_fct p)) -| [(Rinv ?1)] -> Let p = (RewTerm ?1) In - (Match p With - [(fct_cte ?2)] -> '(fct_cte (Rinv ?2)) - | _ -> '(inv_fct p)) -| [(?1 PI)] -> '?1 -| [(?1 ?2)] -> Let p = (RewTerm ?2) In - (Match p With - | [(fct_cte ?3)] -> '(fct_cte (?1 ?3)) - | _ -> '(comp ?1 p)) -| [PI] -> 'id -| [(pow PI ?1)] -> '(pow_fct ?1) -| [(pow ?1 ?2)] -> Let p = (RewTerm ?1) In - (Match p With - | [(fct_cte ?3)] -> '(fct_cte (pow_fct ?2 ?3)) - | _ -> '(comp (pow_fct ?2) p)) -| [?1]-> '(fct_cte ?1). - -(**********) -Recursive Tactic Definition ConsProof trm pt := -Match trm With -| [(plus_fct ?1 ?2)] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_plus ?1 ?2 pt p1 p2) -| [(minus_fct ?1 ?2)] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_minus ?1 ?2 pt p1 p2) -| [(mult_fct ?1 ?2)] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_mult ?1 ?2 pt p1 p2) -| [(div_fct ?1 ?2)] -> - (Match Context With - |[id:~((?2 pt)==R0) |- ?] -> Let p1 = (ConsProof ?1 pt) And p2 = (ConsProof ?2 pt) In '(derivable_pt_div ?1 ?2 pt p1 p2 id) - | _ -> 'False) -| [(inv_fct ?1)] -> - (Match Context With - |[id:~((?1 pt)==R0) |- ?] -> Let p1 = (ConsProof ?1 pt) In '(derivable_pt_inv ?1 pt p1 id) - | _ -> 'False) -| [(comp ?1 ?2)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In Let p1 = (ConsProof ?1 pt_f1) And p2 = (ConsProof ?2 pt) In '(derivable_pt_comp ?2 ?1 pt p2 p1) -| [(opp_fct ?1)] -> Let p1 = (ConsProof ?1 pt) In '(derivable_pt_opp ?1 pt p1) -| [sin] -> '(derivable_pt_sin pt) -| [cos] -> '(derivable_pt_cos pt) -| [sinh] -> '(derivable_pt_sinh pt) -| [cosh] -> '(derivable_pt_cosh pt) -| [exp] -> '(derivable_pt_exp pt) -| [id] -> '(derivable_pt_id pt) -| [Rsqr] -> '(derivable_pt_Rsqr pt) -| [sqrt] -> - (Match Context With - |[id:(Rlt R0 pt) |- ?] -> '(derivable_pt_sqrt pt id) - | _ -> 'False) -| [(fct_cte ?1)] -> '(derivable_pt_const ?1 pt) -| [?1] -> Let aux = ?1 In - (Match Context With - [ id : (derivable_pt aux pt) |- ?] -> 'id - |[ id : (derivable aux) |- ?] -> '(id pt) - | _ -> 'False). - -(**********) -Recursive Tactic Definition SimplifyDerive trm pt := -Match trm With -| [(plus_fct ?1 ?2)] -> Try Rewrite derive_pt_plus; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt -| [(minus_fct ?1 ?2)] -> Try Rewrite derive_pt_minus; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt -| [(mult_fct ?1 ?2)] -> Try Rewrite derive_pt_mult; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt -| [(div_fct ?1 ?2)] -> Try Rewrite derive_pt_div; SimplifyDerive ?1 pt; SimplifyDerive ?2 pt -| [(comp ?1 ?2)] -> Let pt_f1 = (Eval Cbv Beta in (?2 pt)) In Try Rewrite derive_pt_comp; SimplifyDerive ?1 pt_f1; SimplifyDerive ?2 pt -| [(opp_fct ?1)] -> Try Rewrite derive_pt_opp; SimplifyDerive ?1 pt -| [(inv_fct ?1)] -> Try Rewrite derive_pt_inv; SimplifyDerive ?1 pt -| [(fct_cte ?1)] -> Try Rewrite derive_pt_const -| [id] -> Try Rewrite derive_pt_id -| [sin] -> Try Rewrite derive_pt_sin -| [cos] -> Try Rewrite derive_pt_cos -| [sinh] -> Try Rewrite derive_pt_sinh -| [cosh] -> Try Rewrite derive_pt_cosh -| [exp] -> Try Rewrite derive_pt_exp -| [Rsqr] -> Try Rewrite derive_pt_Rsqr -| [sqrt] -> Try Rewrite derive_pt_sqrt -| [?1] -> Let aux = ?1 In - (Match Context With - [ id : (eqT ? (derive_pt aux pt ?2) ?); H : (derivable aux) |- ? ] -> Try Replace (derive_pt aux pt (H pt)) with (derive_pt aux pt ?2); [Rewrite id | Apply pr_nu] - |[ id : (eqT ? (derive_pt aux pt ?2) ?); H : (derivable_pt aux pt) |- ? ] -> Try Replace (derive_pt aux pt H) with (derive_pt aux pt ?2); [Rewrite id | Apply pr_nu] - | _ -> Idtac ) -| _ -> Idtac. - -(**********) -Tactic Definition Regularity () := -Match Context With -| [|-(derivable_pt ?1 ?2)] -> -Let trm = Eval Cbv Beta in (?1 PI) In -Let aux = (RewTerm trm) In IntroHypL aux ?2; Try (Change (derivable_pt aux ?2); IsDiff_pt) Orelse IsDiff_pt -| [|-(derivable ?1)] -> -Let trm = Eval Cbv Beta in (?1 PI) In -Let aux = (RewTerm trm) In IntroHypG aux; Try (Change (derivable aux); IsDiff_glob) Orelse IsDiff_glob -| [|-(continuity ?1)] -> -Let trm = Eval Cbv Beta in (?1 PI) In -Let aux = (RewTerm trm) In IntroHypG aux; Try (Change (continuity aux); IsCont_glob) Orelse IsCont_glob -| [|-(continuity_pt ?1 ?2)] -> -Let trm = Eval Cbv Beta in (?1 PI) In -Let aux = (RewTerm trm) In IntroHypL aux ?2; Try (Change (continuity_pt aux ?2); IsCont_pt) Orelse IsCont_pt -| [|-(eqT ? (derive_pt ?1 ?2 ?3) ?4)] -> -Let trm = Eval Cbv Beta in (?1 PI) In -Let aux = (RewTerm trm) In -IntroHypL aux ?2; Let aux2 = (ConsProof aux ?2) In Try (Replace (derive_pt ?1 ?2 ?3) with (derive_pt aux ?2 aux2); [SimplifyDerive aux ?2; Try Unfold plus_fct minus_fct mult_fct div_fct id fct_cte inv_fct opp_fct; Try Ring | Try Apply pr_nu]) Orelse IsDiff_pt. - -(**********) -Tactic Definition Reg () := Regularity (). +Qed.
\ No newline at end of file diff --git a/theories/Reals/Rbase.v b/theories/Reals/Rbase.v index f92b5c2a6..11203d5ba 100644 --- a/theories/Reals/Rbase.v +++ b/theories/Reals/Rbase.v @@ -461,6 +461,10 @@ Lemma Ropp_mul2:(r1,r2:R)``(-r1)*(-r2)==r1*r2``. Qed. Hints Resolve Ropp_mul2 : real. +Lemma Ropp_mul3 : (r1,r2:R) ``r1*(-r2) == -(r1*r2)``. +Intros; Rewrite <- Ropp_mul1; Ring. +Qed. + (** Substraction *) Lemma minus_R0:(r:R)``r-0==r``. @@ -524,6 +528,10 @@ Red; Intros;Elim H;Rewrite H0; Ring. Qed. Hints Resolve Rminus_not_eq_right : real. +Lemma not_sym : (r1,r2:R) ``r1<>r2`` -> ``r2<>r1``. +Intros; Red; Intro H0; Rewrite H0 in H; Elim H; Reflexivity. +Qed. + (**********) Lemma Rminus_distr: (x,y,z:R) ``x*(y-z)==(x*y) - (x*z)``. Intros; Ring. @@ -1494,6 +1502,15 @@ Lemma Rmult_le_pos : (x,y:R) ``0<=x`` -> ``0<=y`` -> ``0<=x*y``. Intros; Rewrite <- (Rmult_Ol x); Rewrite <- (Rmult_sym x); Apply (Rle_monotony x R0 y H H0). Qed. +Lemma double : (x:R) ``2*x==x+x``. +Intro; Ring. +Qed. + +Lemma double_var : (x:R) ``x == x/2 + x/2``. +Intro; Rewrite <- double; Unfold Rdiv; Rewrite <- Rmult_assoc; Symmetry; Apply Rinv_r_simpl_m. +Replace ``2`` with (INR (2)); [Apply not_O_INR; Discriminate | Reflexivity]. +Qed. + (**********************************************************) (** Other rules about < and <= *) (**********************************************************) diff --git a/theories/Reals/Rbasic_fun.v b/theories/Reals/Rbasic_fun.v index 6698d627b..e940ec92b 100644 --- a/theories/Reals/Rbasic_fun.v +++ b/theories/Reals/Rbasic_fun.v @@ -13,8 +13,8 @@ (* *) (*********************************************************) -Require Export R_Ifp. -Require Export Rbase. +Require RealsB. +Require R_Ifp. Require Fourier. (*******************************) @@ -66,6 +66,11 @@ Intros; Unfold Rmin; Case (total_order_Rle x y); Intro H1; [Assumption | Auto wi Qed. (*********) +Lemma Rmin_sym : (a,b:R) (Rmin a b)==(Rmin b a). +Intros; Unfold Rmin; Case (total_order_Rle a b); Case (total_order_Rle b a); Intros; Try Reflexivity Orelse (Apply Rle_antisym; Assumption Orelse Auto with real). +Qed. + +(*********) Lemma Rmin_stable_in_posreal : (x,y:posreal) ``0<(Rmin x y)``. Intros; Apply Rmin_Rgt_r; Split; [Apply (cond_pos x) | Apply (cond_pos y)]. Qed. @@ -399,6 +404,20 @@ Intros; Rewrite (proj1 ? ? (Rplus_ne a));Trivial. Qed. +(* ||a|-|b||<=|a-b| *) +Lemma Rabsolu_triang_inv2 : (a,b:R) ``(Rabsolu ((Rabsolu a)-(Rabsolu b)))<=(Rabsolu (a-b))``. +Cut (a,b:R) ``(Rabsolu b)<=(Rabsolu a)``->``(Rabsolu ((Rabsolu a)-(Rabsolu b))) <= (Rabsolu (a-b))``. +Intros; Case (total_order_T (Rabsolu a) (Rabsolu b)); Intro. +Elim s; Intro. +Rewrite <- (Rabsolu_Ropp ``(Rabsolu a)-(Rabsolu b)``); Rewrite <- (Rabsolu_Ropp ``a-b``); Do 2 Rewrite Ropp_distr2. +Apply H; Left; Assumption. +Rewrite b0; Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Apply Rabsolu_pos. +Apply H; Left; Assumption. +Intros; Replace ``(Rabsolu ((Rabsolu a)-(Rabsolu b)))`` with ``(Rabsolu a)-(Rabsolu b)``. +Apply Rabsolu_triang_inv. +Rewrite (Rabsolu_right ``(Rabsolu a)-(Rabsolu b)``); [Reflexivity | Apply Rle_sym1; Apply Rle_anti_compatibility with (Rabsolu b); Rewrite Rplus_Or; Replace ``(Rabsolu b)+((Rabsolu a)-(Rabsolu b))`` with (Rabsolu a); [Assumption | Ring]]. +Qed. + (*********) Lemma Rabsolu_def1:(x,a:R)(Rlt x a)->(Rlt (Ropp a) x)->(Rlt (Rabsolu x) a). Unfold Rabsolu;Intros;Case (case_Rabsolu x);Intro. diff --git a/theories/Reals/Rcomplet.v b/theories/Reals/Rcomplet.v index 83b382292..195da5c08 100644 --- a/theories/Reals/Rcomplet.v +++ b/theories/Reals/Rcomplet.v @@ -8,566 +8,11 @@ (*i $Id$ i*) -Require Max. -Require Raxioms. -Require DiscrR. -Require Rbase. +Require RealsB. +Require Rfunctions. Require Rseries. -Require Classical. - - -Definition Un_decreasing [Un:nat->R] : Prop := (n:nat) (Rle (Un (S n)) (Un n)). -Definition opp_sui [Un:nat->R] : nat->R := [n:nat]``-(Un n)``. -Definition majoree [Un:nat->R] : Prop := (bound (EUn Un)). -Definition minoree [Un:nat->R] : Prop := (bound (EUn (opp_sui Un))). - -(* Toute suite croissante et majoree converge *) -(* Preuve inspiree de celle presente dans Rseries *) -Lemma growing_cv : (Un:nat->R) (Un_growing Un) -> (majoree Un) -> (sigTT R [l:R](Un_cv Un l)). -Unfold Un_growing Un_cv;Intros; - Generalize (complet (EUn Un) H0 (EUn_noempty Un));Intro H1. - Elim H1;Clear H1;Intros;Split with x;Intros. - Unfold is_lub in p;Unfold bound in H0;Unfold is_upper_bound in H0 p. - Elim H0;Clear H0;Intros;Elim p;Clear p;Intros; - Generalize (H3 x0 H0);Intro;Cut (n:nat)(Rle (Un n) x);Intro. -Cut (Ex [N:nat] (Rlt (Rminus x eps) (Un N))). -Intro;Elim H6;Clear H6;Intros;Split with x1. -Intros;Unfold R_dist;Apply (Rabsolu_def1 (Rminus (Un n) x) eps). -Unfold Rgt in H1. - Apply (Rle_lt_trans (Rminus (Un n) x) R0 eps - (Rle_minus (Un n) x (H5 n)) H1). -Fold Un_growing in H;Generalize (growing_prop Un n x1 H H7);Intro. - Generalize (Rlt_le_trans (Rminus x eps) (Un x1) (Un n) H6 - (Rle_sym2 (Un x1) (Un n) H8));Intro; - Generalize (Rlt_compatibility (Ropp x) (Rminus x eps) (Un n) H9); - Unfold Rminus;Rewrite <-(Rplus_assoc (Ropp x) x (Ropp eps)); - Rewrite (Rplus_sym (Ropp x) (Un n));Fold (Rminus (Un n) x); - Rewrite Rplus_Ropp_l;Rewrite (let (H1,H2)=(Rplus_ne (Ropp eps)) in H2); - Trivial. -Cut ~((N:nat)(Rge (Rminus x eps) (Un N))). -Intro;Apply (not_all_not_ex nat ([N:nat](Rlt (Rminus x eps) (Un N)))). - Red;Intro;Red in H6;Elim H6;Clear H6;Intro; - Apply (Rlt_not_ge (Rminus x eps) (Un N) (H7 N)). -Red;Intro;Cut (N:nat)(Rle (Un N) (Rminus x eps)). -Intro;Generalize (Un_bound_imp Un (Rminus x eps) H7);Intro; - Unfold is_upper_bound in H8;Generalize (H3 (Rminus x eps) H8);Intro; - Generalize (Rle_minus x (Rminus x eps) H9);Unfold Rminus; - Rewrite Ropp_distr1;Rewrite <- Rplus_assoc;Rewrite Rplus_Ropp_r. - Rewrite (let (H1,H2)=(Rplus_ne (Ropp (Ropp eps))) in H2); - Rewrite Ropp_Ropp;Intro;Unfold Rgt in H1; - Generalize (Rle_not eps R0 H1);Intro;Auto. -Intro;Elim (H6 N);Intro;Unfold Rle. -Left;Unfold Rgt in H7;Assumption. -Right;Auto. -Apply (H2 (Un n) (Un_in_EUn Un n)). -Qed. - -(* Pour toute suite decroissante, la suite "opposee" est croissante *) -Lemma decreasing_growing : (Un:nat->R) (Un_decreasing Un) -> (Un_growing (opp_sui Un)). -Intro. -Unfold Un_growing opp_sui Un_decreasing. -Intros. -Apply Rle_Ropp1. -Apply H. -Qed. - -(* Toute suite decroissante et minoree converge *) -Lemma decreasing_cv : (Un:nat->R) (Un_decreasing Un) -> (minoree Un) -> (sigTT R [l:R](Un_cv Un l)). -Intros. -Cut (sigTT R [l:R](Un_cv (opp_sui Un) l)) -> (sigTT R [l:R](Un_cv Un l)). -Intro. -Apply X. -Apply growing_cv. -Apply decreasing_growing; Assumption. -Exact H0. -Intro. -Elim X; Intros. -Apply existTT with ``-x``. -Unfold Un_cv in p. -Unfold R_dist in p. -Unfold opp_sui in p. -Unfold Un_cv. -Unfold R_dist. -Intros. -Elim (p eps H1); Intros. -Exists x0; Intros. -Assert H4 := (H2 n H3). -Rewrite <- Rabsolu_Ropp. -Replace ``-((Un n)- -x)`` with ``-(Un n)-x``; [Assumption | Ring]. -Qed. - -(***********) -Lemma maj_sup : (Un:nat->R) (majoree Un) -> (sigTT R [l:R](is_lub (EUn Un) l)). -Intros. -Unfold majoree in H. -Apply complet. -Assumption. -Exists (Un O). -Unfold EUn. -Exists O; Reflexivity. -Qed. - -(**********) -Lemma min_inf : (Un:nat->R) (minoree Un) -> (sigTT R [l:R](is_lub (EUn (opp_sui Un)) l)). -Intros; Unfold minoree in H. -Apply complet. -Assumption. -Exists ``-(Un O)``. -Exists O. -Reflexivity. -Qed. - -Definition majorant [Un:nat->R;pr:(majoree Un)] : R := Cases (maj_sup Un pr) of (existTT a b) => a end. - -Definition minorant [Un:nat->R;pr:(minoree Un)] : R := Cases (min_inf Un pr) of (existTT a b) => ``-a`` end. - -(* Conservation de la propriete de majoration par extraction *) -Lemma maj_ss : (Un:nat->R;k:nat) (majoree Un) -> (majoree [i:nat](Un (plus k i))). -Intros. -Unfold majoree in H. -Unfold bound in H. -Elim H; Intros. -Unfold is_upper_bound in H0. -Unfold majoree. -Exists x. -Unfold is_upper_bound. -Intros. -Apply H0. -Elim H1; Intros. -Exists (plus k x1); Assumption. -Qed. - -(* Conservation de la propriete de minoration par extraction *) -Lemma min_ss : (Un:nat->R;k:nat) (minoree Un) -> (minoree [i:nat](Un (plus k i))). -Intros. -Unfold minoree in H. -Unfold bound in H. -Elim H; Intros. -Unfold is_upper_bound in H0. -Unfold minoree. -Exists x. -Unfold is_upper_bound. -Intros. -Apply H0. -Elim H1; Intros. -Exists (plus k x1); Assumption. -Qed. - -Definition suite_majorant [Un:nat->R;pr:(majoree Un)] : nat -> R := [i:nat](majorant [k:nat](Un (plus i k)) (maj_ss Un i pr)). - -Definition suite_minorant [Un:nat->R;pr:(minoree Un)] : nat -> R := [i:nat](minorant [k:nat](Un (plus i k)) (min_ss Un i pr)). - -(* La suite des majorants est decroissante *) -Lemma Wn_decreasing : (Un:nat->R;pr:(majoree Un)) (Un_decreasing (suite_majorant Un pr)). -Intros. -Unfold Un_decreasing. -Intro. -Unfold suite_majorant. -Assert H := (maj_sup [k:nat](Un (plus (S n) k)) (maj_ss Un (S n) pr)). -Assert H0 := (maj_sup [k:nat](Un (plus n k)) (maj_ss Un n pr)). -Elim H; Intros. -Elim H0; Intros. -Cut (majorant ([k:nat](Un (plus (S n) k))) (maj_ss Un (S n) pr)) == x; [Intro Maj1; Rewrite Maj1 | Idtac]. -Cut (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr)) == x0; [Intro Maj2; Rewrite Maj2 | Idtac]. -Unfold is_lub in p. -Unfold is_lub in p0. -Elim p; Intros. -Apply H2. -Elim p0; Intros. -Unfold is_upper_bound. -Intros. -Unfold is_upper_bound in H3. -Apply H3. -Elim H5; Intros. -Exists (plus (1) x2). -Replace (plus n (plus (S O) x2)) with (plus (S n) x2). -Assumption. -Replace (S n) with (plus (1) n); [Ring | Ring]. -Cut (is_lub (EUn [k:nat](Un (plus n k))) (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr))). -Intro. -Unfold is_lub in p0; Unfold is_lub in H1. -Elim p0; Intros; Elim H1; Intros. -Assert H6 := (H5 x0 H2). -Assert H7 := (H3 (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr)) H4). -Apply Rle_antisym; Assumption. -Unfold majorant. -Case (maj_sup [k:nat](Un (plus n k)) (maj_ss Un n pr)). -Trivial. -Cut (is_lub (EUn [k:nat](Un (plus (S n) k))) (majorant ([k:nat](Un (plus (S n) k))) (maj_ss Un (S n) pr))). -Intro. -Unfold is_lub in p; Unfold is_lub in H1. -Elim p; Intros; Elim H1; Intros. -Assert H6 := (H5 x H2). -Assert H7 := (H3 (majorant ([k:nat](Un (plus (S n) k))) (maj_ss Un (S n) pr)) H4). -Apply Rle_antisym; Assumption. -Unfold majorant. -Case (maj_sup [k:nat](Un (plus (S n) k)) (maj_ss Un (S n) pr)). -Trivial. -Qed. - -(* La suite des minorants est croissante *) -Lemma Vn_growing : (Un:nat->R;pr:(minoree Un)) (Un_growing (suite_minorant Un pr)). -Intros. -Unfold Un_growing. -Intro. -Unfold suite_minorant. -Assert H := (min_inf [k:nat](Un (plus (S n) k)) (min_ss Un (S n) pr)). -Assert H0 := (min_inf [k:nat](Un (plus n k)) (min_ss Un n pr)). -Elim H; Intros. -Elim H0; Intros. -Cut (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr)) == ``-x``; [Intro Maj1; Rewrite Maj1 | Idtac]. -Cut (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr)) == ``-x0``; [Intro Maj2; Rewrite Maj2 | Idtac]. -Unfold is_lub in p. -Unfold is_lub in p0. -Elim p; Intros. -Apply Rle_Ropp1. -Apply H2. -Elim p0; Intros. -Unfold is_upper_bound. -Intros. -Unfold is_upper_bound in H3. -Apply H3. -Elim H5; Intros. -Exists (plus (1) x2). -Unfold opp_sui in H6. -Unfold opp_sui. -Replace (plus n (plus (S O) x2)) with (plus (S n) x2). -Assumption. -Replace (S n) with (plus (1) n); [Ring | Ring]. -Cut (is_lub (EUn (opp_sui [k:nat](Un (plus n k)))) (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr)))). -Intro. -Unfold is_lub in p0; Unfold is_lub in H1. -Elim p0; Intros; Elim H1; Intros. -Assert H6 := (H5 x0 H2). -Assert H7 := (H3 (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr))) H4). -Rewrite <- (Ropp_Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr))). -Apply eq_Ropp; Apply Rle_antisym; Assumption. -Unfold minorant. -Case (min_inf [k:nat](Un (plus n k)) (min_ss Un n pr)). -Intro; Rewrite Ropp_Ropp. -Trivial. -Cut (is_lub (EUn (opp_sui [k:nat](Un (plus (S n) k)))) (Ropp (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr)))). -Intro. -Unfold is_lub in p; Unfold is_lub in H1. -Elim p; Intros; Elim H1; Intros. -Assert H6 := (H5 x H2). -Assert H7 := (H3 (Ropp (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr))) H4). -Rewrite <- (Ropp_Ropp (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr))). -Apply eq_Ropp; Apply Rle_antisym; Assumption. -Unfold minorant. -Case (min_inf [k:nat](Un (plus (S n) k)) (min_ss Un (S n) pr)). -Intro; Rewrite Ropp_Ropp. -Trivial. -Qed. - -(* Encadrement Vn,Un,Wn *) -Lemma Vn_Un_Wn_order : (Un:nat->R;pr1:(majoree Un);pr2:(minoree Un)) (n:nat) ``((suite_minorant Un pr2) n)<=(Un n)<=((suite_majorant Un pr1) n)``. -Intros. -Split. -Unfold suite_minorant. -Cut (sigTT R [l:R](is_lub (EUn (opp_sui [i:nat](Un (plus n i)))) l)). -Intro. -Elim X; Intros. -Replace (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2)) with ``-x``. -Unfold is_lub in p. -Elim p; Intros. -Unfold is_upper_bound in H. -Rewrite <- (Ropp_Ropp (Un n)). -Apply Rle_Ropp1. -Apply H. -Exists O. -Unfold opp_sui. -Replace (plus n O) with n; [Reflexivity | Ring]. -Cut (is_lub (EUn (opp_sui [k:nat](Un (plus n k)))) (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2)))). -Intro. -Unfold is_lub in p; Unfold is_lub in H. -Elim p; Intros; Elim H; Intros. -Assert H4 := (H3 x H0). -Assert H5 := (H1 (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2))) H2). -Rewrite <- (Ropp_Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2))). -Apply eq_Ropp; Apply Rle_antisym; Assumption. -Unfold minorant. -Case (min_inf [k:nat](Un (plus n k)) (min_ss Un n pr2)). -Intro; Rewrite Ropp_Ropp. -Trivial. -Apply min_inf. -Apply min_ss; Assumption. -Unfold suite_majorant. -Cut (sigTT R [l:R](is_lub (EUn [i:nat](Un (plus n i))) l)). -Intro. -Elim X; Intros. -Replace (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr1)) with ``x``. -Unfold is_lub in p. -Elim p; Intros. -Unfold is_upper_bound in H. -Apply H. -Exists O. -Replace (plus n O) with n; [Reflexivity | Ring]. -Cut (is_lub (EUn [k:nat](Un (plus n k))) (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr1))). -Intro. -Unfold is_lub in p; Unfold is_lub in H. -Elim p; Intros; Elim H; Intros. -Assert H4 := (H3 x H0). -Assert H5 := (H1 (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr1)) H2). -Apply Rle_antisym; Assumption. -Unfold majorant. -Case (maj_sup [k:nat](Un (plus n k)) (maj_ss Un n pr1)). -Intro; Trivial. -Apply maj_sup. -Apply maj_ss; Assumption. -Qed. - -(* La suite des minorants est majoree *) -Lemma min_maj : (Un:nat->R;pr1:(majoree Un);pr2:(minoree Un)) (majoree (suite_minorant Un pr2)). -Intros. -Assert H := (Vn_Un_Wn_order Un pr1 pr2). -Unfold majoree. -Unfold bound. -Unfold majoree in pr1. -Unfold bound in pr1. -Elim pr1; Intros. -Exists x. -Unfold is_upper_bound. -Intros. -Unfold is_upper_bound in H0. -Elim H1; Intros. -Rewrite H2. -Apply Rle_trans with (Un x1). -Assert H3 := (H x1); Elim H3; Intros; Assumption. -Apply H0. -Exists x1; Reflexivity. -Qed. - -(* La suite des majorants est minoree *) -Lemma maj_min : (Un:nat->R;pr1:(majoree Un);pr2:(minoree Un)) (minoree (suite_majorant Un pr1)). -Intros. -Assert H := (Vn_Un_Wn_order Un pr1 pr2). -Unfold minoree. -Unfold bound. -Unfold minoree in pr2. -Unfold bound in pr2. -Elim pr2; Intros. -Exists x. -Unfold is_upper_bound. -Intros. -Unfold is_upper_bound in H0. -Elim H1; Intros. -Rewrite H2. -Apply Rle_trans with ((opp_sui Un) x1). -Assert H3 := (H x1); Elim H3; Intros. -Unfold opp_sui; Apply Rle_Ropp1. -Assumption. -Apply H0. -Exists x1; Reflexivity. -Qed. - -(* Toute suite de Cauchy est majoree *) -Lemma cauchy_maj : (Un:nat->R) (Cauchy_crit Un) -> (majoree Un). -Intros. -Unfold majoree. -Apply cauchy_bound. -Assumption. -Qed. - -(**********) -Lemma cauchy_opp : (Un:nat->R) (Cauchy_crit Un) -> (Cauchy_crit (opp_sui Un)). -Intro. -Unfold Cauchy_crit. -Unfold R_dist. -Intros. -Elim (H eps H0); Intros. -Exists x; Intros. -Unfold opp_sui. -Rewrite <- Rabsolu_Ropp. -Replace ``-( -(Un n)- -(Un m))`` with ``(Un n)-(Un m)``; [Apply H1; Assumption | Ring]. -Qed. - -(* Toute suite de Cauchy est minoree *) -Lemma cauchy_min : (Un:nat->R) (Cauchy_crit Un) -> (minoree Un). -Intros. -Unfold minoree. -Assert H0 := (cauchy_opp ? H). -Apply cauchy_bound. -Assumption. -Qed. - -(* La suite des majorants converge *) -Lemma maj_cv : (Un:nat->R;pr:(Cauchy_crit Un)) (sigTT R [l:R](Un_cv (suite_majorant Un (cauchy_maj Un pr)) l)). -Intros. -Apply decreasing_cv. -Apply Wn_decreasing. -Apply maj_min. -Apply cauchy_min. -Assumption. -Qed. - -(* La suite des minorants converge *) -Lemma min_cv : (Un:nat->R;pr:(Cauchy_crit Un)) (sigTT R [l:R](Un_cv (suite_minorant Un (cauchy_min Un pr)) l)). -Intros. -Apply growing_cv. -Apply Vn_growing. -Apply min_maj. -Apply cauchy_maj. -Assumption. -Qed. - -(**********) -Lemma cond_eq : (x,y:R) ((eps:R)``0<eps``->``(Rabsolu (x-y))<eps``) -> x==y. -Intros. -Case (total_order_T x y); Intro. -Elim s; Intro. -Cut ``0<y-x``. -Intro. -Assert H1 := (H ``y-x`` H0). -Rewrite <- Rabsolu_Ropp in H1. -Cut ``-(x-y)==y-x``; [Intro; Rewrite H2 in H1 | Ring]. -Rewrite Rabsolu_right in H1. -Elim (Rlt_antirefl ? H1). -Left; Assumption. -Apply Rlt_anti_compatibility with x. -Rewrite Rplus_Or; Replace ``x+(y-x)`` with y; [Assumption | Ring]. -Assumption. -Cut ``0<x-y``. -Intro. -Assert H1 := (H ``x-y`` H0). -Rewrite Rabsolu_right in H1. -Elim (Rlt_antirefl ? H1). -Left; Assumption. -Apply Rlt_anti_compatibility with y. -Rewrite Rplus_Or; Replace ``y+(x-y)`` with x; [Assumption | Ring]. -Qed. - -(**********) -Lemma not_Rlt : (r1,r2:R)~(``r1<r2``)->``r1>=r2``. -Intros r1 r2 ; Generalize (total_order r1 r2) ; Unfold Rge. -Tauto. -Qed. - -(* On peut approcher la borne sup de toute suite majoree *) -Lemma approx_maj : (Un:nat->R;pr:(majoree Un)) (eps:R) ``0<eps`` -> (EX k : nat | ``(Rabsolu ((majorant Un pr)-(Un k))) < eps``). -Intros. -Pose P := [k:nat]``(Rabsolu ((majorant Un pr)-(Un k))) < eps``. -Unfold P. -Cut (EX k:nat | (P k)) -> (EX k:nat | ``(Rabsolu ((majorant Un pr)-(Un k))) < eps``). -Intros. -Apply H0. -Apply not_all_not_ex. -Red; Intro. -2:Unfold P; Trivial. -Unfold P in H1. -Cut (n:nat)``(Rabsolu ((majorant Un pr)-(Un n))) >= eps``. -Intro. -Cut (is_lub (EUn Un) (majorant Un pr)). -Intro. -Unfold is_lub in H3. -Unfold is_upper_bound in H3. -Elim H3; Intros. -Cut (n:nat)``eps<=(majorant Un pr)-(Un n)``. -Intro. -Cut (n:nat)``(Un n)<=(majorant Un pr)-eps``. -Intro. -Cut ((x:R)(EUn Un x)->``x <= (majorant Un pr)-eps``). -Intro. -Assert H9 := (H5 ``(majorant Un pr)-eps`` H8). -Cut ``eps<=0``. -Intro. -Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H H10)). -Apply Rle_anti_compatibility with ``(majorant Un pr)-eps``. -Rewrite Rplus_Or. -Replace ``(majorant Un pr)-eps+eps`` with (majorant Un pr); [Assumption | Ring]. -Intros. -Unfold EUn in H8. -Elim H8; Intros. -Rewrite H9; Apply H7. -Intro. -Assert H7 := (H6 n). -Apply Rle_anti_compatibility with ``eps-(Un n)``. -Replace ``eps-(Un n)+(Un n)`` with ``eps``. -Replace ``eps-(Un n)+((majorant Un pr)-eps)`` with ``(majorant Un pr)-(Un n)``. -Assumption. -Ring. -Ring. -Intro. -Assert H6 := (H2 n). -Rewrite Rabsolu_right in H6. -Apply Rle_sym2. -Assumption. -Apply Rle_sym1. -Apply Rle_anti_compatibility with (Un n). -Rewrite Rplus_Or; Replace ``(Un n)+((majorant Un pr)-(Un n))`` with (majorant Un pr); [Apply H4 | Ring]. -Exists n; Reflexivity. -Unfold majorant. -Case (maj_sup Un pr). -Trivial. -Intro. -Assert H2 := (H1 n). -Apply not_Rlt; Assumption. -Qed. - -(* On peut approcher la borne inf de toute suite minoree *) -Lemma approx_min : (Un:nat->R;pr:(minoree Un)) (eps:R) ``0<eps`` -> (EX k :nat | ``(Rabsolu ((minorant Un pr)-(Un k))) < eps``). -Intros. -Pose P := [k:nat]``(Rabsolu ((minorant Un pr)-(Un k))) < eps``. -Unfold P. -Cut (EX k:nat | (P k)) -> (EX k:nat | ``(Rabsolu ((minorant Un pr)-(Un k))) < eps``). -Intros. -Apply H0. -Apply not_all_not_ex. -Red; Intro. -2:Unfold P; Trivial. -Unfold P in H1. -Cut (n:nat)``(Rabsolu ((minorant Un pr)-(Un n))) >= eps``. -Intro. -Cut (is_lub (EUn (opp_sui Un)) ``-(minorant Un pr)``). -Intro. -Unfold is_lub in H3. -Unfold is_upper_bound in H3. -Elim H3; Intros. -Cut (n:nat)``eps<=(Un n)-(minorant Un pr)``. -Intro. -Cut (n:nat)``((opp_sui Un) n)<=-(minorant Un pr)-eps``. -Intro. -Cut ((x:R)(EUn (opp_sui Un) x)->``x <= -(minorant Un pr)-eps``). -Intro. -Assert H9 := (H5 ``-(minorant Un pr)-eps`` H8). -Cut ``eps<=0``. -Intro. -Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H H10)). -Apply Rle_anti_compatibility with ``-(minorant Un pr)-eps``. -Rewrite Rplus_Or. -Replace ``-(minorant Un pr)-eps+eps`` with ``-(minorant Un pr)``; [Assumption | Ring]. -Intros. -Unfold EUn in H8. -Elim H8; Intros. -Rewrite H9; Apply H7. -Intro. -Assert H7 := (H6 n). -Unfold opp_sui. -Apply Rle_anti_compatibility with ``eps+(Un n)``. -Replace ``eps+(Un n)+ -(Un n)`` with ``eps``. -Replace ``eps+(Un n)+(-(minorant Un pr)-eps)`` with ``(Un n)-(minorant Un pr)``. -Assumption. -Ring. -Ring. -Intro. -Assert H6 := (H2 n). -Rewrite Rabsolu_left1 in H6. -Apply Rle_sym2. -Replace ``(Un n)-(minorant Un pr)`` with `` -((minorant Un pr)-(Un n))``; [Assumption | Ring]. -Apply Rle_anti_compatibility with ``-(minorant Un pr)``. -Rewrite Rplus_Or; Replace ``-(minorant Un pr)+((minorant Un pr)-(Un n))`` with ``-(Un n)``. -Apply H4. -Exists n; Reflexivity. -Ring. -Unfold minorant. -Case (min_inf Un pr). -Intro. -Rewrite Ropp_Ropp. -Trivial. -Intro. -Assert H2 := (H1 n). -Apply not_Rlt; Assumption. -Qed. +Require SeqProp. +Require Max. (****************************************************) (* R est complet : *) diff --git a/theories/Reals/Rderiv.v b/theories/Reals/Rderiv.v index 37fa2aa77..be9cba0a0 100644 --- a/theories/Reals/Rderiv.v +++ b/theories/Reals/Rderiv.v @@ -12,9 +12,12 @@ (** Definition of the derivative,continuity *) (* *) (*********************************************************) -Require Export Rfunctions. -Require DiscrR. + +Require RealsB. +Require Rfunctions. +Require Rlimit. Require Fourier. +Require Classical_Prop. Require Classical_Pred_Type. Require Omega. diff --git a/theories/Reals/Reals.v b/theories/Reals/Reals.v index b50939f40..351374f36 100644 --- a/theories/Reals/Reals.v +++ b/theories/Reals/Reals.v @@ -8,32 +8,9 @@ (*i $Id$ i*) -Require Export Rdefinitions. -Require Export TypeSyntax. -Require Export Raxioms. -Require Export Rbase. -Require Export R_Ifp. -Require Export Rbasic_fun. -Require Export R_sqr. -Require Export R_sqrt. -Require Export Rsigma. -Require Export Rlimit. +Require Export RealsB. Require Export Rfunctions. +Require Export SeqSeries. Require Export Rtrigo. -Require Export Rtrigo_calc. -Require Export Rgeom. -Require Export Rpower. -Require Export Rderiv. -Require Export Rseries. -Require Export Binome. -Require Export Rcomplet. -Require Export Alembert_compl. -Require Export Rtrigo_fun. Require Export Ranalysis. -Require Export Rtopology. -Require Export TAF. -Require Export NewtonInt. -Require Export RiemannInt. -Require Export DiscrR. -Require Export SplitRmult. -Require Export SplitAbsolu. +Require Export Integration.
\ No newline at end of file diff --git a/theories/Reals/Rfunctions.v b/theories/Reals/Rfunctions.v index e0e04d822..157495450 100644 --- a/theories/Reals/Rfunctions.v +++ b/theories/Reals/Rfunctions.v @@ -16,9 +16,16 @@ (* *) (********************************************************) -Require Export Rlimit. +Require RealsB. +Require Export R_Ifp. +Require Export Rbasic_fun. +Require Export R_sqr. +Require Export SplitAbsolu. +Require Export SplitRmult. +Require Export ArithProp. Require Omega. -Require Import Zpower. +Require Zpower. + (*******************************) (** Factorial *) @@ -49,6 +56,11 @@ Intro;Red;Intro;Apply (not_O_INR (fact n) (fact_neq_0 n));Assumption. Qed. (*********) +Lemma fact_simpl : (n:nat) (fact (S n))=(mult (S n) (fact n)). +Intro; Reflexivity. +Qed. + +(*********) Lemma simpl_fact:(n:nat)(Rmult (Rinv (INR (fact (S n)))) (Rinv (Rinv (INR (fact n)))))== (Rinv (INR (S n))). @@ -391,6 +403,137 @@ Red;Intro;Absurd ``(pow r (S n0)) == 1``;Auto. Simpl; Rewrite H; Rewrite Rmult_Ol; Auto with real. Qed. +Lemma pow_Rsqr : (x:R;n:nat) (pow x (mult (2) n))==(pow (Rsqr x) n). +Intros; Induction n. +Reflexivity. +Replace (mult (2) (S n)) with (S (S (mult (2) n))). +Replace (pow x (S (S (mult (2) n)))) with ``x*x*(pow x (mult (S (S O)) n))``. +Rewrite Hrecn; Reflexivity. +Simpl; Ring. +Apply INR_eq; Do 2 Rewrite S_INR; Do 2 Rewrite mult_INR; Repeat Rewrite S_INR; Ring. +Qed. + +Lemma pow_le : (a:R;n:nat) ``0<=a`` -> ``0<=(pow a n)``. +Intros; Induction n. +Simpl; Left; Apply Rlt_R0_R1. +Simpl; Apply Rmult_le_pos; Assumption. +Qed. + +(**********) +Lemma pow_1_even : (n:nat) ``(pow (-1) (mult (S (S O)) n))==1``. +Intro; Induction n. +Reflexivity. +Replace (mult (2) (S n)) with (plus (2) (mult (2) n)). +Rewrite pow_add; Rewrite Hrecn; Simpl; Ring. +Replace (S n) with (plus n (1)); [Ring | Ring]. +Qed. + +(**********) +Lemma pow_1_odd : (n:nat) ``(pow (-1) (S (mult (S (S O)) n)))==-1``. +Intro; Replace (S (mult (2) n)) with (plus (mult (2) n) (1)); [Idtac | Ring]. +Rewrite pow_add; Rewrite pow_1_even; Simpl; Ring. +Qed. + +(**********) +Lemma pow_1_abs : (n:nat) ``(Rabsolu (pow (-1) n))==1``. +Intro; Induction n. +Simpl; Apply Rabsolu_R1. +Replace (S n) with (plus n (1)); [Rewrite pow_add | Ring]. +Rewrite Rabsolu_mult. +Rewrite Hrecn; Rewrite Rmult_1l; Simpl; Rewrite Rmult_1r; Rewrite Rabsolu_Ropp; Apply Rabsolu_R1. +Qed. + +Lemma pow_mult : (x:R;n1,n2:nat) (pow x (mult n1 n2))==(pow (pow x n1) n2). +Intros; Induction n2. +Simpl; Replace (mult n1 O) with O; [Reflexivity | Ring]. +Replace (mult n1 (S n2)) with (plus (mult n1 n2) n1). +Replace (S n2) with (plus n2 (1)); [Idtac | Ring]. +Do 2 Rewrite pow_add. +Rewrite Hrecn2. +Simpl. +Ring. +Apply INR_eq; Rewrite plus_INR; Do 2 Rewrite mult_INR; Rewrite S_INR; Ring. +Qed. + +Lemma pow_incr : (x,y:R;n:nat) ``0<=x<=y`` -> ``(pow x n)<=(pow y n)``. +Intros. +Induction n. +Right; Reflexivity. +Simpl. +Elim H; Intros. +Apply Rle_trans with ``y*(pow x n)``. +Do 2 Rewrite <- (Rmult_sym (pow x n)). +Apply Rle_monotony. +Apply pow_le; Assumption. +Assumption. +Apply Rle_monotony. +Apply Rle_trans with x; Assumption. +Apply Hrecn. +Qed. + +Lemma pow_R1_Rle : (x:R;k:nat) ``1<=x`` -> ``1<=(pow x k)``. +Intros. +Induction k. +Right; Reflexivity. +Simpl. +Apply Rle_trans with ``x*1``. +Rewrite Rmult_1r; Assumption. +Apply Rle_monotony. +Left; Apply Rlt_le_trans with R1; [Apply Rlt_R0_R1 | Assumption]. +Exact Hreck. +Qed. + +Lemma Rle_pow : (x:R;m,n:nat) ``1<=x`` -> (le m n) -> ``(pow x m)<=(pow x n)``. +Intros. +Replace n with (plus (minus n m) m). +Rewrite pow_add. +Rewrite Rmult_sym. +Pattern 1 (pow x m); Rewrite <- Rmult_1r. +Apply Rle_monotony. +Apply pow_le; Left; Apply Rlt_le_trans with R1; [Apply Rlt_R0_R1 | Assumption]. +Apply pow_R1_Rle; Assumption. +Rewrite plus_sym. +Symmetry; Apply le_plus_minus; Assumption. +Qed. + +Lemma pow1 : (n:nat) (pow R1 n)==R1. +Intro; Induction n. +Reflexivity. +Simpl; Rewrite Hrecn; Rewrite Rmult_1r; Reflexivity. +Qed. + +Lemma pow_Rabs : (x:R;n:nat) ``(pow x n)<=(pow (Rabsolu x) n)``. +Intros; Induction n. +Right; Reflexivity. +Simpl; Case (case_Rabsolu x); Intro. +Apply Rle_trans with (Rabsolu ``x*(pow x n)``). +Apply Rle_Rabsolu. +Rewrite Rabsolu_mult. +Apply Rle_monotony. +Apply Rabsolu_pos. +Right; Symmetry; Apply Pow_Rabsolu. +Pattern 1 (Rabsolu x); Rewrite (Rabsolu_right x r); Apply Rle_monotony. +Apply Rle_sym2; Exact r. +Apply Hrecn. +Qed. + +Lemma pow_maj_Rabs : (x,y:R;n:nat) ``(Rabsolu y)<=x`` -> ``(pow y n)<=(pow x n)``. +Intros; Cut ``0<=x``. +Intro; Apply Rle_trans with (pow (Rabsolu y) n). +Apply pow_Rabs. +Induction n. +Right; Reflexivity. +Simpl; Apply Rle_trans with ``x*(pow (Rabsolu y) n)``. +Do 2 Rewrite <- (Rmult_sym (pow (Rabsolu y) n)). +Apply Rle_monotony. +Apply pow_le; Apply Rabsolu_pos. +Assumption. +Apply Rle_monotony. +Apply H0. +Apply Hrecn. +Apply Rle_trans with (Rabsolu y); [Apply Rabsolu_pos | Exact H]. +Qed. + (*******************************) (** PowerRZ *) (*******************************) @@ -580,6 +723,63 @@ Rewrite Rplus_sym;Rewrite (Rplus_sym Apply Rle_compatibility;Assumption. Qed. +(*******************************) +(* Distance in R *) +(*******************************) + +(*********) +Definition R_dist:R->R->R:=[x,y:R](Rabsolu (Rminus x y)). + +(*********) +Lemma R_dist_pos:(x,y:R)(Rge (R_dist x y) R0). +Intros;Unfold R_dist;Unfold Rabsolu;Case (case_Rabsolu (Rminus x y));Intro l. +Unfold Rge;Left;Apply (Rlt_RoppO (Rminus x y) l). +Trivial. +Qed. + +(*********) +Lemma R_dist_sym:(x,y:R)(R_dist x y)==(R_dist y x). +Unfold R_dist;Intros;SplitAbsolu;Ring. +Generalize (Rlt_RoppO (Rminus y x) r); Intro; + Rewrite (Ropp_distr2 y x) in H; + Generalize (Rlt_antisym (Rminus x y) R0 r0); Intro;Unfold Rgt in H; + ElimType False; Auto. +Generalize (minus_Rge y x r); Intro; + Generalize (minus_Rge x y r0); Intro; + Generalize (Rge_ge_eq x y H0 H); Intro;Rewrite H1;Ring. +Qed. + +(*********) +Lemma R_dist_refl:(x,y:R)((R_dist x y)==R0<->x==y). +Unfold R_dist;Intros;SplitAbsolu;Split;Intros. +Rewrite (Ropp_distr2 x y) in H;Apply sym_eqT; + Apply (Rminus_eq y x H). +Rewrite (Ropp_distr2 x y);Generalize (sym_eqT R x y H);Intro; + Apply (eq_Rminus y x H0). +Apply (Rminus_eq x y H). +Apply (eq_Rminus x y H). +Qed. + +Lemma R_dist_eq:(x:R)(R_dist x x)==R0. +Unfold R_dist;Intros;SplitAbsolu;Intros;Ring. +Qed. + +(***********) +Lemma R_dist_tri:(x,y,z:R)(Rle (R_dist x y) + (Rplus (R_dist x z) (R_dist z y))). +Intros;Unfold R_dist; Replace ``x-y`` with ``(x-z)+(z-y)``; + [Apply (Rabsolu_triang ``x-z`` ``z-y``)|Ring]. +Qed. + +(*********) +Lemma R_dist_plus: (a,b,c,d:R)(Rle (R_dist (Rplus a c) (Rplus b d)) + (Rplus (R_dist a b) (R_dist c d))). +Intros;Unfold R_dist; + Replace (Rminus (Rplus a c) (Rplus b d)) + with (Rplus (Rminus a b) (Rminus c d)). +Exact (Rabsolu_triang (Rminus a b) (Rminus c d)). +Ring. +Qed. (*******************************) (** Infinit Sum *) @@ -587,6 +787,4 @@ Qed. (*********) Definition infinit_sum:(nat->R)->R->Prop:=[s:nat->R;l:R] (eps:R)(Rgt eps R0)-> - (Ex[N:nat](n:nat)(ge n N)->(Rlt (R_dist (sum_f_R0 s n) l) eps)). - - + (Ex[N:nat](n:nat)(ge n N)->(Rlt (R_dist (sum_f_R0 s n) l) eps)).
\ No newline at end of file diff --git a/theories/Reals/Rgeom.v b/theories/Reals/Rgeom.v index 18fa919a2..54c8725ed 100644 --- a/theories/Reals/Rgeom.v +++ b/theories/Reals/Rgeom.v @@ -8,8 +8,9 @@ (*i $Id$ i*) -Require Rbase. -Require R_sqr. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo. Require R_sqrt. diff --git a/theories/Reals/RiemannInt.v b/theories/Reals/RiemannInt.v index 316af925b..fed86e6ef 100644 --- a/theories/Reals/RiemannInt.v +++ b/theories/Reals/RiemannInt.v @@ -8,23 +8,12 @@ (*i $Id$ i*) -Require Rsqrt_def. -Require Rbase. -Require DiscrR. -Require Rbasic_fun. -Require Rlimit. -Require Rseries. -Require Alembert. -Require Rcomplet. -Require Cv_prop. -Require Rtrigo_alt. -Require Rderiv. -Require Ranalysis1. -Require Ranalysis4. -Require Exp_prop. -Require Rtopology. -Require NewtonInt. -Require Export RiemannInt_SF. +Require Rfunctions. +Require SeqSeries. +Require Ranalysis. +Require RealsB. +Require RiemannInt_SF. +Require Classical_Prop. Require Classical_Pred_Type. Require Max. @@ -459,7 +448,7 @@ Elim (H0 n); Intros; Rewrite <- (Ropp_Ropp (RiemannInt_SF (mkStepFun (StepFun_P6 Elim (H n); Intros; Apply Rle_lt_trans with (Rabsolu (RiemannInt_SF (psi2 n))); [Apply Rle_Rabsolu | Apply Rlt_trans with (pos (RinvN n)); [Assumption | Apply H4; Unfold ge; Apply le_trans with (max N0 N1); [Apply le_max_l | Assumption]]]. Unfold R_dist in H1; Apply H1; Unfold ge; Apply le_trans with (max N0 N1); [Apply le_max_r | Assumption]. Apply r_Rmult_mult with ``3``; [Unfold Rdiv; Rewrite Rmult_Rplus_distr; Do 2 Rewrite (Rmult_sym ``3``); Repeat Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Ring | DiscrR] | DiscrR]. -Split with [n:nat](projT1 ? ? (phi_sequence_prop RinvN pr2 n)); Intro; Rewrite Rmin_sym; Rewrite Rmax_sym; Apply (projT2 ? ? (phi_sequence_prop RinvN pr2 n)). +Split with [n:nat](projT1 ? ? (phi_sequence_prop RinvN pr2 n)); Intro; Rewrite Rmin_sym; Rewrite RmaxSym; Apply (projT2 ? ? (phi_sequence_prop RinvN pr2 n)). Split with [n:nat](projT1 ? ? (phi_sequence_prop RinvN pr1 n)); Intro; Apply (projT2 ? ? (phi_sequence_prop RinvN pr1 n)). Qed. diff --git a/theories/Reals/RiemannInt_SF.v b/theories/Reals/RiemannInt_SF.v index 81c8bd000..e065119c6 100644 --- a/theories/Reals/RiemannInt_SF.v +++ b/theories/Reals/RiemannInt_SF.v @@ -8,274 +8,13 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. -Require Rbasic_fun. -Require Rlimit. -Require Alembert. -Require Ranalysis1. -Require Rtopology. -Require NewtonInt. +Require RealsB. +Require Rfunctions. +Require Ranalysis. +Require Classical_Prop. Implicit Arguments On. -Definition ordered_Rlist [l:Rlist] : Prop := (i:nat) (lt i (pred (longueur l))) -> (Rle (pos_Rl l i) (pos_Rl l (S i))). - -Fixpoint insert [l:Rlist] : R->Rlist := -[x:R] Cases l of -| nil => (cons x nil) -| (cons a l') => - Cases (total_order_Rle a x) of - | (leftT _) => (cons a (insert l' x)) - | (rightT _) => (cons x l) - end -end. - -Fixpoint cons_Rlist [l:Rlist] : Rlist->Rlist := -[k:Rlist] Cases l of -| nil => k -| (cons a l') => (cons a (cons_Rlist l' k)) end. - -Fixpoint cons_ORlist [k:Rlist] : Rlist->Rlist := -[l:Rlist] Cases k of -| nil => l -| (cons a k') => (cons_ORlist k' (insert l a)) -end. - -Fixpoint app_Rlist [l:Rlist] : (R->R)->Rlist := -[f:R->R] Cases l of -| nil => nil -| (cons a l') => (cons (f a) (app_Rlist l' f)) -end. - -Fixpoint mid_Rlist [l:Rlist] : R->Rlist := -[x:R] Cases l of -| nil => nil -| (cons a l') => (cons ``(x+a)/2`` (mid_Rlist l' a)) -end. - -Definition Rtail [l:Rlist] : Rlist := -Cases l of -| nil => nil -| (cons a l') => l' -end. - -Definition FF [l:Rlist;f:R->R] : Rlist := -Cases l of -| nil => nil -| (cons a l') => (app_Rlist (mid_Rlist l' a) f) -end. - -Lemma Rmin_sym : (a,b:R) (Rmin a b)==(Rmin b a). -Intros; Unfold Rmin; Case (total_order_Rle a b); Case (total_order_Rle b a); Intros; Try Reflexivity Orelse (Apply Rle_antisym; Assumption Orelse Auto with real). -Qed. - -Lemma Rmax_sym : (a,b:R) (Rmax a b)==(Rmax b a). -Intros; Unfold Rmax; Case (total_order_Rle a b); Case (total_order_Rle b a); Intros; Try Reflexivity Orelse (Apply Rle_antisym; Assumption Orelse Auto with real). -Qed. - -Lemma RList_P0 : (l:Rlist;a:R) ``(pos_Rl (insert l a) O) == a`` \/ ``(pos_Rl (insert l a) O) == (pos_Rl l O)``. -Intros; Induction l; [Left; Reflexivity | Simpl; Case (total_order_Rle r a); Intro; [Right; Reflexivity | Left; Reflexivity]]. -Qed. - -Lemma RList_P1 : (l:Rlist;a:R) (ordered_Rlist l) -> (ordered_Rlist (insert l a)). -Intros; Induction l. -Simpl; Unfold ordered_Rlist; Intros; Simpl in H0; Elim (lt_n_O ? H0). -Simpl; Case (total_order_Rle r a); Intro. -Assert H1 : (ordered_Rlist l). -Unfold ordered_Rlist; Unfold ordered_Rlist in H; Intros; Assert H1 : (lt (S i) (pred (longueur (cons r l)))); [Simpl; Replace (longueur l) with (S (pred (longueur l))); [Apply lt_n_S; Assumption | Symmetry; Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H1 in H0; Simpl in H0; Elim (lt_n_O ? H0)] | Apply (H ? H1)]. -Assert H2 := (Hrecl H1); Unfold ordered_Rlist; Intros; Induction i. -Simpl; Assert H3 := (RList_P0 l a); Elim H3; Intro. -Rewrite H4; Assumption. -Induction l; [Simpl; Assumption | Rewrite H4; Apply (H O); Simpl; Apply lt_O_Sn]. -Simpl; Apply H2; Simpl in H0; Apply lt_S_n; Replace (S (pred (longueur (insert l a)))) with (longueur (insert l a)); [Assumption | Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H3 in H0; Elim (lt_n_O ? H0)]. -Unfold ordered_Rlist; Intros; Induction i; [Simpl; Auto with real | Change ``(pos_Rl (cons r l) i)<=(pos_Rl (cons r l) (S i))``; Apply H; Simpl in H0; Simpl; Apply (lt_S_n ? ? H0)]. -Qed. - -Lemma RList_P2 : (l1,l2:Rlist) (ordered_Rlist l2) ->(ordered_Rlist (cons_ORlist l1 l2)). -Induction l1; [Intros; Simpl; Apply H | Intros; Simpl; Apply H; Apply RList_P1; Assumption]. -Qed. - -Lemma RList_P3 : (l:Rlist;x:R) (In x l) <-> (EX i:nat | x==(pos_Rl l i)/\(lt i (longueur l))). -Intros; Split; Intro; Induction l. -Elim H. -Elim H; Intro; [Exists O; Split; [Apply H0 | Simpl; Apply lt_O_Sn] | Elim (Hrecl H0); Intros; Elim H1; Clear H1; Intros; Exists (S x0); Split; [Apply H1 | Simpl; Apply lt_n_S; Assumption]]. -Elim H; Intros; Elim H0; Intros; Elim (lt_n_O ? H2). -Simpl; Elim H; Intros; Elim H0; Clear H0; Intros; Induction x0; [Left; Apply H0 | Right; Apply Hrecl; Exists x0; Split; [Apply H0 | Simpl in H1; Apply lt_S_n; Assumption]]. -Qed. - -Lemma RList_P4 : (l1:Rlist;a:R) (ordered_Rlist (cons a l1)) -> (ordered_Rlist l1). -Intros; Unfold ordered_Rlist; Intros; Apply (H (S i)); Simpl; Replace (longueur l1) with (S (pred (longueur l1))); [Apply lt_n_S; Assumption | Symmetry; Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H1 in H0; Elim (lt_n_O ? H0)]. -Qed. - -Lemma RList_P5 : (l:Rlist;x:R) (ordered_Rlist l) -> (In x l) -> ``(pos_Rl l O)<=x``. -Intros; Induction l; [Elim H0 | Simpl; Elim H0; Intro; [Rewrite H1; Right; Reflexivity | Apply Rle_trans with (pos_Rl l O); [Apply (H O); Simpl; Induction l; [Elim H1 | Simpl; Apply lt_O_Sn] | Apply Hrecl; [EApply RList_P4; Apply H | Assumption]]]]. -Qed. - -Lemma RList_P6 : (l:Rlist) (ordered_Rlist l)<->((i,j:nat)(le i j)->(lt j (longueur l))->``(pos_Rl l i)<=(pos_Rl l j)``). -Induction l; Split; Intro. -Intros; Right; Reflexivity. -Unfold ordered_Rlist; Intros; Simpl in H0; Elim (lt_n_O ? H0). -Intros; Induction i; [Induction j; [Right; Reflexivity | Simpl; Apply Rle_trans with (pos_Rl r0 O); [Apply (H0 O); Simpl; Simpl in H2; Apply neq_O_lt; Red; Intro; Rewrite <- H3 in H2; Assert H4 := (lt_S_n ? ? H2); Elim (lt_n_O ? H4) | Elim H; Intros; Apply H3; [Apply RList_P4 with r; Assumption | Apply le_O_n | Simpl in H2; Apply lt_S_n; Assumption]]] | Induction j; [Elim (le_Sn_O ? H1) | Simpl; Elim H; Intros; Apply H3; [Apply RList_P4 with r; Assumption | Apply le_S_n; Assumption | Simpl in H2; Apply lt_S_n; Assumption]]]. -Unfold ordered_Rlist; Intros; Apply H0; [Apply le_n_Sn | Simpl; Simpl in H1; Apply lt_n_S; Assumption]. -Qed. - -Lemma RList_P7 : (l:Rlist;x:R) (ordered_Rlist l) -> (In x l) -> ``x<=(pos_Rl l (pred (longueur l)))``. -Intros; Assert H1 := (RList_P6 l); Elim H1; Intros H2 _; Assert H3 := (H2 H); Clear H1 H2; Assert H1 := (RList_P3 l x); Elim H1; Clear H1; Intros; Assert H4 := (H1 H0); Elim H4; Clear H4; Intros; Elim H4; Clear H4; Intros; Rewrite H4; Assert H6 : (longueur l)=(S (pred (longueur l))). -Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H6 in H5; Elim (lt_n_O ? H5). -Apply H3; [Rewrite H6 in H5; Apply lt_n_Sm_le; Assumption | Apply lt_pred_n_n; Apply neq_O_lt; Red; Intro; Rewrite <- H7 in H5; Elim (lt_n_O ? H5)]. -Qed. - -Lemma RList_P8 : (l:Rlist;a,x:R) (In x (insert l a)) <-> x==a\/(In x l). -Induction l. -Intros; Split; Intro; Simpl in H; Apply H. -Intros; Split; Intro; [Simpl in H0; Generalize H0; Case (total_order_Rle r a); Intros; [Simpl in H1; Elim H1; Intro; [Right; Left; Assumption |Elim (H a x); Intros; Elim (H3 H2); Intro; [Left; Assumption | Right; Right; Assumption]] | Simpl in H1; Decompose [or] H1; [Left; Assumption | Right; Left; Assumption | Right; Right; Assumption]] | Simpl; Case (total_order_Rle r a); Intro; [Simpl in H0; Decompose [or] H0; [Right; Elim (H a x); Intros; Apply H3; Left | Left | Right; Elim (H a x); Intros; Apply H3; Right] | Simpl in H0; Decompose [or] H0; [Left | Right; Left | Right; Right]]; Assumption]. -Qed. - -Lemma RList_P9 : (l1,l2:Rlist;x:R) (In x (cons_ORlist l1 l2)) <-> (In x l1)\/(In x l2). -Induction l1. -Intros; Split; Intro; [Simpl in H; Right; Assumption | Simpl; Elim H; Intro; [Elim H0 | Assumption]]. -Intros; Split. -Simpl; Intros; Elim (H (insert l2 r) x); Intros; Assert H3 := (H1 H0); Elim H3; Intro; [Left; Right; Assumption | Elim (RList_P8 l2 r x); Intros H5 _; Assert H6 := (H5 H4); Elim H6; Intro; [Left; Left; Assumption | Right; Assumption]]. -Intro; Simpl; Elim (H (insert l2 r) x); Intros _ H1; Apply H1; Elim H0; Intro; [Elim H2; Intro; [Right; Elim (RList_P8 l2 r x); Intros _ H4; Apply H4; Left; Assumption | Left; Assumption] | Right; Elim (RList_P8 l2 r x); Intros _ H3; Apply H3; Right; Assumption]. -Qed. - -Lemma RList_P10 : (l:Rlist;a:R) (longueur (insert l a))==(S (longueur l)). -Intros; Induction l; [Reflexivity | Simpl; Case (total_order_Rle r a); Intro; [Simpl; Rewrite Hrecl; Reflexivity | Reflexivity]]. -Qed. - -Lemma RList_P11 : (l1,l2:Rlist) (longueur (cons_ORlist l1 l2))=(plus (longueur l1) (longueur l2)). -Induction l1; [Intro; Reflexivity | Intros; Simpl; Rewrite (H (insert l2 r)); Rewrite RList_P10; Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring]. -Qed. - -Lemma RList_P12 : (l:Rlist;i:nat;f:R->R) (lt i (longueur l)) -> (pos_Rl (app_Rlist l f) i)==(f (pos_Rl l i)). -Induction l; [Intros; Elim (lt_n_O ? H) | Intros; Induction i; [Reflexivity | Simpl; Apply H; Apply lt_S_n; Apply H0]]. -Qed. - -Lemma RList_P13 : (l:Rlist;i:nat;a:R) (lt i (pred (longueur l))) -> ``(pos_Rl (mid_Rlist l a) (S i)) == ((pos_Rl l i)+(pos_Rl l (S i)))/2``. -Induction l. -Intros; Simpl in H; Elim (lt_n_O ? H). -Induction r0. -Intros; Simpl in H0; Elim (lt_n_O ? H0). -Intros; Simpl in H1; Induction i. -Reflexivity. -Change ``(pos_Rl (mid_Rlist (cons r1 r2) r) (S i)) == ((pos_Rl (cons r1 r2) i)+(pos_Rl (cons r1 r2) (S i)))/2``; Apply H0; Simpl; Apply lt_S_n; Assumption. -Qed. - -Lemma RList_P14 : (l:Rlist;a:R) (longueur (mid_Rlist l a))=(longueur l). -Induction l; Intros; [Reflexivity | Simpl; Rewrite (H r); Reflexivity]. -Qed. - -Lemma RList_P15 : (l1,l2:Rlist) (ordered_Rlist l1) -> (ordered_Rlist l2) -> (pos_Rl l1 O)==(pos_Rl l2 O) -> (pos_Rl (cons_ORlist l1 l2) O)==(pos_Rl l1 O). -Intros; Apply Rle_antisym. -Induction l1; [Simpl; Simpl in H1; Right; Symmetry; Assumption | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons r l1) (0))); Intros; Assert H4 : (In (pos_Rl (cons r l1) (0)) (cons r l1))\/(In (pos_Rl (cons r l1) (0)) l2); [Left; Left; Reflexivity | Assert H5 := (H3 H4); Apply RList_P5; [Apply RList_P2; Assumption | Assumption]]]. -Induction l1; [Simpl; Simpl in H1; Right; Assumption | Assert H2 : (In (pos_Rl (cons_ORlist (cons r l1) l2) (0)) (cons_ORlist (cons r l1) l2)); [Elim (RList_P3 (cons_ORlist (cons r l1) l2) (pos_Rl (cons_ORlist (cons r l1) l2) (0))); Intros; Apply H3; Exists O; Split; [Reflexivity | Rewrite RList_P11; Simpl; Apply lt_O_Sn] | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons_ORlist (cons r l1) l2) (0))); Intros; Assert H5 := (H3 H2); Elim H5; Intro; [Apply RList_P5; Assumption | Rewrite H1; Apply RList_P5; Assumption]]]. -Qed. - -Lemma RList_P16 : (l1,l2:Rlist) (ordered_Rlist l1) -> (ordered_Rlist l2) -> (pos_Rl l1 (pred (longueur l1)))==(pos_Rl l2 (pred (longueur l2))) -> (pos_Rl (cons_ORlist l1 l2) (pred (longueur (cons_ORlist l1 l2))))==(pos_Rl l1 (pred (longueur l1))). -Intros; Apply Rle_antisym. -Induction l1. -Simpl; Simpl in H1; Right; Symmetry; Assumption. -Assert H2 : (In (pos_Rl (cons_ORlist (cons r l1) l2) (pred (longueur (cons_ORlist (cons r l1) l2)))) (cons_ORlist (cons r l1) l2)); [Elim (RList_P3 (cons_ORlist (cons r l1) l2) (pos_Rl (cons_ORlist (cons r l1) l2) (pred (longueur (cons_ORlist (cons r l1) l2))))); Intros; Apply H3; Exists (pred (longueur (cons_ORlist (cons r l1) l2))); Split; [Reflexivity | Rewrite RList_P11; Simpl; Apply lt_n_Sn] | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons_ORlist (cons r l1) l2) (pred (longueur (cons_ORlist (cons r l1) l2))))); Intros; Assert H5 := (H3 H2); Elim H5; Intro; [Apply RList_P7; Assumption | Rewrite H1; Apply RList_P7; Assumption]]. -Induction l1. -Simpl; Simpl in H1; Right; Assumption. -Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons r l1) (pred (longueur (cons r l1))))); Intros; Assert H4 : (In (pos_Rl (cons r l1) (pred (longueur (cons r l1)))) (cons r l1))\/(In (pos_Rl (cons r l1) (pred (longueur (cons r l1)))) l2); [Left; Change (In (pos_Rl (cons r l1) (longueur l1)) (cons r l1)); Elim (RList_P3 (cons r l1) (pos_Rl (cons r l1) (longueur l1))); Intros; Apply H5; Exists (longueur l1); Split; [Reflexivity | Simpl; Apply lt_n_Sn] | Assert H5 := (H3 H4); Apply RList_P7; [Apply RList_P2; Assumption | Elim (RList_P9 (cons r l1) l2 (pos_Rl (cons r l1) (pred (longueur (cons r l1))))); Intros; Apply H7; Left; Elim (RList_P3 (cons r l1) (pos_Rl (cons r l1) (pred (longueur (cons r l1))))); Intros; Apply H9; Exists (pred (longueur (cons r l1))); Split; [Reflexivity | Simpl; Apply lt_n_Sn]]]. -Qed. - -Lemma RList_P17 : (l1:Rlist;x:R;i:nat) (ordered_Rlist l1) -> (In x l1) -> ``(pos_Rl l1 i)<x`` -> (lt i (pred (longueur l1))) -> ``(pos_Rl l1 (S i))<=x``. -Induction l1. -Intros; Elim H0. -Intros; Induction i. -Simpl; Elim H1; Intro; [Simpl in H2; Rewrite H4 in H2; Elim (Rlt_antirefl ? H2) | Apply RList_P5; [Apply RList_P4 with r; Assumption | Assumption]]. -Simpl; Simpl in H2; Elim H1; Intro. -Rewrite H4 in H2; Assert H5 : ``r<=(pos_Rl r0 i)``; [Apply Rle_trans with (pos_Rl r0 O); [Apply (H0 O); Simpl; Simpl in H3; Apply neq_O_lt; Red; Intro; Rewrite <- H5 in H3; Elim (lt_n_O ? H3) | Elim (RList_P6 r0); Intros; Apply H5; [Apply RList_P4 with r; Assumption | Apply le_O_n | Simpl in H3; Apply lt_S_n; Apply lt_trans with (longueur r0); [Apply H3 | Apply lt_n_Sn]]] | Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H5 H2))]. -Apply H; Try Assumption; [Apply RList_P4 with r; Assumption | Simpl in H3; Apply lt_S_n; Replace (S (pred (longueur r0))) with (longueur r0); [Apply H3 | Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H5 in H3; Elim (lt_n_O ? H3)]]. -Qed. - -Lemma RList_P18 : (l:Rlist;f:R->R) (longueur (app_Rlist l f))=(longueur l). -Induction l; Intros; [Reflexivity | Simpl; Rewrite H; Reflexivity]. -Qed. - -Lemma RList_P19 : (l:Rlist) ~l==nil -> (EXT r:R | (EXT r0:Rlist | l==(cons r r0))). -Intros; Induction l; [Elim H; Reflexivity | Exists r; Exists l; Reflexivity]. -Qed. - -Lemma RList_P20 : (l:Rlist) (le (2) (longueur l)) -> (EXT r:R | (EXT r1:R | (EXT l':Rlist | l==(cons r (cons r1 l'))))). -Intros; Induction l; [Simpl in H; Elim (le_Sn_O ? H) | Induction l; [Simpl in H; Elim (le_Sn_O ? (le_S_n ? ? H)) | Exists r; Exists r0; Exists l; Reflexivity]]. -Qed. - -Lemma RList_P21 : (l,l':Rlist) l==l' -> (Rtail l)==(Rtail l'). -Intros; Rewrite H; Reflexivity. -Qed. - -Lemma RList_P22 : (l1,l2:Rlist) ~l1==nil -> (pos_Rl (cons_Rlist l1 l2) O)==(pos_Rl l1 O). -Induction l1; [Intros; Elim H; Reflexivity | Intros; Reflexivity]. -Qed. - -Lemma RList_P23 : (l1,l2:Rlist) (longueur (cons_Rlist l1 l2))==(plus (longueur l1) (longueur l2)). -Induction l1; [Intro; Reflexivity | Intros; Simpl; Rewrite H; Reflexivity]. -Qed. - -Lemma RList_P24 : (l1,l2:Rlist) ~l2==nil -> (pos_Rl (cons_Rlist l1 l2) (pred (longueur (cons_Rlist l1 l2)))) == (pos_Rl l2 (pred (longueur l2))). -Induction l1. -Intros; Reflexivity. -Intros; Rewrite <- (H l2 H0); Induction l2. -Elim H0; Reflexivity. -Do 2 Rewrite RList_P23; Replace (plus (longueur (cons r r0)) (longueur (cons r1 l2))) with (S (S (plus (longueur r0) (longueur l2)))); [Replace (plus (longueur r0) (longueur (cons r1 l2))) with (S (plus (longueur r0) (longueur l2))); [Reflexivity | Simpl; Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring] | Simpl; Apply INR_eq; Do 3 Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring]. -Qed. - -Lemma RList_P25 : (l1,l2:Rlist) (ordered_Rlist l1) -> (ordered_Rlist l2) -> ``(pos_Rl l1 (pred (longueur l1)))<=(pos_Rl l2 O)`` -> (ordered_Rlist (cons_Rlist l1 l2)). -Induction l1. -Intros; Simpl; Assumption. -Induction r0. -Intros; Simpl; Simpl in H2; Unfold ordered_Rlist; Intros; Simpl in H3. -Induction i. -Simpl; Assumption. -Change ``(pos_Rl l2 i)<=(pos_Rl l2 (S i))``; Apply (H1 i); Apply lt_S_n; Replace (S (pred (longueur l2))) with (longueur l2); [Assumption | Apply S_pred with O; Apply neq_O_lt; Red; Intro; Rewrite <- H4 in H3; Elim (lt_n_O ? H3)]. -Intros; Clear H; Assert H : (ordered_Rlist (cons_Rlist (cons r1 r2) l2)). -Apply H0; Try Assumption. -Apply RList_P4 with r; Assumption. -Unfold ordered_Rlist; Intros; Simpl in H4; Induction i. -Simpl; Apply (H1 O); Simpl; Apply lt_O_Sn. -Change ``(pos_Rl (cons_Rlist (cons r1 r2) l2) i)<=(pos_Rl (cons_Rlist (cons r1 r2) l2) (S i))``; Apply (H i); Simpl; Apply lt_S_n; Assumption. -Qed. - -Lemma RList_P26 : (l1,l2:Rlist;i:nat) (lt i (longueur l1)) -> (pos_Rl (cons_Rlist l1 l2) i)==(pos_Rl l1 i). -Induction l1. -Intros; Elim (lt_n_O ? H). -Intros; Induction i. -Apply RList_P22; Discriminate. -Apply (H l2 i); Simpl in H0; Apply lt_S_n; Assumption. -Qed. - -Lemma RList_P27 : (l1,l2,l3:Rlist) (cons_Rlist l1 (cons_Rlist l2 l3))==(cons_Rlist (cons_Rlist l1 l2) l3). -Induction l1; Intros; [Reflexivity | Simpl; Rewrite (H l2 l3); Reflexivity]. -Qed. - -Lemma RList_P28 : (l:Rlist) (cons_Rlist l nil)==l. -Induction l; [Reflexivity | Intros; Simpl; Rewrite H; Reflexivity]. -Qed. - -Lemma RList_P29 : (l2,l1:Rlist;i:nat) (le (longueur l1) i) -> (lt i (longueur (cons_Rlist l1 l2))) -> (pos_Rl (cons_Rlist l1 l2) i)==(pos_Rl l2 (minus i (longueur l1))). -Induction l2. -Intros; Rewrite RList_P28 in H0; Elim (lt_n_n ? (le_lt_trans ? ? ? H H0)). -Intros; Replace (cons_Rlist l1 (cons r r0)) with (cons_Rlist (cons_Rlist l1 (cons r nil)) r0). -Inversion H0. -Rewrite <- minus_n_n; Simpl; Rewrite RList_P26. -Clear l2 r0 H i H0 H1 H2; Induction l1. -Reflexivity. -Simpl; Assumption. -Rewrite RList_P23; Rewrite plus_sym; Simpl; Apply lt_n_Sn. -Replace (minus (S m) (longueur l1)) with (S (minus (S m) (S (longueur l1)))). -Rewrite H3; Simpl; Replace (S (longueur l1)) with (longueur (cons_Rlist l1 (cons r nil))). -Apply (H (cons_Rlist l1 (cons r nil)) i). -Rewrite RList_P23; Rewrite plus_sym; Simpl; Rewrite <- H3; Apply le_n_S; Assumption. -Repeat Rewrite RList_P23; Simpl; Rewrite RList_P23 in H1; Rewrite plus_sym in H1; Simpl in H1; Rewrite (plus_sym (longueur l1)); Simpl; Rewrite plus_sym; Apply H1. -Rewrite RList_P23; Rewrite plus_sym; Reflexivity. -Change (S (minus m (longueur l1)))=(minus (S m) (longueur l1)); Apply minus_Sn_m; Assumption. -Replace (cons r r0) with (cons_Rlist (cons r nil) r0); [Symmetry; Apply RList_P27 | Reflexivity]. -Qed. - (**************************************************) (* Each bounded subset of N has a maximal element *) (**************************************************) @@ -455,10 +194,10 @@ Intros; Case (Req_EM a b); Intro. Exists (cons a nil); Exists nil; Unfold adapted_couple_opt; Unfold adapted_couple; Unfold ordered_Rlist; Repeat Split; Try (Intros; Simpl in H3; Elim (lt_n_O ? H3)). Simpl; Rewrite <- H2; Unfold Rmin; Case (total_order_Rle a a); Intro; Reflexivity. Simpl; Rewrite <- H2; Unfold Rmax; Case (total_order_Rle a a); Intro; Reflexivity. -Elim (RList_P20 (StepFun_P9 H1 H2)); Intros t1 [t2 [t3 H3]]; Induction lf. +Elim (RList_P20 ? (StepFun_P9 H1 H2)); Intros t1 [t2 [t3 H3]]; Induction lf. Unfold adapted_couple in H1; Decompose [and] H1; Rewrite H3 in H7; Simpl in H7; Discriminate. Clear Hreclf; Assert H4 : (adapted_couple f t2 b r0 lf). -Rewrite H3 in H1; Assert H4 := (RList_P21 H3); Simpl in H4; Rewrite H4; EApply StepFun_P7; [Apply H0 | Apply H1]. +Rewrite H3 in H1; Assert H4 := (RList_P21 ? ? H3); Simpl in H4; Rewrite H4; EApply StepFun_P7; [Apply H0 | Apply H1]. Cut ``t2<=b``. Intro; Assert H6 := (H ? ? ? H5 H4); Case (Req_EM t1 t2); Intro Hyp_eq. Replace a with t2. @@ -478,7 +217,7 @@ Intros; Simpl in H8; Elim (lt_n_O ? H8). Intros; Simpl in H8; Inversion H8; [Simpl; Assumption | Elim (le_Sn_O ? H10)]. Assert Hyp_min : (Rmin t2 b)==t2. Unfold Rmin; Case (total_order_Rle t2 b); Intro; [Reflexivity | Elim n; Assumption]. -Unfold adapted_couple in H6; Elim H6; Clear H6; Intros; Elim (RList_P20 (StepFun_P9 H6 H7)); Intros s1 [s2 [s3 H9]]; Induction lf'. +Unfold adapted_couple in H6; Elim H6; Clear H6; Intros; Elim (RList_P20 ? (StepFun_P9 H6 H7)); Intros s1 [s2 [s3 H9]]; Induction lf'. Unfold adapted_couple in H6; Decompose [and] H6; Rewrite H9 in H13; Simpl in H13; Discriminate. Clear Hreclf'; Case (Req_EM r1 r2); Intro. Case (Req_EM (f t2) r1); Intro. @@ -640,7 +379,7 @@ Assert Hyp_min : (Rmin a b)==a. Unfold Rmin; Case (total_order_Rle a b); Intro; [Reflexivity | Elim n; Assumption]. Assert Hyp_max : (Rmax a b)==b. Unfold Rmax; Case (total_order_Rle a b); Intro; [Reflexivity | Elim n; Assumption]. -Elim (RList_P20 (StepFun_P9 H H4)); Intros s1 [s2 [s3 H5]]; Rewrite H5 in H; Rewrite H5; Induction lf1. +Elim (RList_P20 ? (StepFun_P9 H H4)); Intros s1 [s2 [s3 H5]]; Rewrite H5 in H; Rewrite H5; Induction lf1. Unfold adapted_couple in H2; Decompose [and] H2; Clear H H2 H4 H5 H3 H6 H8 H7 H11; Simpl in H9; Discriminate. Clear Hreclf1; Induction lf2. Unfold adapted_couple in H; Decompose [and] H; Clear H H2 H4 H5 H3 H6 H8 H7 H11; Simpl in H9; Discriminate. @@ -836,7 +575,7 @@ Intros; Elim H11; Clear H11; Intros; Assert H12 := H11; Assert Hyp_cons : (EXT r Apply RList_P19; Red; Intro; Rewrite H13 in H8; Elim (lt_n_O ? H8). Elim Hyp_cons; Clear Hyp_cons; Intros r [r0 Hyp_cons]; Rewrite Hyp_cons; Unfold FF; Rewrite RList_P12. Change (f x)==(f (pos_Rl (mid_Rlist (cons r r0) r) (S i))); Rewrite <- Hyp_cons; Rewrite RList_P13. -Assert H13 := (RList_P2 H H8); Elim H13; Intro. +Assert H13 := (RList_P2 ? ? H ? H8); Elim H13; Intro. Unfold constant_D_eq open_interval in H11 H12; Rewrite (H11 x H10); Assert H15 : ``(pos_Rl (cons_ORlist lf lg) i)<((pos_Rl (cons_ORlist lf lg) i)+(pos_Rl (cons_ORlist lf lg) (S i)))/2<(pos_Rl (cons_ORlist lf lg) (S i))``. Split. Apply Rlt_monotony_contra with ``2``; [Sup0 | Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1l; Rewrite double; Apply Rlt_compatibility; Assumption | DiscrR]]. @@ -847,7 +586,7 @@ Apply H8. Rewrite RList_P14; Rewrite Hyp_cons in H8; Simpl in H8; Apply H8. Assert H11 : ``a<b``. Apply Rle_lt_trans with (pos_Rl (cons_ORlist lf lg) i). -Rewrite <- H6; Rewrite <- (RList_P15 1!lf 2!lg). +Rewrite <- H6; Rewrite <- (RList_P15 lf lg). Elim (RList_P6 (cons_ORlist lf lg)); Intros; Apply H11. Apply RList_P2; Assumption. Apply le_O_n. @@ -857,7 +596,7 @@ Assumption. Rewrite H1; Assumption. Apply Rlt_le_trans with (pos_Rl (cons_ORlist lf lg) (S i)). Elim H10; Intros; Apply Rlt_trans with x; Assumption. -Rewrite <- H5; Rewrite <- (RList_P16 1!lf 2!lg); Try Assumption. +Rewrite <- H5; Rewrite <- (RList_P16 lf lg); Try Assumption. Elim (RList_P6 (cons_ORlist lf lg)); Intros; Apply H11. Apply RList_P2; Assumption. Apply lt_n_Sm_le; Apply lt_n_S; Assumption. @@ -957,7 +696,7 @@ Intros; Elim H11; Clear H11; Intros; Assert H12 := H11; Assert Hyp_cons : (EXT Apply RList_P19; Red; Intro; Rewrite H13 in H8; Elim (lt_n_O ? H8). Elim Hyp_cons; Clear Hyp_cons; Intros r [r0 Hyp_cons]; Rewrite Hyp_cons; Unfold FF; Rewrite RList_P12. Change (g x)==(g (pos_Rl (mid_Rlist (cons r r0) r) (S i))); Rewrite <- Hyp_cons; Rewrite RList_P13. -Assert H13 := (RList_P2 H H8); Elim H13; Intro. +Assert H13 := (RList_P2 ? ? H ? H8); Elim H13; Intro. Unfold constant_D_eq open_interval in H11 H12; Rewrite (H11 x H10); Assert H15 : ``(pos_Rl (cons_ORlist lf lg) i)<((pos_Rl (cons_ORlist lf lg) i)+(pos_Rl (cons_ORlist lf lg) (S i)))/2<(pos_Rl (cons_ORlist lf lg) (S i))``. Split. Apply Rlt_monotony_contra with ``2``; [Sup0 | Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1l; Rewrite double; Apply Rlt_compatibility; Assumption | DiscrR]]. @@ -968,7 +707,7 @@ Apply H8. Rewrite RList_P14; Rewrite Hyp_cons in H8; Simpl in H8; Apply H8. Assert H11 : ``a<b``. Apply Rle_lt_trans with (pos_Rl (cons_ORlist lf lg) i). -Rewrite <- H6; Rewrite <- (RList_P15 1!lf 2!lg); Try Assumption. +Rewrite <- H6; Rewrite <- (RList_P15 lf lg); Try Assumption. Elim (RList_P6 (cons_ORlist lf lg)); Intros; Apply H11. Apply RList_P2; Assumption. Apply le_O_n. @@ -976,7 +715,7 @@ Apply lt_trans with (pred (longueur (cons_ORlist lf lg))); [Assumption | Apply l Rewrite H1; Assumption. Apply Rlt_le_trans with (pos_Rl (cons_ORlist lf lg) (S i)). Elim H10; Intros; Apply Rlt_trans with x; Assumption. -Rewrite <- H5; Rewrite <- (RList_P16 1!lf 2!lg); Try Assumption. +Rewrite <- H5; Rewrite <- (RList_P16 lf lg); Try Assumption. Elim (RList_P6 (cons_ORlist lf lg)); Intros; Apply H11. Apply RList_P2; Assumption. Apply lt_n_Sm_le; Apply lt_n_S; Assumption. @@ -1033,7 +772,7 @@ Unfold is_subdivision; Intros; Elim X; Elim X0; Intros; Clear X X0; Unfold adapt Apply StepFun_P20; Apply neq_O_lt; Red; Intro; Rewrite <- H8 in H7; Discriminate. Intros; Unfold constant_D_eq open_interval; Unfold constant_D_eq open_interval in H9 H4; Intros; Rewrite (H9 ? H8 ? H10); Rewrite (H4 ? H8 ? H10); Assert H11 : ~l1==nil. Red; Intro; Rewrite H11 in H8; Elim (lt_n_O ? H8). -Assert H12 := (RList_P19 H11); Elim H12; Clear H12; Intros r [r0 H12]; Rewrite H12; Unfold FF; Change ``(pos_Rl x0 i)+l*(pos_Rl x i)`` == (pos_Rl (app_Rlist (mid_Rlist (cons r r0) r) [x2:R]``(f x2)+l*(g x2)``) (S i)); Rewrite RList_P12. +Assert H12 := (RList_P19 ? H11); Elim H12; Clear H12; Intros r [r0 H12]; Rewrite H12; Unfold FF; Change ``(pos_Rl x0 i)+l*(pos_Rl x i)`` == (pos_Rl (app_Rlist (mid_Rlist (cons r r0) r) [x2:R]``(f x2)+l*(g x2)``) (S i)); Rewrite RList_P12. Rewrite RList_P13. Rewrite <- H12; Rewrite (H9 ? H8); Try Rewrite (H4 ? H8); Reflexivity Orelse (Elim H10; Clear H10; Intros; Split; [Apply Rlt_monotony_contra with ``2``; [Sup0 | Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1l; Rewrite double; Apply Rlt_compatibility; Apply Rlt_trans with x1; Assumption | DiscrR]] | Apply Rlt_monotony_contra with ``2``; [Sup0 | Unfold Rdiv; Rewrite <- (Rmult_sym ``/2``); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1l; Rewrite double; Rewrite (Rplus_sym (pos_Rl l1 i)); Apply Rlt_compatibility; Apply Rlt_trans with x1; Assumption | DiscrR]]]). Rewrite <- H12; Assumption. @@ -1268,7 +1007,7 @@ Assert H15 : (pos_Rl (cons_Rlist l1 l2) (S i))==(pos_Rl l1 (S i)). Apply RList_P26; Apply lt_S_n; Apply le_lt_n_Sm; Assumption. Rewrite H14 in H2; Rewrite H15 in H2; Assert H16 : (le (2) (longueur l1)). Apply le_trans with (S (S i)); [Repeat Apply le_n_S; Apply le_O_n | Assumption]. -Elim (RList_P20 H16); Intros r1 [r2 [r3 H17]]; Rewrite H17; Change (f x)==(pos_Rl (app_Rlist (mid_Rlist (cons_Rlist (cons r2 r3) l2) r1) f) i); Rewrite RList_P12. +Elim (RList_P20 ? H16); Intros r1 [r2 [r3 H17]]; Rewrite H17; Change (f x)==(pos_Rl (app_Rlist (mid_Rlist (cons_Rlist (cons r2 r3) l2) r1) f) i); Rewrite RList_P12. Induction i. Simpl; Assert H18 := (H8 O); Unfold constant_D_eq open_interval in H18; Assert H19 : (lt O (pred (longueur l1))). Rewrite H17; Simpl; Apply lt_O_Sn. @@ -1331,7 +1070,7 @@ Simpl in H5; Simpl in H4; Assert H0 : ``(Rmin a b)<(Rmax a b)``. Unfold Rmin Rmax; Case (total_order_Rle a b); Intro; [Assumption | Elim n; Left; Assumption]. Rewrite <- H5 in H0; Rewrite <- H4 in H0; Elim (Rlt_antirefl ? H0). Clear Hrecl1; Simpl; Repeat Apply le_n_S; Apply le_O_n. -Elim (RList_P20 H18); Intros r1 [r2 [r3 H19]]; Rewrite H19; Change (f x)==(pos_Rl (app_Rlist (mid_Rlist (cons_Rlist (cons r2 r3) l2) r1) f) i); Rewrite RList_P12. +Elim (RList_P20 ? H18); Intros r1 [r2 [r3 H19]]; Rewrite H19; Change (f x)==(pos_Rl (app_Rlist (mid_Rlist (cons_Rlist (cons r2 r3) l2) r1) f) i); Rewrite RList_P12. Induction i. Assert H20 := (le_S_n ? ? H15); Assert H21 := (le_trans ? ? ? H18 H20); Elim (le_Sn_O ? H21). Clear Hreci; Rewrite RList_P13. diff --git a/theories/Reals/Rlimit.v b/theories/Reals/Rlimit.v index dc849132f..26b9da460 100644 --- a/theories/Reals/Rlimit.v +++ b/theories/Reals/Rlimit.v @@ -13,26 +13,10 @@ (* *) (*********************************************************) -Require Export Rbasic_fun. -Require Export R_sqr. -Require Export Classical_Prop. -Require DiscrR. +Require RealsB. +Require Rfunctions. +Require Classical_Prop. Require Fourier. -Require SplitAbsolu. - -(** Modif **) -Lemma double : (x:R) ``2*x==x+x``. -Intro; Ring. -Qed. - -Lemma aze : ``2<>0``. -DiscrR. -Qed. - -Lemma double_var : (x:R) ``x == x/2 + x/2``. -Intro; Rewrite <- double; Unfold Rdiv; Rewrite <- Rmult_assoc; Symmetry; Apply Rinv_r_simpl_m. -Apply aze. -Qed. (*******************************) (* Calculus *) @@ -65,8 +49,8 @@ Unfold Rdiv. Repeat Rewrite Rmult_assoc. Rewrite <- Rinv_Rmult. Reflexivity. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Ring. Qed. @@ -189,64 +173,6 @@ Definition limit_in:= (Rlt (dist X' (f x) l) eps)). (*******************************) -(* Distance in R *) -(*******************************) - -(*********) -Definition R_dist:R->R->R:=[x,y:R](Rabsolu (Rminus x y)). - -(*********) -Lemma R_dist_pos:(x,y:R)(Rge (R_dist x y) R0). -Intros;Unfold R_dist;Unfold Rabsolu;Case (case_Rabsolu (Rminus x y));Intro l. -Unfold Rge;Left;Apply (Rlt_RoppO (Rminus x y) l). -Trivial. -Qed. - -(*********) -Lemma R_dist_sym:(x,y:R)(R_dist x y)==(R_dist y x). -Unfold R_dist;Intros;SplitAbsolu;Ring. -Generalize (Rlt_RoppO (Rminus y x) r); Intro; - Rewrite (Ropp_distr2 y x) in H; - Generalize (Rlt_antisym (Rminus x y) R0 r0); Intro;Unfold Rgt in H; - ElimType False; Auto. -Generalize (minus_Rge y x r); Intro; - Generalize (minus_Rge x y r0); Intro; - Generalize (Rge_ge_eq x y H0 H); Intro;Rewrite H1;Ring. -Qed. - -(*********) -Lemma R_dist_refl:(x,y:R)((R_dist x y)==R0<->x==y). -Unfold R_dist;Intros;SplitAbsolu;Split;Intros. -Rewrite (Ropp_distr2 x y) in H;Apply sym_eqT; - Apply (Rminus_eq y x H). -Rewrite (Ropp_distr2 x y);Generalize (sym_eqT R x y H);Intro; - Apply (eq_Rminus y x H0). -Apply (Rminus_eq x y H). -Apply (eq_Rminus x y H). -Qed. - -Lemma R_dist_eq:(x:R)(R_dist x x)==R0. -Unfold R_dist;Intros;SplitAbsolu;Intros;Ring. -Qed. - -(***********) -Lemma R_dist_tri:(x,y,z:R)(Rle (R_dist x y) - (Rplus (R_dist x z) (R_dist z y))). -Intros;Unfold R_dist; Replace ``x-y`` with ``(x-z)+(z-y)``; - [Apply (Rabsolu_triang ``x-z`` ``z-y``)|Ring]. -Qed. - -(*********) -Lemma R_dist_plus: (a,b,c,d:R)(Rle (R_dist (Rplus a c) (Rplus b d)) - (Rplus (R_dist a b) (R_dist c d))). -Intros;Unfold R_dist; - Replace (Rminus (Rplus a c) (Rplus b d)) - with (Rplus (Rminus a b) (Rminus c d)). -Exact (Rabsolu_triang (Rminus a b) (Rminus c d)). -Ring. -Qed. - -(*******************************) (* R is a metric space *) (*******************************) @@ -541,7 +467,7 @@ Rewrite <- Rinv_l_sym. Rewrite Rmult_1r. Rewrite <- Rinv_l_sym. Rewrite Rmult_1r; Reflexivity. -Apply aze. +DiscrR. Exact H0. Exact H0. Exact H0. @@ -566,7 +492,7 @@ Rewrite <- Rinv_l_sym. Rewrite Rmult_1r. Rewrite <- Rinv_l_sym. Rewrite Rmult_1r; Reflexivity. -Apply aze. +DiscrR. Apply Rabsolu_no_R0. Assumption. Unfold Rdiv. diff --git a/theories/Reals/Rpower.v b/theories/Reals/Rpower.v index 17aec980e..807525601 100644 --- a/theories/Reals/Rpower.v +++ b/theories/Reals/Rpower.v @@ -14,20 +14,11 @@ (* Propriétés *) (************************************************************) -Require Rbase. -Require DiscrR. -Require Rbasic_fun. +Require RealsB. Require Rfunctions. -Require Rseries. -Require Binome. -Require AltSeries. -Require Rcomplet. -Require Rprod. -Require Rtrigo_def. -Require Rtrigo_alt. -Require Cos_plus. +Require SeqSeries. +Require Rtrigo. Require Ranalysis1. -Require PSeries_reg. Require Exp_prop. Require Rsqrt_def. Require R_sqrt. diff --git a/theories/Reals/Rprod.v b/theories/Reals/Rprod.v index 3d566b022..936a50198 100644 --- a/theories/Reals/Rprod.v +++ b/theories/Reals/Rprod.v @@ -9,10 +9,11 @@ (*i $Id$ i*) Require Compare. -Require Rbase. +Require RealsB. +Require Rfunctions. Require Rseries. +Require PartSum. Require Binome. -Require Rtrigo_def. (* TT Ak; 1<=k<=N *) Fixpoint prod_f_SO [An:nat->R;N:nat] : R := Cases N of @@ -65,9 +66,20 @@ Qed. Lemma fact_prodSO : (n:nat) (INR (fact n))==(prod_f_SO [k:nat](INR k) n). Intro; Induction n. Reflexivity. -Rewrite fact_simpl; Rewrite mult_INR; Rewrite Rmult_sym; Rewrite Hrecn; Reflexivity. +Change (INR (mult (S n) (fact n)))==(prod_f_SO ([k:nat](INR k)) (S n)). +Rewrite mult_INR; Rewrite Rmult_sym; Rewrite Hrecn; Reflexivity. Qed. +Lemma le_n_2n : (n:nat) (le n (mult (2) n)). +Induction n. +Replace (mult (2) (O)) with O; [Apply le_n | Ring]. +Intros; Replace (mult (2) (S n0)) with (S (S (mult (2) n0))). +Apply le_n_S; Apply le_S; Assumption. +Replace (S (S (mult (2) n0))) with (plus (mult (2) n0) (2)); [Idtac | Ring]. +Replace (S n0) with (plus n0 (1)); [Idtac | Ring]. +Ring. +Qed. + (* We prove that (N!)²<=(2N-k)!*k! forall k in [|O;2N|] *) Lemma RfactN_fact2N_factk : (N,k:nat) (le k (mult (2) N)) -> ``(Rsqr (INR (fact N)))<=(INR (fact (minus (mult (S (S O)) N) k)))*(INR (fact k))``. Intros; Unfold Rsqr; Repeat Rewrite fact_prodSO. diff --git a/theories/Reals/Rseries.v b/theories/Reals/Rseries.v index 9af9bdd54..7cc969afe 100644 --- a/theories/Reals/Rseries.v +++ b/theories/Reals/Rseries.v @@ -8,7 +8,8 @@ (*i $Id$ i*) -Require Export Rderiv. +Require RealsB. +Require Rfunctions. Require Classical. Require Compare. @@ -271,9 +272,4 @@ Assumption. Apply Rabsolu_pos_lt. Apply Rinv_neq_R0. Assumption. -Qed. - - - - - +Qed.
\ No newline at end of file diff --git a/theories/Reals/Rsigma.v b/theories/Reals/Rsigma.v index dfd34a1de..766365c13 100644 --- a/theories/Reals/Rsigma.v +++ b/theories/Reals/Rsigma.v @@ -8,10 +8,10 @@ (*i $Id$ i*) -Require Rbase. +Require RealsB. +Require Rfunctions. Require Rseries. -Require Alembert. -Require Binome. +Require PartSum. Set Implicit Arguments. @@ -21,13 +21,6 @@ Variable f : nat->R. Definition sigma [low,high:nat] : R := (sum_f_R0 [k:nat](f (plus low k)) (minus high low)). -Lemma lt_minus_O_lt : (m,n:nat) (lt m n) -> (lt O (minus n m)). -Intros n m; Pattern n m; Apply nat_double_ind; [ - Intros; Rewrite <- minus_n_O; Assumption -| Intros; Elim (lt_n_O ? H) -| Intros; Simpl; Apply H; Apply lt_S_n; Assumption]. -Qed. - Theorem sigma_split : (low,high,k:nat) (le low k)->(lt k high)->``(sigma low high)==(sigma low k)+(sigma (S k) high)``. Intros; Induction k. Cut low = O. diff --git a/theories/Reals/Rsqrt_def.v b/theories/Reals/Rsqrt_def.v index 948d16610..9be8c94ea 100644 --- a/theories/Reals/Rsqrt_def.v +++ b/theories/Reals/Rsqrt_def.v @@ -9,17 +9,11 @@ (*i $Id$ i*) Require Sumbool. -Require Rbase. -Require DiscrR. -Require Rseries. -Require Alembert. -Require Rcomplet. -Require AltSeries. -Require Rtrigo_alt. -Require Cv_prop. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Ranalysis1. - Fixpoint Dichotomie_lb [x,y:R;P:R->bool;N:nat] : R := Cases N of O => x @@ -42,7 +36,7 @@ Simpl; Assumption. Simpl. Case (P ``((Dichotomie_lb x y P n)+(Dichotomie_ub x y P n))/2``). Unfold Rdiv; Apply Rle_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Pattern 1 ``2``; Rewrite Rmult_sym. Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]. Rewrite Rmult_1r. @@ -50,7 +44,7 @@ Rewrite double. Apply Rle_compatibility. Assumption. Unfold Rdiv; Apply Rle_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Pattern 3 ``2``; Rewrite Rmult_sym. Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]. Rewrite Rmult_1r. @@ -68,7 +62,7 @@ Simpl. Case (P ``((Dichotomie_lb x y P n)+(Dichotomie_ub x y P n))/2``). Right; Reflexivity. Unfold Rdiv; Apply Rle_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Pattern 1 ``2``; Rewrite Rmult_sym. Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]. Rewrite Rmult_1r. @@ -84,7 +78,7 @@ Intro. Simpl. Case (P ``((Dichotomie_lb x y P n)+(Dichotomie_ub x y P n))/2``). Unfold Rdiv; Apply Rle_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Pattern 3 ``2``; Rewrite Rmult_sym. Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]. Rewrite Rmult_1r. @@ -105,7 +99,7 @@ Simpl. Case (P ``((Dichotomie_lb x y P n)+(Dichotomie_ub x y P n))/2``). Assumption. Unfold Rdiv; Apply Rle_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Pattern 3 ``2``; Rewrite Rmult_sym. Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Rewrite Rmult_1r | DiscrR]. Rewrite double; Apply Rplus_le. @@ -138,7 +132,7 @@ Simpl; Assumption. Simpl. Case (P ``((Dichotomie_lb x y P n)+(Dichotomie_ub x y P n))/2``). Unfold Rdiv; Apply Rle_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Pattern 1 ``2``; Rewrite Rmult_sym. Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Rewrite Rmult_1r | DiscrR]. Rewrite double; Apply Rplus_le. @@ -225,7 +219,7 @@ Intro. Replace (S n) with (plus n (1)); [Unfold pow_2_n; Rewrite pow_add | Ring]. Pattern 1 (pow ``2`` n); Rewrite <- Rmult_1r. Apply Rle_monotony. -Left; Apply pow_lt; Apply Rgt_2_0. +Left; Apply pow_lt; Sup0. Simpl. Rewrite Rmult_1r. Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rle_compatibility; Left; Apply Rlt_R0_R1. @@ -263,11 +257,11 @@ Assert H0 := (archimed M); Elim H0; Intros. Left; Apply Rlt_trans with M; Assumption. Exists O; Intros. Rewrite <- b. -Unfold pow_2_n; Apply pow_lt; Apply Rgt_2_0. +Unfold pow_2_n; Apply pow_lt; Sup0. Exists O; Intros. Apply Rlt_trans with R0. Assumption. -Unfold pow_2_n; Apply pow_lt; Apply Rgt_2_0. +Unfold pow_2_n; Apply pow_lt; Sup0. Induction N. Simpl. Left; Apply Rlt_R0_R1. @@ -285,7 +279,7 @@ Pattern 1 (pow ``2`` n); Rewrite <- Rplus_Or. Rewrite <- (Rmult_sym ``2``). Rewrite double. Apply Rle_compatibility. -Left; Apply pow_lt; Apply Rgt_2_0. +Left; Apply pow_lt; Sup0. Qed. Lemma cv_dicho : (x,y,l1,l2:R;P:R->bool) ``x<=y`` -> (Un_cv (dicho_lb x y P) l1) -> (Un_cv (dicho_up x y P) l2) -> l1==l2. diff --git a/theories/Reals/Rtopology.v b/theories/Reals/Rtopology.v index a2f3ec4ce..98c2039eb 100644 --- a/theories/Reals/Rtopology.v +++ b/theories/Reals/Rtopology.v @@ -8,12 +8,10 @@ (*i $Id$ i*) -Require Rbase. -Require Rbasic_fun. -Require DiscrR. -Require Rderiv. -Require Alembert. +Require RealsB. +Require Rfunctions. Require Ranalysis1. +Require RList. Require Classical_Prop. Require Classical_Pred_Type. @@ -258,43 +256,9 @@ Record famille : Type := mkfamille { Definition famille_ouvert [f:famille] : Prop := (x:R) (ouvert (f x)). (* Liste de réels *) -Inductive Rlist : Type := -| nil : Rlist -| cons : R -> Rlist -> Rlist. - -Fixpoint In [x:R;l:Rlist] : Prop := -Cases l of -| nil => False -| (cons a l') => ``x==a``\/(In x l') end. Definition domaine_fini [D:R->Prop] : Prop := (EXT l:Rlist | (x:R)(D x)<->(In x l)). -Fixpoint longueur [l:Rlist] : nat := -Cases l of -| nil => O -| (cons a l') => (S (longueur l')) end. - -(* Cette fonction renvoie le maximum des éléments d'une liste non vide *) -Fixpoint MaxRlist [l:Rlist] : R := - Cases l of - | nil => R0 (* valeur de retour si la liste de départ est vide *) - | (cons a l1) => - Cases l1 of - | nil => a - | (cons a' l2) => (Rmax a (MaxRlist l1)) - end -end. - -Fixpoint MinRlist [l:Rlist] : R := -Cases l of - | nil => R1 (* valeur de retour si la liste de départ est vide *) - | (cons a l1) => - Cases l1 of - | nil => a - | (cons a' l2) => (Rmin a (MinRlist l1)) - end -end. - Definition famille_finie [f:famille] : Prop := (domaine_fini (ind f)). Definition recouvrement [D:R->Prop;f:famille] : Prop := (x:R) (D x)->(EXT y:R | (f y x)). @@ -329,25 +293,6 @@ Qed. Definition bornee [D:R->Prop] : Prop := (EXT m:R | (EXT M:R | (x:R)(D x)->``m<=x<=M``)). -Lemma MaxRlist_P1 : (l:Rlist;x:R) (In x l)->``x<=(MaxRlist l)``. -Intros; Induction l. -Simpl in H; Elim H. -Induction l. -Simpl in H; Elim H; Intro. -Simpl; Right; Assumption. -Elim H0. -Replace (MaxRlist (cons r (cons r0 l))) with (Rmax r (MaxRlist (cons r0 l))). -Simpl in H; Decompose [or] H. -Rewrite H0; Apply RmaxLess1. -Unfold Rmax; Case (total_order_Rle r (MaxRlist (cons r0 l))); Intro. -Apply Hrecl; Simpl; Tauto. -Apply Rle_trans with (MaxRlist (cons r0 l)); [Apply Hrecl; Simpl; Tauto | Left; Auto with real]. -Unfold Rmax; Case (total_order_Rle r (MaxRlist (cons r0 l))); Intro. -Apply Hrecl; Simpl; Tauto. -Apply Rle_trans with (MaxRlist (cons r0 l)); [Apply Hrecl; Simpl; Tauto | Left; Auto with real]. -Reflexivity. -Qed. - Lemma ouvert_P6 : (D1,D2:R->Prop) (ouvert D1) -> D1 =_D D2 -> (ouvert D2). Unfold ouvert; Unfold voisinage; Intros. Unfold eq_Dom in H0; Elim H0; Intros. @@ -393,63 +338,6 @@ Unfold inclus; Intros; Elim H3. Unfold inclus f0; Simpl; Unfold g; Intros; Elim H2; Intro; [Rewrite <- H4 in H3; Assert H5 := (Rabsolu_pos x0); Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H5 H3)) | Assert H6 := (Rabsolu_pos x0); Assert H7 := (Rlt_trans ? ? ? H3 H4); Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H6 H7))]. Qed. -Fixpoint AbsList [l:Rlist] : R->Rlist := -[x:R] Cases l of -| nil => nil -| (cons a l') => (cons ``(Rabsolu (a-x))/2`` (AbsList l' x)) -end. - -Lemma MinRlist_P1 : (l:Rlist;x:R) (In x l)->``(MinRlist l)<=x``. -Intros; Induction l. -Simpl in H; Elim H. -Induction l. -Simpl in H; Elim H; Intro. -Simpl; Right; Symmetry; Assumption. -Elim H0. -Replace (MinRlist (cons r (cons r0 l))) with (Rmin r (MinRlist (cons r0 l))). -Simpl in H; Decompose [or] H. -Rewrite H0; Apply Rmin_l. -Unfold Rmin; Case (total_order_Rle r (MinRlist (cons r0 l))); Intro. -Apply Rle_trans with (MinRlist (cons r0 l)). -Assumption. -Apply Hrecl; Simpl; Tauto. -Apply Hrecl; Simpl; Tauto. -Apply Rle_trans with (MinRlist (cons r0 l)). -Apply Rmin_r. -Apply Hrecl; Simpl; Tauto. -Reflexivity. -Qed. - -Lemma AbsList_P1 : (l:Rlist;x,y:R) (In y l) -> (In ``(Rabsolu (y-x))/2`` (AbsList l x)). -Intros; Induction l. -Elim H. -Simpl; Simpl in H; Elim H; Intro. -Left; Rewrite H0; Reflexivity. -Right; Apply Hrecl; Assumption. -Qed. - -Lemma MinRlist_P2 : (l:Rlist) ((y:R)(In y l)->``0<y``)->``0<(MinRlist l)``. -Intros; Induction l. -Apply Rlt_R0_R1. -Induction l. -Simpl; Apply H; Simpl; Tauto. -Replace (MinRlist (cons r (cons r0 l))) with (Rmin r (MinRlist (cons r0 l))). -Unfold Rmin; Case (total_order_Rle r (MinRlist (cons r0 l))); Intro. -Apply H; Simpl; Tauto. -Apply Hrecl; Intros; Apply H; Simpl; Simpl in H0; Tauto. -Reflexivity. -Qed. - -Lemma AbsList_P2 : (l:Rlist;x,y:R) (In y (AbsList l x)) -> (EXT z : R | (In z l)/\``y==(Rabsolu (z-x))/2``). -Intros; Induction l. -Elim H. -Elim H; Intro. -Exists r; Split. -Simpl; Tauto. -Assumption. -Assert H1 := (Hrecl H0); Elim H1; Intros; Elim H2; Clear H2; Intros; Exists x0; Simpl; Simpl in H2; Tauto. -Qed. - (* Les parties compactes de R sont fermées *) Lemma compact_P2 : (X:R->Prop) (compact X) -> (ferme X). Intros; Assert H0 := (ferme_P1 X); Elim H0; Clear H0; Intros _ H0; Apply H0; Clear H0. @@ -1091,16 +979,6 @@ Apply Hyp. Unfold recouvrement_fini in H4; Elim H4; Clear H4; Intros; Unfold famille_finie in H5; Unfold domaine_fini in H5; Unfold famille_finie; Unfold domaine_fini; Elim H5; Clear H5; Intros l H5; Exists l; Intro; Elim (H5 x); Intros; Split; Intro; [Apply H6; Simpl; Simpl in H8; Apply H8 | Apply (H7 H8)]. Qed. -Lemma MaxRlist_P2 : (l:Rlist) (EXT y:R | (In y l)) -> (In (MaxRlist l) l). -Intros; Induction l. -Simpl in H; Elim H; Trivial. -Induction l. -Simpl; Left; Reflexivity. -Change (In (Rmax r (MaxRlist (cons r0 l))) (cons r (cons r0 l))); Unfold Rmax; Case (total_order_Rle r (MaxRlist (cons r0 l))); Intro. -Right; Apply Hrecl; Exists r0; Left; Reflexivity. -Left; Reflexivity. -Qed. - Theorem Bolzano_Weierstrass : (un:nat->R;X:R->Prop) (compact X) -> ((n:nat)(X (un n))) -> (EXT l:R | (ValAdh un l)). Intros; Cut (EXT l:R | (ValAdh_un un l)). Intro; Elim H1; Intros; Exists x; Elim (ValAdh_un_prop un x); Intros; Apply (H4 H2). @@ -1149,55 +1027,11 @@ Qed. Definition uniform_continuity [f:R->R;X:R->Prop] : Prop := (eps:posreal)(EXT delta:posreal | (x,y:R) (X x)->(X y)->``(Rabsolu (x-y))<delta`` ->``(Rabsolu ((f x)-(f y)))<eps``). -Fixpoint pos_Rl [l:Rlist] : nat->R := -[i:nat] Cases l of -| nil => R0 -| (cons a l') => - Cases i of - | O => a - | (S i') => (pos_Rl l' i') - end -end. - (* La borne supérieure, si elle existe, est unique *) Lemma is_lub_u : (E:R->Prop;x,y:R) (is_lub E x) -> (is_lub E y) -> x==y. Unfold is_lub; Intros; Elim H; Elim H0; Intros; Apply Rle_antisym; [Apply (H4 ? H1) | Apply (H2 ? H3)]. Qed. -Lemma pos_Rl_P1 : (l:Rlist;a:R) (lt O (longueur l)) -> (pos_Rl (cons a l) (longueur l))==(pos_Rl l (pred (longueur l))). -Intros; Induction l; [Elim (lt_n_O ? H) | Simpl; Case (longueur l); [Reflexivity | Intro; Reflexivity]]. -Qed. - -Lemma pos_Rl_P2 : (l:Rlist;x:R) (In x l)<->(EX i:nat | (lt i (longueur l))/\x==(pos_Rl l i)). -Intros; Induction l. -Split; Intro; [Elim H | Elim H; Intros; Elim H0; Intros; Elim (lt_n_O ? H1)]. -Split; Intro. -Elim H; Intro. -Exists O; Split; [Simpl; Apply lt_O_Sn | Simpl; Apply H0]. -Elim Hrecl; Intros; Assert H3 := (H1 H0); Elim H3; Intros; Elim H4; Intros; Exists (S x0); Split; [Simpl; Apply lt_n_S; Assumption | Simpl; Assumption]. -Elim H; Intros; Elim H0; Intros; Elim (zerop x0); Intro. -Rewrite a in H2; Simpl in H2; Left; Assumption. -Right; Elim Hrecl; Intros; Apply H4; Assert H5 : (S (pred x0))=x0. -Symmetry; Apply S_pred with O; Assumption. -Exists (pred x0); Split; [Simpl in H1; Apply lt_S_n; Rewrite H5; Assumption | Rewrite <- H5 in H2; Simpl in H2; Assumption]. -Qed. - -Lemma Rlist_P1 : (l:Rlist;P:R->R->Prop) ((x:R)(In x l)->(EXT y:R | (P x y))) -> (EXT l':Rlist | (longueur l)=(longueur l')/\(i:nat) (lt i (longueur l))->(P (pos_Rl l i) (pos_Rl l' i))). -Intros; Induction l. -Exists nil; Intros; Split; [Reflexivity | Intros; Simpl in H0; Elim (lt_n_O ? H0)]. -Assert H0 : (In r (cons r l)). -Simpl; Left; Reflexivity. -Assert H1 := (H ? H0); Assert H2 : (x:R)(In x l)->(EXT y:R | (P x y)). -Intros; Apply H; Simpl; Right; Assumption. -Assert H3 := (Hrecl H2); Elim H1; Intros; Elim H3; Intros; Exists (cons x x0); Intros; Elim H5; Clear H5; Intros; Split. -Simpl; Rewrite H5; Reflexivity. -Intros; Elim (zerop i); Intro. -Rewrite a; Simpl; Assumption. -Assert H8 : i=(S (pred i)). -Apply S_pred with O; Assumption. -Rewrite H8; Simpl; Apply H6; Simpl in H7; Apply lt_S_n; Rewrite <- H8; Assumption. -Qed. - Lemma domaine_P1 : (X:R->Prop) ~(EXT y:R | (X y))\/(EXT y:R | (X y)/\((x:R)(X x)->x==y))\/(EXT x:R | (EXT y:R | (X x)/\(X y)/\``x<>y``)). Intro; Elim (classic (EXT y:R | (X y))); Intro. Right; Elim H; Intros; Elim (classic (EXT y:R | (X y)/\``y<>x``)); Intro. diff --git a/theories/Reals/Rtrigo.v b/theories/Reals/Rtrigo.v index 86c1e124b..ace4d0a95 100644 --- a/theories/Reals/Rtrigo.v +++ b/theories/Reals/Rtrigo.v @@ -8,71 +8,21 @@ (*i $Id$ i*) -Require ZArith_base. -Require Zcomplements. -Require Classical_Prop. -Require DiscrR. -Require Rbase. -Require R_sqr. +Require RealsB. Require Rfunctions. -Require Rsigma. -Require Rlimit. -Require Binome. +Require SeqSeries. +Require Export Rtrigo_fun. Require Export Rtrigo_def. Require Export Rtrigo_alt. +Require Export Cos_rel. Require Export Cos_plus. +Require ZArith_base. +Require Zcomplements. +Require Classical_Prop. (** sin_PI2 is the only remaining axiom **) Axiom sin_PI2 : ``(sin (PI/2))==1``. -(* Here, we have the euclidian division *) -(* This lemma is used in the proof of sin_eq_0 : (sin x)=0<->x=kPI *) -Lemma euclidian_division : (x,y:R) ``y<>0`` -> (EXT k:Z | (EXT r : R | ``x==(IZR k)*y+r``/\``0<=r<(Rabsolu y)``)). -Intros. -Pose k0 := Cases (case_Rabsolu y) of - (leftT _) => (Zminus `1` (up ``x/-y``)) - | (rightT _) => (Zminus (up ``x/y``) `1`) end. -Exists k0. -Exists ``x-(IZR k0)*y``. -Split. -Ring. -Unfold k0; Case (case_Rabsolu y); Intro. -Assert H0 := (archimed ``x/-y``); Rewrite <- Z_R_minus; Simpl; Unfold Rminus. -Replace ``-((1+ -(IZR (up (x/( -y)))))*y)`` with ``((IZR (up (x/-y)))-1)*y``; [Idtac | Ring]. -Split. -Apply Rle_monotony_contra with ``/-y``. -Apply Rlt_Rinv; Apply Rgt_RO_Ropp; Exact r. -Rewrite Rmult_Or; Rewrite (Rmult_sym ``/-y``); Rewrite Rmult_Rplus_distrl; Rewrite <- Ropp_Rinv; [Idtac | Assumption]. -Rewrite Rmult_assoc; Repeat Rewrite Ropp_mul3; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]. -Apply Rle_anti_compatibility with ``(IZR (up (x/( -y))))-x/( -y)``. -Rewrite Rplus_Or; Unfold Rdiv; Pattern 4 ``/-y``; Rewrite <- Ropp_Rinv; [Idtac | Assumption]. -Replace ``(IZR (up (x*/ -y)))-x* -/y+( -(x*/y)+ -((IZR (up (x*/ -y)))-1))`` with R1; [Idtac | Ring]. -Elim H0; Intros _ H1; Unfold Rdiv in H1; Exact H1. -Rewrite (Rabsolu_left ? r); Apply Rlt_monotony_contra with ``/-y``. -Apply Rlt_Rinv; Apply Rgt_RO_Ropp; Exact r. -Rewrite <- Rinv_l_sym. -Rewrite (Rmult_sym ``/-y``); Rewrite Rmult_Rplus_distrl; Rewrite <- Ropp_Rinv; [Idtac | Assumption]. -Rewrite Rmult_assoc; Repeat Rewrite Ropp_mul3; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]; Apply Rlt_anti_compatibility with ``((IZR (up (x/( -y))))-1)``. -Replace ``(IZR (up (x/( -y))))-1+1`` with ``(IZR (up (x/( -y))))``; [Idtac | Ring]. -Replace ``(IZR (up (x/( -y))))-1+( -(x*/y)+ -((IZR (up (x/( -y))))-1))`` with ``-(x*/y)``; [Idtac | Ring]. -Rewrite <- Ropp_mul3; Rewrite (Ropp_Rinv ? H); Elim H0; Unfold Rdiv; Intros H1 _; Exact H1. -Apply Ropp_neq; Assumption. -Assert H0 := (archimed ``x/y``); Rewrite <- Z_R_minus; Simpl; Cut ``0<y``. -Intro; Unfold Rminus; Replace ``-(((IZR (up (x/y)))+ -1)*y)`` with ``(1-(IZR (up (x/y))))*y``; [Idtac | Ring]. -Split. -Apply Rle_monotony_contra with ``/y``. -Apply Rlt_Rinv; Assumption. -Rewrite Rmult_Or; Rewrite (Rmult_sym ``/y``); Rewrite Rmult_Rplus_distrl; Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]; Apply Rle_anti_compatibility with ``(IZR (up (x/y)))-x/y``; Rewrite Rplus_Or; Unfold Rdiv; Replace ``(IZR (up (x*/y)))-x*/y+(x*/y+(1-(IZR (up (x*/y)))))`` with R1; [Idtac | Ring]; Elim H0; Intros _ H2; Unfold Rdiv in H2; Exact H2. -Rewrite (Rabsolu_right ? r); Apply Rlt_monotony_contra with ``/y``. -Apply Rlt_Rinv; Assumption. -Rewrite <- (Rinv_l_sym ? H); Rewrite (Rmult_sym ``/y``); Rewrite Rmult_Rplus_distrl; Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym; [Rewrite Rmult_1r | Assumption]; Apply Rlt_anti_compatibility with ``((IZR (up (x/y)))-1)``; Replace ``(IZR (up (x/y)))-1+1`` with ``(IZR (up (x/y)))``; [Idtac | Ring]; Replace ``(IZR (up (x/y)))-1+(x*/y+(1-(IZR (up (x/y)))))`` with ``x*/y``; [Idtac | Ring]; Elim H0; Unfold Rdiv; Intros H2 _; Exact H2. -Case (total_order_T R0 y); Intro. -Elim s; Intro. -Assumption. -Elim H; Symmetry; Exact b. -Assert H1 := (Rle_sym2 ? ? r); Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H1 r0)). -Qed. - (**********) Lemma PI_neq0 : ~``PI==0``. Red; Intro; Assert H0 := PI_RGT_0; Rewrite H in H0; Elim (Rlt_antirefl ? H0). @@ -341,9 +291,9 @@ Do 2 Rewrite Rmult_1r; Apply Rle_lt_trans with ``(INR (fact (plus (mult (S (S O) Apply Rle_monotony. Replace R0 with (INR O); [Idtac | Reflexivity]; Apply le_INR; Apply le_O_n. Simpl; Rewrite Rmult_1r; Replace ``4`` with ``(Rsqr 2)``; [Idtac | SqRing]; Replace ``a*a`` with (Rsqr a); [Idtac | Reflexivity]; Apply Rsqr_incr_1. -Apply Rle_trans with ``PI/2``; [Assumption | Unfold Rdiv; Apply Rle_monotony_contra with ``2``; [ Apply Rgt_2_0 | Rewrite <- Rmult_assoc; Rewrite Rinv_r_simpl_m; [Replace ``2*2`` with ``4``; [Apply PI_4 | Ring] | DiscrR]]]. +Apply Rle_trans with ``PI/2``; [Assumption | Unfold Rdiv; Apply Rle_monotony_contra with ``2``; [ Sup0 | Rewrite <- Rmult_assoc; Rewrite Rinv_r_simpl_m; [Replace ``2*2`` with ``4``; [Apply PI_4 | Ring] | DiscrR]]]. Left; Assumption. -Left; Apply Rgt_2_0. +Left; Sup0. Rewrite H1; Replace (plus (plus (mult (S (S O)) n) (S O)) (S (S O))) with (S (S (plus (mult (S (S O)) n) (S O)))). Do 2 Rewrite fact_simpl; Do 2 Rewrite mult_INR; Rewrite <- Rmult_assoc; Rewrite <- (Rmult_sym (INR (fact (plus (mult (S (S O)) n) (S O))))). Apply Rlt_monotony. @@ -357,7 +307,7 @@ Apply ge0_plus_gt0_is_gt0. Cut ``0<=x``. Intro; Apply ge0_plus_ge0_is_ge0; Repeat Apply Rmult_le_pos; Try (Left; Sup0) Orelse Assumption. Unfold x; Replace R0 with (INR O); [Rewrite <- INR_eq_INR2; Apply le_INR; Apply le_O_n | Reflexivity]. -Apply Rgt_2_0. +Sup0. Apply INR_eq; Do 2 Rewrite S_INR; Do 3 Rewrite plus_INR; Rewrite mult_INR; Repeat Rewrite S_INR; Ring. Apply INR_fact_neq_0. Apply INR_fact_neq_0. @@ -383,7 +333,7 @@ Apply PI_RGT_0. Apply Rinv_lt. Apply Rmult_lt_pos; Sup0. Pattern 1 ``2``; Rewrite <- Rplus_Or. -Replace ``4`` with ``2+2``; [Apply Rlt_compatibility; Apply Rgt_2_0 | Ring]. +Replace ``4`` with ``2+2``; [Apply Rlt_compatibility; Sup0 | Ring]. Qed. Lemma PI2_Rlt_PI : ``PI/2<PI``. @@ -391,7 +341,7 @@ Unfold Rdiv; Pattern 2 PI; Rewrite <- Rmult_1r. Apply Rlt_monotony. Apply PI_RGT_0. Pattern 3 R1; Rewrite <- Rinv_R1; Apply Rinv_lt. -Rewrite Rmult_1l; Apply Rgt_2_0. +Rewrite Rmult_1l; Sup0. Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rlt_compatibility; Apply Rlt_R0_R1. Qed. @@ -531,33 +481,40 @@ Qed. Lemma sin_increasing_0 : (x,y:R) ``-(PI/2)<=x``->``x<=PI/2``->``-(PI/2)<=y``->``y<=PI/2``->``(sin x)<(sin y)``->``x<y``. Intros; Cut ``(sin ((x-y)/2))<0``. Intro H4; Case (total_order ``(x-y)/2`` ``0``); Intro H5. -Generalize (Rlt_monotony ``2`` ``(x-y)/2`` ``0`` Rgt_2_0 H5). +Assert Hyp : ``0<2``. +Sup0. +Generalize (Rlt_monotony ``2`` ``(x-y)/2`` ``0`` Hyp H5). Unfold Rdiv. Rewrite <- Rmult_assoc. Rewrite Rinv_r_simpl_m. Rewrite Rmult_Or. Clear H5; Intro H5; Apply Rminus_lt; Assumption. -Apply aze. +DiscrR. Elim H5; Intro H6. Rewrite H6 in H4; Rewrite sin_0 in H4; Elim (Rlt_antirefl ``0`` H4). Change ``0<(x-y)/2`` in H6; Generalize (Rle_Ropp ``-(PI/2)`` y H1). Rewrite Ropp_Ropp. Intro H7; Generalize (Rle_sym2 ``-y`` ``PI/2`` H7); Clear H7; Intro H7; Generalize (Rplus_le x ``PI/2`` ``-y`` ``PI/2`` H0 H7). Rewrite <- double_var. -Intro H8; Generalize (Rle_monotony ``(Rinv 2)`` ``x-y`` PI (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Rgt_2_0)) H8). +Intro H8. +Assert Hyp : ``0<2``. +Sup0. +Generalize (Rle_monotony ``(Rinv 2)`` ``x-y`` PI (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Hyp)) H8). Repeat Rewrite (Rmult_sym ``/2``). Intro H9; Generalize (sin_gt_0 ``(x-y)/2`` H6 (Rle_lt_trans ``(x-y)/2`` ``PI/2`` PI H9 PI2_Rlt_PI)); Intro H10; Elim (Rlt_antirefl ``(sin ((x-y)/2))`` (Rlt_trans ``(sin ((x-y)/2))`` ``0`` ``(sin ((x-y)/2))`` H4 H10)). Generalize (Rlt_minus (sin x) (sin y) H3); Clear H3; Intro H3; Rewrite form4 in H3; Generalize (Rplus_le x ``PI/2`` y ``PI/2`` H0 H2). Rewrite <- double_var. -Intro H4; Generalize (Rle_monotony ``(Rinv 2)`` ``x+y`` PI (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Rgt_2_0)) H4). +Assert Hyp : ``0<2``. +Sup0. +Intro H4; Generalize (Rle_monotony ``(Rinv 2)`` ``x+y`` PI (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Hyp)) H4). Repeat Rewrite (Rmult_sym ``/2``). Clear H4; Intro H4; Generalize (Rplus_le ``-(PI/2)`` x ``-(PI/2)`` y H H1); Replace ``-(PI/2)+(-(PI/2))`` with ``-PI``. -Intro H5; Generalize (Rle_monotony ``(Rinv 2)`` ``-PI`` ``x+y`` (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Rgt_2_0)) H5). +Intro H5; Generalize (Rle_monotony ``(Rinv 2)`` ``-PI`` ``x+y`` (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Hyp)) H5). Replace ``/2*(x+y)`` with ``(x+y)/2``. Replace ``/2*(-PI)`` with ``-(PI/2)``. Clear H5; Intro H5; Elim H4; Intro H40. Elim H5; Intro H50. -Generalize (cos_gt_0 ``(x+y)/2`` H50 H40); Intro H6; Generalize (Rlt_monotony ``2`` ``0`` ``(cos ((x+y)/2))`` Rgt_2_0 H6). +Generalize (cos_gt_0 ``(x+y)/2`` H50 H40); Intro H6; Generalize (Rlt_monotony ``2`` ``0`` ``(cos ((x+y)/2))`` Hyp H6). Rewrite Rmult_Or. Clear H6; Intro H6; Case (case_Rabsolu ``(sin ((x-y)/2))``); Intro H7. Assumption. @@ -576,20 +533,22 @@ Qed. Lemma sin_increasing_1 : (x,y:R) ``-(PI/2)<=x``->``x<=PI/2``->``-(PI/2)<=y``->``y<=PI/2``->``x<y``->``(sin x)<(sin y)``. Intros; Generalize (Rlt_compatibility ``x`` ``x`` ``y`` H3); Intro H4; Generalize (Rplus_le ``-(PI/2)`` x ``-(PI/2)`` x H H); Replace ``-(PI/2)+ (-(PI/2))`` with ``-PI``. -Intro H5; Generalize (Rle_lt_trans ``-PI`` ``x+x`` ``x+y`` H5 H4); Intro H6; Generalize (Rlt_monotony ``(Rinv 2)`` ``-PI`` ``x+y`` (Rlt_Rinv ``2`` Rgt_2_0) H6); Replace ``/2*(-PI)`` with ``-(PI/2)``. +Assert Hyp : ``0<2``. +Sup0. +Intro H5; Generalize (Rle_lt_trans ``-PI`` ``x+x`` ``x+y`` H5 H4); Intro H6; Generalize (Rlt_monotony ``(Rinv 2)`` ``-PI`` ``x+y`` (Rlt_Rinv ``2`` Hyp) H6); Replace ``/2*(-PI)`` with ``-(PI/2)``. Replace ``/2*(x+y)`` with ``(x+y)/2``. Clear H4 H5 H6; Intro H4; Generalize (Rlt_compatibility ``y`` ``x`` ``y`` H3); Intro H5; Rewrite Rplus_sym in H5; Generalize (Rplus_le y ``PI/2`` y ``PI/2`` H2 H2). Rewrite <- double_var. -Intro H6; Generalize (Rlt_le_trans ``x+y`` ``y+y`` PI H5 H6); Intro H7; Generalize (Rlt_monotony ``(Rinv 2)`` ``x+y`` PI (Rlt_Rinv ``2`` Rgt_2_0) H7); Replace ``/2*PI`` with ``PI/2``. +Intro H6; Generalize (Rlt_le_trans ``x+y`` ``y+y`` PI H5 H6); Intro H7; Generalize (Rlt_monotony ``(Rinv 2)`` ``x+y`` PI (Rlt_Rinv ``2`` Hyp) H7); Replace ``/2*PI`` with ``PI/2``. Replace ``/2*(x+y)`` with ``(x+y)/2``. Clear H5 H6 H7; Intro H5; Generalize (Rle_Ropp ``-(PI/2)`` y H1); Rewrite Ropp_Ropp; Clear H1; Intro H1; Generalize (Rle_sym2 ``-y`` ``PI/2`` H1); Clear H1; Intro H1; Generalize (Rle_Ropp y ``PI/2`` H2); Clear H2; Intro H2; Generalize (Rle_sym2 ``-(PI/2)`` ``-y`` H2); Clear H2; Intro H2; Generalize (Rlt_compatibility ``-y`` x y H3); Replace ``-y+x`` with ``x-y``. Rewrite Rplus_Ropp_l. -Intro H6; Generalize (Rlt_monotony ``(Rinv 2)`` ``x-y`` ``0`` (Rlt_Rinv ``2`` Rgt_2_0) H6); Rewrite Rmult_Or; Replace ``/2*(x-y)`` with ``(x-y)/2``. +Intro H6; Generalize (Rlt_monotony ``(Rinv 2)`` ``x-y`` ``0`` (Rlt_Rinv ``2`` Hyp) H6); Rewrite Rmult_Or; Replace ``/2*(x-y)`` with ``(x-y)/2``. Clear H6; Intro H6; Generalize (Rplus_le ``-(PI/2)`` x ``-(PI/2)`` ``-y`` H H2); Replace ``-(PI/2)+ (-(PI/2))`` with ``-PI``. Replace `` x+ -y`` with ``x-y``. -Intro H7; Generalize (Rle_monotony ``(Rinv 2)`` ``-PI`` ``x-y`` (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Rgt_2_0)) H7); Replace ``/2*(-PI)`` with ``-(PI/2)``. +Intro H7; Generalize (Rle_monotony ``(Rinv 2)`` ``-PI`` ``x-y`` (Rlt_le ``0`` ``/2`` (Rlt_Rinv ``2`` Hyp)) H7); Replace ``/2*(-PI)`` with ``-(PI/2)``. Replace ``/2*(x-y)`` with ``(x-y)/2``. -Clear H7; Intro H7; Clear H H0 H1 H2; Apply Rminus_lt; Rewrite form4; Generalize (cos_gt_0 ``(x+y)/2`` H4 H5); Intro H8; Generalize (Rmult_lt_pos ``2`` ``(cos ((x+y)/2))`` Rgt_2_0 H8); Clear H8; Intro H8; Cut ``-PI< -(PI/2)``. +Clear H7; Intro H7; Clear H H0 H1 H2; Apply Rminus_lt; Rewrite form4; Generalize (cos_gt_0 ``(x+y)/2`` H4 H5); Intro H8; Generalize (Rmult_lt_pos ``2`` ``(cos ((x+y)/2))`` Hyp H8); Clear H8; Intro H8; Cut ``-PI< -(PI/2)``. Intro H9; Generalize (sin_lt_0_var ``(x-y)/2`` (Rlt_le_trans ``-PI`` ``-(PI/2)`` ``(x-y)/2`` H9 H7) H6); Intro H10; Generalize (Rlt_anti_monotony ``(sin ((x-y)/2))`` ``0`` ``2*(cos ((x+y)/2))`` H10 H8); Intro H11; Rewrite Rmult_Or in H11; Rewrite Rmult_sym; Assumption. Apply Rlt_Ropp; Apply PI2_Rlt_PI. Unfold Rdiv; Apply Rmult_sym. @@ -760,7 +719,6 @@ Assumption. Assumption. Qed. - Lemma tan_increasing_0 : (x,y:R) ``-(PI/4)<=x``->``x<=PI/4`` ->``-(PI/4)<=y``->``y<=PI/4``->``(tan x)<(tan y)``->``x<y``. Intros; Generalize PI4_RLT_PI2; Intro H4; Generalize (Rlt_Ropp ``PI/4`` ``PI/2`` H4); Intro H5; Change ``-(PI/2)< -(PI/4)`` in H5; Generalize (cos_gt_0 x (Rlt_le_trans ``-(PI/2)`` ``-(PI/4)`` x H5 H) (Rle_lt_trans x ``PI/4`` ``PI/2`` H0 H4)); Intro HP1; Generalize (cos_gt_0 y (Rlt_le_trans ``-(PI/2)`` ``-(PI/4)`` y H5 H1) (Rle_lt_trans y ``PI/4`` ``PI/2`` H2 H4)); Intro HP2; Generalize (not_sym ``0`` (cos x) (Rlt_not_eq ``0`` (cos x) (cos_gt_0 x (Rlt_le_trans ``-(PI/2)`` ``-(PI/4)`` x H5 H) (Rle_lt_trans x ``PI/4`` ``PI/2`` H0 H4)))); Intro H6; Generalize (not_sym ``0`` (cos y) (Rlt_not_eq ``0`` (cos y) (cos_gt_0 y (Rlt_le_trans ``-(PI/2)`` ``-(PI/4)`` y H5 H1) (Rle_lt_trans y ``PI/4`` ``PI/2`` H2 H4)))); Intro H7; Generalize (tan_diff x y H6 H7); Intro H8; Generalize (Rlt_minus (tan x) (tan y) H3); Clear H3; Intro H3; Rewrite H8 in H3; Cut ``(sin (x-y))<0``. Intro H9; Generalize (Rle_Ropp ``-(PI/4)`` y H1); Rewrite Ropp_Ropp; Intro H10; Generalize (Rle_sym2 ``-y`` ``PI/4`` H10); Clear H10; Intro H10; Generalize (Rle_Ropp y ``PI/4`` H2); Intro H11; Generalize (Rle_sym2 ``-(PI/4)`` ``-y`` H11); Clear H11; Intro H11; Generalize (Rplus_le ``-(PI/4)`` x ``-(PI/4)`` ``-y`` H H11); Generalize (Rplus_le x ``PI/4`` ``-y`` ``PI/4`` H0 H10); Replace ``x+ -y`` with ``x-y``. @@ -780,8 +738,8 @@ Rewrite Ropp_distr1. Replace ``2*2`` with ``4``. Reflexivity. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Pattern 1 PI; Rewrite double_var. Unfold Rdiv. Rewrite Rmult_Rplus_distrl. @@ -790,8 +748,8 @@ Rewrite <- Rinv_Rmult. Replace ``2*2`` with ``4``. Reflexivity. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Reflexivity. Case (case_Rabsolu ``(sin (x-y))``); Intro H9. Assumption. @@ -817,8 +775,8 @@ Replace ``2*2`` with ``4``. Rewrite Ropp_distr1. Reflexivity. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Reflexivity. Apply Rinv_Rmult; Assumption. Qed. @@ -1076,7 +1034,7 @@ Rewrite (double PI); Pattern 3 4 PI; Rewrite (double_var PI); Ring. Apply ge0_plus_ge0_is_ge0. Left; Unfold Rdiv; Apply Rmult_lt_pos. Apply PI_RGT_0. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Assumption. Elim H2; Intro. Right; Assumption. @@ -1097,7 +1055,9 @@ Intro; Cut `` -1 < (IZR (Zplus (NEG (xO xH)) k0)) < 1``. Intro; Generalize (one_IZR_lt1 (Zplus (NEG (xO xH)) k0) H12); Intro. Cut k0=`2`. Intro; Rewrite H14 in H8. -Generalize (Rle_monotony ``2`` ``(IZR (POS (xO xH)))`` ``3*/2`` (Rlt_le ``0`` ``2`` Rgt_2_0) H8); Simpl. +Assert Hyp : ``0<2``. +Sup0. +Generalize (Rle_monotony ``2`` ``(IZR (POS (xO xH)))`` ``3*/2`` (Rlt_le ``0`` ``2`` Hyp) H8); Simpl. Replace ``2*2`` with ``4``. Replace ``2*(3*/2)`` with ``3``. Intro; Cut ``3<4``. @@ -1107,7 +1067,7 @@ Replace ``3+1`` with ``4``. Intro; Assumption. Ring. Symmetry; Rewrite <- Rmult_assoc; Apply Rinv_r_simpl_m. -Apply aze. +DiscrR. Ring. Rewrite <- (Zplus_inverse_l `2`) in H13; Generalize (Zsimpl_plus_l `-2` k0 `2` H13); Intro; Assumption. Split. @@ -1117,15 +1077,15 @@ Assumption. Simpl; Replace ``-2+3*/2`` with ``-(1*/2)``. Apply Rlt_trans with ``0``. Rewrite <- Ropp_O; Apply Rlt_Ropp. -Apply Rmult_lt_pos; [Apply Rlt_R0_R1 | Apply Rlt_Rinv; Apply Rgt_2_0]. +Apply Rmult_lt_pos; [Apply Rlt_R0_R1 | Apply Rlt_Rinv; Sup0]. Apply Rlt_R0_R1. Rewrite Rmult_1l; Apply r_Rmult_mult with ``2``. Rewrite Ropp_mul3; Rewrite <- Rinv_r_sym. Rewrite Rmult_Rplus_distr; Rewrite <- Rmult_assoc; Rewrite Rinv_r_simpl_m. Ring. -Apply aze. -Apply aze. -Apply aze. +DiscrR. +DiscrR. +DiscrR. Simpl; Ring. Simpl; Ring. Apply PI_neq0. diff --git a/theories/Reals/Rtrigo_alt.v b/theories/Reals/Rtrigo_alt.v index 5cdfd96ce..1cf745281 100644 --- a/theories/Reals/Rtrigo_alt.v +++ b/theories/Reals/Rtrigo_alt.v @@ -8,11 +8,9 @@ (*i $Id$ i*) -Require DiscrR. -Require Rbase. -Require Rseries. -Require Binome. -Require Rcomplet. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo_def. (*****************************************************************) @@ -38,223 +36,6 @@ Apply Rlt_Rinv; Sup0. Rewrite <- Rinv_l_sym; [Rewrite Rmult_sym; Assumption | DiscrR]. Qed. -(* Un -> +oo *) -Definition cv_infty [Un:nat->R] : Prop := (M:R)(EXT N:nat | (n:nat) (le N n) -> ``M<(Un n)``). - -(* Un -> +oo => /Un -> O *) -Lemma cv_infty_cv_R0 : (Un:nat->R) ((n:nat)``(Un n)<>0``) -> (cv_infty Un) -> (Un_cv [n:nat]``/(Un n)`` R0). -Unfold cv_infty Un_cv; Unfold R_dist; Intros. -Elim (H0 ``/eps``); Intros N0 H2. -Exists N0; Intros. -Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Rewrite (Rabsolu_Rinv ? (H n)). -Apply Rlt_monotony_contra with (Rabsolu (Un n)). -Apply Rabsolu_pos_lt; Apply H. -Rewrite <- Rinv_r_sym. -Apply Rlt_monotony_contra with ``/eps``. -Apply Rlt_Rinv; Assumption. -Rewrite Rmult_1r; Rewrite (Rmult_sym ``/eps``); Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym. -Rewrite Rmult_1r; Apply Rlt_le_trans with (Un n). -Apply H2; Assumption. -Apply Rle_Rabsolu. -Red; Intro; Rewrite H4 in H1; Elim (Rlt_antirefl ? H1). -Apply Rabsolu_no_R0; Apply H. -Qed. - -(**********) -Lemma sum_eq_R0 : (An:nat->R;N:nat) ((n:nat)(le n N)->``(An n)==0``) -> (sum_f_R0 An N)==R0. -Intros; Induction N. -Simpl; Apply H; Apply le_n. -Rewrite tech5; Rewrite HrecN; [Rewrite Rplus_Ol; Apply H; Apply le_n | Intros; Apply H; Apply le_trans with N; [Assumption | Apply le_n_Sn]]. -Qed. - -(**********) -Lemma decreasing_prop : (Un:nat->R;m,n:nat) (Un_decreasing Un) -> (le m n) -> ``(Un n)<=(Un m)``. -Unfold Un_decreasing; Intros. -Induction n. -Induction m. -Right; Reflexivity. -Elim (le_Sn_O ? H0). -Cut (le m n)\/m=(S n). -Intro; Elim H1; Intro. -Apply Rle_trans with (Un n). -Apply H. -Apply Hrecn; Assumption. -Rewrite H2; Right; Reflexivity. -Inversion H0; [Right; Reflexivity | Left; Assumption]. -Qed. - -(* |x|^n/n! -> 0 *) -Lemma cv_speed_pow_fact : (x:R) (Un_cv [n:nat]``(pow x n)/(INR (fact n))`` R0). -Intro; Cut (Un_cv [n:nat]``(pow (Rabsolu x) n)/(INR (fact n))`` R0) -> (Un_cv [n:nat]``(pow x n)/(INR (fact n))`` ``0``). -Intro; Apply H. -Unfold Un_cv; Unfold R_dist; Intros; Case (Req_EM x R0); Intro. -Exists (S O); Intros. -Rewrite H1; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Rewrite Rabsolu_R0; Rewrite pow_ne_zero; [Unfold Rdiv; Rewrite Rmult_Ol; Rewrite Rabsolu_R0; Assumption | Red; Intro; Rewrite H3 in H2; Elim (le_Sn_n ? H2)]. -Assert H2 := (Rabsolu_pos_lt x H1); Pose M := (up (Rabsolu x)); Cut `0<=M`. -Intro; Elim (IZN M H3); Intros M_nat H4. -Pose Un := [n:nat]``(pow (Rabsolu x) (plus M_nat n))/(INR (fact (plus M_nat n)))``. -Cut (Un_cv Un R0); Unfold Un_cv; Unfold R_dist; Intros. -Elim (H5 eps H0); Intros N H6. -Exists (plus M_nat N); Intros; Cut (EX p:nat | (ge p N)/\n=(plus M_nat p)). -Intro; Elim H8; Intros p H9. -Elim H9; Intros; Rewrite H11; Unfold Un in H6; Apply H6; Assumption. -Exists (minus n M_nat). -Split. -Unfold ge; Apply simpl_le_plus_l with M_nat; Rewrite <- le_plus_minus. -Assumption. -Apply le_trans with (plus M_nat N). -Apply le_plus_l. -Assumption. -Apply le_plus_minus; Apply le_trans with (plus M_nat N); [Apply le_plus_l | Assumption]. -Pose Vn := [n:nat]``(Rabsolu x)*(Un O)/(INR (S n))``. -Cut (le (1) M_nat). -Intro; Cut (n:nat)``0<(Un n)``. -Intro; Cut (Un_decreasing Un). -Intro; Cut (n:nat)``(Un (S n))<=(Vn n)``. -Intro; Cut (Un_cv Vn R0). -Unfold Un_cv; Unfold R_dist; Intros. -Elim (H10 eps0 H5); Intros N1 H11. -Exists (S N1); Intros. -Cut (n:nat)``0<(Vn n)``. -Intro; Apply Rle_lt_trans with ``(Rabsolu ((Vn (pred n))-0))``. -Repeat Rewrite Rabsolu_right. -Unfold Rminus; Rewrite Ropp_O; Do 2 Rewrite Rplus_Or; Replace n with (S (pred n)). -Apply H9. -Inversion H12; Simpl; Reflexivity. -Apply Rle_sym1; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Left; Apply H13. -Apply Rle_sym1; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Left; Apply H7. -Apply H11; Unfold ge; Apply le_S_n; Replace (S (pred n)) with n; [Unfold ge in H12; Exact H12 | Inversion H12; Simpl; Reflexivity]. -Intro; Apply Rlt_le_trans with (Un (S n0)); [Apply H7 | Apply H9]. -Cut (cv_infty [n:nat](INR (S n))). -Intro; Cut (Un_cv [n:nat]``/(INR (S n))`` R0). -Unfold Un_cv R_dist; Intros; Unfold Vn. -Cut ``0<eps1/((Rabsolu x)*(Un O))``. -Intro; Elim (H11 ? H13); Intros N H14. -Exists N; Intros; Replace ``(Rabsolu x)*(Un O)/(INR (S n))-0`` with ``((Rabsolu x)*(Un O))*(/(INR (S n))-0)``; [Idtac | Unfold Rdiv; Ring]. -Rewrite Rabsolu_mult; Apply Rlt_monotony_contra with ``/(Rabsolu ((Rabsolu x)*(Un O)))``. -Apply Rlt_Rinv; Apply Rabsolu_pos_lt. -Apply prod_neq_R0. -Apply Rabsolu_no_R0; Assumption. -Assert H16 := (H7 O); Red; Intro; Rewrite H17 in H16; Elim (Rlt_antirefl ? H16). -Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. -Rewrite Rmult_1l. -Replace ``/(Rabsolu ((Rabsolu x)*(Un O)))*eps1`` with ``eps1/((Rabsolu x)*(Un O))``. -Apply H14; Assumption. -Unfold Rdiv; Rewrite (Rabsolu_right ``(Rabsolu x)*(Un O)``). -Apply Rmult_sym. -Apply Rle_sym1; Apply Rmult_le_pos. -Apply Rabsolu_pos. -Left; Apply H7. -Apply Rabsolu_no_R0. -Apply prod_neq_R0; [Apply Rabsolu_no_R0; Assumption | Assert H16 := (H7 O); Red; Intro; Rewrite H17 in H16; Elim (Rlt_antirefl ? H16)]. -Unfold Rdiv; Apply Rmult_lt_pos. -Assumption. -Apply Rlt_Rinv; Apply Rmult_lt_pos. -Apply Rabsolu_pos_lt; Assumption. -Apply H7. -Apply (cv_infty_cv_R0 [n:nat]``(INR (S n))``). -Intro; Apply not_O_INR; Discriminate. -Assumption. -Unfold cv_infty; Intro; Case (total_order_T M0 R0); Intro. -Elim s; Intro. -Exists O; Intros. -Apply Rlt_trans with R0; [Assumption | Apply lt_INR_0; Apply lt_O_Sn]. -Exists O; Intros; Rewrite b; Apply lt_INR_0; Apply lt_O_Sn. -Pose M0_z := (up M0). -Assert H10 := (archimed M0). -Cut `0<=M0_z`. -Intro; Elim (IZN ? H11); Intros M0_nat H12. -Exists M0_nat; Intros. -Apply Rlt_le_trans with (IZR M0_z). -Elim H10; Intros; Assumption. -Rewrite H12; Rewrite <- INR_IZR_INZ; Apply le_INR. -Apply le_trans with n; [Assumption | Apply le_n_Sn]. -Apply le_IZR; Left; Simpl; Unfold M0_z; Apply Rlt_trans with M0; [Assumption | Elim H10; Intros; Assumption]. -Intro; Apply Rle_trans with ``(Rabsolu x)*(Un n)*/(INR (S n))``. -Unfold Un; Replace (plus M_nat (S n)) with (plus (plus M_nat n) (1)). -Rewrite pow_add; Replace (pow (Rabsolu x) (S O)) with (Rabsolu x); [Idtac | Simpl; Ring]. -Unfold Rdiv; Rewrite <- (Rmult_sym (Rabsolu x)); Repeat Rewrite Rmult_assoc; Repeat Apply Rle_monotony. -Apply Rabsolu_pos. -Left; Apply pow_lt; Assumption. -Replace (plus (plus M_nat n) (S O)) with (S (plus M_nat n)). -Rewrite fact_simpl; Rewrite mult_sym; Rewrite mult_INR; Rewrite Rinv_Rmult. -Apply Rle_monotony. -Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H10 := (sym_eq ? ? ? H9); Elim (fact_neq_0 ? H10). -Left; Apply Rinv_lt. -Apply Rmult_lt_pos; Apply lt_INR_0; Apply lt_O_Sn. -Apply lt_INR; Apply lt_n_S. -Pattern 1 n; Replace n with (plus O n); [Idtac | Reflexivity]. -Apply lt_reg_r. -Apply lt_le_trans with (S O); [Apply lt_O_Sn | Assumption]. -Apply INR_fact_neq_0. -Apply not_O_INR; Discriminate. -Apply INR_eq; Rewrite S_INR; Do 3 Rewrite plus_INR; Reflexivity. -Apply INR_eq; Do 3 Rewrite plus_INR; Do 2 Rewrite S_INR; Ring. -Unfold Vn; Rewrite Rmult_assoc; Unfold Rdiv; Rewrite (Rmult_sym (Un O)); Rewrite (Rmult_sym (Un n)). -Repeat Apply Rle_monotony. -Apply Rabsolu_pos. -Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply lt_O_Sn. -Apply decreasing_prop; [Assumption | Apply le_O_n]. -Unfold Un_decreasing; Intro; Unfold Un. -Replace (plus M_nat (S n)) with (plus (plus M_nat n) (1)). -Rewrite pow_add; Unfold Rdiv; Rewrite Rmult_assoc; Apply Rle_monotony. -Left; Apply pow_lt; Assumption. -Replace (pow (Rabsolu x) (S O)) with (Rabsolu x); [Idtac | Simpl; Ring]. -Replace (plus (plus M_nat n) (S O)) with (S (plus M_nat n)). -Apply Rle_monotony_contra with (INR (fact (S (plus M_nat n)))). -Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H9 := (sym_eq ? ? ? H8); Elim (fact_neq_0 ? H9). -Rewrite (Rmult_sym (Rabsolu x)); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym. -Rewrite Rmult_1l. -Rewrite fact_simpl; Rewrite mult_INR; Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym. -Rewrite Rmult_1r; Apply Rle_trans with (INR M_nat). -Left; Rewrite INR_IZR_INZ. -Rewrite <- H4; Assert H8 := (archimed (Rabsolu x)); Elim H8; Intros; Assumption. -Apply le_INR; Apply le_trans with (S M_nat); [Apply le_n_Sn | Apply le_n_S; Apply le_plus_l]. -Apply INR_fact_neq_0. -Apply INR_fact_neq_0. -Apply INR_eq; Rewrite S_INR; Do 3 Rewrite plus_INR; Reflexivity. -Apply INR_eq; Do 3 Rewrite plus_INR; Do 2 Rewrite S_INR; Ring. -Intro; Unfold Un; Unfold Rdiv; Apply Rmult_lt_pos. -Apply pow_lt; Assumption. -Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H8 := (sym_eq ? ? ? H7); Elim (fact_neq_0 ? H8). -Clear Un Vn; Apply INR_le; Simpl. -Induction M_nat. -Assert H6 := (archimed (Rabsolu x)); Fold M in H6; Elim H6; Intros. -Rewrite H4 in H7; Rewrite <- INR_IZR_INZ in H7. -Simpl in H7; Elim (Rlt_antirefl ? (Rlt_trans ? ? ? H2 H7)). -Replace R1 with (INR (S O)); [Apply le_INR | Reflexivity]; Apply le_n_S; Apply le_O_n. -Apply le_IZR; Simpl; Left; Apply Rlt_trans with (Rabsolu x). -Assumption. -Elim (archimed (Rabsolu x)); Intros; Assumption. -Unfold Un_cv; Unfold R_dist; Intros; Elim (H eps H0); Intros. -Exists x0; Intros; Apply Rle_lt_trans with ``(Rabsolu ((pow (Rabsolu x) n)/(INR (fact n))-0))``. -Unfold Rminus; Rewrite Ropp_O; Do 2 Rewrite Rplus_Or; Rewrite (Rabsolu_right ``(pow (Rabsolu x) n)/(INR (fact n))``). -Unfold Rdiv; Rewrite Rabsolu_mult; Rewrite (Rabsolu_right ``/(INR (fact n))``). -Rewrite Pow_Rabsolu; Right; Reflexivity. -Apply Rle_sym1; Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H4 := (sym_eq ? ? ? H3); Elim (fact_neq_0 ? H4). -Apply Rle_sym1; Unfold Rdiv; Apply Rmult_le_pos. -Case (Req_EM x R0); Intro. -Rewrite H3; Rewrite Rabsolu_R0. -Induction n; [Simpl; Left; Apply Rlt_R0_R1 | Simpl; Rewrite Rmult_Ol; Right; Reflexivity]. -Left; Apply pow_lt; Apply Rabsolu_pos_lt; Assumption. -Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H4 := (sym_eq ? ? ? H3); Elim (fact_neq_0 ? H4). -Apply H1; Assumption. -Qed. - -Lemma pow_Rsqr : (x:R;n:nat) (pow x (mult (2) n))==(pow (Rsqr x) n). -Intros; Induction n. -Reflexivity. -Replace (mult (2) (S n)) with (S (S (mult (2) n))). -Replace (pow x (S (S (mult (2) n)))) with ``x*x*(pow x (mult (S (S O)) n))``. -Rewrite Hrecn; Reflexivity. -Simpl; Ring. -Apply INR_eq; Do 2 Rewrite S_INR; Do 2 Rewrite mult_INR; Repeat Rewrite S_INR; Ring. -Qed. - -Lemma Ropp_mul3 : (r1,r2:R) ``r1*(-r2) == -(r1*r2)``. -Intros; Rewrite <- Ropp_mul1; Ring. -Qed. - (**********) (* Un encadrement de sin par ses sommes partielles sur [0;PI] *) Theorem sin_bound : (a:R; n:nat) ``0 <= a``->``a <= PI``->``(sin_approx a (plus (mult (S (S O)) n) (S O))) <= (sin a)<= (sin_approx a (mult (S (S O)) (plus n (S O))))``. @@ -384,12 +165,6 @@ Apply INR_eq; Rewrite S_INR; Rewrite plus_INR; Rewrite mult_INR; Repeat Rewrite Inversion H; [Assumption | Elim Hyp_a; Symmetry; Assumption]. Qed. -Lemma pow_le : (a:R;n:nat) ``0<=a`` -> ``0<=(pow a n)``. -Intros; Induction n. -Simpl; Left; Apply Rlt_R0_R1. -Simpl; Apply Rmult_le_pos; Assumption. -Qed. - (**********) (* Un encadrement de cos par ses sommes partielles sur [-PI/2;PI/2] *) (* La preuve utilise bien sur la parite de cos et des sommes partielles *) @@ -428,12 +203,12 @@ Apply Rsqr_incr_1. Apply Rle_trans with ``PI/2``. Assumption. Unfold Rdiv; Apply Rle_monotony_contra with ``2``. -Apply Rgt_2_0. +Sup0. Rewrite <- Rmult_assoc; Rewrite Rinv_r_simpl_m. Replace ``2*2`` with ``4``; [Apply PI_4 | Ring]. DiscrR. Assumption. -Left; Apply Rgt_2_0. +Left; Sup0. Pattern 1 ``4``; Rewrite <- Rplus_Or; Replace ``12`` with ``4+8``; [Apply Rle_compatibility; Left; Sup0 | Ring]. Rewrite <- (Rplus_sym ``12``); Pattern 1 ``12``; Rewrite <- Rplus_Or; Apply Rle_compatibility. Apply ge0_plus_ge0_is_ge0. @@ -515,4 +290,4 @@ Left; Assumption. Rewrite <- (Ropp_Ropp ``PI/2``); Apply Rle_Ropp1; Unfold Rdiv; Unfold Rdiv in H0; Rewrite <- Ropp_mul1; Exact H0. Intros; Unfold cos_approx; Apply sum_eq; Intros; Unfold cos_term; Do 2 Rewrite pow_Rsqr; Rewrite Rsqr_neg; Unfold Rdiv; Reflexivity. Apply Rgt_RO_Ropp; Assumption. -Qed. +Qed.
\ No newline at end of file diff --git a/theories/Reals/Rtrigo_calc.v b/theories/Reals/Rtrigo_calc.v index ff44bd7b3..7054b3749 100644 --- a/theories/Reals/Rtrigo_calc.v +++ b/theories/Reals/Rtrigo_calc.v @@ -8,11 +8,9 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. -Require Rseries. -Require R_sqr. -Require Rlimit. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo. Require R_sqrt. @@ -42,7 +40,7 @@ Pattern 2 3 PI; Rewrite H. Unfold Rdiv; Cut ``2*2==4``. Intro; Rewrite Rmult_Rplus_distrl. Repeat Rewrite Rmult_assoc. -Rewrite <- Rinv_Rmult; [Rewrite H0; Ring | Apply aze | Apply aze]. +Rewrite <- Rinv_Rmult; [Rewrite H0; Ring | DiscrR | DiscrR]. Ring. Qed. @@ -66,10 +64,10 @@ Replace ``3*2`` with ``6``. Rewrite Ropp_distr1. Ring. Ring. -Apply aze. DiscrR. DiscrR. -Apply aze. +DiscrR. +DiscrR. Unfold Rdiv. Rewrite (Rmult_sym ``3``). Rewrite Rmult_assoc. @@ -97,7 +95,7 @@ Replace ``3*2`` with ``6``. Rewrite Ropp_distr1. Ring. Ring. -Apply aze. +DiscrR. DiscrR. DiscrR. DiscrR. @@ -134,7 +132,7 @@ Rewrite (Rmult_sym ``2``). Rewrite Rmult_assoc. Rewrite <- Rinv_l_sym. Rewrite Rmult_1r; Reflexivity. -Apply aze. +DiscrR. Replace ``6`` with ``2*3``. Unfold Rdiv. Rewrite Rinv_Rmult. @@ -144,8 +142,8 @@ Repeat Rewrite Rmult_assoc. Rewrite <- Rinv_l_sym. Rewrite Rmult_1r. Reflexivity. -Apply aze. -Apply aze. +DiscrR. +DiscrR. DiscrR. Ring. Ring. @@ -153,7 +151,7 @@ Apply prod_neq_R0; [DiscrR | Cut ``0<(cos (PI/6))``; [Intro H1; Auto with real | Qed. Lemma sqrt2_neq_0 : ~``(sqrt 2)==0``. -Generalize (Rlt_le ``0`` ``2`` Rgt_2_0); Intro H1; Red; Intro H2; Generalize (sqrt_eq_0 ``2`` H1 H2); Intro H; Absurd ``2==0``; [ DiscrR | Assumption]. +Assert Hyp:``0<2``; [Sup0 | Generalize (Rlt_le ``0`` ``2`` Hyp); Intro H1; Red; Intro H2; Generalize (sqrt_eq_0 ``2`` H1 H2); Intro H; Absurd ``2==0``; [ DiscrR | Assumption]]. Qed. Lemma R1_sqrt2_neq_0 : ~``1/(sqrt 2)==0``. @@ -161,15 +159,15 @@ Generalize (Rinv_neq_R0 ``(sqrt 2)`` sqrt2_neq_0); Intro H; Generalize (prod_neq Qed. Lemma sqrt3_2_neq_0 : ~``2*(sqrt 3)==0``. -Apply prod_neq_R0; [DiscrR | Generalize (Rlt_le ``0`` ``3`` Rgt_3_0); Intro H1; Red; Intro H2; Generalize (sqrt_eq_0 ``3`` H1 H2); Intro H; Absurd ``3==0``; [ DiscrR | Assumption]]. +Apply prod_neq_R0; [DiscrR | Assert Hyp:``0<3``; [Sup0 | Generalize (Rlt_le ``0`` ``3`` Hyp); Intro H1; Red; Intro H2; Generalize (sqrt_eq_0 ``3`` H1 H2); Intro H; Absurd ``3==0``; [ DiscrR | Assumption]]]. Qed. Lemma Rlt_sqrt2_0 : ``0<(sqrt 2)``. -Generalize (sqrt_positivity ``2`` (Rlt_le ``0`` ``2`` Rgt_2_0)); Intro H1; Elim H1; Intro H2; [Assumption | Absurd ``0 == (sqrt 2)``; [Apply not_sym; Apply sqrt2_neq_0 | Assumption]]. +Assert Hyp:``0<2``; [Sup0 | Generalize (sqrt_positivity ``2`` (Rlt_le ``0`` ``2`` Hyp)); Intro H1; Elim H1; Intro H2; [Assumption | Absurd ``0 == (sqrt 2)``; [Apply not_sym; Apply sqrt2_neq_0 | Assumption]]]. Qed. Lemma Rlt_sqrt3_0 : ``0<(sqrt 3)``. -Cut ~(O=(1)); [Intro H0; Generalize (Rlt_le ``0`` ``2`` Rgt_2_0); Intro H1; Generalize (Rlt_le ``0`` ``3`` Rgt_3_0); Intro H2; Generalize (lt_INR_0 (1) (neq_O_lt (1) H0)); Unfold INR; Intro H3; Generalize (Rlt_compatibility ``2`` ``0`` ``1`` H3); Rewrite Rplus_sym; Rewrite Rplus_Ol; Replace ``2+1`` with ``3``; [Intro H4; Generalize (sqrt_lt_1 ``2`` ``3`` H1 H2 H4); Clear H3; Intro H3; Apply (Rlt_trans ``0`` ``(sqrt 2)`` ``(sqrt 3)`` Rlt_sqrt2_0 H3) | Ring] | Discriminate]. +Cut ~(O=(1)); [Intro H0; Assert Hyp:``0<2``; [Sup0 | Generalize (Rlt_le ``0`` ``2`` Hyp); Intro H1; Assert Hyp2:``0<3``; [Sup0 | Generalize (Rlt_le ``0`` ``3`` Hyp2); Intro H2; Generalize (lt_INR_0 (1) (neq_O_lt (1) H0)); Unfold INR; Intro H3; Generalize (Rlt_compatibility ``2`` ``0`` ``1`` H3); Rewrite Rplus_sym; Rewrite Rplus_Ol; Replace ``2+1`` with ``3``; [Intro H4; Generalize (sqrt_lt_1 ``2`` ``3`` H1 H2 H4); Clear H3; Intro H3; Apply (Rlt_trans ``0`` ``(sqrt 2)`` ``(sqrt 3)`` Rlt_sqrt2_0 H3) | Ring]]] | Discriminate]. Qed. Lemma PI4_RGT_0 : ``0<PI/4``. @@ -210,7 +208,7 @@ Rewrite <- Rinv_l_sym. Rewrite Rmult_1l. Reflexivity. DiscrR. -Left; Apply Rgt_2_0. +Left; Sup0. Apply sqrt2_neq_0. Qed. @@ -243,8 +241,8 @@ Rewrite <- Rinv_Rmult. Replace ``2*2`` with ``4``. Ring. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Qed. Lemma sin3PI4 : ``(sin (3*(PI/4)))==1/(sqrt 2)``. @@ -260,8 +258,8 @@ Rewrite <- Rinv_Rmult. Replace ``2*2`` with ``4``. Ring. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Qed. Lemma cos_PI6 : ``(cos (PI/6))==(sqrt 3)/2``. @@ -271,7 +269,7 @@ Left; Apply (Rlt_trans ``-(PI/2)`` R0 ``PI/6`` _PI2_RLT_0 PI6_RGT_0). Left; Apply PI6_RLT_PI2. Left; Apply (Rmult_lt_pos ``(sqrt 3)`` ``(Rinv 2)``). Apply Rlt_sqrt3_0. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Rewrite Rsqr_div. Rewrite cos2; Unfold Rsqr; Rewrite sin_PI6; Rewrite sqrt_def. Unfold Rdiv. @@ -293,10 +291,10 @@ DiscrR. DiscrR. DiscrR. Ring. -Apply aze. -Apply aze. -Left; Apply Rgt_3_0. -Apply aze. +DiscrR. +DiscrR. +Left; Sup0. +DiscrR. Qed. Lemma tan_PI6 : ``(tan (PI/6))==1/(sqrt 3)``. @@ -309,13 +307,13 @@ Rewrite (Rmult_sym ``/2``). Rewrite Rmult_assoc. Rewrite <- Rinv_r_sym. Apply Rmult_1r. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Red; Intro. Assert H1 := Rlt_sqrt3_0. Rewrite H in H1; Elim (Rlt_antirefl ``0`` H1). Apply Rinv_neq_R0. -Apply aze. +DiscrR. Qed. Lemma sin_PI3 : ``(sin (PI/3))==(sqrt 3)/2``. @@ -334,8 +332,8 @@ Rewrite Rinv_Rinv. Rewrite Rmult_assoc. Rewrite <- Rinv_l_sym. Apply Rmult_1r. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Qed. Lemma sin_2PI3 : ``(sin (2*(PI/3)))==(sqrt 3)/2``. @@ -352,8 +350,8 @@ Rewrite <- Rinv_Rmult. Replace ``2*2`` with ``4``. Reflexivity. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Qed. Lemma cos_2PI3 : ``(cos (2*(PI/3)))==-1/2``. @@ -390,12 +388,12 @@ Replace ``3`` with ``(INR (S (S (S O))))`` . Apply pos_INR. Rewrite INR_eq_INR2. Reflexivity. -Apply aze. -Apply aze. -Apply aze. -Apply aze. -Apply aze. -Apply prod_neq_R0; Apply aze. +DiscrR. +DiscrR. +DiscrR. +DiscrR. +DiscrR. +Apply prod_neq_R0; DiscrR. Qed. Lemma tan_2PI3 : ``(tan (2*(PI/3)))==-(sqrt 3)``. @@ -412,10 +410,10 @@ Rewrite <- Ropp_Rinv. Rewrite Ropp_mul3. Rewrite Rinv_R1; Rewrite Rmult_1r; Reflexivity. DiscrR. -Apply aze. -Apply aze. DiscrR. -Apply Rinv_neq_R0; Apply aze. +DiscrR. +DiscrR. +Apply Rinv_neq_R0; DiscrR. Qed. Lemma cos_5PI4 : ``(cos (5*(PI/4)))==-1/(sqrt 2)``. @@ -432,8 +430,8 @@ Rewrite <- Rinv_Rmult. Replace ``2*2`` with ``4``. Ring. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Qed. Lemma sin_5PI4 : ``(sin (5*(PI/4)))==-1/(sqrt 2)``. @@ -449,8 +447,8 @@ Rewrite <- Rinv_Rmult. Replace ``2*2`` with ``4``. Ring. Ring. -Apply aze. -Apply aze. +DiscrR. +DiscrR. Qed. Lemma sin_cos5PI4 : ``(cos (5*(PI/4)))==(sin (5*(PI/4)))``. @@ -458,11 +456,11 @@ Rewrite cos_5PI4; Rewrite sin_5PI4; Reflexivity. Qed. Lemma Rgt_3PI2_0 : ``0<3*(PI/2)``. -Apply Rmult_lt_pos; [Apply Rgt_3_0 | Unfold Rdiv; Apply Rmult_lt_pos; [Apply PI_RGT_0 | Apply Rlt_Rinv; Apply Rgt_2_0]]. +Apply Rmult_lt_pos; [Sup0 | Unfold Rdiv; Apply Rmult_lt_pos; [Apply PI_RGT_0 | Apply Rlt_Rinv; Sup0]]. Qed. Lemma Rgt_2PI_0 : ``0<2*PI``. -Apply Rmult_lt_pos; [Apply Rgt_2_0 | Apply PI_RGT_0]. +Apply Rmult_lt_pos; [Sup0 | Apply PI_RGT_0]. Qed. Lemma Rlt_PI_3PI2 : ``PI<3*(PI/2)``. diff --git a/theories/Reals/Rtrigo_def.v b/theories/Reals/Rtrigo_def.v index dcadd84b8..842b31b45 100644 --- a/theories/Reals/Rtrigo_def.v +++ b/theories/Reals/Rtrigo_def.v @@ -8,14 +8,11 @@ (*i $Id$ i*) -Require Max. -Require Raxioms. -Require DiscrR. -Require Rbase. -Require Rseries. +Require RealsB. +Require Rfunctions. +Require SeqSeries. Require Rtrigo_fun. -Require Export Alembert. -Require Export AltSeries. +Require Max. (*****************************) (* Definition of exponential *) @@ -41,33 +38,6 @@ Intros; Apply pow_ne_zero. Red; Intro; Rewrite H0 in H; Elim (lt_n_n ? H). Qed. -(* Unicité de la limite d'une série convergente *) -Lemma unicite_sum : (An:nat->R;l1,l2:R) (infinit_sum An l1) -> (infinit_sum An l2) -> l1 == l2. -Unfold infinit_sum; Intros. -Case (Req_EM l1 l2); Intro. -Assumption. -Cut ``0<(Rabsolu ((l1-l2)/2))``; [Intro | Apply Rabsolu_pos_lt]. -Elim (H ``(Rabsolu ((l1-l2)/2))`` H2); Intros. -Elim (H0 ``(Rabsolu ((l1-l2)/2))`` H2); Intros. -Pose N := (max x0 x); Cut (ge N x0). -Cut (ge N x). -Intros; Assert H7 := (H3 N H5); Assert H8 := (H4 N H6). -Cut ``(Rabsolu (l1-l2)) <= (R_dist (sum_f_R0 An N) l1) + (R_dist (sum_f_R0 An N) l2)``. -Intro; Assert H10 := (Rplus_lt ? ? ? ? H7 H8); Assert H11 := (Rle_lt_trans ? ? ? H9 H10); Unfold Rdiv in H11; Rewrite Rabsolu_mult in H11. -Cut ``(Rabsolu (/2))==/2``. -Intro; Rewrite H12 in H11; Assert H13 := double_var; Unfold Rdiv in H13; Rewrite <- H13 in H11. -Elim (Rlt_antirefl ? H11). -Apply Rabsolu_right; Left; Change ``0</2``; Apply Rlt_Rinv; Cut ~(O=(2)); [Intro H20; Generalize (lt_INR_0 (2) (neq_O_lt (2) H20)); Unfold INR; Intro; Assumption | Discriminate]. -Unfold R_dist; Rewrite <- (Rabsolu_Ropp ``(sum_f_R0 An N)-l1``); Rewrite Ropp_distr3. -Replace ``l1-l2`` with ``((l1-(sum_f_R0 An N)))+((sum_f_R0 An N)-l2)``; [Idtac | Ring]. -Apply Rabsolu_triang. -Unfold ge; Unfold N; Apply le_max_r. -Unfold ge; Unfold N; Apply le_max_l. -Unfold Rdiv; Apply prod_neq_R0. -Apply Rminus_eq_contra; Assumption. -Apply Rinv_neq_R0; DiscrR. -Qed. - (*i Calcul de $e^0$ *) Lemma exist_exp0 : (SigT R [l:R](exp_in R0 l)). Apply Specif.existT with R1. @@ -114,11 +84,6 @@ Qed. (* TG de la série entière définissant COS *) Definition cos_n [n:nat] : R := ``(pow (-1) n)/(INR (fact (mult (S (S O)) n)))``. - -Lemma fact_simpl : (n:nat) (fact (S n))=(mult (S n) (fact n)). -Intro; Reflexivity. -Qed. - Lemma simpl_cos_n : (n:nat) (Rdiv (cos_n (S n)) (cos_n n))==(Ropp (Rinv (INR (mult (mult (2) (S n)) (plus (mult (2) n) (1)))))). Intro; Unfold cos_n; Replace (S n) with (plus n (1)); [Idtac | Ring]. Rewrite pow_add; Unfold Rdiv; Rewrite Rinv_Rmult. @@ -145,16 +110,6 @@ Apply pow_nonzero; DiscrR. Apply Rinv_neq_R0; Apply INR_fact_neq_0. Qed. -Lemma le_n_2n : (n:nat) (le n (mult (2) n)). -Induction n. -Replace (mult (2) (O)) with O; [Apply le_n | Ring]. -Intros; Replace (mult (2) (S n0)) with (S (S (mult (2) n0))). -Apply le_n_S; Apply le_S; Assumption. -Replace (S (S (mult (2) n0))) with (plus (mult (2) n0) (2)); [Idtac | Ring]. -Replace (S n0) with (plus n0 (1)); [Idtac | Ring]. -Ring. -Qed. - Lemma archimed_cor1 : (eps:R) ``0<eps`` -> (EX N : nat | ``/(INR N) < eps``/\(lt O N)). Intros; Cut ``/eps < (IZR (up (/eps)))``. Intro; Cut `0<=(up (Rinv eps))`. diff --git a/theories/Reals/Rtrigo_fun.v b/theories/Reals/Rtrigo_fun.v index 1bf7e72b1..8e1d565e5 100644 --- a/theories/Reals/Rtrigo_fun.v +++ b/theories/Reals/Rtrigo_fun.v @@ -8,7 +8,9 @@ (*i $Id$ i*) -Require Export Rseries. +Require RealsB. +Require Rfunctions. +Require SeqSeries. (*****************************************************************) (* To define transcendental functions *) diff --git a/theories/Reals/Rtrigo_reg.v b/theories/Reals/Rtrigo_reg.v index 0943ff8fd..2fdf96d0c 100644 --- a/theories/Reals/Rtrigo_reg.v +++ b/theories/Reals/Rtrigo_reg.v @@ -8,16 +8,12 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. +Require RealsB. Require Rfunctions. -Require Rseries. -Require Alembert. -Require Binome. +Require SeqSeries. Require Rtrigo. Require Ranalysis1. -Require Export PSeries_reg. - +Require PSeries_reg. Lemma CVN_R_cos : (fn:nat->R->R) (fn == [N:nat][x:R]``(pow (-1) N)/(INR (fact (mult (S (S O)) N)))*(pow x (mult (S (S O)) N))``) -> (CVN_R fn). Unfold CVN_R; Intros. @@ -345,14 +341,14 @@ Apply Rlt_trans with ``del/2``. Unfold Rdiv; Rewrite Rabsolu_mult. Rewrite (Rabsolu_right ``/2``). Do 2 Rewrite <- (Rmult_sym ``/2``); Apply Rlt_monotony. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Apply Rlt_le_trans with (pos delta). Apply H8. Unfold delta; Simpl; Apply Rmin_l. -Apply Rle_sym1; Left; Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rle_sym1; Left; Apply Rlt_Rinv; Sup0. Rewrite <- (Rplus_Or ``del/2``); Pattern 1 del; Rewrite (double_var del); Apply Rlt_compatibility; Unfold Rdiv; Apply Rmult_lt_pos. Apply (cond_pos del). -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Elim H5; Intros; Assert H11 := (H10 ``h/2``). Rewrite sin_0 in H11; Do 2 Rewrite minus_R0 in H11. Apply H11. @@ -367,15 +363,15 @@ Unfold Rdiv; Rewrite Rabsolu_mult. Rewrite (Rabsolu_right ``/2``). Do 2 Rewrite <- (Rmult_sym ``/2``). Apply Rlt_monotony. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Apply Rlt_le_trans with (pos delta). Apply H8. Unfold delta; Simpl; Apply Rmin_r. -Apply Rle_sym1; Left; Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rle_sym1; Left; Apply Rlt_Rinv; Sup0. Rewrite <- (Rplus_Or ``del_c/2``); Pattern 2 del_c; Rewrite (double_var del_c); Apply Rlt_compatibility. Unfold Rdiv; Apply Rmult_lt_pos. Apply H9. -Apply Rlt_Rinv; Apply Rgt_2_0. +Apply Rlt_Rinv; Sup0. Rewrite Rminus_distr; Rewrite Rmult_1r; Unfold Rminus; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or; Rewrite (Rmult_sym ``2``); Unfold Rdiv Rsqr. Repeat Rewrite Rmult_assoc. Repeat Apply Rmult_mult_r. @@ -394,7 +390,7 @@ Unfold Rmin; Case (total_order_Rle del del_c); Intro. Apply (cond_pos del). Elim H5; Intros; Assumption. Apply continuity_sin. -Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rgt_2_0]. +Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]. Qed. (**********) @@ -403,7 +399,7 @@ Intro; Assert H0 := derivable_pt_lim_sin_0. Assert H := derivable_pt_lim_cos_0. Unfold derivable_pt_lim in H0 H. Unfold derivable_pt_lim; Intros. -Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Apply H1 | Apply Rlt_Rinv; Apply Rgt_2_0]]. +Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Apply H1 | Apply Rlt_Rinv; Sup0]]. Elim (H0 ? H2); Intros alp1 H3. Elim (H ? H2); Intros alp2 H4. Pose alp := (Rmin alp1 alp2). diff --git a/theories/Reals/SeqProp.v b/theories/Reals/SeqProp.v new file mode 100644 index 000000000..eee110a9c --- /dev/null +++ b/theories/Reals/SeqProp.v @@ -0,0 +1,1126 @@ +(***********************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) +(* \VV/ *************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(***********************************************************************) + +(*i $Id$ i*) + +Require RealsB. +Require Rfunctions. +Require Rseries. +Require Classical. +Require Max. + +Definition Un_decreasing [Un:nat->R] : Prop := (n:nat) (Rle (Un (S n)) (Un n)). +Definition opp_sui [Un:nat->R] : nat->R := [n:nat]``-(Un n)``. +Definition majoree [Un:nat->R] : Prop := (bound (EUn Un)). +Definition minoree [Un:nat->R] : Prop := (bound (EUn (opp_sui Un))). + +(* Toute suite croissante et majoree converge *) +(* Preuve inspiree de celle presente dans Rseries *) +Lemma growing_cv : (Un:nat->R) (Un_growing Un) -> (majoree Un) -> (sigTT R [l:R](Un_cv Un l)). +Unfold Un_growing Un_cv;Intros; + Generalize (complet (EUn Un) H0 (EUn_noempty Un));Intro H1. + Elim H1;Clear H1;Intros;Split with x;Intros. + Unfold is_lub in p;Unfold bound in H0;Unfold is_upper_bound in H0 p. + Elim H0;Clear H0;Intros;Elim p;Clear p;Intros; + Generalize (H3 x0 H0);Intro;Cut (n:nat)(Rle (Un n) x);Intro. +Cut (Ex [N:nat] (Rlt (Rminus x eps) (Un N))). +Intro;Elim H6;Clear H6;Intros;Split with x1. +Intros;Unfold R_dist;Apply (Rabsolu_def1 (Rminus (Un n) x) eps). +Unfold Rgt in H1. + Apply (Rle_lt_trans (Rminus (Un n) x) R0 eps + (Rle_minus (Un n) x (H5 n)) H1). +Fold Un_growing in H;Generalize (growing_prop Un n x1 H H7);Intro. + Generalize (Rlt_le_trans (Rminus x eps) (Un x1) (Un n) H6 + (Rle_sym2 (Un x1) (Un n) H8));Intro; + Generalize (Rlt_compatibility (Ropp x) (Rminus x eps) (Un n) H9); + Unfold Rminus;Rewrite <-(Rplus_assoc (Ropp x) x (Ropp eps)); + Rewrite (Rplus_sym (Ropp x) (Un n));Fold (Rminus (Un n) x); + Rewrite Rplus_Ropp_l;Rewrite (let (H1,H2)=(Rplus_ne (Ropp eps)) in H2); + Trivial. +Cut ~((N:nat)(Rge (Rminus x eps) (Un N))). +Intro;Apply (not_all_not_ex nat ([N:nat](Rlt (Rminus x eps) (Un N)))). + Red;Intro;Red in H6;Elim H6;Clear H6;Intro; + Apply (Rlt_not_ge (Rminus x eps) (Un N) (H7 N)). +Red;Intro;Cut (N:nat)(Rle (Un N) (Rminus x eps)). +Intro;Generalize (Un_bound_imp Un (Rminus x eps) H7);Intro; + Unfold is_upper_bound in H8;Generalize (H3 (Rminus x eps) H8);Intro; + Generalize (Rle_minus x (Rminus x eps) H9);Unfold Rminus; + Rewrite Ropp_distr1;Rewrite <- Rplus_assoc;Rewrite Rplus_Ropp_r. + Rewrite (let (H1,H2)=(Rplus_ne (Ropp (Ropp eps))) in H2); + Rewrite Ropp_Ropp;Intro;Unfold Rgt in H1; + Generalize (Rle_not eps R0 H1);Intro;Auto. +Intro;Elim (H6 N);Intro;Unfold Rle. +Left;Unfold Rgt in H7;Assumption. +Right;Auto. +Apply (H2 (Un n) (Un_in_EUn Un n)). +Qed. + +(* Pour toute suite decroissante, la suite "opposee" est croissante *) +Lemma decreasing_growing : (Un:nat->R) (Un_decreasing Un) -> (Un_growing (opp_sui Un)). +Intro. +Unfold Un_growing opp_sui Un_decreasing. +Intros. +Apply Rle_Ropp1. +Apply H. +Qed. + +(* Toute suite decroissante et minoree converge *) +Lemma decreasing_cv : (Un:nat->R) (Un_decreasing Un) -> (minoree Un) -> (sigTT R [l:R](Un_cv Un l)). +Intros. +Cut (sigTT R [l:R](Un_cv (opp_sui Un) l)) -> (sigTT R [l:R](Un_cv Un l)). +Intro. +Apply X. +Apply growing_cv. +Apply decreasing_growing; Assumption. +Exact H0. +Intro. +Elim X; Intros. +Apply existTT with ``-x``. +Unfold Un_cv in p. +Unfold R_dist in p. +Unfold opp_sui in p. +Unfold Un_cv. +Unfold R_dist. +Intros. +Elim (p eps H1); Intros. +Exists x0; Intros. +Assert H4 := (H2 n H3). +Rewrite <- Rabsolu_Ropp. +Replace ``-((Un n)- -x)`` with ``-(Un n)-x``; [Assumption | Ring]. +Qed. + +(***********) +Lemma maj_sup : (Un:nat->R) (majoree Un) -> (sigTT R [l:R](is_lub (EUn Un) l)). +Intros. +Unfold majoree in H. +Apply complet. +Assumption. +Exists (Un O). +Unfold EUn. +Exists O; Reflexivity. +Qed. + +(**********) +Lemma min_inf : (Un:nat->R) (minoree Un) -> (sigTT R [l:R](is_lub (EUn (opp_sui Un)) l)). +Intros; Unfold minoree in H. +Apply complet. +Assumption. +Exists ``-(Un O)``. +Exists O. +Reflexivity. +Qed. + +Definition majorant [Un:nat->R;pr:(majoree Un)] : R := Cases (maj_sup Un pr) of (existTT a b) => a end. + +Definition minorant [Un:nat->R;pr:(minoree Un)] : R := Cases (min_inf Un pr) of (existTT a b) => ``-a`` end. + +(* Conservation de la propriete de majoration par extraction *) +Lemma maj_ss : (Un:nat->R;k:nat) (majoree Un) -> (majoree [i:nat](Un (plus k i))). +Intros. +Unfold majoree in H. +Unfold bound in H. +Elim H; Intros. +Unfold is_upper_bound in H0. +Unfold majoree. +Exists x. +Unfold is_upper_bound. +Intros. +Apply H0. +Elim H1; Intros. +Exists (plus k x1); Assumption. +Qed. + +(* Conservation de la propriete de minoration par extraction *) +Lemma min_ss : (Un:nat->R;k:nat) (minoree Un) -> (minoree [i:nat](Un (plus k i))). +Intros. +Unfold minoree in H. +Unfold bound in H. +Elim H; Intros. +Unfold is_upper_bound in H0. +Unfold minoree. +Exists x. +Unfold is_upper_bound. +Intros. +Apply H0. +Elim H1; Intros. +Exists (plus k x1); Assumption. +Qed. + +Definition suite_majorant [Un:nat->R;pr:(majoree Un)] : nat -> R := [i:nat](majorant [k:nat](Un (plus i k)) (maj_ss Un i pr)). + +Definition suite_minorant [Un:nat->R;pr:(minoree Un)] : nat -> R := [i:nat](minorant [k:nat](Un (plus i k)) (min_ss Un i pr)). + +(* La suite des majorants est decroissante *) +Lemma Wn_decreasing : (Un:nat->R;pr:(majoree Un)) (Un_decreasing (suite_majorant Un pr)). +Intros. +Unfold Un_decreasing. +Intro. +Unfold suite_majorant. +Assert H := (maj_sup [k:nat](Un (plus (S n) k)) (maj_ss Un (S n) pr)). +Assert H0 := (maj_sup [k:nat](Un (plus n k)) (maj_ss Un n pr)). +Elim H; Intros. +Elim H0; Intros. +Cut (majorant ([k:nat](Un (plus (S n) k))) (maj_ss Un (S n) pr)) == x; [Intro Maj1; Rewrite Maj1 | Idtac]. +Cut (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr)) == x0; [Intro Maj2; Rewrite Maj2 | Idtac]. +Unfold is_lub in p. +Unfold is_lub in p0. +Elim p; Intros. +Apply H2. +Elim p0; Intros. +Unfold is_upper_bound. +Intros. +Unfold is_upper_bound in H3. +Apply H3. +Elim H5; Intros. +Exists (plus (1) x2). +Replace (plus n (plus (S O) x2)) with (plus (S n) x2). +Assumption. +Replace (S n) with (plus (1) n); [Ring | Ring]. +Cut (is_lub (EUn [k:nat](Un (plus n k))) (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr))). +Intro. +Unfold is_lub in p0; Unfold is_lub in H1. +Elim p0; Intros; Elim H1; Intros. +Assert H6 := (H5 x0 H2). +Assert H7 := (H3 (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr)) H4). +Apply Rle_antisym; Assumption. +Unfold majorant. +Case (maj_sup [k:nat](Un (plus n k)) (maj_ss Un n pr)). +Trivial. +Cut (is_lub (EUn [k:nat](Un (plus (S n) k))) (majorant ([k:nat](Un (plus (S n) k))) (maj_ss Un (S n) pr))). +Intro. +Unfold is_lub in p; Unfold is_lub in H1. +Elim p; Intros; Elim H1; Intros. +Assert H6 := (H5 x H2). +Assert H7 := (H3 (majorant ([k:nat](Un (plus (S n) k))) (maj_ss Un (S n) pr)) H4). +Apply Rle_antisym; Assumption. +Unfold majorant. +Case (maj_sup [k:nat](Un (plus (S n) k)) (maj_ss Un (S n) pr)). +Trivial. +Qed. + +(* La suite des minorants est croissante *) +Lemma Vn_growing : (Un:nat->R;pr:(minoree Un)) (Un_growing (suite_minorant Un pr)). +Intros. +Unfold Un_growing. +Intro. +Unfold suite_minorant. +Assert H := (min_inf [k:nat](Un (plus (S n) k)) (min_ss Un (S n) pr)). +Assert H0 := (min_inf [k:nat](Un (plus n k)) (min_ss Un n pr)). +Elim H; Intros. +Elim H0; Intros. +Cut (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr)) == ``-x``; [Intro Maj1; Rewrite Maj1 | Idtac]. +Cut (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr)) == ``-x0``; [Intro Maj2; Rewrite Maj2 | Idtac]. +Unfold is_lub in p. +Unfold is_lub in p0. +Elim p; Intros. +Apply Rle_Ropp1. +Apply H2. +Elim p0; Intros. +Unfold is_upper_bound. +Intros. +Unfold is_upper_bound in H3. +Apply H3. +Elim H5; Intros. +Exists (plus (1) x2). +Unfold opp_sui in H6. +Unfold opp_sui. +Replace (plus n (plus (S O) x2)) with (plus (S n) x2). +Assumption. +Replace (S n) with (plus (1) n); [Ring | Ring]. +Cut (is_lub (EUn (opp_sui [k:nat](Un (plus n k)))) (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr)))). +Intro. +Unfold is_lub in p0; Unfold is_lub in H1. +Elim p0; Intros; Elim H1; Intros. +Assert H6 := (H5 x0 H2). +Assert H7 := (H3 (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr))) H4). +Rewrite <- (Ropp_Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr))). +Apply eq_Ropp; Apply Rle_antisym; Assumption. +Unfold minorant. +Case (min_inf [k:nat](Un (plus n k)) (min_ss Un n pr)). +Intro; Rewrite Ropp_Ropp. +Trivial. +Cut (is_lub (EUn (opp_sui [k:nat](Un (plus (S n) k)))) (Ropp (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr)))). +Intro. +Unfold is_lub in p; Unfold is_lub in H1. +Elim p; Intros; Elim H1; Intros. +Assert H6 := (H5 x H2). +Assert H7 := (H3 (Ropp (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr))) H4). +Rewrite <- (Ropp_Ropp (minorant ([k:nat](Un (plus (S n) k))) (min_ss Un (S n) pr))). +Apply eq_Ropp; Apply Rle_antisym; Assumption. +Unfold minorant. +Case (min_inf [k:nat](Un (plus (S n) k)) (min_ss Un (S n) pr)). +Intro; Rewrite Ropp_Ropp. +Trivial. +Qed. + +(* Encadrement Vn,Un,Wn *) +Lemma Vn_Un_Wn_order : (Un:nat->R;pr1:(majoree Un);pr2:(minoree Un)) (n:nat) ``((suite_minorant Un pr2) n)<=(Un n)<=((suite_majorant Un pr1) n)``. +Intros. +Split. +Unfold suite_minorant. +Cut (sigTT R [l:R](is_lub (EUn (opp_sui [i:nat](Un (plus n i)))) l)). +Intro. +Elim X; Intros. +Replace (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2)) with ``-x``. +Unfold is_lub in p. +Elim p; Intros. +Unfold is_upper_bound in H. +Rewrite <- (Ropp_Ropp (Un n)). +Apply Rle_Ropp1. +Apply H. +Exists O. +Unfold opp_sui. +Replace (plus n O) with n; [Reflexivity | Ring]. +Cut (is_lub (EUn (opp_sui [k:nat](Un (plus n k)))) (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2)))). +Intro. +Unfold is_lub in p; Unfold is_lub in H. +Elim p; Intros; Elim H; Intros. +Assert H4 := (H3 x H0). +Assert H5 := (H1 (Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2))) H2). +Rewrite <- (Ropp_Ropp (minorant ([k:nat](Un (plus n k))) (min_ss Un n pr2))). +Apply eq_Ropp; Apply Rle_antisym; Assumption. +Unfold minorant. +Case (min_inf [k:nat](Un (plus n k)) (min_ss Un n pr2)). +Intro; Rewrite Ropp_Ropp. +Trivial. +Apply min_inf. +Apply min_ss; Assumption. +Unfold suite_majorant. +Cut (sigTT R [l:R](is_lub (EUn [i:nat](Un (plus n i))) l)). +Intro. +Elim X; Intros. +Replace (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr1)) with ``x``. +Unfold is_lub in p. +Elim p; Intros. +Unfold is_upper_bound in H. +Apply H. +Exists O. +Replace (plus n O) with n; [Reflexivity | Ring]. +Cut (is_lub (EUn [k:nat](Un (plus n k))) (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr1))). +Intro. +Unfold is_lub in p; Unfold is_lub in H. +Elim p; Intros; Elim H; Intros. +Assert H4 := (H3 x H0). +Assert H5 := (H1 (majorant ([k:nat](Un (plus n k))) (maj_ss Un n pr1)) H2). +Apply Rle_antisym; Assumption. +Unfold majorant. +Case (maj_sup [k:nat](Un (plus n k)) (maj_ss Un n pr1)). +Intro; Trivial. +Apply maj_sup. +Apply maj_ss; Assumption. +Qed. + +(* La suite des minorants est majoree *) +Lemma min_maj : (Un:nat->R;pr1:(majoree Un);pr2:(minoree Un)) (majoree (suite_minorant Un pr2)). +Intros. +Assert H := (Vn_Un_Wn_order Un pr1 pr2). +Unfold majoree. +Unfold bound. +Unfold majoree in pr1. +Unfold bound in pr1. +Elim pr1; Intros. +Exists x. +Unfold is_upper_bound. +Intros. +Unfold is_upper_bound in H0. +Elim H1; Intros. +Rewrite H2. +Apply Rle_trans with (Un x1). +Assert H3 := (H x1); Elim H3; Intros; Assumption. +Apply H0. +Exists x1; Reflexivity. +Qed. + +(* La suite des majorants est minoree *) +Lemma maj_min : (Un:nat->R;pr1:(majoree Un);pr2:(minoree Un)) (minoree (suite_majorant Un pr1)). +Intros. +Assert H := (Vn_Un_Wn_order Un pr1 pr2). +Unfold minoree. +Unfold bound. +Unfold minoree in pr2. +Unfold bound in pr2. +Elim pr2; Intros. +Exists x. +Unfold is_upper_bound. +Intros. +Unfold is_upper_bound in H0. +Elim H1; Intros. +Rewrite H2. +Apply Rle_trans with ((opp_sui Un) x1). +Assert H3 := (H x1); Elim H3; Intros. +Unfold opp_sui; Apply Rle_Ropp1. +Assumption. +Apply H0. +Exists x1; Reflexivity. +Qed. + +(* Toute suite de Cauchy est majoree *) +Lemma cauchy_maj : (Un:nat->R) (Cauchy_crit Un) -> (majoree Un). +Intros. +Unfold majoree. +Apply cauchy_bound. +Assumption. +Qed. + +(**********) +Lemma cauchy_opp : (Un:nat->R) (Cauchy_crit Un) -> (Cauchy_crit (opp_sui Un)). +Intro. +Unfold Cauchy_crit. +Unfold R_dist. +Intros. +Elim (H eps H0); Intros. +Exists x; Intros. +Unfold opp_sui. +Rewrite <- Rabsolu_Ropp. +Replace ``-( -(Un n)- -(Un m))`` with ``(Un n)-(Un m)``; [Apply H1; Assumption | Ring]. +Qed. + +(* Toute suite de Cauchy est minoree *) +Lemma cauchy_min : (Un:nat->R) (Cauchy_crit Un) -> (minoree Un). +Intros. +Unfold minoree. +Assert H0 := (cauchy_opp ? H). +Apply cauchy_bound. +Assumption. +Qed. + +(* La suite des majorants converge *) +Lemma maj_cv : (Un:nat->R;pr:(Cauchy_crit Un)) (sigTT R [l:R](Un_cv (suite_majorant Un (cauchy_maj Un pr)) l)). +Intros. +Apply decreasing_cv. +Apply Wn_decreasing. +Apply maj_min. +Apply cauchy_min. +Assumption. +Qed. + +(* La suite des minorants converge *) +Lemma min_cv : (Un:nat->R;pr:(Cauchy_crit Un)) (sigTT R [l:R](Un_cv (suite_minorant Un (cauchy_min Un pr)) l)). +Intros. +Apply growing_cv. +Apply Vn_growing. +Apply min_maj. +Apply cauchy_maj. +Assumption. +Qed. + +(**********) +Lemma cond_eq : (x,y:R) ((eps:R)``0<eps``->``(Rabsolu (x-y))<eps``) -> x==y. +Intros. +Case (total_order_T x y); Intro. +Elim s; Intro. +Cut ``0<y-x``. +Intro. +Assert H1 := (H ``y-x`` H0). +Rewrite <- Rabsolu_Ropp in H1. +Cut ``-(x-y)==y-x``; [Intro; Rewrite H2 in H1 | Ring]. +Rewrite Rabsolu_right in H1. +Elim (Rlt_antirefl ? H1). +Left; Assumption. +Apply Rlt_anti_compatibility with x. +Rewrite Rplus_Or; Replace ``x+(y-x)`` with y; [Assumption | Ring]. +Assumption. +Cut ``0<x-y``. +Intro. +Assert H1 := (H ``x-y`` H0). +Rewrite Rabsolu_right in H1. +Elim (Rlt_antirefl ? H1). +Left; Assumption. +Apply Rlt_anti_compatibility with y. +Rewrite Rplus_Or; Replace ``y+(x-y)`` with x; [Assumption | Ring]. +Qed. + +(**********) +Lemma not_Rlt : (r1,r2:R)~(``r1<r2``)->``r1>=r2``. +Intros r1 r2 ; Generalize (total_order r1 r2) ; Unfold Rge. +Tauto. +Qed. + +(* On peut approcher la borne sup de toute suite majoree *) +Lemma approx_maj : (Un:nat->R;pr:(majoree Un)) (eps:R) ``0<eps`` -> (EX k : nat | ``(Rabsolu ((majorant Un pr)-(Un k))) < eps``). +Intros. +Pose P := [k:nat]``(Rabsolu ((majorant Un pr)-(Un k))) < eps``. +Unfold P. +Cut (EX k:nat | (P k)) -> (EX k:nat | ``(Rabsolu ((majorant Un pr)-(Un k))) < eps``). +Intros. +Apply H0. +Apply not_all_not_ex. +Red; Intro. +2:Unfold P; Trivial. +Unfold P in H1. +Cut (n:nat)``(Rabsolu ((majorant Un pr)-(Un n))) >= eps``. +Intro. +Cut (is_lub (EUn Un) (majorant Un pr)). +Intro. +Unfold is_lub in H3. +Unfold is_upper_bound in H3. +Elim H3; Intros. +Cut (n:nat)``eps<=(majorant Un pr)-(Un n)``. +Intro. +Cut (n:nat)``(Un n)<=(majorant Un pr)-eps``. +Intro. +Cut ((x:R)(EUn Un x)->``x <= (majorant Un pr)-eps``). +Intro. +Assert H9 := (H5 ``(majorant Un pr)-eps`` H8). +Cut ``eps<=0``. +Intro. +Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H H10)). +Apply Rle_anti_compatibility with ``(majorant Un pr)-eps``. +Rewrite Rplus_Or. +Replace ``(majorant Un pr)-eps+eps`` with (majorant Un pr); [Assumption | Ring]. +Intros. +Unfold EUn in H8. +Elim H8; Intros. +Rewrite H9; Apply H7. +Intro. +Assert H7 := (H6 n). +Apply Rle_anti_compatibility with ``eps-(Un n)``. +Replace ``eps-(Un n)+(Un n)`` with ``eps``. +Replace ``eps-(Un n)+((majorant Un pr)-eps)`` with ``(majorant Un pr)-(Un n)``. +Assumption. +Ring. +Ring. +Intro. +Assert H6 := (H2 n). +Rewrite Rabsolu_right in H6. +Apply Rle_sym2. +Assumption. +Apply Rle_sym1. +Apply Rle_anti_compatibility with (Un n). +Rewrite Rplus_Or; Replace ``(Un n)+((majorant Un pr)-(Un n))`` with (majorant Un pr); [Apply H4 | Ring]. +Exists n; Reflexivity. +Unfold majorant. +Case (maj_sup Un pr). +Trivial. +Intro. +Assert H2 := (H1 n). +Apply not_Rlt; Assumption. +Qed. + +(* On peut approcher la borne inf de toute suite minoree *) +Lemma approx_min : (Un:nat->R;pr:(minoree Un)) (eps:R) ``0<eps`` -> (EX k :nat | ``(Rabsolu ((minorant Un pr)-(Un k))) < eps``). +Intros. +Pose P := [k:nat]``(Rabsolu ((minorant Un pr)-(Un k))) < eps``. +Unfold P. +Cut (EX k:nat | (P k)) -> (EX k:nat | ``(Rabsolu ((minorant Un pr)-(Un k))) < eps``). +Intros. +Apply H0. +Apply not_all_not_ex. +Red; Intro. +2:Unfold P; Trivial. +Unfold P in H1. +Cut (n:nat)``(Rabsolu ((minorant Un pr)-(Un n))) >= eps``. +Intro. +Cut (is_lub (EUn (opp_sui Un)) ``-(minorant Un pr)``). +Intro. +Unfold is_lub in H3. +Unfold is_upper_bound in H3. +Elim H3; Intros. +Cut (n:nat)``eps<=(Un n)-(minorant Un pr)``. +Intro. +Cut (n:nat)``((opp_sui Un) n)<=-(minorant Un pr)-eps``. +Intro. +Cut ((x:R)(EUn (opp_sui Un) x)->``x <= -(minorant Un pr)-eps``). +Intro. +Assert H9 := (H5 ``-(minorant Un pr)-eps`` H8). +Cut ``eps<=0``. +Intro. +Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H H10)). +Apply Rle_anti_compatibility with ``-(minorant Un pr)-eps``. +Rewrite Rplus_Or. +Replace ``-(minorant Un pr)-eps+eps`` with ``-(minorant Un pr)``; [Assumption | Ring]. +Intros. +Unfold EUn in H8. +Elim H8; Intros. +Rewrite H9; Apply H7. +Intro. +Assert H7 := (H6 n). +Unfold opp_sui. +Apply Rle_anti_compatibility with ``eps+(Un n)``. +Replace ``eps+(Un n)+ -(Un n)`` with ``eps``. +Replace ``eps+(Un n)+(-(minorant Un pr)-eps)`` with ``(Un n)-(minorant Un pr)``. +Assumption. +Ring. +Ring. +Intro. +Assert H6 := (H2 n). +Rewrite Rabsolu_left1 in H6. +Apply Rle_sym2. +Replace ``(Un n)-(minorant Un pr)`` with `` -((minorant Un pr)-(Un n))``; [Assumption | Ring]. +Apply Rle_anti_compatibility with ``-(minorant Un pr)``. +Rewrite Rplus_Or; Replace ``-(minorant Un pr)+((minorant Un pr)-(Un n))`` with ``-(Un n)``. +Apply H4. +Exists n; Reflexivity. +Ring. +Unfold minorant. +Case (min_inf Un pr). +Intro. +Rewrite Ropp_Ropp. +Trivial. +Intro. +Assert H2 := (H1 n). +Apply not_Rlt; Assumption. +Qed. + +(* Unicité de la limite pour les suites convergentes *) +Lemma UL_suite : (Un:nat->R;l1,l2:R) (Un_cv Un l1) -> (Un_cv Un l2) -> l1==l2. +Intros Un l1 l2; Unfold Un_cv; Unfold R_dist; Intros. +Apply cond_eq. +Intros; Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. +Elim (H ``eps/2`` H2); Intros. +Elim (H0 ``eps/2`` H2); Intros. +Pose N := (max x x0). +Apply Rle_lt_trans with ``(Rabsolu (l1 -(Un N)))+(Rabsolu ((Un N)-l2))``. +Replace ``l1-l2`` with ``(l1-(Un N))+((Un N)-l2)``; [Apply Rabsolu_triang | Ring]. +Rewrite (double_var eps); Apply Rplus_lt. +Rewrite <- Rabsolu_Ropp; Rewrite Ropp_distr2; Apply H3; Unfold ge N; Apply le_max_l. +Apply H4; Unfold ge N; Apply le_max_r. +Qed. + +(* La limite de la somme de deux suites convergentes est la somme des limites *) +Lemma CV_plus : (An,Bn:nat->R;l1,l2:R) (Un_cv An l1) -> (Un_cv Bn l2) -> (Un_cv [i:nat]``(An i)+(Bn i)`` ``l1+l2``). +Unfold Un_cv; Unfold R_dist; Intros. +Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. +Elim (H ``eps/2`` H2); Intros. +Elim (H0 ``eps/2`` H2); Intros. +Pose N := (max x x0). +Exists N; Intros. +Replace ``(An n)+(Bn n)-(l1+l2)`` with ``((An n)-l1)+((Bn n)-l2)``; [Idtac | Ring]. +Apply Rle_lt_trans with ``(Rabsolu ((An n)-l1))+(Rabsolu ((Bn n)-l2))``. +Apply Rabsolu_triang. +Rewrite (double_var eps); Apply Rplus_lt. +Apply H3; Unfold ge; Apply le_trans with N; [Unfold N; Apply le_max_l | Assumption]. +Apply H4; Unfold ge; Apply le_trans with N; [Unfold N; Apply le_max_r | Assumption]. +Qed. + +(* Lien convergence / convergence absolue *) +Lemma cv_cvabs : (Un:nat->R;l:R) (Un_cv Un l) -> (Un_cv [i:nat](Rabsolu (Un i)) (Rabsolu l)). +Unfold Un_cv; Unfold R_dist; Intros. +Elim (H eps H0); Intros. +Exists x; Intros. +Apply Rle_lt_trans with ``(Rabsolu ((Un n)-l))``. +Apply Rabsolu_triang_inv2. +Apply H1; Assumption. +Qed. + +(* Toute suite convergente est de Cauchy *) +Lemma CV_Cauchy : (Un:nat->R) (sigTT R [l:R](Un_cv Un l)) -> (Cauchy_crit Un). +Intros; Elim X; Intros. +Unfold Cauchy_crit; Intros. +Unfold Un_cv in p; Unfold R_dist in p. +Cut ``0<eps/2``; [Intro | Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Sup0]]. +Elim (p ``eps/2`` H0); Intros. +Exists x0; Intros. +Unfold R_dist; Apply Rle_lt_trans with ``(Rabsolu ((Un n)-x))+(Rabsolu (x-(Un m)))``. +Replace ``(Un n)-(Un m)`` with ``((Un n)-x)+(x-(Un m))``; [Apply Rabsolu_triang | Ring]. +Rewrite (double_var eps); Apply Rplus_lt. +Apply H1; Assumption. +Rewrite <- Rabsolu_Ropp; Rewrite Ropp_distr2; Apply H1; Assumption. +Qed. + +(**********) +Lemma maj_by_pos : (Un:nat->R) (sigTT R [l:R](Un_cv Un l)) -> (EXT l:R | ``0<l``/\((n:nat)``(Rabsolu (Un n))<=l``)). +Intros; Elim X; Intros. +Cut (sigTT R [l:R](Un_cv [k:nat](Rabsolu (Un k)) l)). +Intro. +Assert H := (CV_Cauchy [k:nat](Rabsolu (Un k)) X0). +Assert H0 := (cauchy_bound [k:nat](Rabsolu (Un k)) H). +Elim H0; Intros. +Exists ``x0+1``. +Cut ``0<=x0``. +Intro. +Split. +Apply ge0_plus_gt0_is_gt0; [Assumption | Apply Rlt_R0_R1]. +Intros. +Apply Rle_trans with x0. +Unfold is_upper_bound in H1. +Apply H1. +Exists n; Reflexivity. +Pattern 1 x0; Rewrite <- Rplus_Or; Apply Rle_compatibility; Left; Apply Rlt_R0_R1. +Apply Rle_trans with (Rabsolu (Un O)). +Apply Rabsolu_pos. +Unfold is_upper_bound in H1. +Apply H1. +Exists O; Reflexivity. +Apply existTT with (Rabsolu x). +Apply cv_cvabs; Assumption. +Qed. + +(* La limite du produit de deux suites convergentes est le produit des limites *) +Lemma CV_mult : (An,Bn:nat->R;l1,l2:R) (Un_cv An l1) -> (Un_cv Bn l2) -> (Un_cv [i:nat]``(An i)*(Bn i)`` ``l1*l2``). +Intros. +Cut (sigTT R [l:R](Un_cv An l)). +Intro. +Assert H1 := (maj_by_pos An X). +Elim H1; Intros M H2. +Elim H2; Intros. +Unfold Un_cv; Unfold R_dist; Intros. +Cut ``0<eps/(2*M)``. +Intro. +Case (Req_EM l2 R0); Intro. +Unfold Un_cv in H0; Unfold R_dist in H0. +Elim (H0 ``eps/(2*M)`` H6); Intros. +Exists x; Intros. +Apply Rle_lt_trans with ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))+(Rabsolu ((An n)*l2-l1*l2))``. +Replace ``(An n)*(Bn n)-l1*l2`` with ``((An n)*(Bn n)-(An n)*l2)+((An n)*l2-l1*l2)``; [Apply Rabsolu_triang | Ring]. +Replace ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))`` with ``(Rabsolu (An n))*(Rabsolu ((Bn n)-l2))``. +Replace ``(Rabsolu ((An n)*l2-l1*l2))`` with R0. +Rewrite Rplus_Or. +Apply Rle_lt_trans with ``M*(Rabsolu ((Bn n)-l2))``. +Do 2 Rewrite <- (Rmult_sym ``(Rabsolu ((Bn n)-l2))``). +Apply Rle_monotony. +Apply Rabsolu_pos. +Apply H4. +Apply Rlt_monotony_contra with ``/M``. +Apply Rlt_Rinv; Apply H3. +Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l; Rewrite (Rmult_sym ``/M``). +Apply Rlt_trans with ``eps/(2*M)``. +Apply H8; Assumption. +Unfold Rdiv; Rewrite Rinv_Rmult. +Apply Rlt_monotony_contra with ``2``. +Sup0. +Replace ``2*(eps*(/2*/M))`` with ``(2*/2)*(eps*/M)``; [Idtac | Ring]. +Rewrite <- Rinv_r_sym. +Rewrite Rmult_1l; Rewrite double. +Pattern 1 ``eps*/M``; Rewrite <- Rplus_Or. +Apply Rlt_compatibility; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Assumption]. +DiscrR. +DiscrR. +Red; Intro; Rewrite H10 in H3; Elim (Rlt_antirefl ? H3). +Red; Intro; Rewrite H10 in H3; Elim (Rlt_antirefl ? H3). +Rewrite H7; Do 2 Rewrite Rmult_Or; Unfold Rminus; Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Reflexivity. +Replace ``(An n)*(Bn n)-(An n)*l2`` with ``(An n)*((Bn n)-l2)``; [Idtac | Ring]. +Symmetry; Apply Rabsolu_mult. +Cut ``0<eps/(2*(Rabsolu l2))``. +Intro. +Unfold Un_cv in H; Unfold R_dist in H; Unfold Un_cv in H0; Unfold R_dist in H0. +Elim (H ``eps/(2*(Rabsolu l2))`` H8); Intros N1 H9. +Elim (H0 ``eps/(2*M)`` H6); Intros N2 H10. +Pose N := (max N1 N2). +Exists N; Intros. +Apply Rle_lt_trans with ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))+(Rabsolu ((An n)*l2-l1*l2))``. +Replace ``(An n)*(Bn n)-l1*l2`` with ``((An n)*(Bn n)-(An n)*l2)+((An n)*l2-l1*l2)``; [Apply Rabsolu_triang | Ring]. +Replace ``(Rabsolu ((An n)*(Bn n)-(An n)*l2))`` with ``(Rabsolu (An n))*(Rabsolu ((Bn n)-l2))``. +Replace ``(Rabsolu ((An n)*l2-l1*l2))`` with ``(Rabsolu l2)*(Rabsolu ((An n)-l1))``. +Rewrite (double_var eps); Apply Rplus_lt. +Apply Rle_lt_trans with ``M*(Rabsolu ((Bn n)-l2))``. +Do 2 Rewrite <- (Rmult_sym ``(Rabsolu ((Bn n)-l2))``). +Apply Rle_monotony. +Apply Rabsolu_pos. +Apply H4. +Apply Rlt_monotony_contra with ``/M``. +Apply Rlt_Rinv; Apply H3. +Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l; Rewrite (Rmult_sym ``/M``). +Apply Rlt_le_trans with ``eps/(2*M)``. +Apply H10. +Unfold ge; Apply le_trans with N. +Unfold N; Apply le_max_r. +Assumption. +Unfold Rdiv; Rewrite Rinv_Rmult. +Right; Ring. +DiscrR. +Red; Intro; Rewrite H12 in H3; Elim (Rlt_antirefl ? H3). +Red; Intro; Rewrite H12 in H3; Elim (Rlt_antirefl ? H3). +Apply Rlt_monotony_contra with ``/(Rabsolu l2)``. +Apply Rlt_Rinv; Apply Rabsolu_pos_lt; Assumption. +Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l; Apply Rlt_le_trans with ``eps/(2*(Rabsolu l2))``. +Apply H9. +Unfold ge; Apply le_trans with N. +Unfold N; Apply le_max_l. +Assumption. +Unfold Rdiv; Right; Rewrite Rinv_Rmult. +Ring. +DiscrR. +Apply Rabsolu_no_R0; Assumption. +Apply Rabsolu_no_R0; Assumption. +Replace ``(An n)*l2-l1*l2`` with ``l2*((An n)-l1)``; [Symmetry; Apply Rabsolu_mult | Ring]. +Replace ``(An n)*(Bn n)-(An n)*l2`` with ``(An n)*((Bn n)-l2)``; [Symmetry; Apply Rabsolu_mult | Ring]. +Unfold Rdiv; Apply Rmult_lt_pos. +Assumption. +Apply Rlt_Rinv; Apply Rmult_lt_pos; [Sup0 | Apply Rabsolu_pos_lt; Assumption]. +Unfold Rdiv; Apply Rmult_lt_pos; [Assumption | Apply Rlt_Rinv; Apply Rmult_lt_pos; [Sup0 | Assumption]]. +Apply existTT with l1; Assumption. +Qed. + +Lemma tech9 : (Un:nat->R) (Un_growing Un) -> ((m,n:nat)(le m n)->``(Un m)<=(Un n)``). +Intros; Unfold Un_growing in H. +Induction n. +Induction m. +Right; Reflexivity. +Elim (le_Sn_O ? H0). +Cut (le m n)\/m=(S n). +Intro; Elim H1; Intro. +Apply Rle_trans with (Un n). +Apply Hrecn; Assumption. +Apply H. +Rewrite H2; Right; Reflexivity. +Inversion H0. +Right; Reflexivity. +Left; Assumption. +Qed. + +Lemma tech10 : (Un:nat->R;x:R) (Un_growing Un) -> (is_lub (EUn Un) x) -> (Un_cv Un x). +Intros; Cut (bound (EUn Un)). +Intro; Assert H2 := (Un_cv_crit ? H H1). +Elim H2; Intros. +Case (total_order_T x x0); Intro. +Elim s; Intro. +Cut (n:nat)``(Un n)<=x``. +Intro; Unfold Un_cv in H3; Cut ``0<x0-x``. +Intro; Elim (H3 ``x0-x`` H5); Intros. +Cut (ge x1 x1). +Intro; Assert H8 := (H6 x1 H7). +Unfold R_dist in H8; Rewrite Rabsolu_left1 in H8. +Rewrite Ropp_distr2 in H8; Unfold Rminus in H8. +Assert H9 := (Rlt_anti_compatibility ``x0`` ? ? H8). +Assert H10 := (Ropp_Rlt ? ? H9). +Assert H11 := (H4 x1). +Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H10 H11)). +Apply Rle_minus; Apply Rle_trans with x. +Apply H4. +Left; Assumption. +Unfold ge; Apply le_n. +Apply Rgt_minus; Assumption. +Intro; Unfold is_lub in H0; Unfold is_upper_bound in H0; Elim H0; Intros. +Apply H4; Unfold EUn; Exists n; Reflexivity. +Rewrite b; Assumption. +Cut ((n:nat)``(Un n)<=x0``). +Intro; Unfold is_lub in H0; Unfold is_upper_bound in H0; Elim H0; Intros. +Cut (y:R)(EUn Un y)->``y<=x0``. +Intro; Assert H8 := (H6 ? H7). +Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H8 r)). +Unfold EUn; Intros; Elim H7; Intros. +Rewrite H8; Apply H4. +Intro; Case (total_order_Rle (Un n) x0); Intro. +Assumption. +Cut (n0:nat)(le n n0) -> ``x0<(Un n0)``. +Intro; Unfold Un_cv in H3; Cut ``0<(Un n)-x0``. +Intro; Elim (H3 ``(Un n)-x0`` H5); Intros. +Cut (ge (max n x1) x1). +Intro; Assert H8 := (H6 (max n x1) H7). +Unfold R_dist in H8. +Rewrite Rabsolu_right in H8. +Unfold Rminus in H8; Do 2 Rewrite <- (Rplus_sym ``-x0``) in H8. +Assert H9 := (Rlt_anti_compatibility ? ? ? H8). +Cut ``(Un n)<=(Un (max n x1))``. +Intro; Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H10 H9)). +Apply tech9; [Assumption | Apply le_max_l]. +Apply Rge_trans with ``(Un n)-x0``. +Unfold Rminus; Apply Rle_sym1; Do 2 Rewrite <- (Rplus_sym ``-x0``); Apply Rle_compatibility. +Apply tech9; [Assumption | Apply le_max_l]. +Left; Assumption. +Unfold ge; Apply le_max_r. +Apply Rlt_anti_compatibility with x0. +Rewrite Rplus_Or; Unfold Rminus; Rewrite (Rplus_sym x0); Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or; Apply H4; Apply le_n. +Intros; Apply Rlt_le_trans with (Un n). +Case (total_order_Rlt_Rle x0 (Un n)); Intro. +Assumption. +Elim n0; Assumption. +Apply tech9; Assumption. +Unfold bound; Exists x; Unfold is_lub in H0; Elim H0; Intros; Assumption. +Qed. + +Lemma tech13 : (An:nat->R;k:R) ``0<=k<1`` -> (Un_cv [n:nat](Rabsolu ``(An (S n))/(An n)``) k) -> (EXT k0 : R | ``k<k0<1`` /\ (EX N:nat | (n:nat) (le N n)->``(Rabsolu ((An (S n))/(An n)))<k0``)). +Intros; Exists ``k+(1-k)/2``. +Split. +Split. +Pattern 1 k; Rewrite <- Rplus_Or; Apply Rlt_compatibility. +Unfold Rdiv; Apply Rmult_lt_pos. +Apply Rlt_anti_compatibility with k; Rewrite Rplus_Or; Replace ``k+(1-k)`` with R1; [Elim H; Intros; Assumption | Ring]. +Apply Rlt_Rinv; Sup0. +Apply Rlt_monotony_contra with ``2``. +Sup0. +Unfold Rdiv; Rewrite Rmult_1r; Rewrite Rmult_Rplus_distr; Pattern 1 ``2``; Rewrite Rmult_sym; Rewrite Rmult_assoc; Rewrite <- Rinv_l_sym; [Idtac | DiscrR]; Rewrite Rmult_1r; Replace ``2*k+(1-k)`` with ``1+k``; [Idtac | Ring]. +Elim H; Intros. +Apply Rlt_compatibility; Assumption. +Unfold Un_cv in H0; Cut ``0<(1-k)/2``. +Intro; Elim (H0 ``(1-k)/2`` H1); Intros. +Exists x; Intros. +Assert H4 := (H2 n H3). +Unfold R_dist in H4; Rewrite <- Rabsolu_Rabsolu; Replace ``(Rabsolu ((An (S n))/(An n)))`` with ``((Rabsolu ((An (S n))/(An n)))-k)+k``; [Idtac | Ring]; Apply Rle_lt_trans with ``(Rabsolu ((Rabsolu ((An (S n))/(An n)))-k))+(Rabsolu k)``. +Apply Rabsolu_triang. +Rewrite (Rabsolu_right k). +Apply Rlt_anti_compatibility with ``-k``; Rewrite <- (Rplus_sym k); Repeat Rewrite <- Rplus_assoc; Rewrite Rplus_Ropp_l; Repeat Rewrite Rplus_Ol; Apply H4. +Apply Rle_sym1; Elim H; Intros; Assumption. +Unfold Rdiv; Apply Rmult_lt_pos. +Apply Rlt_anti_compatibility with k; Rewrite Rplus_Or; Elim H; Intros; Replace ``k+(1-k)`` with R1; [Assumption | Ring]. +Apply Rlt_Rinv; Sup0. +Qed. + +(**********) +Lemma growing_ineq : (Un:nat->R;l:R) (Un_growing Un) -> (Un_cv Un l) -> ((n:nat)``(Un n)<=l``). +Intros; Case (total_order_T (Un n) l); Intro. +Elim s; Intro. +Left; Assumption. +Right; Assumption. +Cut ``0<(Un n)-l``. +Intro; Unfold Un_cv in H0; Unfold R_dist in H0. +Elim (H0 ``(Un n)-l`` H1); Intros N1 H2. +Pose N := (max n N1). +Cut ``(Un n)-l<=(Un N)-l``. +Intro; Cut ``(Un N)-l<(Un n)-l``. +Intro; Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H3 H4)). +Apply Rle_lt_trans with ``(Rabsolu ((Un N)-l))``. +Apply Rle_Rabsolu. +Apply H2. +Unfold ge N; Apply le_max_r. +Unfold Rminus; Do 2 Rewrite <- (Rplus_sym ``-l``); Apply Rle_compatibility. +Apply tech9. +Assumption. +Unfold N; Apply le_max_l. +Apply Rlt_anti_compatibility with l. +Rewrite Rplus_Or. +Replace ``l+((Un n)-l)`` with (Un n); [Assumption | Ring]. +Qed. + +(* Un->l => (-Un) -> (-l) *) +Lemma CV_opp : (An:nat->R;l:R) (Un_cv An l) -> (Un_cv (opp_sui An) ``-l``). +Intros An l. +Unfold Un_cv; Unfold R_dist; Intros. +Elim (H eps H0); Intros. +Exists x; Intros. +Unfold opp_sui; Replace ``-(An n)- (-l)`` with ``-((An n)-l)``; [Rewrite Rabsolu_Ropp | Ring]. +Apply H1; Assumption. +Qed. + +(**********) +Lemma decreasing_ineq : (Un:nat->R;l:R) (Un_decreasing Un) -> (Un_cv Un l) -> ((n:nat)``l<=(Un n)``). +Intros. +Assert H1 := (decreasing_growing ? H). +Assert H2 := (CV_opp ? ? H0). +Assert H3 := (growing_ineq ? ? H1 H2). +Apply Ropp_Rle. +Unfold opp_sui in H3; Apply H3. +Qed. + +(**********) +Lemma CV_minus : (An,Bn:nat->R;l1,l2:R) (Un_cv An l1) -> (Un_cv Bn l2) -> (Un_cv [i:nat]``(An i)-(Bn i)`` ``l1-l2``). +Intros. +Replace [i:nat]``(An i)-(Bn i)`` with [i:nat]``(An i)+((opp_sui Bn) i)``. +Unfold Rminus; Apply CV_plus. +Assumption. +Apply CV_opp; Assumption. +Unfold Rminus opp_sui; Reflexivity. +Qed. + +(* Un -> +oo *) +Definition cv_infty [Un:nat->R] : Prop := (M:R)(EXT N:nat | (n:nat) (le N n) -> ``M<(Un n)``). + +(* Un -> +oo => /Un -> O *) +Lemma cv_infty_cv_R0 : (Un:nat->R) ((n:nat)``(Un n)<>0``) -> (cv_infty Un) -> (Un_cv [n:nat]``/(Un n)`` R0). +Unfold cv_infty Un_cv; Unfold R_dist; Intros. +Elim (H0 ``/eps``); Intros N0 H2. +Exists N0; Intros. +Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Rewrite (Rabsolu_Rinv ? (H n)). +Apply Rlt_monotony_contra with (Rabsolu (Un n)). +Apply Rabsolu_pos_lt; Apply H. +Rewrite <- Rinv_r_sym. +Apply Rlt_monotony_contra with ``/eps``. +Apply Rlt_Rinv; Assumption. +Rewrite Rmult_1r; Rewrite (Rmult_sym ``/eps``); Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym. +Rewrite Rmult_1r; Apply Rlt_le_trans with (Un n). +Apply H2; Assumption. +Apply Rle_Rabsolu. +Red; Intro; Rewrite H4 in H1; Elim (Rlt_antirefl ? H1). +Apply Rabsolu_no_R0; Apply H. +Qed. + +(**********) +Lemma decreasing_prop : (Un:nat->R;m,n:nat) (Un_decreasing Un) -> (le m n) -> ``(Un n)<=(Un m)``. +Unfold Un_decreasing; Intros. +Induction n. +Induction m. +Right; Reflexivity. +Elim (le_Sn_O ? H0). +Cut (le m n)\/m=(S n). +Intro; Elim H1; Intro. +Apply Rle_trans with (Un n). +Apply H. +Apply Hrecn; Assumption. +Rewrite H2; Right; Reflexivity. +Inversion H0; [Right; Reflexivity | Left; Assumption]. +Qed. + +(* |x|^n/n! -> 0 *) +Lemma cv_speed_pow_fact : (x:R) (Un_cv [n:nat]``(pow x n)/(INR (fact n))`` R0). +Intro; Cut (Un_cv [n:nat]``(pow (Rabsolu x) n)/(INR (fact n))`` R0) -> (Un_cv [n:nat]``(pow x n)/(INR (fact n))`` ``0``). +Intro; Apply H. +Unfold Un_cv; Unfold R_dist; Intros; Case (Req_EM x R0); Intro. +Exists (S O); Intros. +Rewrite H1; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Rewrite Rabsolu_R0; Rewrite pow_ne_zero; [Unfold Rdiv; Rewrite Rmult_Ol; Rewrite Rabsolu_R0; Assumption | Red; Intro; Rewrite H3 in H2; Elim (le_Sn_n ? H2)]. +Assert H2 := (Rabsolu_pos_lt x H1); Pose M := (up (Rabsolu x)); Cut `0<=M`. +Intro; Elim (IZN M H3); Intros M_nat H4. +Pose Un := [n:nat]``(pow (Rabsolu x) (plus M_nat n))/(INR (fact (plus M_nat n)))``. +Cut (Un_cv Un R0); Unfold Un_cv; Unfold R_dist; Intros. +Elim (H5 eps H0); Intros N H6. +Exists (plus M_nat N); Intros; Cut (EX p:nat | (ge p N)/\n=(plus M_nat p)). +Intro; Elim H8; Intros p H9. +Elim H9; Intros; Rewrite H11; Unfold Un in H6; Apply H6; Assumption. +Exists (minus n M_nat). +Split. +Unfold ge; Apply simpl_le_plus_l with M_nat; Rewrite <- le_plus_minus. +Assumption. +Apply le_trans with (plus M_nat N). +Apply le_plus_l. +Assumption. +Apply le_plus_minus; Apply le_trans with (plus M_nat N); [Apply le_plus_l | Assumption]. +Pose Vn := [n:nat]``(Rabsolu x)*(Un O)/(INR (S n))``. +Cut (le (1) M_nat). +Intro; Cut (n:nat)``0<(Un n)``. +Intro; Cut (Un_decreasing Un). +Intro; Cut (n:nat)``(Un (S n))<=(Vn n)``. +Intro; Cut (Un_cv Vn R0). +Unfold Un_cv; Unfold R_dist; Intros. +Elim (H10 eps0 H5); Intros N1 H11. +Exists (S N1); Intros. +Cut (n:nat)``0<(Vn n)``. +Intro; Apply Rle_lt_trans with ``(Rabsolu ((Vn (pred n))-0))``. +Repeat Rewrite Rabsolu_right. +Unfold Rminus; Rewrite Ropp_O; Do 2 Rewrite Rplus_Or; Replace n with (S (pred n)). +Apply H9. +Inversion H12; Simpl; Reflexivity. +Apply Rle_sym1; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Left; Apply H13. +Apply Rle_sym1; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Left; Apply H7. +Apply H11; Unfold ge; Apply le_S_n; Replace (S (pred n)) with n; [Unfold ge in H12; Exact H12 | Inversion H12; Simpl; Reflexivity]. +Intro; Apply Rlt_le_trans with (Un (S n0)); [Apply H7 | Apply H9]. +Cut (cv_infty [n:nat](INR (S n))). +Intro; Cut (Un_cv [n:nat]``/(INR (S n))`` R0). +Unfold Un_cv R_dist; Intros; Unfold Vn. +Cut ``0<eps1/((Rabsolu x)*(Un O))``. +Intro; Elim (H11 ? H13); Intros N H14. +Exists N; Intros; Replace ``(Rabsolu x)*(Un O)/(INR (S n))-0`` with ``((Rabsolu x)*(Un O))*(/(INR (S n))-0)``; [Idtac | Unfold Rdiv; Ring]. +Rewrite Rabsolu_mult; Apply Rlt_monotony_contra with ``/(Rabsolu ((Rabsolu x)*(Un O)))``. +Apply Rlt_Rinv; Apply Rabsolu_pos_lt. +Apply prod_neq_R0. +Apply Rabsolu_no_R0; Assumption. +Assert H16 := (H7 O); Red; Intro; Rewrite H17 in H16; Elim (Rlt_antirefl ? H16). +Rewrite <- Rmult_assoc; Rewrite <- Rinv_l_sym. +Rewrite Rmult_1l. +Replace ``/(Rabsolu ((Rabsolu x)*(Un O)))*eps1`` with ``eps1/((Rabsolu x)*(Un O))``. +Apply H14; Assumption. +Unfold Rdiv; Rewrite (Rabsolu_right ``(Rabsolu x)*(Un O)``). +Apply Rmult_sym. +Apply Rle_sym1; Apply Rmult_le_pos. +Apply Rabsolu_pos. +Left; Apply H7. +Apply Rabsolu_no_R0. +Apply prod_neq_R0; [Apply Rabsolu_no_R0; Assumption | Assert H16 := (H7 O); Red; Intro; Rewrite H17 in H16; Elim (Rlt_antirefl ? H16)]. +Unfold Rdiv; Apply Rmult_lt_pos. +Assumption. +Apply Rlt_Rinv; Apply Rmult_lt_pos. +Apply Rabsolu_pos_lt; Assumption. +Apply H7. +Apply (cv_infty_cv_R0 [n:nat]``(INR (S n))``). +Intro; Apply not_O_INR; Discriminate. +Assumption. +Unfold cv_infty; Intro; Case (total_order_T M0 R0); Intro. +Elim s; Intro. +Exists O; Intros. +Apply Rlt_trans with R0; [Assumption | Apply lt_INR_0; Apply lt_O_Sn]. +Exists O; Intros; Rewrite b; Apply lt_INR_0; Apply lt_O_Sn. +Pose M0_z := (up M0). +Assert H10 := (archimed M0). +Cut `0<=M0_z`. +Intro; Elim (IZN ? H11); Intros M0_nat H12. +Exists M0_nat; Intros. +Apply Rlt_le_trans with (IZR M0_z). +Elim H10; Intros; Assumption. +Rewrite H12; Rewrite <- INR_IZR_INZ; Apply le_INR. +Apply le_trans with n; [Assumption | Apply le_n_Sn]. +Apply le_IZR; Left; Simpl; Unfold M0_z; Apply Rlt_trans with M0; [Assumption | Elim H10; Intros; Assumption]. +Intro; Apply Rle_trans with ``(Rabsolu x)*(Un n)*/(INR (S n))``. +Unfold Un; Replace (plus M_nat (S n)) with (plus (plus M_nat n) (1)). +Rewrite pow_add; Replace (pow (Rabsolu x) (S O)) with (Rabsolu x); [Idtac | Simpl; Ring]. +Unfold Rdiv; Rewrite <- (Rmult_sym (Rabsolu x)); Repeat Rewrite Rmult_assoc; Repeat Apply Rle_monotony. +Apply Rabsolu_pos. +Left; Apply pow_lt; Assumption. +Replace (plus (plus M_nat n) (S O)) with (S (plus M_nat n)). +Rewrite fact_simpl; Rewrite mult_sym; Rewrite mult_INR; Rewrite Rinv_Rmult. +Apply Rle_monotony. +Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H10 := (sym_eq ? ? ? H9); Elim (fact_neq_0 ? H10). +Left; Apply Rinv_lt. +Apply Rmult_lt_pos; Apply lt_INR_0; Apply lt_O_Sn. +Apply lt_INR; Apply lt_n_S. +Pattern 1 n; Replace n with (plus O n); [Idtac | Reflexivity]. +Apply lt_reg_r. +Apply lt_le_trans with (S O); [Apply lt_O_Sn | Assumption]. +Apply INR_fact_neq_0. +Apply not_O_INR; Discriminate. +Apply INR_eq; Rewrite S_INR; Do 3 Rewrite plus_INR; Reflexivity. +Apply INR_eq; Do 3 Rewrite plus_INR; Do 2 Rewrite S_INR; Ring. +Unfold Vn; Rewrite Rmult_assoc; Unfold Rdiv; Rewrite (Rmult_sym (Un O)); Rewrite (Rmult_sym (Un n)). +Repeat Apply Rle_monotony. +Apply Rabsolu_pos. +Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply lt_O_Sn. +Apply decreasing_prop; [Assumption | Apply le_O_n]. +Unfold Un_decreasing; Intro; Unfold Un. +Replace (plus M_nat (S n)) with (plus (plus M_nat n) (1)). +Rewrite pow_add; Unfold Rdiv; Rewrite Rmult_assoc; Apply Rle_monotony. +Left; Apply pow_lt; Assumption. +Replace (pow (Rabsolu x) (S O)) with (Rabsolu x); [Idtac | Simpl; Ring]. +Replace (plus (plus M_nat n) (S O)) with (S (plus M_nat n)). +Apply Rle_monotony_contra with (INR (fact (S (plus M_nat n)))). +Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H9 := (sym_eq ? ? ? H8); Elim (fact_neq_0 ? H9). +Rewrite (Rmult_sym (Rabsolu x)); Rewrite <- Rmult_assoc; Rewrite <- Rinv_r_sym. +Rewrite Rmult_1l. +Rewrite fact_simpl; Rewrite mult_INR; Rewrite Rmult_assoc; Rewrite <- Rinv_r_sym. +Rewrite Rmult_1r; Apply Rle_trans with (INR M_nat). +Left; Rewrite INR_IZR_INZ. +Rewrite <- H4; Assert H8 := (archimed (Rabsolu x)); Elim H8; Intros; Assumption. +Apply le_INR; Apply le_trans with (S M_nat); [Apply le_n_Sn | Apply le_n_S; Apply le_plus_l]. +Apply INR_fact_neq_0. +Apply INR_fact_neq_0. +Apply INR_eq; Rewrite S_INR; Do 3 Rewrite plus_INR; Reflexivity. +Apply INR_eq; Do 3 Rewrite plus_INR; Do 2 Rewrite S_INR; Ring. +Intro; Unfold Un; Unfold Rdiv; Apply Rmult_lt_pos. +Apply pow_lt; Assumption. +Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H8 := (sym_eq ? ? ? H7); Elim (fact_neq_0 ? H8). +Clear Un Vn; Apply INR_le; Simpl. +Induction M_nat. +Assert H6 := (archimed (Rabsolu x)); Fold M in H6; Elim H6; Intros. +Rewrite H4 in H7; Rewrite <- INR_IZR_INZ in H7. +Simpl in H7; Elim (Rlt_antirefl ? (Rlt_trans ? ? ? H2 H7)). +Replace R1 with (INR (S O)); [Apply le_INR | Reflexivity]; Apply le_n_S; Apply le_O_n. +Apply le_IZR; Simpl; Left; Apply Rlt_trans with (Rabsolu x). +Assumption. +Elim (archimed (Rabsolu x)); Intros; Assumption. +Unfold Un_cv; Unfold R_dist; Intros; Elim (H eps H0); Intros. +Exists x0; Intros; Apply Rle_lt_trans with ``(Rabsolu ((pow (Rabsolu x) n)/(INR (fact n))-0))``. +Unfold Rminus; Rewrite Ropp_O; Do 2 Rewrite Rplus_Or; Rewrite (Rabsolu_right ``(pow (Rabsolu x) n)/(INR (fact n))``). +Unfold Rdiv; Rewrite Rabsolu_mult; Rewrite (Rabsolu_right ``/(INR (fact n))``). +Rewrite Pow_Rabsolu; Right; Reflexivity. +Apply Rle_sym1; Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H4 := (sym_eq ? ? ? H3); Elim (fact_neq_0 ? H4). +Apply Rle_sym1; Unfold Rdiv; Apply Rmult_le_pos. +Case (Req_EM x R0); Intro. +Rewrite H3; Rewrite Rabsolu_R0. +Induction n; [Simpl; Left; Apply Rlt_R0_R1 | Simpl; Rewrite Rmult_Ol; Right; Reflexivity]. +Left; Apply pow_lt; Apply Rabsolu_pos_lt; Assumption. +Left; Apply Rlt_Rinv; Apply lt_INR_0; Apply neq_O_lt; Red; Intro; Assert H4 := (sym_eq ? ? ? H3); Elim (fact_neq_0 ? H4). +Apply H1; Assumption. +Qed. + +Lemma fact_growing : (m,n:nat) (le m n) -> (le (fact m) (fact n)). +Intros. +Cut (Un_growing [n:nat](INR (fact n))). +Intro. +Apply INR_le. +Apply Rle_sym2. +Apply (growing_prop [l:nat](INR (fact l))). +Exact H0. +Unfold ge; Exact H. +Unfold Un_growing. +Intros. +Simpl. +Rewrite plus_INR. +Pattern 1 (INR (fact n0)); Rewrite <- Rplus_Or. +Apply Rle_compatibility. +Apply pos_INR. +Qed.
\ No newline at end of file diff --git a/theories/Reals/SeqSeries.v b/theories/Reals/SeqSeries.v new file mode 100644 index 000000000..a32691dea --- /dev/null +++ b/theories/Reals/SeqSeries.v @@ -0,0 +1,202 @@ +(***********************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *) +(* \VV/ *************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(***********************************************************************) + +(*i $Id$ i*) + +Require RealsB. +Require Rfunctions. +Require Export Rseries. +Require Export SeqProp. +Require Export Rcomplet. +Require Export PartSum. +Require Export AltSeries. +Require Export Binome. +Require Export Rsigma. +Require Export Rprod. +Require Export Cauchy_prod. +Require Export Alembert. + +(**********) +Lemma sum_maj1 : (fn:nat->R->R;An:nat->R;x,l1,l2:R;N:nat) (Un_cv [n:nat](SP fn n x) l1) -> (Un_cv [n:nat](sum_f_R0 An n) l2) -> ((n:nat)``(Rabsolu (fn n x))<=(An n)``) -> ``(Rabsolu (l1-(SP fn N x)))<=l2-(sum_f_R0 An N)``. +Intros; Cut (sigTT R [l:R](Un_cv [n:nat](sum_f_R0 [l:nat](fn (plus (S N) l) x) n) l)). +Intro; Cut (sigTT R [l:R](Un_cv [n:nat](sum_f_R0 [l:nat](An (plus (S N) l)) n) l)). +Intro; Elim X; Intros l1N H2. +Elim X0; Intros l2N H3. +Cut ``l1-(SP fn N x)==l1N``. +Intro; Cut ``l2-(sum_f_R0 An N)==l2N``. +Intro; Rewrite H4; Rewrite H5. +Apply sum_cv_maj with [l:nat](An (plus (S N) l)) [l:nat][x:R](fn (plus (S N) l) x) x. +Unfold SP; Apply H2. +Apply H3. +Intros; Apply H1. +Symmetry; EApply UL_suite. +Apply H3. +Unfold Un_cv in H0; Unfold Un_cv; Intros; Elim (H0 eps H5); Intros N0 H6. +Unfold R_dist in H6; Exists N0; Intros. +Unfold R_dist; Replace (Rminus (sum_f_R0 [l:nat](An (plus (S N) l)) n) (Rminus l2 (sum_f_R0 An N))) with (Rminus (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) l2); [Idtac | Ring]. +Replace (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) with (sum_f_R0 An (S (plus N n))). +Apply H6; Unfold ge; Apply le_trans with n. +Apply H7. +Apply le_trans with (plus N n). +Apply le_plus_r. +Apply le_n_Sn. +Cut (le O N). +Cut (lt N (S (plus N n))). +Intros; Assert H10 := (sigma_split An H9 H8). +Unfold sigma in H10. +Do 2 Rewrite <- minus_n_O in H10. +Replace (sum_f_R0 An (S (plus N n))) with (sum_f_R0 [k:nat](An (plus (0) k)) (S (plus N n))). +Replace (sum_f_R0 An N) with (sum_f_R0 [k:nat](An (plus (0) k)) N). +Cut (minus (S (plus N n)) (S N))=n. +Intro; Rewrite H11 in H10. +Apply H10. +Apply INR_eq; Rewrite minus_INR. +Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. +Apply le_n_S; Apply le_plus_l. +Apply sum_eq; Intros. +Reflexivity. +Apply sum_eq; Intros. +Reflexivity. +Apply le_lt_n_Sm; Apply le_plus_l. +Apply le_O_n. +Symmetry; EApply UL_suite. +Apply H2. +Unfold Un_cv in H; Unfold Un_cv; Intros. +Elim (H eps H4); Intros N0 H5. +Unfold R_dist in H5; Exists N0; Intros. +Unfold R_dist SP; Replace (Rminus (sum_f_R0 [l:nat](fn (plus (S N) l) x) n) (Rminus l1 (sum_f_R0 [k:nat](fn k x) N))) with (Rminus (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) l1); [Idtac | Ring]. +Replace (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) with (sum_f_R0 [k:nat](fn k x) (S (plus N n))). +Unfold SP in H5; Apply H5; Unfold ge; Apply le_trans with n. +Apply H6. +Apply le_trans with (plus N n). +Apply le_plus_r. +Apply le_n_Sn. +Cut (le O N). +Cut (lt N (S (plus N n))). +Intros; Assert H9 := (sigma_split [k:nat](fn k x) H8 H7). +Unfold sigma in H9. +Do 2 Rewrite <- minus_n_O in H9. +Replace (sum_f_R0 [k:nat](fn k x) (S (plus N n))) with (sum_f_R0 [k:nat](fn (plus (0) k) x) (S (plus N n))). +Replace (sum_f_R0 [k:nat](fn k x) N) with (sum_f_R0 [k:nat](fn (plus (0) k) x) N). +Cut (minus (S (plus N n)) (S N))=n. +Intro; Rewrite H10 in H9. +Apply H9. +Apply INR_eq; Rewrite minus_INR. +Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. +Apply le_n_S; Apply le_plus_l. +Apply sum_eq; Intros. +Reflexivity. +Apply sum_eq; Intros. +Reflexivity. +Apply le_lt_n_Sm. +Apply le_plus_l. +Apply le_O_n. +Apply existTT with ``l2-(sum_f_R0 An N)``. +Unfold Un_cv in H0; Unfold Un_cv; Intros. +Elim (H0 eps H2); Intros N0 H3. +Unfold R_dist in H3; Exists N0; Intros. +Unfold R_dist; Replace (Rminus (sum_f_R0 [l:nat](An (plus (S N) l)) n) (Rminus l2 (sum_f_R0 An N))) with (Rminus (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) l2); [Idtac | Ring]. +Replace (Rplus (sum_f_R0 An N) (sum_f_R0 [l:nat](An (plus (S N) l)) n)) with (sum_f_R0 An (S (plus N n))). +Apply H3; Unfold ge; Apply le_trans with n. +Apply H4. +Apply le_trans with (plus N n). +Apply le_plus_r. +Apply le_n_Sn. +Cut (le O N). +Cut (lt N (S (plus N n))). +Intros; Assert H7 := (sigma_split An H6 H5). +Unfold sigma in H7. +Do 2 Rewrite <- minus_n_O in H7. +Replace (sum_f_R0 An (S (plus N n))) with (sum_f_R0 [k:nat](An (plus (0) k)) (S (plus N n))). +Replace (sum_f_R0 An N) with (sum_f_R0 [k:nat](An (plus (0) k)) N). +Cut (minus (S (plus N n)) (S N))=n. +Intro; Rewrite H8 in H7. +Apply H7. +Apply INR_eq; Rewrite minus_INR. +Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. +Apply le_n_S; Apply le_plus_l. +Apply sum_eq; Intros. +Reflexivity. +Apply sum_eq; Intros. +Reflexivity. +Apply le_lt_n_Sm. +Apply le_plus_l. +Apply le_O_n. +Apply existTT with ``l1-(SP fn N x)``. +Unfold Un_cv in H; Unfold Un_cv; Intros. +Elim (H eps H2); Intros N0 H3. +Unfold R_dist in H3; Exists N0; Intros. +Unfold R_dist SP. +Replace (Rminus (sum_f_R0 [l:nat](fn (plus (S N) l) x) n) (Rminus l1 (sum_f_R0 [k:nat](fn k x) N))) with (Rminus (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) l1); [Idtac | Ring]. +Replace (Rplus (sum_f_R0 [k:nat](fn k x) N) (sum_f_R0 [l:nat](fn (plus (S N) l) x) n)) with (sum_f_R0 [k:nat](fn k x) (S (plus N n))). +Unfold SP in H3; Apply H3. +Unfold ge; Apply le_trans with n. +Apply H4. +Apply le_trans with (plus N n). +Apply le_plus_r. +Apply le_n_Sn. +Cut (le O N). +Cut (lt N (S (plus N n))). +Intros; Assert H7 := (sigma_split [k:nat](fn k x) H6 H5). +Unfold sigma in H7. +Do 2 Rewrite <- minus_n_O in H7. +Replace (sum_f_R0 [k:nat](fn k x) (S (plus N n))) with (sum_f_R0 [k:nat](fn (plus (0) k) x) (S (plus N n))). +Replace (sum_f_R0 [k:nat](fn k x) N) with (sum_f_R0 [k:nat](fn (plus (0) k) x) N). +Cut (minus (S (plus N n)) (S N))=n. +Intro; Rewrite H8 in H7. +Apply H7. +Apply INR_eq; Rewrite minus_INR. +Do 2 Rewrite S_INR; Rewrite plus_INR; Ring. +Apply le_n_S; Apply le_plus_l. +Apply sum_eq; Intros. +Reflexivity. +Apply sum_eq; Intros. +Reflexivity. +Apply le_lt_n_Sm. +Apply le_plus_l. +Apply le_O_n. +Qed. + +(* Théorème de comparaison de convergence pour les séries *) +Lemma Rseries_CV_comp : (An,Bn:nat->R) ((n:nat)``0<=(An n)<=(Bn n)``) -> (sigTT ? [l:R](Un_cv [N:nat](sum_f_R0 Bn N) l)) -> (sigTT ? [l:R](Un_cv [N:nat](sum_f_R0 An N) l)). +Intros; Apply cv_cauchy_2. +Assert H0 := (cv_cauchy_1 ? X). +Unfold Cauchy_crit_series; Unfold Cauchy_crit. +Intros; Elim (H0 eps H1); Intros. +Exists x; Intros. +Cut (Rle (R_dist (sum_f_R0 An n) (sum_f_R0 An m)) (R_dist (sum_f_R0 Bn n) (sum_f_R0 Bn m))). +Intro; Apply Rle_lt_trans with (R_dist (sum_f_R0 Bn n) (sum_f_R0 Bn m)). +Assumption. +Apply H2; Assumption. +Assert H5 := (lt_eq_lt_dec n m). +Elim H5; Intro. +Elim a; Intro. +Rewrite (tech2 An n m); [Idtac | Assumption]. +Rewrite (tech2 Bn n m); [Idtac | Assumption]. +Unfold R_dist; Unfold Rminus; Do 2 Rewrite Ropp_distr1; Do 2 Rewrite <- Rplus_assoc; Do 2 Rewrite Rplus_Ropp_r; Do 2 Rewrite Rplus_Ol; Do 2 Rewrite Rabsolu_Ropp; Repeat Rewrite Rabsolu_right. +Apply sum_Rle; Intros. +Elim (H (plus (S n) n0)); Intros. +Apply H8. +Apply Rle_sym1; Apply cond_pos_sum; Intro. +Elim (H (plus (S n) n0)); Intros. +Apply Rle_trans with (An (plus (S n) n0)); Assumption. +Apply Rle_sym1; Apply cond_pos_sum; Intro. +Elim (H (plus (S n) n0)); Intros; Assumption. +Rewrite b; Unfold R_dist; Unfold Rminus; Do 2 Rewrite Rplus_Ropp_r; Rewrite Rabsolu_R0; Right; Reflexivity. +Rewrite (tech2 An m n); [Idtac | Assumption]. +Rewrite (tech2 Bn m n); [Idtac | Assumption]. +Unfold R_dist; Unfold Rminus; Do 2 Rewrite Rplus_assoc; Rewrite (Rplus_sym (sum_f_R0 An m)); Rewrite (Rplus_sym (sum_f_R0 Bn m)); Do 2 Rewrite Rplus_assoc; Do 2 Rewrite Rplus_Ropp_l; Do 2 Rewrite Rplus_Or; Repeat Rewrite Rabsolu_right. +Apply sum_Rle; Intros. +Elim (H (plus (S m) n0)); Intros; Apply H8. +Apply Rle_sym1; Apply cond_pos_sum; Intro. +Elim (H (plus (S m) n0)); Intros. +Apply Rle_trans with (An (plus (S m) n0)); Assumption. +Apply Rle_sym1. +Apply cond_pos_sum; Intro. +Elim (H (plus (S m) n0)); Intros; Assumption. +Qed.
\ No newline at end of file diff --git a/theories/Reals/SplitAbsolu.v b/theories/Reals/SplitAbsolu.v index 19c9e49a6..e904c238d 100644 --- a/theories/Reals/SplitAbsolu.v +++ b/theories/Reals/SplitAbsolu.v @@ -8,7 +8,7 @@ (*i $Id$ i*) -Require Export Rbasic_fun. +Require Rbasic_fun. Tactic Definition SplitAbs := Match Context With diff --git a/theories/Reals/SplitRmult.v b/theories/Reals/SplitRmult.v index e799c7b8b..779491bf4 100644 --- a/theories/Reals/SplitRmult.v +++ b/theories/Reals/SplitRmult.v @@ -11,7 +11,7 @@ (*i Lemma mult_non_zero :(r1,r2:R)``r1<>0`` /\ ``r2<>0`` -> ``r1*r2<>0``. i*) -Require Rbase. +Require RealsB. Tactic Definition SplitRmult := Match Context With diff --git a/theories/Reals/Sqrt_reg.v b/theories/Reals/Sqrt_reg.v index f9a5dafab..05de0f1c6 100644 --- a/theories/Reals/Sqrt_reg.v +++ b/theories/Reals/Sqrt_reg.v @@ -8,12 +8,8 @@ (*i $Id$ i*) -Require Rbase. -Require Rbasic_fun. -Require Rderiv. -Require R_sqr. -Require DiscrR. -Require Rtrigo. +Require RealsB. +Require Rfunctions. Require Ranalysis1. Require R_sqrt. diff --git a/theories/Reals/TAF.v b/theories/Reals/TAF.v index d1327f496..2bcbf55d9 100644 --- a/theories/Reals/TAF.v +++ b/theories/Reals/TAF.v @@ -8,9 +8,8 @@ (*i $Id$ i*) -Require Rbase. -Require DiscrR. -Require Rlimit. +Require RealsB. +Require Rfunctions. Require Ranalysis1. Require Rtopology. @@ -463,4 +462,57 @@ Replace ``(derive_pt f c (pr1 c))+((derive_pt g c (pr2 c))-(derive_pt f c (pr1 c Apply H0; Assumption. Apply pr_nu. Apply derivable_minus; Assumption. +Qed. + +(* If f has a null derivative in ]a,b[ and is continue in [a,b], *) +(* then f is constant on [a,b] *) +Lemma null_derivative_loc : (f:R->R;a,b:R;pr:(x:R)``a<x<b``->(derivable_pt f x)) ((x:R)``a<=x<=b``->(continuity_pt f x)) -> ((x:R;P:``a<x<b``)(derive_pt f x (pr x P))==R0) -> (constant_D_eq f [x:R]``a<=x<=b`` (f a)). +Intros; Unfold constant_D_eq; Intros; Case (total_order_T a b); Intro. +Elim s; Intro. +Assert H2 : (y:R)``a<y<x``->(derivable_pt id y). +Intros; Apply derivable_pt_id. +Assert H3 : (y:R)``a<=y<=x``->(continuity_pt id y). +Intros; Apply derivable_continuous; Apply derivable_id. +Assert H4 : (y:R)``a<y<x``->(derivable_pt f y). +Intros; Apply pr; Elim H4; Intros; Split. +Assumption. +Elim H1; Intros; Apply Rlt_le_trans with x; Assumption. +Assert H5 : (y:R)``a<=y<=x``->(continuity_pt f y). +Intros; Apply H; Elim H5; Intros; Split. +Assumption. +Elim H1; Intros; Apply Rle_trans with x; Assumption. +Elim H1; Clear H1; Intros; Elim H1; Clear H1; Intro. +Assert H7 := (TAF_gen f id a x H4 H2 H1 H5 H3). +Elim H7; Intros; Elim H8; Intros; Assert H10 : ``a<x0<b``. +Elim x1; Intros; Split. +Assumption. +Apply Rlt_le_trans with x; Assumption. +Assert H11 : ``(derive_pt f x0 (H4 x0 x1))==0``. +Replace (derive_pt f x0 (H4 x0 x1)) with (derive_pt f x0 (pr x0 H10)); [Apply H0 | Apply pr_nu]. +Assert H12 : ``(derive_pt id x0 (H2 x0 x1))==1``. +Apply derive_pt_eq_0; Apply derivable_pt_lim_id. +Rewrite H11 in H9; Rewrite H12 in H9; Rewrite Rmult_Or in H9; Rewrite Rmult_1r in H9; Apply Rminus_eq; Symmetry; Assumption. +Rewrite H1; Reflexivity. +Assert H2 : x==a. +Rewrite <- b0 in H1; Elim H1; Intros; Apply Rle_antisym; Assumption. +Rewrite H2; Reflexivity. +Elim H1; Intros; Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? (Rle_trans ? ? ? H2 H3) r)). +Qed. + +(* La primitive est unique a une constante pres *) +Lemma antiderivative_Ucte : (f,g1,g2:R->R;a,b:R) (antiderivative f g1 a b) -> (antiderivative f g2 a b) -> (EXT c:R | (x:R)``a<=x<=b``->``(g1 x)==(g2 x)+c``). +Unfold antiderivative; Intros; Elim H; Clear H; Intros; Elim H0; Clear H0; Intros H0 _; Exists ``(g1 a)-(g2 a)``; Intros; Assert H3 : (x:R)``a<=x<=b``->(derivable_pt g1 x). +Intros; Unfold derivable_pt; Apply Specif.existT with (f x0); Elim (H x0 H3); Intros; EApply derive_pt_eq_1; Symmetry; Apply H4. +Assert H4 : (x:R)``a<=x<=b``->(derivable_pt g2 x). +Intros; Unfold derivable_pt; Apply Specif.existT with (f x0); Elim (H0 x0 H4); Intros; EApply derive_pt_eq_1; Symmetry; Apply H5. +Assert H5 : (x:R)``a<x<b``->(derivable_pt (minus_fct g1 g2) x). +Intros; Elim H5; Intros; Apply derivable_pt_minus; [Apply H3; Split; Left; Assumption | Apply H4; Split; Left; Assumption]. +Assert H6 : (x:R)``a<=x<=b``->(continuity_pt (minus_fct g1 g2) x). +Intros; Apply derivable_continuous_pt; Apply derivable_pt_minus; [Apply H3 | Apply H4]; Assumption. +Assert H7 : (x:R;P:``a<x<b``)(derive_pt (minus_fct g1 g2) x (H5 x P))==``0``. +Intros; Elim P; Intros; Apply derive_pt_eq_0; Replace R0 with ``(f x0)-(f x0)``; [Idtac | Ring]. +Assert H9 : ``a<=x0<=b``. +Split; Left; Assumption. +Apply derivable_pt_lim_minus; [Elim (H ? H9) | Elim (H0 ? H9)]; Intros; EApply derive_pt_eq_1; Symmetry; Apply H10. +Assert H8 := (null_derivative_loc (minus_fct g1 g2) a b H5 H6 H7); Unfold constant_D_eq in H8; Assert H9 := (H8 ? H2); Unfold minus_fct in H9; Rewrite <- H9; Ring. Qed.
\ No newline at end of file diff --git a/theories/Reals/TypeSyntax.v b/theories/Reals/TypeSyntax.v index 0044e207d..53df97a1f 100644 --- a/theories/Reals/TypeSyntax.v +++ b/theories/Reals/TypeSyntax.v @@ -30,3 +30,6 @@ Inductive sigT [A:Set;P:A->Prop]:Type:= (**********) Inductive sigTT [A:Type;P:A->Prop]:Type:= existTT: (x:A)(P x)->(sigTT A P). + +(**********) +Definition SigT := Specif.sigT.
\ No newline at end of file |