Module mathcomp.analysis.convex
From HB Require Import structures.From mathcomp Require Import boot order finmap ssralg ssrint ssrnum interval.
From mathcomp Require Import interval_inference.
#[warning="-warn-library-file-internal-analysis"]
From mathcomp Require Import unstable.
From mathcomp Require Import boolp classical_sets set_interval.
From mathcomp Require Import reals topology.
Reserved Notation "x <| p |> y" (format "x <| p |> y", at level 49).
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import Order.TTheory GRing.Theory Num.Theory.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Lemma lt_convUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code {RSource code : realFieldType} (xSource code ySource code rSource code eSource code : R) :
0 <= r -> r <= 1 -> x < e -> y < e -> r * x + r.~ * y < e.
Proof.
have [->|] := eqVneq r 0; first by rewrite mul0r /onem subr0 add0r mul1r.
have [->|] := eqVneq r 1; first by rewrite mul1r /onem subrr mul0r addr0.
move=> rneq0 rneq1.
have -> : e = r * e + (1 -r) * e by rewrite -mulrDl addrCA subrr addr0 mul1r.
apply: ltrD.
rewrite lter_pM2l lt_neqAle; apply/andP; split => //; first by rewrite eq_sym.
by move: xe; rewrite lt_def; move/andP => []; rewrite eq_sym //.
by apply: ltW.
rewrite lter_pM2l /onem ?subr_gt0 ?ltW //.
by rewrite lt_def; apply/andP; split => //; rewrite eq_sym.
Qed.
Lemma le_convSource code {RSource code : realFieldType} (xSource code ySource code rSource code eSource code : R):
0 <= r -> r <= 1 -> 0 <= x -> x <= e -> 0 <= y -> y <= e -> r * x + r.~ * y <= e.
Proof.
Declare Scope convex_scope.
Local Open Scope convex_scope.
Module ConvexQuasiAssocSource code.
Section def.
Variables (RSource code : numDomainType) (TSource code : Type) (convSource code : {i01 R} -> T -> T -> T).
Local Notation "x <| p |> y"Source code := (conv p x y).
Definition law
ConvexQuasiAssoc.law : forall [R : numDomainType] [T : Type], ({i01 R} -> T -> T -> T) -> Prop ConvexQuasiAssoc.law is not universe polymorphic Arguments ConvexQuasiAssoc.law [R] [T]%_type_scope conv%_function_scope ConvexQuasiAssoc.law is transparent Expands to: Constant mathcomp.analysis.convex.ConvexQuasiAssoc.law Declared in library mathcomp.analysis.convex, line 87, characters 11-14
Source code := forall (pSource code qSource code rSource code sSource code : {i01 R}) (aSource code bSource code cSource code : T),
p%:num = r%:num * s%:num ->
s%:num.~ = p%:num.~ * q%:num.~ ->
a <| p |> (b <| q |> c) = (a <| r |> b) <| s |> c.
End def.
Lemma pq_srSource code (RSource code : comPzRingType) (pSource code qSource code rSource code sSource code : R) :
p = r * s ->
1 - s = (1 - p) * (1 - q) ->
(1 - p) * q = s * (1 - r).
Proof.
Lemma sESource code (RSource code : pzRingType) (pSource code qSource code sSource code : R) :
1 - s = (1 - p) * (1 - q) ->
s = 1 - (1 - p) * (1 - q).
Lemma qESource code (RSource code : comUnitRingType) (pSource code qSource code rSource code sSource code : R) :
1 - p \is a GRing.unit ->
p = r * s ->
1 - s = (1 - p) * (1 - q) ->
q = (s * (1 - r)) / (1 - p).
Lemma rESource code (RSource code : unitRingType) (pSource code rSource code sSource code : R) :
s \is a GRing.unit -> p = r * s -> r = p / s.
End lemmas.
End ConvexQuasiAssoc.
Definition convex_quasi_associative
convex_quasi_associative : forall [R : numDomainType] [T : Type], ({i01 R} -> T -> T -> T) -> Prop convex_quasi_associative is not universe polymorphic Arguments convex_quasi_associative [R] [T]%_type_scope conv%_function_scope convex_quasi_associative is transparent Expands to: Constant mathcomp.analysis.convex.convex_quasi_associative Declared in library mathcomp.analysis.convex, line 127, characters 11-35
Source code := ConvexQuasiAssoc.law.
HBSource code.mixinSource code RecordSource code isConvexSpaceSource code (RSource code :Source code numDomainTypeSource code) T := {
conv : {i01 R} -> T -> T -> T ;
conv1 : forall aSource code bSource code, conv 1%:i01 a b = a ;
convmm : forall (pSource code : {i01 R}) aSource code, conv p a a = a ;
convC : forall (pSource code : {i01 R}) aSource code bSource code, conv p a b = conv (1 - p%:inum)%:i01 b a;
convA : convex_quasi_associative conv
}.
#[shortUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code(type=convTypeUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code)]Used by
- mathcomp.analysis.normedtype_theory.tvs
Source code
HBUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code.structureUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code DefinitionUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code ConvexSpaceUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code (RUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code :Used by
- mathcomp.analysis.normedtype_theory.tvs
Source code numDomainTypeUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code) :=
{TSource code of isConvexSpace R T & Choice T}.
Notation "a <| p |> b"Source code := (conv p a b) : convex_scope.
Section convex_space_lemmas.
Context RSource code (ASource code : convType R).
Implicit Types a b : A.
Lemma conv0Source code aSource code bSource code : a <| 0%:i01 |> b = b.
Proof.
End convex_space_lemmas.
Local Open Scope convex_scope.
Definition convex_lmodType
convex_lmodType : forall {R : numDomainType}, lmodType R -> Type convex_lmodType is not universe polymorphic Arguments convex_lmodType {R} E convex_lmodType is transparent Expands to: Constant mathcomp.analysis.convex.convex_lmodType Declared in library mathcomp.analysis.convex, line 157, characters 11-26
Used by
- mathcomp.analysis.normedtype_theory.normed_module
Source code {RSource code : numDomainType} (ESource code : lmodType R) : Type := E.
Section lmodType_convex_space.
Context {RSource code : numDomainType} {E'Source code : lmodType R}.
Implicit Type p q r : {i01 R}.
Let ESource code := convex_lmodType E'.
Let avgSource code pSource code (aSource code bSource code : E) := p%:inum *: a + p%:inum.~ *: b.
Let avg1Source code aSource code bSource code : avg 1%:i01 a b = a.
Let avgISource code pSource code xSource code : avg p x x = x.
Let avgCSource code pSource code xSource code ySource code : avg p x y = avg (1 - (p%:inum))%:i01 y x.
Let avgASource code : convex_quasi_associative avg.
Proof.
HBSource code.instanceSource code DefinitionSource code _Source code :=Source code ChoiceSource code.on E.
HBSource code.instanceSource code DefinitionSource code _Source code :=Source code
isConvexSpace.Build R E avg1 avgI avgC avgA.
End lmodType_convex_space.
Lemma convDUsed by
- mathcomp.analysis.normedtype_theory.tvs
Source code (RSource code : numDomainType) (ESource code : lmodType R) (tSource code : {i01 R}) (xSource code ySource code z'Source code : convex_lmodType E) :
x <| t |> y + z' = (x + z' : convex_lmodType _) <| t |> (y + z').
Proof.
Definition convex_numDomainType
convex_numDomainType : numDomainType -> Type convex_numDomainType is not universe polymorphic Arguments convex_numDomainType R convex_numDomainType is transparent Expands to: Constant mathcomp.analysis.convex.convex_numDomainType Declared in library mathcomp.analysis.convex, line 201, characters 11-31
Source code (RSource code : numDomainType) : Type := R^o.
Section numDomainType_convex_space.
Context {RSource code : numDomainType}.
Implicit Types p q : {i01 R}.
Let avgSource code pSource code (aSource code bSource code : convex_lmodType R^o) := a <| p |> b.
Let avg1Source code aSource code bSource code : avg 1%:i01 a b = a.
Proof.
Let avgISource code pSource code xSource code : avg p x x = x.
Proof.
Let avgCSource code pSource code xSource code ySource code : avg p x y = avg (1 - (p%:inum))%:i01 y x.
Proof.
Let avgASource code : convex_quasi_associative avg.
Proof.
HBSource code.instanceSource code DefinitionSource code _Source code :=Source code @isConvexSpaceSource code.Build R R^o
_ avg1 avgI avgC avgA.
End numDomainType_convex_space.
Section conv_numDomainType.
Context {RSource code : numDomainType}.
Lemma convR_gt0Used by
- mathcomp.analysis.exp
Source code (aSource code bSource code : R^o) (tSource code : {i01 R}) : 0 < a -> 0 < b -> 0 < a <| t |> b.
Proof.
Lemma convREUsed by
- mathcomp.analysis.hoelder
- mathcomp.analysis.exp
Source code (aSource code bSource code : R^o) (tSource code : {i01 R}) :
a <| t |> b = t%:inum * a + t%:inum.~ * b.
Proof.
Let convRCESource code (aSource code bSource code : R^o) (tSource code : {i01 R}) :
a <| t |> b = t%:inum.~ * b + t%:inum * a.
Lemma convR_line_pathUsed by
- mathcomp.analysis.realfun
Source code (aSource code bSource code : R^o) (tSource code : {i01 R}) :
a <| t |> b = line_path b a t%:num.
Proof.
Lemma convNSource code (aSource code bSource code : R^o) (tSource code : {i01 R}) : - (a <| t |> b) = - a <| t |> - b.
Lemma conv_leSource code (aSource code bSource code : R^o) (tSource code : {i01 R}) : a <= b -> a <| t |> b <= b.
Proof.
Lemma convR_itvUsed by
- mathcomp.analysis.realfun
Source code (aSource code bSource code : R^o) (tSource code : {i01 R}) : a <= b -> a <| t |> b \in `[a, b].
End conv_numDomainType.
Definition convex_set
convex_set : forall [R : numDomainType] [M : lmodType R], set (convex_lmodType M) -> Prop convex_set is not universe polymorphic Arguments convex_set [R M] A%_classical_set_scope convex_set is transparent Expands to: Constant mathcomp.analysis.convex.convex_set Declared in library mathcomp.analysis.convex, line 264, characters 11-21
Used by
- mathcomp.analysis.normedtype_theory.tvs
- mathcomp.analysis.normedtype_theory.normed_module
Source code (RSource code : numDomainType) (MSource code : lmodType R)
(ASource code : set (convex_lmodType M)) :=
forall xSource code ySource code lambdaSource code, x \in A -> y \in A -> x <| lambda |> y \in A.
Lemma convex_setWUsed by
- mathcomp.analysis.normedtype_theory.tvs
- mathcomp.analysis.normedtype_theory.normed_module
Source code (RSource code : numDomainType) (MSource code : lmodType R)
(ASource code : set (convex_lmodType M)) :
convex_set A <->
{in A &, forall xSource code ySource code (kSource code : {i01 R}),
0 < k%:num -> k%:num < 1 -> x <| k |> y \in A}.
Proof.
Definition convex_function
convex_function : forall [R : numFieldType] [E : lmodType R], set (convex_lmodType E) -> (convex_lmodType E -> R^o) -> Prop convex_function is not universe polymorphic Arguments convex_function [R E] D%_classical_set_scope f%_function_scope convex_function is transparent Expands to: Constant mathcomp.analysis.convex.convex_function Declared in library mathcomp.analysis.convex, line 283, characters 11-26
Used by
- mathcomp.analysis.functional_analysis.hahn_banach_theorem
- mathcomp.analysis.hoelder
Source code (RSource code : numFieldType) (ESource code : lmodType R)
(E'Source code := convex_lmodType E) (DSource code : set E') (fSource code : E' -> R^o) :=
forall (tSource code : {i01 R}),
{in D &, forall (xSource code ySource code : E'), (f (x <| t |> y) <= f x <| t |> f y)%R}.