Module mathcomp.classical.functions
From mathcomp Require Import boot order finmap ssralg ssrnum ssrint rat.From HB Require Import structures.
#[warning="-warn-library-file-internal-analysis"]
From mathcomp Require Import unstable.
From mathcomp Require Import boolp classical_sets.
Add Search Blacklist "__canonical__".
Add Search Blacklist "__functions_".
Add Search Blacklist "_factory_".
Add Search Blacklist "_mixin_".
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Reserved Notation "f \_ D" (at level 10).
Reserved Notation "'{' 'fun' A '>->' B '}'"
(format "'{' 'fun' A '>->' B '}'").
Reserved Notation "'{' 'oinv' T '>->' U '}'"
(format "'{' 'oinv' T '>->' U '}'").
Reserved Notation "'{' 'inv' T '>->' U '}'"
(format "'{' 'inv' T '>->' U '}'").
Reserved Notation "'{' 'oinvfun' T '>->' U '}'"
(format "'{' 'oinvfun' T '>->' U '}'").
Reserved Notation "'{' 'invfun' T '>->' U '}'"
(format "'{' 'invfun' T '>->' U '}'").
Reserved Notation "'{' 'inj' A '>->' T '}'"
(format "'{' 'inj' A '>->' T '}'").
Reserved Notation "'{' 'splitinj' A '>->' T '}'"
(format "'{' 'splitinj' A '>->' T '}'").
Reserved Notation "'{' 'surj' A '>->' B '}'"
(format "'{' 'surj' A '>->' B '}'").
Reserved Notation "'{' 'splitsurj' A '>->' B '}'"
(format "'{' 'splitsurj' A '>->' B '}'").
Reserved Notation "'{' 'injfun' A '>->' B '}'"
(format "'{' 'injfun' A '>->' B '}'").
Reserved Notation "'{' 'surjfun' A '>->' B '}'"
(format "'{' 'surjfun' A '>->' B '}'").
Reserved Notation "'{' 'splitinjfun' A '>->' B '}'"
(format "'{' 'splitinjfun' A '>->' B '}'").
Reserved Notation "'{' 'splitsurjfun' A '>->' B '}'"
(format "'{' 'splitsurjfun' A '>->' B '}'").
Reserved Notation "'{' 'bij' A '>->' B '}'"
(format "'{' 'bij' A '>->' B '}'").
Reserved Notation "'{' 'splitbij' A '>->' B '}'"
(format "'{' 'splitbij' A '>->' B '}'").
Reserved Notation "[ 'fun' 'of' f ]" (format "[ 'fun' 'of' f ]").
Reserved Notation "[ 'fun' f 'in' A ]" (format "[ 'fun' f 'in' A ]").
Reserved Notation "[ 'oinv' 'of' f ]" (format "[ 'oinv' 'of' f ]").
Reserved Notation "[ 'inv' 'of' f ]" (format "[ 'inv' 'of' f ]").
Reserved Notation "[ 'oinv' 'of' f ]" (format "[ 'oinv' 'of' f ]").
Reserved Notation "[ 'inv' 'of' f ]" (format "[ 'inv' 'of' f ]").
Reserved Notation "[ 'inj' 'of' f ]" (format "[ 'inj' 'of' f ]").
Reserved Notation "[ 'splitinj' 'of' f ]" (format "[ 'splitinj' 'of' f ]").
Reserved Notation "[ 'surj' 'of' f ]" (format "[ 'surj' 'of' f ]").
Reserved Notation "[ 'splitsurj' 'of' f ]" (format "[ 'splitsurj' 'of' f ]").
Reserved Notation "[ 'injfun' 'of' f ]" (format "[ 'injfun' 'of' f ]").
Reserved Notation "[ 'surjfun' 'of' f ]" (format "[ 'surjfun' 'of' f ]").
Reserved Notation "[ 'splitinjfun' 'of' f ]"
(format "[ 'splitinjfun' 'of' f ]").
Reserved Notation "[ 'splitsurjfun' 'of' f ]"
(format "[ 'splitsurjfun' 'of' f ]").
Reserved Notation "[ 'bij' 'of' f ]" (format "[ 'bij' 'of' f ]").
Reserved Notation "[ 'splitbij' 'of' f ]" (format "[ 'splitbij' 'of' f ]").
Reserved Notation "''oinv_' f" (at level 8, f at level 2, format "''oinv_' f").
Reserved Notation "''funS_' f" (at level 8, f at level 2, format "''funS_' f").
Reserved Notation "''mem_fun_' f"
(at level 8, f at level 2, format "''mem_fun_' f").
Reserved Notation "''oinvK_' f"
(at level 8, f at level 2, format "''oinvK_' f").
Reserved Notation "''oinvS_' f"
(at level 8, f at level 2, format "''oinvS_' f").
Reserved Notation "''oinvP_' f"
(at level 8, f at level 2, format "''oinvP_' f").
Reserved Notation "''oinvT_' f"
(at level 8, f at level 2, format "''oinvT_' f").
Reserved Notation "''invK_' f"
(at level 8, f at level 2, format "''invK_' f").
Reserved Notation "''invS_' f"
(at level 8, f at level 2, format "''invS_' f").
Reserved Notation "''funoK_' f"
(at level 8, f at level 2, format "''funoK_' f").
Reserved Notation "''inj_' f"
(at level 8, f at level 2, format "''inj_' f").
Reserved Notation "''funK_' f"
(at level 8, f at level 2, format "''funK_' f").
Reserved Notation "''totalfun_' A"
(at level 8, A at level 2, format "''totalfun_' A").
Reserved Notation "''surj_' f"
(at level 8, f at level 2, format "''surj_' f").
Reserved Notation "''split_' a"
(at level 8, a at level 2, format "''split_' a").
Reserved Notation "''bijTT_' f"
(at level 8, f at level 2, format "''bijTT_' f").
Reserved Notation "''bij_' f" (at level 8, f at level 2, format "''bij_' f").
Reserved Notation "''valL_' v" (at level 8, v at level 2, format "''valL_' v").
Reserved Notation "''valLfun_' v"
(at level 8, v at level 2, format "''valLfun_' v").
Reserved Notation "''pinv_' dflt"
(at level 8, dflt at level 2, format "''pinv_' dflt").
Reserved Notation "''pPbij_' dflt"
(at level 8, dflt at level 2, format "''pPbij_' dflt").
Reserved Notation "''pPinj_' dflt"
(at level 8, dflt at level 2, format "''pPinj_' dflt").
Reserved Notation "''injpPfun_' dflt"
(at level 8, dflt at level 2, format "''injpPfun_' dflt").
Reserved Notation "''funpPinj_' dflt"
(at level 8, dflt at level 2, format "''funpPinj_' dflt").
Local Open Scope classical_set_scope.
Section MainProperties.
Context { } ( : set aT) ( : set rT) ( : aT -> rT).
Definition
preorder : forall [T : Type], rel T -> Prop preorder is not universe polymorphic Arguments preorder [T]%_type_scope R preorder is transparent Expands to: Constant mathcomp.classical.wochoice.preorder Declared in library mathcomp.classical.wochoice, line 80, characters 11-19
Source code
Definition
partial_order : forall [T : Type], rel T -> Prop partial_order is not universe polymorphic Arguments partial_order [T]%_type_scope R partial_order is transparent Expands to: Constant mathcomp.classical.wochoice.partial_order Declared in library mathcomp.classical.wochoice, line 82, characters 11-24
Source code
Definition
total_order : forall [T : Type], rel T -> Prop total_order is not universe polymorphic Arguments total_order [T]%_type_scope R total_order is transparent Expands to: Constant mathcomp.classical.wochoice.total_order Declared in library mathcomp.classical.wochoice, line 84, characters 11-22
Source code
Definition
minimum_of : forall [T : Type], rel T -> {pred T} -> T -> Prop minimum_of is not universe polymorphic Arguments minimum_of [T]%_type_scope R A z minimum_of is transparent Expands to: Constant mathcomp.classical.wochoice.minimum_of Declared in library mathcomp.classical.wochoice, line 86, characters 11-21
Source code
End MainProperties.
.
Source code
Source code
Source code
Source code
Source code
Source code
{ funS : set_fun A B f }.
.
Source code
Source code
Source code
Source code
Source code
Source code
{ of isFun _ _ A B f }.
Notation
Source code
Notation
Source code
.
Source code
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
Notation
Source code
Notation
Source code
form_scope.
Definition
maximum_of : forall [T : Type], rel T -> {pred T} -> T -> Prop maximum_of is not universe polymorphic Arguments maximum_of [T]%_type_scope R A z maximum_of is transparent Expands to: Constant mathcomp.classical.wochoice.maximum_of Declared in library mathcomp.classical.wochoice, line 88, characters 11-21
Source code
& phantom (_ -> _) f := @oinv _ _ f.
Notation
Source code
.
Source code
Source code
Source code
{ of OInv aT rT f & isFun aT rT A B f}.
Notation
Source code
Notation
Source code
[the {oinvfun _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
Source code
Source code
inv : rT -> aT;
oliftV : olift inv = 'oinv_f
}.
.
Source code
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Notation
Source code
Notation
Source code
Definition
well_order : forall [T : Type], rel T -> Prop well_order is not universe polymorphic Arguments well_order [T]%_type_scope R well_order is transparent Expands to: Constant mathcomp.classical.wochoice.well_order Declared in library mathcomp.classical.wochoice, line 90, characters 11-21
Source code
@inv _ _ f.
Notation
Source code
Notation
Source code
(@phant_inv _ _ _ (Phantom (_ -> _) f%function)) : function_scope.
.
Source code
Source code
Source code
{ of Inv aT rT f & isFun aT rT A B f}.
Notation
Source code
Notation
Source code
[the {invfun _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
Source code
Source code
Source code
(f : aT -> rT) & OInv _ _ f := {
oinvS : {homo 'oinv_f : / B x >-> (some @` A) x};
oinvK : {in B, ocancel 'oinv_f f};
}.
.
Source code
Source code
Source code
Source code
Source code
Source code
oinv; oinvS : {homo oinv : / B x >-> (some @` A) x};
oinvK : {in B, ocancel oinv f};
}.
.
Source code
Source code
Source code
Source code
Source code
& OCanV _ _ A B f.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Notation
Source code
Notation
Source code
[the {surj _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
{ of @Surject aT rT A B f & @Fun _ _ A B f}.
Notation
Source code
Notation
Source code
[the {surjfun _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
{ of @Surject aT rT A B f & @Inv _ _ f}.
Notation
Source code
Notation
Source code
[the {splitsurj _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
{ of @SplitSurj aT rT A B f & @Fun _ _ A B f}.
Notation
Source code
(@SplitSurjFun.type _ _ A B) : type_scope.
Notation
Source code
[the {splitsurjfun _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
Source code
{ funoK : {in A, pcancel f 'oinv_f} }.
.
Source code
Source code
Source code
{ of OInv aT rT f & OInv_Can aT rT A f}.
Notation
Source code
Notation
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
{ of @Fun _ _ A B f & @Inject _ _ A f }.
Notation
Source code
Notation
Source code
[the {injfun _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
Source code
{ of @Inv aT rT f & @Inject aT rT A f}.
Notation
Source code
Notation
Source code
[the {splitinj _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
Source code
{ of @SplitInj _ rT A f & @isFun _ _ A B f}.
Notation
Source code
Notation
Source code
[the {splitinjfun _ >-> _} of f : _ -> _] : form_scope.
.
Source code
Source code
Source code
Source code
Source code
Source code
{ of @InjFun _ _ A B f & @SurjFun _ _ A B f}.
Notation
Source code
Notation
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
{ of @SplitInjFun _ _ A B f & @SplitSurjFun _ _ A B f}.
Notation
Source code
Notation
Source code
Module
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
End ShortFunSyntax.
Definition
chain : forall [T : Type], rel T -> {pred T} -> Prop chain is not universe polymorphic Arguments chain [T]%_type_scope R C chain is transparent Expands to: Constant mathcomp.classical.wochoice.chain Declared in library mathcomp.classical.wochoice, line 92, characters 11-16
Source code
( : {fun A >-> B}) & phantom (_ -> _) f := @funS _ _ _ _ f.
Notation
Source code
(at level 8, f at level 2) : form_scope.
#[global] Hint Extern 0 (set_fun _ _ _) => solve [apply: funS] : core.
#[global] Hint Extern 0 (prop_in1 _ _) => solve [apply: funS] : core.
Definition
wo_chain : forall [T : Type], rel T -> {pred T} -> Prop wo_chain is not universe polymorphic Arguments wo_chain [T]%_type_scope R C wo_chain is transparent Expands to: Constant mathcomp.classical.wochoice.wo_chain Declared in library mathcomp.classical.wochoice, line 94, characters 11-19
Source code
image_subP.2 (@funS _ _ _ _ f).
Arguments fun_image_sub {aT rT A B}.
#[global] Hint Extern 0 (_ @` _ `<=` _) => solve [apply: fun_image_sub] : core.
Definition
Source code
homo_setP.2 (@funS _ _ _ _ f).
#[global] Hint Extern 0 (prop_in1 _ _) => solve [apply: mem_fun] : core.
Definition
Source code
( : {fun A >-> B}) & phantom (_ -> _) f := homo_setP.2 (@funS _ _ _ _ f).
Notation
Source code
(at level 8, f at level 2) : form_scope.
Lemma
Source code
Proof.
Definition
Source code
( : {surj A >-> B}) & phantom (_ -> _) f := @oinvK _ _ _ _ f.
Notation
Source code
#[global] Hint Resolve oinvK : core.
Definition
Source code
( : {surj A >-> B}) & phantom (_ -> _) f := @oinvS _ _ _ _ f.
Notation
Source code
#[global] Hint Resolve oinvS : core.
Variant
Source code
rT -> option aT -> Type :=
Source code
Lemma
Source code
B y -> oinv_spec f y y ('oinv_f y).
Proof.
Definition
Source code
( : {surj A >-> B}) & phantom (_ -> _) f := @oinvP _ _ _ _ f.
Notation
Source code
#[global] Hint Resolve oinvP : core.
Lemma
Source code
B x -> 'oinv_f x.
Proof.
Source code
( : {surj A >-> B}) & phantom (_ -> _) f := @oinvT _ _ _ _ f.
Notation
Source code
#[global] Hint Resolve oinvT : core.
Lemma
Source code
{in B, cancel f^-1 f}.
Definition
Source code
( : {splitsurj A >-> B}) & phantom (_ -> _) f := @invK _ _ _ _ f.
Notation
Source code
#[global] Hint Resolve invK : core.
Lemma
Source code
{homo f^-1 : / B x >-> A x}.
Definition
neitv : forall {disp : disp_t} {T : porderType disp}, interval T -> bool neitv is not universe polymorphic Arguments neitv {disp T} i neitv is transparent Expands to: Constant mathcomp.classical.set_interval.neitv Declared in library mathcomp.classical.set_interval, line 71, characters 11-16
Source code
{ : {splitsurjfun A >-> B}} & phantom (_ -> _) f := @invS _ _ _ _ f.
Notation
Source code
#[global] Hint Resolve invS : core.
Definition
set_itv_infty_set0 : forall [disp : disp_t] (T : porderType disp), (forall a : itv_bound T, [set` Interval a -oo%O]%classic = set0) * (forall a : itv_bound T, [set` Interval +oo%O a]%classic = set0) set_itv_infty_set0 is not universe polymorphic Arguments set_itv_infty_set0 [disp] T set_itv_infty_set0 is transparent Expands to: Constant mathcomp.classical.set_interval.set_itv_infty_set0 Declared in library mathcomp.classical.set_interval, line 192, characters 11-29
Source code
& phantom (_ -> _) f := @funoK _ _ _ f.
Notation
Source code
#[global] Hint Resolve funoK : core.
Definition
set_itvE : forall [disp : disp_t] (T : porderType disp), (forall x : T, `[x, x]%classic = [set x]%classic) * (forall x : T, `]x, x[%classic = set0) * (forall x : T, `]x, x]%classic = set0) * (forall x : T, `[x, x[%classic = set0) * (forall x y : T, `]x, y[%classic = [set z | (x < z < y)%O]%classic) * (forall x y : T, `[x, y]%classic = [set z | (x <= z <= y)%O]%classic) * (forall x y : T, `]x, y]%classic = [set z | (x < z <= y)%O]%classic) * (forall x y : T, `[x, y[%classic = [set z | (x <= z < y)%O]%classic) * (`]-oo, +oo[%classic = [set: T]%classic) * (forall x : T, `]x, +oo[%classic = [set z | (x < z)%O]%classic) * (forall x : T, `[x, +oo[%classic = [set z | (x <= z)%O]%classic) * (forall x : T, `]-oo, x[%classic = [set z | (z < x)%O]%classic) * (forall x : T, `]-oo, x]%classic = [set z | (z <= x)%O]%classic) * ((forall a : itv_bound T, [set` Interval a -oo%O]%classic = set0) * (forall a : itv_bound T, [set` Interval +oo%O a]%classic = set0)) set_itvE is not universe polymorphic Arguments set_itvE [disp] T set_itvE is transparent Expands to: Constant mathcomp.classical.set_interval.set_itvE Declared in library mathcomp.classical.set_interval, line 194, characters 11-19
Source code
{in A &, injective f} := pcan_in_inj funoK.
Definition
line_path : forall [R : numDomainType], R -> R -> R -> R line_path is not universe polymorphic Arguments line_path [R] (a b t)%_ring_scope line_path is transparent Expands to: Constant mathcomp.classical.set_interval.line_path Declared in library mathcomp.classical.set_interval, line 700, characters 11-20
Source code
phantom (_ -> _) f := @inj _ _ _ f.
Notation
Source code
Definition
factor : forall [R : numDomainType], R -> R -> R -> join_GRing_PzRing_between_Algebra_BaseZmodule_and_GRing_PzSemiRing R factor is not universe polymorphic Arguments factor [R] (a b x)%_ring_scope factor is transparent Expands to: Constant mathcomp.classical.set_interval.factor Declared in library mathcomp.classical.set_interval, line 731, characters 11-17
Source code
{in A &, injective f} := inj.
#[global] Hint Extern 0 {in _ &, injective _} => solve [apply: inj_hint] : core.
#[global] Hint Extern 0 (set_inj _ _) => solve [apply: inj_hint] : core.
Lemma
Source code
#[global] Hint Extern 0 (injective _) => solve [apply: injT] : core.
Lemma
Source code
{in A, cancel s s^-1}.
Definition
ndline_path : forall [R : numDomainType] [a b : R], (a < b)%R -> R -> R ndline_path is not universe polymorphic Arguments ndline_path [R] [a b]%_ring_scope _ t%_ring_scope ndline_path is transparent Expands to: Constant mathcomp.classical.set_interval.ndline_path Declared in library mathcomp.classical.set_interval, line 744, characters 11-22
Source code
& phantom (_ -> _) f := @funK _ _ _ f.
Notation
Source code
#[global] Hint Resolve funK : core.
Lemma
Source code
f = g <-> f =1 g.
Proof.
rewrite eqfg in ffun *; congr {| Fun.sort := _; Fun.class := {|
Fun.functions_isFun_mixin := {|isFun.funS := _|}|}|}.
exact: Prop_irrelevance.
Qed.
.
Source code
Source code
Source code
Source code
Source code
Source code
{ funK : {in A, cancel f f^-1} }.
.
Source code
Source code
Source code
Source code
Local Lemma
Source code
Proof.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
& Inv aT rT f := {
invS : {homo f^-1 : / B x >-> A x};
invK : {in B, cancel f^-1 f};
}.
.
Source code
Source code
Source code
Source code
Source code
& Inv_CanV _ _ A B f.
#[local] Lemma
Source code
#[local] Lemma
Source code
.
Source code
Source code
Source code
.
Source code
Section OInverse.
Context { : Type} { : set aT} { : set rT}.
.
Source code
Source code
Source code
OInv.Build _ _ 'oinv_f (omap f).
Lemma
Source code
Proof.
.
Source code
Source code
Source code
isFun.Build rT (option aT) B (some @` A) 'oinv_f oinvS.
Lemma
Source code
Proof.
Source code
Source code
Source code
Lemma
Source code
OInv_CanV _ _ B (some @` A) 'oinv_f.
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
End OInverse.
Section Inverse.
Context { : Type} { : set aT} { : set rT}.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
.
Source code
Source code
Source code
isFun.Build rT aT B A f^-1 invS.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Inv_Can.Build _ _ _ f^-1 'invK_f.
.
Source code
Source code
Source code
Inv_CanV.Build _ _ _ _ f^-1 funS funK.
.
Source code
Source code
Source code
End Inverse.
Section Some.
Context {} { : set T}.
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
End Some.
Section OApply.
Context { } { : set aT} { : set rT} { : rT}.
Local Notation
Source code
.
Source code
Source code
Source code
Inv.Build _ _ (oapp f) 'oinv_f.
Lemma
Source code
Proof.
Source code
Proof.
Source code
Lemma
Source code
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End OApply.
Section OBind.
Context { } { : set aT} { : set (option rT)}.
Local Notation f := (oapp f None).
Local Notation
Source code
.
Source code
Source code
Source code
Inv.Build _ _ (obind f) 'oinv_f.
Lemma
Source code
Proof.
Source code
Proof.
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End OBind.
Section Composition.
Context { } { : set aT} { : set rT} { : set sT}.
Local Lemma
Source code
isFun _ _ A C (g \o f).
.
Source code
Source code
Source code
Section OInv.
Context { : {oinv aT >-> rT}} { : {oinv rT >-> sT}}.
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Section OInv.
Context { : {inv aT >-> rT}} { : {inv rT >-> sT}}.
Lemma
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
OInv_Can aT sT A (g \o f).
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Inject.on (g \o f).
.
Source code
Source code
Source code
(g : {splitinj B >-> sT}) := Inject.on (g \o f).
.
Source code
Source code
Source code
(g : {splitinjfun B >-> C}) := Inject.on (g \o f).
End Composition.
Section Composition.
Context { } { : set aT} { : set rT} { : set sT}.
Lemma
Source code
OInv_CanV _ _ A C (g \o f).
Proof.
apply: (@ocan_in_comp _ _ _ (mem B)) oinvK oinvK.
by move=> ? /set_mem; rewrite pred_oapp_set inE; apply: funS.
Qed.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Surject.on (g \o f).
.
Source code
Source code
Source code
Surject.on (g \o f).
.
Source code
Source code
Source code
(g : {splitsurjfun B >-> C}) := Surject.on (g \o f).
.
Source code
Source code
Source code
Surject.on (g \o f).
.
Source code
Source code
Source code
Surject.on (g \o f).
End Composition.
Section totalfun.
Context { : Type}.
Definition
disjoint_itv : forall {disp : disp_t} {T : porderType disp}, rel (interval T) disjoint_itv is not universe polymorphic Arguments disjoint_itv {disp T} _ _ disjoint_itv is transparent Expands to: Constant mathcomp.classical.set_interval.disjoint_itv Declared in library mathcomp.classical.set_interval, line 900, characters 11-23
Source code
Context { : set aT}.
Local Notation
Source code
.
Source code
Source code
isFun.Build _ _ A setT (totalfun f) (fun _ _ => I).
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Surject.on (totalfun f).
.
Source code
Source code
Source code
SplitSurj.on (totalfun f).
End totalfun.
Notation
Source code
Notation
Source code
Section Olift.
Context { } { : set aT} { : set rT}.
.
Source code
Source code
Source code
(Some \o f).
Lemma
Source code
Proof.
.
Source code
Source code
Source code
Inject.copy (olift f) (Some \o ('totalfun_A f)).
.
Source code
Source code
Source code
Surject.copy (olift f) (Some \o f).
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End Olift.
Section Map.
Context { } { : set aT} { : set rT}.
Local Notation f := (obind (olift f)).
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Inv.Build _ _ (omap f) (obind 'oinv_f).
Lemma
Source code
Proof.
Source code
Proof.
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End Map.
.
Source code
Source code
Source code
Source code
Source code
Source code
{ inv; invS : {homo inv : / B x >-> A x}; invK : {in B, cancel inv f}; }.
.
Source code
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
@OInv _ _ f :=
{
funS : {homo f : / A x >-> B x};
oinvS : {homo 'oinv_f : / B x >-> (some @` A) x};
funoK : {in A, pcancel f 'oinv_f};
oinvK : {in B, ocancel 'oinv_f f};
}.
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
{ oinv; funS : {homo f : / A x >-> B x};
oinvS : {homo oinv : / B x >-> (some @` A) x};
funoK : {in A, pcancel f oinv};
oinvK : {in B, ocancel oinv f};
}.
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
{ inv; funK : {in A, cancel f inv} }.
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
Inv _ _ f :=
{ funS : {homo f : / A x >-> B x};
invS : {homo f^-1 : / B x >-> A x};
funK : {in A, cancel f f^-1};
invK : {in B, cancel f^-1 f};
}.
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
{ inv; funS : {homo f : / A x >-> B x};
invS : {homo inv : / B x >-> A x};
funK : {in A, cancel f inv};
invK : {in B, cancel inv f};
}.
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
@SplitInjFun _ _ A B f :=
{ invS : {homo f^-1 : / B x >-> A x}; injV : {in B &, injective f^-1} }.
.
Source code
Source code
Source code
Source code
Source code
Let
Source code
Local Lemma
Source code
.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
Source code
Source code
Local Lemma
Source code
.
Source code
Source code
Source code
(fun => y) (fun => y)
(in1W (projT2 exg).1) (in1W (projT2 exg).2).
.
Source code
Section surj_oinv.
Context { } { : set aT} { : set rT} { : aT -> rT} (
Source code
Let
Source code
if pselect (B y) is left By then some (projT1 (cid2 (fsurj By))) else None.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by case: cid2 => //= x Ax fxy; exists x.
Qed.
Coercion
is_open_itv : forall {d : disp_t} {T : porderType d}, set T -> Prop is_open_itv is not universe polymorphic Arguments is_open_itv {d T} A%_classical_set_scope is_open_itv is transparent Expands to: Constant mathcomp.classical.set_interval.is_open_itv Declared in library mathcomp.classical.set_interval, line 943, characters 11-22
Source code
( : set_surj A B f) :=
OCanV.Build aT rT A B f (surjective_oinvS fS) (surjective_oinvK fS).
Section Psurj.
Context { } { : set aT} { : set rT} { : aT -> rT} (
Source code
Source code
Source code
Source code
Source code
Definition
open_itv_cover : forall {d : disp_t} {T : porderType d}, set T -> set (nat -> set T) open_itv_cover is not universe polymorphic Arguments open_itv_cover {d T} A%_classical_set_scope _ open_itv_cover is transparent Expands to: Constant mathcomp.classical.set_interval.open_itv_cover Declared in library mathcomp.classical.set_interval, line 945, characters 11-25
Source code
Lemma
Source code
End Psurj.
Coercion surjection_of_surj : set_surj >-> Surject.type.
Lemma
Source code
( : set_surj A B f) :
'oinv_fS y = if pselect (B y) is left By then some (projT1 (cid2 (fS y By))) else None.
Proof.
Lemma
Source code
Proof.
Definition
itv_is_open_unbounded : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_open_unbounded is not universe polymorphic Arguments itv_is_open_unbounded {d T} i itv_is_open_unbounded is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_open_unbounded Declared in library mathcomp.classical.set_interval, line 948, characters 11-32
Source code
& phantom (_ -> _) f := @surj _ _ _ _ f.
Notation
Source code
#[global] Hint Extern 0 (set_surj _ _ _) => solve [apply: surj] : core.
Section funin_surj.
Context { : Type}.
Definition
itv_is_oo : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_oo is not universe polymorphic Arguments itv_is_oo {d T} i itv_is_oo is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_oo Declared in library mathcomp.classical.set_interval, line 954, characters 11-20
Source code
Context { : set aT} { : set rT} ( : aT -> rT).
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
((fun _ => id) : set_surj A (f @` A) f).
End funin_surj.
Notation
Source code
#[global] Hint Resolve set_fun_image : core.
Section split.
Context { } ( : set aT) ( : set rT).
Definition
itv_open_ends : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_open_ends is not universe polymorphic Arguments itv_open_ends {d T} i itv_open_ends is transparent Expands to: Constant mathcomp.classical.set_interval.itv_open_ends Declared in library mathcomp.classical.set_interval, line 956, characters 11-24
Source code
Source code
Context (
Source code
Local Notation
Source code
.
Source code
Source code
Source code
Section oinv.
Context ( : {oinv aT >-> rT}).
Let := odflt (dflt y) ('oinv_f y).
.
Source code
Source code
Source code
Lemma
Source code
Proof.
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
Lemma
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End split.
Notation
Source code
Notation
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
{ inj : {in A &, injective f} }.
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
@SurjFun _ _ A B f := { inj : {in A &, injective f} }.
.
Source code
Source code
Source code
Source code
Source code
@SurjFun_Inj _ _ A B f.
Let := f.
.
Source code
Source code
Source code
Let
Source code
Proof.
Source code
Source code
Source code
.
Source code
.
Source code
Source code
Source code
Source code
Source code
Source code
@SplitSurjFun _ _ A B f :=
{ inj : {in A &, injective f} }.
.
Source code
Source code
Source code
Source code
Source code
@SplitSurjFun_Inj _ _ A B f.
Local Lemma
Source code
.
Source code
Source code
Source code
.
Source code
Section Inverses.
Context { : set aT} { : set rT}.
.
Source code
Source code
Source code
SurjFun_Inj.Build _ _ _ _ [fun f in A] 'inj_f.
End Inverses.
Section Pinj.
Context { } { : set aT} { : aT -> rT} (
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
End Pinj.
Section Pfun.
Context { } { : set aT} { : set rT} { : aT -> rT}
(
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Lemma
Source code
End Pfun.
Section injPfun.
Context { } { : set aT} { : set rT} { : {inj A >-> rT}}
(
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
End injPfun.
Section funPinj.
Context { } { : set aT} { : set rT} { : {fun A >-> B}}
(
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
End funPinj.
Section funPsurj.
Context { } { : set aT} { : set rT} { : {fun A >-> B}}
(
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
End funPsurj.
Section surjPfun.
Context { } { : set aT} { : set rT} { : {surj A >-> B}}
(
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
End surjPfun.
Section Psplitinj.
Context { } { : set aT} { : aT -> rT} {} (
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
End Psplitinj.
Section funPsplitinj.
Context { } { : set aT} { : set rT} { : {fun A >-> B}}.
Context {} (
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
{ : {splitinj [set: aT] >-> rT} | f = i}.
Section funPsplitsurj.
Context { } { : set aT} { : set rT} { : {fun A >-> B}}.
Context { : {fun B >-> A}} (
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
{ : {splitsurjfun [set: aT] >-> [set: rT]} | f = s}.
.
Source code
Source code
Source code
(fun => y) (fun => y) (fun _ _ => erefl) (fun _ _ => erefl).
Context {} { : set aT}.
Local Lemma
Source code
Proof.
.
Source code
Source code
Source code
Section OInv.
Context { : {oinv aT >-> aT}}.
.
Source code
Source code
Source code
(iter n (obind 'oinv_f) \o some).
Lemma
Source code
Proof.
Section OInv.
Context { : {inv aT >-> aT}}.
Lemma
Source code
Proof.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End iter_inv.
Section iter_surj.
Context {} { : set aT}.
Lemma
Source code
Proof.
elim: n=> // n IH; rewrite oinv_iter iterfSr iterfS.
apply: (@ocan_in_comp _ _ _ (mem A)) => //; last exact: oinvK.
elim: n {IH} => // n IH x Ax; move: (IH _ Ax); rewrite pred_oapp_set ?inE.
case=> y Ay /= ynf; case: (@oinvS _ _ _ _ f _ Ay) => z ? zfinv; exists z => //.
by rewrite zfinv /= -ynf.
Qed.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Surject.on (iter n f).
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End iter_surj.
Section Unbind.
Context { } { : set aT} { : set rT} (
Source code
Definition
itv_is_closed_unbounded : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_closed_unbounded is not universe polymorphic Arguments itv_is_closed_unbounded {d T} i itv_is_closed_unbounded is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_closed_unbounded Declared in library mathcomp.classical.set_interval, line 983, characters 11-34
Source code
Lemma
Source code
.
Source code
Source code
Source code
Section Oinv.
Context ( : {oinv aT >-> option rT}).
.
Source code
Source code
Source code
Lemma
Source code
Proof.
.
Source code
Source code
Source code
Section Inv.
Context ( : {inv aT >-> option rT}).
Lemma
Source code
Proof.
Source code
Source code
Source code
Lemma
Source code
Proof.
.
Source code
Source code
Source code
Lemma
Source code
@OInv_Can _ _ A (unbind f).
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
Inject.on (unbind f).
Lemma
Source code
@OInv_CanV _ _ A B (unbind f).
Proof.
by case: oinvP => [|a]; [exists b | exists a].
by case: oinvP => [|a Aa /= ->]; first by exists b.
Qed.
Source code
Source code
Source code
.
Source code
Source code
Source code
Surject.on (unbind f).
.
Source code
Source code
Source code
Surject.on (unbind f).
.
Source code
Source code
Source code
Surject.on (unbind f).
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End Unbind.
Section Odflt.
Context {} { : set T} ( : T).
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
[the {splitbij some @` A >-> A} of @unbind (option T) T (fun=> x) idfun].
End Odflt.
Section SubType.
Context { : Type} { : pred T} ( : subType P) ( : sT).
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
(odflt x0 \o 'split_(fun=> val x0) insub).
Lemma
Source code
Proof.
End SubType.
Definition
itv_is_cc : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_cc is not universe polymorphic Arguments itv_is_cc {d T} i itv_is_cc is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_cc Declared in library mathcomp.classical.set_interval, line 989, characters 11-20
Source code
@SigSub _ _ _ x (mem_set I : x \in setT).
.
Source code
Source code
Source code
((fun _ _ => erefl) : {in setT, cancel to_setT val}).
.
Source code
Source code
Source code
.
Source code
Source code
SplitInjFun_CanV.Build T _ _ _ to_setT (fun => I) inj.
Definition
itv_closed_ends : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_closed_ends is not universe polymorphic Arguments itv_closed_ends {d T} i itv_closed_ends is transparent Expands to: Constant mathcomp.classical.set_interval.itv_closed_ends Declared in library mathcomp.classical.set_interval, line 991, characters 11-26
Source code
Lemma
Source code
Proof.
Section subfun.
Context {} { : set T}.
Definition
Source code
SigSub (mem_set (AB _ (set_valP a))).
Lemma
Source code
.
Source code
Source code
SurjFun.copy (subfun AB) [fun subfun AB in setT].
.
Source code
Source code
SurjFun_Inj.Build A B setT (subfun AB @` setT) (subfun AB) (in2W subfun_inj).
End subfun.
Section subfun_eq.
Context {} { : set T}.
Lemma
Source code
Lemma
Source code
olift (subfun (subsetCW AB)) = 'oinv_(subfun (subsetW AB)).
Proof.
Source code
Source code
OInv_Inv.Build A B (subfun (subsetW AB)) (subfun_inv_subproof AB).
End subfun_eq.
Section seteqfun.
Context { : Type}.
Definition
Source code
Context { : set T} ( : A = B).
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
End seteqfun.
Section incl.
Context {} { : set T}.
Definition
Source code
.
Source code
Source code
.
Source code
Source code
.
Source code
Source code
Inv_Can.Build _ _ A (incl AB) (fun _ _ => erefl).
Definition
Source code
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
End incl.
Notation
Source code
Section mkfun.
Context {} {} { : set aT} { : set rT}.
Notation
Source code
Definition
Source code
Source code
.
Source code
Source code
Source code
Source code
Definition
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
SplitInj.on (@mkfun f fAB).
.
Source code
Source code
Source code
Surject.on (@mkfun f fAB).
.
Source code
Source code
Source code
SplitSurj.on (@mkfun f fAB).
End mkfun.
Section set_val.
Context {} { : set T}.
Definition
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Proof.
#[global]
Hint Extern 0 (is_true (set_val _ \in _)) => solve [apply: valP] : core.
.
Source code
Source code
Source code
(in1W unsquashK).
.
Source code
Source code
Source code
Definition
Source code
.
Source code
Source code
Source code
Inj.Build _ _ setT (@choice.pickle T) (in2W (pcan_inj choice.pickleK)).
.
Source code
Source code
Source code
isFun.Build _ _ setT setT (@choice.pickle T) (fun _ _ => I).
Lemma
Source code
Proof.
.
Source code
Source code
Inj.Build (@set0 T) P setT set0fun (in2W set0fun_inj).
.
Source code
Source code
isFun.Build _ _ setT setT (@set0fun P T) (fun _ _ => I).
.
Source code
Source code
Source code
Can2.Build 'I_m 'I_n setT setT (cast_ord eq_mn)
(fun _ _ => I) (fun _ _ => I)
(in1W (cast_ordK _)) (in1W (cast_ordKV _)).
.
Source code
Source code
Source code
Can2.Build T _ setT setT enum_rank (fun _ _ => I) (fun _ _ => I)
(in1W enum_rankK) (in1W enum_valK).
.
Source code
Source code
Source code
Can2.Build _ T setT setT enum_val (fun _ _ => I) (fun _ _ => I)
(in1W enum_valK) (in1W enum_rankK).
Definition
Source code
exist (fun => x \in [set` X]) (val x) (mem_set (valP x)).
Definition
Source code
[` set_mem (valP x)]%fset.
Lemma
Source code
cancel (@finset_val T X) val_finset.
Proof.
Lemma
Source code
cancel (@val_finset T X) finset_val.
Proof.
.
Source code
Source code
Source code
Can2.Build X _ setT setT finset_val (fun _ _ => I) (fun _ _ => I)
(in1W finset_valK) (in1W val_finsetK).
.
Source code
Source code
Source code
Can2.Build _ X setT setT val_finset (fun _ _ => I) (fun _ _ => I)
(in1W val_finsetK) (in1W finset_valK).
.
Source code
Source code
Source code
(fun _ _ => I) (fun _ _ => I) (in1W ordIIK) (in1W IIordK).
.
Source code
Source code
Source code
Definition
Source code
& [disjoint X & Y] & [disjoint A & B] :=
fun ( : T -> T') ( : T) => if u \in X then f u else g u.
Section Glue12.
Context { } { : set T} { : set T'}.
Context { : [disjoint X & Y]} { : [disjoint A & B]}.
Local Notation := (glue XY AB).
Definition
Source code
Proof.
Definition
Source code
Proof.
Section Glue.
Context { } { : set T} { : set T'}.
Context { : [disjoint X & Y]} { : [disjoint A & B]}.
Local Notation := (glue XY AB).
Lemma
Source code
isFun T T' (X `|` Y) (A `|` B) (gl f g).
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
OInv.Build _ _ (gl f g) (glue AB (eqbRL disj_set_some XY) 'oinv_f 'oinv_g).
.
Source code
Source code
Source code
OInversible.on (gl f g).
Lemma
Source code
'oinv_(gl f g) = glue AB (eqbRL disj_set_some XY) 'oinv_f 'oinv_g.
Proof.
Lemma
Source code
some \o (glue AB XY f^-1 g^-1) = 'oinv_(gl f g).
.
Source code
Source code
Source code
OInv_Inv.Build T T' (gl f g) (some_inv_glue_subproof f g).
.
Source code
Source code
Source code
Inversible.on (gl f g).
Lemma
Source code
(gl f g)^-1 = glue AB XY f^-1 g^-1.
Proof.
Lemma
Source code
OInv_Can _ _ (X `|` Y) (gl f g).
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
(g : {splitinjfun Y >-> B}) := Inject.on (gl f g).
Lemma
Source code
OInv_CanV _ _ (X `|` Y) (A `|` B) (gl f g).
Proof.
- by move=> [] zP /=; [rewrite glue1|rewrite glue2]; rewrite ?inE//;
case: oinvP=> // x xX _; exists x => //; [left|right].
- by rewrite glue1 ?inE//; case: oinvP=> //= x xX _; rewrite glue1 ?inE.
- by rewrite glue2 ?inE//; case: oinvP=> //= x xX _; rewrite glue2 ?inE.
Qed.
Source code
Source code
Source code
.
Source code
Source code
Source code
Surject.on (gl f g).
.
Source code
Source code
Source code
Surject.on (gl f g).
.
Source code
Source code
Source code
Surject.on (gl f g).
.
Source code
Source code
Source code
Surject.on (gl f g).
.
Source code
Source code
Source code
Surject.on (gl f g).
End Glue.
Section addition.
Context { : zmodType} ( : V).
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
.
Source code
Source code
Source code
End addition.
Section addition.
Context { : zmodType} ( : V).
Local Open Scope ring_scope.
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
.
Source code
Source code
Source code
End addition.
Section empty.
Context { : emptyType} { : Type} { : set T}.
Implicit Type Y : set T'.
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
End empty.
Section surj_lemmas.
Variables : Type.
Implicit Types (A : set aT) (B : set rT) (f : aT -> rT).
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
{in B, cancel g f} -> g @` B `<=` A ->
set_surj A B f.
Proof.
by have := image_subP.1 gBA y; apply.
Qed.
Lemma
Source code
set_surj A B f -> {in A, g \o f =1 g' \o f} -> {in B, g =1 g'}.
Proof.
Lemma
Source code
forall ( : rT -> sT), {in A, g \o f =1 g' \o f} -> {in B, g =1 g'}.
Proof.
End surj_lemmas.
Arguments can_surj {aT rT} g [f A B].
Arguments surj_epi {aT rT sT} A {B} f {g}.
Lemma
Source code
set_surj A B f -> set_surj B C g -> set_surj A C (g \o f).
Lemma
Source code
Proof.
Lemma
Source code
( : {surj A >-> B}) { : set rT} :
C `<=` B -> 'oinv_f @` C `<=` some @` (f @^-1` C).
Proof.
by exists a => //; rewrite fay.
Qed.
Lemma
Source code
C `<=` f @` A -> some @` (A `&` f @^-1` C) `<=` 'oinv_f @` C.
Arguments oinv_Iimage_sub {aT rT A} f {C} _.
Lemma
Source code
{ : set rT} ( : C `<=` B) : 'oinv_f @` C = some @` (A `&` f @^-1` C).
Proof.
rewrite some_setI subsetI; split; last by apply: oinv_image_sub.
by apply: (subset_trans (image_subset CB)); rewrite image_eq.
Qed.
Lemma
Source code
{ : set rT} ( : C `<=` B) : some @` (f @^-1` C) = 'oinv_f @` C.
Proof.
Lemma
Source code
( : {splitsurj A >-> B}) { : set rT} :
C `<=` B -> f^-1 @` C `<=` f @^-1` C.
Arguments inv_image_sub {aT rT A B} f {C} _.
Lemma
Source code
C `<=` f @` A -> A `&` f @^-1` C `<=` f^-1 @` C.
Arguments inv_Iimage_sub {aT rT A} f {C} _.
Lemma
Source code
{ : set rT} ( : C `<=` B) :
f^-1 @` C = A `&` f @^-1` C.
Proof.
Lemma
Source code
{ : set rT} ( : C `<=` B) : f @^-1` C = f^-1 @` C.
Proof.
Lemma
Source code
( : I -> set rT) : set_fun P Q f -> set_surj P Q f ->
\bigcup_( in Q) F x = \bigcup_( in P) F (f x).
Proof.
Lemma
Source code
( : I -> set rT) : set_fun P Q f -> set_surj P Q f ->
\bigcap_( in Q) F x = \bigcap_( in P) F (f x).
Proof.
Lemma
Source code
J ->
\bigcap_( in D) \bigcup_( in E) F i j =
\bigcup_( in set_fun D E) \bigcap_( in D) F i (f i).
Proof.
Lemma
Source code
(forall , D i -> F i !=set0) -> trivIset D F -> set_inj D F.
Proof.
Section set_bij_lemmas.
Context { : Type} { : set aT} { : set rT} { : aT -> rT}.
Definition
Source code
Context (
Source code
Local Notation := (fun_set_bij fbij).
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End set_bij_lemmas.
Coercion fun_set_bij : set_bij >-> Funclass.
Coercion
Source code
( : set_bij A B f) := Bij.on (fun_set_bij fS).
Section Pbij.
Context { } { : set aT} { : set rT} { : aT -> rT} (
Source code
Source code
Source code
Source code
Source code
Definition
Source code
Lemma
Source code
End Pbij.
Coercion bij_of_set_bijection : set_bij >-> Bij.type.
Lemma
Source code
Proof.
Source code
phantom (_ -> _) f := @bij _ _ _ _ f.
Notation
Source code
#[global] Hint Extern 0 (set_bij _ _ _) => solve [apply: bij] : core.
Section PbijTT.
Context { } { : aT -> rT} (
Source code
Source code
Source code
Source code
Source code
Definition
finite_support : forall {I : choiceType} {T : Type}, T -> set I -> (I -> T) -> seq I finite_support is not universe polymorphic Arguments finite_support {I} {T}%_type_scope idx D%_classical_set_scope F%_function_scope finite_support is transparent Expands to: Constant mathcomp.classical.fsbigop.finite_support Declared in library mathcomp.classical.fsbigop, line 41, characters 11-25
Source code
Lemma
Source code
End PbijTT.
Lemma
Source code
set_bij [set: aT] [set: rT] f = bijective f.
Proof.
Lemma
Source code
Proof.
Source code
& phantom (_ -> _) f := @bijTT _ _ f.
Notation
Source code
#[global] Hint Extern 0 (bijective _) => solve [apply: bijTT] : core.
Section patch.
Context { : Type} ( : aT -> rT) ( : set aT).
Definition
Source code
Lemma
Source code
Proof.
Source code
Lemma
Source code
Proof.
.
Source code
Source code
SurjFun.copy (patch f) [fun patch f in A].
Section inj.
Context ( : {inj A >-> rT}).
Let := patch f.
Lemma
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
End inj.
End patch.
Notation
Source code
Notation
Source code
Lemma
Source code
(f \_ B) x = if x \in B then f x else point.
Proof.
Lemma
Source code
patch d D f = fun => if D i then f i else d i.
Lemma
Source code
( : aT -> rT) ( : set aT) ( : set rT) :
(f \_ D) @^-1` B = (if point \in B then ~` D else set0) `|` D `&` f @^-1` B.
Proof.
Lemma
Source code
h \o patch g D f = patch (h \o g) D (h \o f).
Lemma
Source code
patch g (D `&` D') f = patch g D (patch g D' f).
Lemma
Source code
patch g set0 f = g.
Lemma
Source code
patch g setT f = f.
Lemma
Source code
h point = point -> (h \o f) \_ D = h \o (f \_ D).
Arguments restrict_comp {aT rT sT} h f D.
Lemma
Source code
trivIset D' (F \_ D) = trivIset (D `&` D') F.
Proof.
Section RestrictionLeft.
Context { : Type} ( : V) { : set U} { : set V}.
Local Notation
Source code
Definition
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
Definition
Source code
Definition
Source code
Lemma
Source code
isFun _ _ A B (valL_ (f : _ -> _)).
Proof.
Source code
Source code
Source code
Definition
Source code
Lemma
Source code
sigL f (SigSub xA) = f x.
Proof.
Lemma
Source code
{in A, f =1 g} <-> sigL f = sigL g.
Proof.
Lemma
Source code
{in A, f =1 g} <-> sigLfun f = sigLfun g.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
End RestrictionLeft.
Arguments sigL {U V} A f u /.
Arguments sigLE {U V} A f x.
Arguments valL_ {U V} v {A} f u /.
Notation
Source code
Notation
Source code
Notation
Source code
Section RestrictionRight.
Context { : Type} { : set V}.
Definition
Source code
SigSub (mem_set ('funS_f I) : f u \in A).
.
Source code
Source code
Source code
Definition
set_fun : forall {aT rT : Type}, set aT -> set rT -> (aT -> rT) -> Prop set_fun is not universe polymorphic Arguments set_fun {aT rT}%_type_scope (A B)%_classical_set_scope f%_function_scope set_fun is transparent Expands to: Constant mathcomp.classical.functions.set_fun Declared in library mathcomp.classical.functions, line 251, characters 11-18
Source code
.
Source code
Source code
Source code
Definition
set_surj : forall {aT rT : Type}, set aT -> set rT -> (aT -> rT) -> Prop set_surj is not universe polymorphic Arguments set_surj {aT rT}%_type_scope (A B)%_classical_set_scope f%_function_scope set_surj is transparent Expands to: Constant mathcomp.classical.functions.set_surj Declared in library mathcomp.classical.functions, line 252, characters 11-19
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
End RestrictionRight.
Arguments sigR {U V A} f u /.
Section RestrictionLeftInv.
Context { : Type} ( : V) { : set U} { : set V}.
Local Notation := (sigL A).
Local Notation := sigR.
Local Notation := 'valL_v.
Local Notation := valR.
.
Source code
Source code
Source code
@OInv.Build _ _ (rl f) (obind insub \o 'oinv_f).
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Lemma
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
@OInv.Build _ _ (rr f) (rl 'oinv_f).
Lemma
Source code
'oinv_(rr f) = (rl 'oinv_f).
Proof.
Lemma
Source code
@OInv_Can _ _ setT (rr f).
.
Source code
Source code
Source code
Lemma
Source code
@OInv_CanV _ _ setT setT (rr f).
Proof.
Source code
Source code
Source code
Lemma
Source code
olift (rl f^-1) = 'oinv_(rr f).
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
@OInv_Inv.Build _ _ (rr f) (rl f^-1) (sigR_some_inv f).
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
olift (rr [fun of f^-1]) = 'oinv_(rl f).
Proof.
Source code
Source code
Source code
OInv_Inv.Build _ _ (rl f) (sigL_some_inv f).
Lemma
Source code
(rl f)^-1 = (rr [fun of f^-1]).
Proof.
.
Source code
Source code
Source code
@OInv.Build _ _ (el f) (omap set_val \o 'oinv_f).
.
Source code
Source code
Source code
Lemma
Source code
'oinv_(el f) = omap set_val \o 'oinv_f.
Proof.
Lemma
Source code
oapp (g \o f) (g x) y = g (oapp f x y).
Proof.
Lemma
Source code
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
Proof.
Source code
Source code
Source code
OInv_Inv.Build _ _ (el f) (valL_some_inv f).
.
Source code
Source code
Source code
Lemma
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
injective (rl f) <-> {in A &, injective f}.
Proof.
Lemma
Source code
set_surj [set: A] B (rl f) <-> set_surj A B f.
Proof.
Lemma
Source code
set_fun [set: A] B (rl f) <-> set_fun A B f.
Lemma
Source code
set_bij [set: A] B (rl f) <-> set_bij A B f.
Proof.
by split; [exact/sigL_funP|exact/sigL_injP|exact/sigL_surjP].
Qed.
Lemma
Source code
Lemma
Source code
set_surj A B (el f) <-> set_surj setT B f.
Proof.
Lemma
Source code
set_fun A B (el f) <-> set_fun setT B f.
Lemma
Source code
set_bij A B (el f) <-> set_bij setT B f.
End RestrictionLeftInv.
Section ExtentionLeftInv.
Context { : Type} { : set U} { : set V}.
Local Notation := 'valL_None.
Local Notation := valR.
.
Source code
Source code
Source code
@OInv.Build _ _ (er f) (el 'oinv_f).
Lemma
Source code
Proof.
Lemma
Source code
@OInv_Can _ _ setT (er f).
.
Source code
Source code
Source code
Lemma
Source code
@OInv_CanV _ _ setT A (er f).
Proof.
Source code
Source code
Source code
.
Source code
Source code
Source code
End ExtentionLeftInv.
Section Restrictions2.
Context { : Type} ( : V) { : set U} { : set V}.
Local Notation
Source code
Local Notation
Source code
Definition
set_inj : forall {aT rT : Type}, set aT -> (aT -> rT) -> Prop set_inj is not universe polymorphic Arguments set_inj {aT rT}%_type_scope A%_classical_set_scope f%_function_scope set_inj is transparent Expands to: Constant mathcomp.classical.functions.set_inj Declared in library mathcomp.classical.functions, line 253, characters 11-18
Source code
.
Source code
Source code
Source code
Fun.copy (sigLR f) (totalfun _).
Definition
set_bij : forall {aT rT : Type}, set aT -> set rT -> (aT -> rT) -> Prop set_bij is not universe polymorphic Arguments set_bij {aT rT}%_type_scope (A B)%_classical_set_scope f%_function_scope set_bij is transparent Expands to: Constant mathcomp.classical.functions.set_bij Declared in library mathcomp.classical.functions, line 254, characters 11-18
Source code
Definition
phant_oinv : forall [aT rT : Type] [f : {oinv aT >-> rT}], phantom (aT -> rT) f -> rT -> option aT phant_oinv is not universe polymorphic Arguments phant_oinv [aT rT]%_type_scope [f] _ _ phant_oinv is transparent Expands to: Constant mathcomp.classical.functions.phant_oinv Declared in library mathcomp.classical.functions, line 269, characters 11-21
Source code
Lemma
Source code
Proof.
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
injective (sigLR f) <-> {in A &, injective f}.
Proof.
Lemma
Source code
{in A &, injective (valLR f)} <-> injective f.
Proof.
Lemma
Source code
set_surj setT setT (sigLR f) <-> set_surj A B f.
Proof.
Lemma
Source code
set_surj A B (valLR f) <-> set_surj setT setT f.
Proof.
Lemma
Source code
set_bij A B f <->
exists (
Source code
bijective (sigLR [fun of mkfun fAB]).
Proof.
exists F; rewrite -setTT_bijective.
by split; [|apply: in2W; apply/sigLR_injP|apply/sigLR_surjP].
rewrite -setTT_bijective /set_bij.
set g := [fun of mkfun fAB] => -[_ /in2TT I S]; pose h : _ -> _ := g.
rewrite -[f]/h {}/h; move: g => g in I S *.
by split; [apply/image_subP|apply/sigLR_injP|apply/sigLR_surjP].
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End Restrictions2.
Section set_bij_basic_lemmas.
Context { : Type}.
Implicit Types (A : set aT) (B : set rT) (f : aT -> rT).
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
set_bij (some @` A) (some @` B) (omap f) <-> set_bij A B f.
Proof.
Lemma
Source code
Proof.
End set_bij_basic_lemmas.
Lemma
Source code
( : {bij A >-> B}) : C `<=` A -> D `<=` B ->
set_bij D (some @` C) 'oinv_f <-> set_bij C D f.
Proof.
set_bij C D f -> set_bij D (some @` C) 'oinv_f; last first.
split=> bij_oinv; last exact: oinv_bij.
by apply/bij_omap; rewrite -oinvV; apply: oinv_bij => //; apply: image_subset.
move=> /Pbij[fC ffC]; suff /eq_set_bij-> : {in D, 'oinv_f =1 'oinv_fC} by [].
move=> x xD; apply: 'inj_(oapp f x); rewrite ?mem_fun//=.
- by apply/subsetP : x xD.
- by have := mem_set ((image_subset CA) _ ('oinvS_fC (set_mem xD))).
by rewrite oinvK ?ffC ?oinvK// ?(subsetP.2 _ _ xD).
Qed.
Lemma
Source code
( : {splitbij A >-> B}) : C `<=` A -> D `<=` B ->
set_bij D C f^-1 <-> set_bij C D f.
Proof.
Section set_bij_lemmas.
Context { : Type}.
Implicit Types (A : set aT) (B : set rT) (f : aT -> rT).
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
set_bij C D f.
End set_bij_lemmas.
Section set_bij_lemmas.
Context { : Type}.
Implicit Types (A : set aT) (B : set rT) (f : aT -> rT).
Lemma
Source code
set_bij C D f.
Proof.
Lemma
Source code
{homo f : / C x >-> D x} ->
{homo 'oinv_f : / D x >-> (some @` C) x} ->
set_bij C D f.
Proof.
Lemma
Source code
{homo f : / C x >-> D x} ->
{homo f^-1 : / D x >-> C x} ->
set_bij C D f.
Proof.
Lemma
Source code
{in A, cancel f g} -> {in B, cancel g f} -> set_bij A B f.
Proof.
Lemma
Source code
set_bij A (B `|` B') f -> set_bij (A `\` f @^-1` B') B f.
Proof.
Lemma
Source code
set_bij A (B `|` B') f -> set_bij (A `\` f @^-1` B) B' f.
Proof.
Lemma
Source code
set_bij (A `|` A') B f -> set_bij A (B `\` f @` A') f.
Proof.
apply: bij_sub => [|? []//||]; first exact: subsetUl.
move=> x Ax /=; split; first by apply: funS; left.
move=> [y] A'y /inj; rewrite !inE/= =>yx; apply: (AA' x).
by split=> //; rewrite -yx //; [right|left].
move=> z [Bz /= /not_exists2P /contrapT] A'fxz.
case: oinvP=> // x AA'x fxz; exists x => //.
by have := A'fxz x; rewrite fxz => -[|//]; case: AA'x.
Qed.
Lemma
Source code
set_bij (A `|` A') B f -> set_bij A' (B `\` f @` A) f.
Proof.
End set_bij_lemmas.
Lemma
Source code
set_bij `I_n.+1 A f -> set_bij `I_n (A `\ f n) f.
Proof.
by apply/disj_setPS => i [/= /[swap]->]; rewrite ltnn.
Qed.
Lemma
Source code
set_bij A B f -> set_bij B C g -> set_bij A C (g \o f).
Section pointed_inverse.
Context { } (
Source code
Implicit Types (f : T -> U) (i : {inj A >-> U}).
Definition
phant_inv : forall [aT rT : Type] [f : { inv aT >-> rT}], phantom (aT -> rT) f -> rT -> aT phant_inv is not universe polymorphic Arguments phant_inv [aT rT]%_type_scope [f] _ _ phant_inv is transparent Expands to: Constant mathcomp.classical.functions.phant_inv Declared in library mathcomp.classical.functions, line 293, characters 11-20
Source code
Local Notation
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
set_surj (f @` A) A (pinv f).
Lemma
Source code
pinv f @` (f @` A) = A.
Lemma
Source code
set_bij (f @` A) A (pinv f).
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
set_bij B (g @` B) g.
Proof.
Lemma
Source code
Section pPbij.
Context {: set U} { : T -> U} (
Source code
Lemma
Source code
Proof.
Section pPinj.
Context { : T -> U} (
Source code
Lemma
Source code
End pPinj.
Section injpPfun.
Context { : set U} { : {inj A >-> U}} (
Source code
Let : _ -> _ := f.
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Source code
Lemma
Source code
Proof.
Section funpPinj.
Context { : set U} { : {fun A >-> B}} (
Source code
Lemma
Source code
End funpPinj.
End pointed_inverse.
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Section function_space.
Local Open Scope ring_scope.
Import GRing.Theory.
Definition
fun_image_sub : forall {aT rT : Type} {A : set aT} {B : set rT} (f : {fun A >-> B}), ([set f x | x in A] `<=` B)%classic fun_image_sub is not universe polymorphic Arguments fun_image_sub {aT rT}%_type_scope {A B}%_classical_set_scope f t _ fun_image_sub is transparent Expands to: Constant mathcomp.classical.functions.fun_image_sub Declared in library mathcomp.classical.functions, line 413, characters 11-24
Source code
Lemma
Source code
@cst rT _ a @^-1` A = if a \in A then setT else set0.
Proof.
Obligation Tactic := idtac.
Section fct_nmodType.
Variables ( : Type) ( : nmodType).
Implicit Types f g h : T -> M.
Let
Source code
Let
Source code
Let
Source code
.
Source code
Source code
Source code
End fct_nmodType.
Section fct_zmodType.
Variables ( : Type) ( : zmodType).
Implicit Types f : T -> M.
Let
Source code
.
Source code
Source code
Source code
End fct_zmodType.
Section fct_pzRingType.
Variables ( : Type) ( : pzRingType).
Implicit Types f g h : T -> M.
Let
Source code
Let
Source code
Let
Source code
Let
Source code
Let
Source code
.
Source code
Source code
Source code
(fun => f \* g) mulrA mul1r mulr1 mulrDl mulrDr.
End fct_pzRingType.
Section fct_nzRingType.
Variables ( : pointedType) ( : nzRingType).
Let
Source code
.
Source code
Source code
Source code
End fct_nzRingType.
Section fct_comPzRingType.
Variables ( : Type) ( : comPzRingType).
Let
Source code
.
Source code
Source code
GRing.SemiRing_hasCommutativeMul.Build (T -> M) mulrC.
End fct_comPzRingType.
.
Source code
Source code
Source code
GRing.ComPzRing.on (T -> M).
Section fct_lmod.
Variables ( : Type) ( : pzRingType) ( : lmodType R).
Program Definition
mem_fun : forall [aT rT : Type] [A : set aT] [B : set rT] (f : {fun A >-> B}), {homo f : x / x \in A >-> x \in B} mem_fun is not universe polymorphic Expanded type for implicit arguments mem_fun : forall [aT rT : Type] [A : set aT] [B : set rT] (f : {fun A >-> B}) [x : aT], (fun x0 : aT => is_true (x0 \in A)) x -> (f x \in B) = true Arguments mem_fun [aT rT]%_type_scope [A B]%_classical_set_scope f [x] _ mem_fun is transparent Expands to: Constant mathcomp.classical.functions.mem_fun Declared in library mathcomp.classical.functions, line 418, characters 11-18
Source code
(fun => k \*: f) _ _ _ _.
.
Source code
Source code
Source code
End fct_lmod.
Lemma
Source code
\sum_( <- r | P i) f i = fun => \sum_( <- r | P i) f i x.
Lemma
Source code
( : I -> T -> M) :
\prod_( <- r | P i) f i = fun => \prod_( <- r | P i) f i x.
Lemma
Source code
r \*o f = r \o* f.
Lemma
Source code
(f \min g) = (f + g) - (f \max g).
Proof.
Lemma
Source code
(f \max g) = (f + g) - (f \min g).
Proof.
Lemma
Source code
f \max g = g \max f.
Proof.
Lemma
Source code
f \min g = g \min f.
Proof.
End function_space.
Section function_space_lemmas.
Local Open Scope ring_scope.
Import GRing.Theory.
Lemma
Source code
f + g = (fun => f x + g x).
Proof.
Lemma
Source code
\sum_( <- s) f = (fun => \sum_( <- s) f x).
Proof.
Lemma
Source code
\prod_( <- s) f = (fun => \prod_( <- s) f x).
Proof.
Lemma
Source code
f *+ n = (fun => f x *+ n).
Lemma
Source code
Proof.
Lemma
Source code
@interchange (U -> K) (fun => a - b) (fun => a + b).
Lemma
Source code
f * g = (fun => f x * g x).
Proof.
Lemma
Source code
( : T -> L) :
k *: f = (fun : T => k *: f x).
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
f ^+ n = (fun => f x ^+ n).
Lemma
Source code
g \o f = fun => g (f x).
Proof.
Definition
phant_oinvK : forall [aT rT : Type] [A : set aT] [B : set rT] [f : {surj A >-> B}], phantom (aT -> rT) f -> {in B, ocancel 'oinv_f f} phant_oinvK is not universe polymorphic Expanded type for implicit arguments phant_oinvK : forall [aT rT : Type] [A : set aT] [B : set rT] [f : {surj A >-> B}], phantom (aT -> rT) f -> forall [x : rT], x \in B -> oapp f x ('oinv_f x) = x Arguments phant_oinvK [aT rT]%_type_scope [A B]%_classical_set_scope [f] _ [x] _ phant_oinvK is transparent Expands to: Constant mathcomp.classical.functions.phant_oinvK Declared in library mathcomp.classical.functions, line 430, characters 11-22
Source code
(cstE, compE, opprfctE, addrfctE, mulrfctE, scalerfctE, exprfctE,
zerofctE, onefctE).
Lemma
Source code
(f \+ g) @^-1`[set z] =
\bigcup_( in range f) (f @^-1` [set a] `&` g @^-1` [set z - a]).
Proof.
End function_space_lemmas.
#[deprecated(since="mathcomp-analysis 1.17.0", use=scalerfctE)]
Notation
Source code
Lemma
Source code
Local Open Scope ring_scope.
Import GRing.Theory.
Section linfun_pred.
Context { : numDomainType} { : lmodType K} { : lmodType K}
{ : K -> F -> F}.
phant_oinvP : forall [aT rT : Type] [A : set aT] [B : set rT] [f : {surj A >-> B}], phantom (aT -> rT) f -> forall [y : rT], B y -> oinv_spec f y y ('oinv_f y) phant_oinvP is not universe polymorphic Arguments phant_oinvP [aT rT]%_type_scope [A B]%_classical_set_scope [f] _ [y] _ phant_oinvP is transparent Expands to: Constant mathcomp.classical.functions.phant_oinvP Declared in library mathcomp.classical.functions, line 451, characters 11-22
Source code
Definition
phant_oinvT : forall [aT rT : Type] [A : set aT] [B : set rT] [f : {surj A >-> B}], phantom (aT -> rT) f -> forall [x : rT], B x -> 'oinv_f x phant_oinvT is not universe polymorphic Arguments phant_oinvT [aT rT]%_type_scope [A B]%_classical_set_scope [f] _ [x] _ phant_oinvT is transparent Expands to: Constant mathcomp.classical.functions.phant_oinvT Declared in library mathcomp.classical.functions, line 459, characters 11-22
Source code
Proof.
Canonical
phant_invK : forall [aT rT : Type] [A : set aT] [B : set rT] [f : {splitsurj A >-> B}], phantom (aT -> rT) f -> {in B, cancel f^-1 f} phant_invK is not universe polymorphic Expanded type for implicit arguments phant_invK : forall [aT rT : Type] [A : set aT] [B : set rT] [f : {splitsurj A >-> B}], phantom (aT -> rT) f -> forall [x : rT], x \in B -> f (f^-1 x) = x Arguments phant_invK [aT rT]%_type_scope [A B]%_classical_set_scope [f] _ [x] _ phant_invK is transparent Expands to: Constant mathcomp.classical.functions.phant_invK Declared in library mathcomp.classical.functions, line 467, characters 11-21
Source code
End linfun_pred.
Section linfun.
Context { : numDomainType} { : lmodType R}
{ : lmodType R} { : GRing.Scale.law R F}.
Notation := {linear E -> F | s}.
Notation
Source code
Section Sub.
Context ( : E -> F) ( : f \in linfun).
#[local] Definition
phant_invS : forall [aT rT : Type] [A : set aT] [B : set rT] {f : {splitsurjfun A >-> B}}, phantom (aT -> rT) f -> {homo f^-1 : x / B x >-> A x} phant_invS is not universe polymorphic Expanded type for implicit arguments phant_invS : forall [aT rT : Type] [A : set aT] [B : set rT] {f : {splitsurjfun A >-> B}}, phantom (aT -> rT) f -> forall [x : rT], [eta B] x -> A (f^-1 x) Arguments phant_invS [aT rT]%_type_scope [A B]%_classical_set_scope {f} _ [x] _ phant_invS is transparent Expands to: Constant mathcomp.classical.functions.phant_invS Declared in library mathcomp.classical.functions, line 475, characters 11-21
Source code
@GRing.isLinear.Build _ E F s f (set_mem fP).
Source code
Source code
Source code
Source code
Definition
phant_funoK : forall [aT rT : Type] [A : set aT] [f : {inj A >-> rT}], phantom (aT -> rT) f -> {in A, pcancel f 'oinv_f} phant_funoK is not universe polymorphic Expanded type for implicit arguments phant_funoK : forall [aT rT : Type] [A : set aT] [f : {inj A >-> rT}], phantom (aT -> rT) f -> forall [x : aT], x \in A -> 'oinv_f (f x) = Some x Arguments phant_funoK [aT rT]%_type_scope [A]%_classical_set_scope [f] _ [x] _ phant_funoK is transparent Expands to: Constant mathcomp.classical.functions.phant_funoK Declared in library mathcomp.classical.functions, line 480, characters 11-22
Source code
End Sub.
Let
Source code
(forall ( : f \in linfun), K (linfun_Sub Pf)) -> forall : T, K u.
Proof.
set G := (G in K G).
have Pf : f \in linfun by rewrite inE /= => // x u y; rewrite Pf2 Pf3.
suff -> : G = linfun_Sub Pf by apply: Ksub.
rewrite {}/G.
congr (GRing.Linear.Pack (GRing.Linear.Class _ _)).
- by congr GRing.isNmodMorphism.Axioms_; exact: Prop_irrelevance.
- by congr GRing.isScalable.Axioms_; exact: Prop_irrelevance.
Qed.
Let
Source code
Proof.
.
Source code
Source code
Source code
Lemma
Source code
.
Source code
Source code
Source code
Variant
Source code
|
Source code
Lemma
Source code
Proof.
have {2}-> : f = linfun_Sub f_lc by rewrite linfun_valP.
by constructor.
Qed.
End linfun.
Section linfun_lmodtype.
Context { : numDomainType} { : lmodType R}.
Import GRing.Theory.
Let
Source code
Proof.
.
Source code
Source code
Source code
.
Source code
Source code
[SubChoice_isSubLmodule of {linear E -> F } by <:].
End linfun_lmodtype.
.
Source code
Source code
Source code
isPointed.Build {linear E -> F} 0.