Module mathcomp.classical.classical_sets
From HB Require Import structures.From mathcomp Require Import all_ssreflect_compat ssralg matrix finmap ssrnum.
From mathcomp Require Import ssrint rat interval.
From mathcomp Require Import mathcomp_extra boolp wochoice.
Set SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Declare Scope classical_set_scope.
Reserved Notation "[ 'set' x : T | P ]" (only parsing).
Reserved Notation "[ 'set' x | P ]" (format "[ 'set' x | P ]").
Reserved Notation "[ 'set' E | x 'in' A ]"
(format "[ '[hv' 'set' E '/ ' | x 'in' A ] ']'").
Reserved Notation "[ 'set' E | x 'in' A & y 'in' B ]"
(format "[ '[hv' 'set' E '/ ' | x 'in' A & y 'in' B ] ']'").
Reserved Notation "[ 'set' a ]" (format "[ 'set' a ]").
Reserved Notation "[ 'set' : T ]" (format "[ 'set' : T ]").
Reserved Notation "[ 'set' a : T ]" (format "[ 'set' a : T ]").
Reserved Notation "A `|` B" (at level 52, left associativity).
Reserved Notation "a |` A" (at level 52, left associativity).
Reserved Notation "A `&` B" (at level 48, left associativity).
Reserved Notation "A `*` B" (at level 46, left associativity).
Reserved Notation "A `*`` B" (at level 46, left associativity).
Reserved Notation "A ``*` B" (at level 46, left associativity).
Reserved Notation "A .`1" (format "A .`1").
Reserved Notation "A .`2" (format "A .`2").
Reserved Notation "~` A" (at level 35, right associativity).
Reserved Notation "[ 'set' ~ a ]" (format "[ 'set' ~ a ]").
Reserved Notation "A `\` B" (at level 50, left associativity).
Reserved Notation "A `\ b" (at level 50, left associativity).
Reserved Notation "A `+` B" (at level 54, left associativity).
Reserved Notation "A `<` B" (at level 70, no associativity).
Reserved Notation "A `<=` B" (at level 70, no associativity).
Reserved Notation "A `<=>` B" (at level 70, no associativity).
Reserved Notation "f @^-1` A" (at level 24).
Reserved Notation "f @` A" (at level 24).
Reserved Notation "A !=set0" (at level 80).
Reserved Notation "[ 'set`' p ]" (format "[ 'set`' p ]").
Reserved Notation "[ 'disjoint' A & B ]"
(format "'[hv' [ 'disjoint' '/ ' A '/' & B ] ']'").
Reserved Notation "F `#` G"
(at level 48, left associativity, format "F `#` G").
Reserved Notation "'`I_' n" (at level 8, n at level 2, format "'`I_' n").
Definition
fimfun_Sub_subproof : forall {aT rT : Type} [f : aT -> rT], f \in fimfun -> FiniteImage.axioms_ aT rT f fimfun_Sub_subproof is not universe polymorphic Arguments fimfun_Sub_subproof {aT rT}%type_scope [f]%function_scope fP fimfun_Sub_subproof is transparent Expands to: Constant mathcomp.classical.cardinality.fimfun_Sub_subproof Declared in library mathcomp.classical.cardinality, line 1352, characters 11-30
Source code
Definition
fimfun_Sub : forall {aT rT : Type} [f : aT -> rT], f \in fimfun -> {fimfun aT >-> rT} fimfun_Sub is not universe polymorphic Arguments fimfun_Sub {aT rT}%type_scope [f]%function_scope fP fimfun_Sub is transparent Expands to: Constant mathcomp.classical.cardinality.fimfun_Sub Declared in library mathcomp.classical.cardinality, line 1354, characters 11-21
Source code
Canonical
cst_fimfun : forall {aT rT : Type}, rT -> {fimfun aT >-> rT} cst_fimfun is not universe polymorphic Arguments cst_fimfun {aT rT}%type_scope x cst_fimfun is transparent Expands to: Constant mathcomp.classical.cardinality.cst_fimfun Declared in library mathcomp.classical.cardinality, line 1391, characters 11-21
Source code
Lemma
Source code
Definition
Source code
Bind Scope classical_set_scope with set.
Local Open Scope classical_set_scope.
Delimit Scope classical_set_scope with classic.
Definition
Source code
Arguments mkset _ _ _ /.
Notation
Source code
Notation
Source code
Definition
Source code
[set | exists2 , A x & f x = y].
Arguments image _ _ _ _ _ /.
Notation
Source code
(image A (fun => E)) : classical_set_scope.
Definition
Source code
[set | exists2 , A x & exists2 , B y & f x y = z].
Arguments image2 _ _ _ _ _ _ _ /.
Notation
Source code
(image2 A B (fun => E)) : classical_set_scope.
Section basic_definitions.
Context { : Type}.
Implicit Types (T : Type) (A B : set T) (f : T -> rT) (Y : set rT).
Definition
Source code
Definition
Source code
Definition
Source code
Definition
set : Type -> Type set is not universe polymorphic Arguments set T%type_scope set is transparent Expands to: Constant mathcomp.classical.classical_sets.set Declared in library mathcomp.classical.classical_sets, line 262, characters 11-14
Source code
Definition
in_set : forall [T : finType] (pA : pred T) (x : T), (x \in finset (T:=T) pA) = pA x in_set is not universe polymorphic Arguments in_set [T] pA x in_set is opaque Expands to: Constant mathcomp.boot.finset.in_set Declared in library mathcomp.boot.finset, line 225, characters 6-12
Source code
Definition
set_predType : forall T : finType, predType T set_predType is not universe polymorphic Arguments set_predType T set_predType is transparent Expands to: Constant mathcomp.boot.finset.set_predType Declared in library mathcomp.boot.finset, line 216, characters 10-22
Source code
Definition
Source code
Definition
inE : (forall T : finType, (forall (T0 : finType) (pA : pred T0) (x : T0), (x \in finset (T:=T0) pA) = pA x) * (forall x a : T, (x \in [set a]) = (x == a)) * ((forall (T0 : eqType) (x y : T0), (x \in [:: y]) = (x == y)) * (forall (T0 : eqType) (y : T0) (s : seq T0) (x : T0), (x \in y :: s) = (x == y) || (x \in s)) * (forall T0 : Type, (forall (x : T0) (p : pred T0) (amp : applicative_mem_pred (T:=T0) p), in_mem x amp = p x) * (forall (x : T0) (p : pred T0) (msp : manifest_simpl_pred (T:=T0) p), in_mem x (Mem (T:=T0) [eta msp]) = p x) * (forall p : pred T0, [pred x | p x] =1 p)))) * (forall K K' : choiceType, (forall K0 : choiceType, Datatypes.unit -> (forall (x : K0) (xs : seq K0) (a : K0), (a \in Imfset.imfset imfset_key (T:=K0) (K:=K0) (fun x0 : K0 => x0 : K0) (mem (x :: xs))) = (a == x) || (a \in Imfset.imfset imfset_key (T:=K0) (K:=K0) (fun x0 : K0 => x0 : K0) (mem xs))) * (forall a : K0, (a \in Imfset.imfset imfset_key (T:=K0) (K:=K0) (fun x : K0 => x : K0) (mem [::])) = false) * (forall (xs ys : seq K0) (a : K0), (a \in Imfset.imfset imfset_key (T:=K0) (K:=K0) (fun x : K0 => x : K0) (mem (xs ++ ys))) = (a \in Imfset.imfset imfset_key (T:=K0) (K:=K0) (fun x : K0 => x : K0) (mem xs)) || (a \in Imfset.imfset imfset_key (T:=K0) (K:=K0) (fun x : K0 => x : K0) (mem ys))) * (forall (p : finmempred K0) (k : K0), (k \in Imfset.imfset imfset_key (T:=K0) (K:=K0) id p) = in_mem k p)) * (forall (key : Datatypes.unit) (K0 : choiceType) (A : {fset K0}) (p : finmempred (finmap_fset_sub_type__canonical__choice_SubChoice A)) (k : A), (\val k \in Imfset.imfset key (T:=finmap_fset_sub_type__canonical__choice_SubChoice A) (K:=K0) \val p) = in_mem k p) * (forall x : K, (x \in fset0) = false) * (forall a' a : K, (a \in [fset a']%fset) = (a == a')) * (forall (A B : {fset K}) (a : K), (a \in (A `|` B)%fset) = (a \in A) || (a \in B)) * (forall (A B : {fset K}) (a : K), (a \in (A `&` B)%fset) = (a \in A) && (a \in B)) * (forall (A B : {fset K}) (a : K), (a \in (A `\` B)%fset) = (a \notin B) && (a \in A)) * (forall (A : {fset K}) (E : {fset K'}) (u : K * K'), (u \in (A `*` E)%fset) = (u.1 \in A) && (u.2 \in E)) * (forall (a' : K) (A : {fset K}) (a : K), (a \in (a' |` A)%fset) = (a == a') || (a \in A)) * (forall (A : {fset K}) (b a : K), (a \in (A `\ b)%fset) = (a != b) && (a \in A))) * (forall (K V : choiceType) (f : {fmap K -> V}) (v : V), (v \in codomf (V:=V) f) = [exists x, f x == v]) * (forall (K : choiceType) (V : Type) (f g : {fmap K -> V}) (k : K), (k \in domf (f + g)%fset) = (k \in f) || (k \in g)) * (forall (K : choiceType) (V : Type) (f : {fmap K -> V}) (k : K), (k \in f.[~ k]%fmap) = false) * (forall (K : choiceType) (V : Type) (f : {fmap K -> V}) (P : pred K) (k : K), (k \in domf (filterf f P)) = (k \in f) && P k) * (forall (K : choiceType) (V : Type) (f : {fmap K -> option V}) (k : K), (k \in reducef f) = ojoin f.[? k]%fmap) * (forall (K : choiceType) (V : Type) (f : {fmap K -> V}) (A : {fset K}) (k : K), (k \in f.[& A]%fmap) = (k \in A) && (k \in f)) * (forall (K : choiceType) (V : Type) (f : {fmap K -> V}) (A : {fset K}) (k : K), (k \in f.[\ A]%fmap) = (k \notin A) && (k \in f)) * (forall (K : choiceType) (V : Type) (f : {fmap K -> V}) (k' k : K), (k \in f.[~ k']%fmap) = (k != k') && (k \in f)) * (forall (K : choiceType) (V : Type) (f : {fmap K -> V}) (k0 : K) (v0 : V), f.[k0 <- v0]%fmap =i predU1 k0 (mem (domf f))) * (forall (K : choiceType) (V : eqType) (default : K -> V) (x : K), (x \in FinSupp.fs [fsfun x : _ => [fmap]%fmap x]) = false) inE is not universe polymorphic inE is transparent Expands to: Constant mathcomp.finmap.finmap.inE Declared in library mathcomp.finmap.finmap, line 4177, characters 11-14
Source code
Definition
mkset : forall {T : Type}, (T -> Prop) -> set T mkset is not universe polymorphic Arguments mkset {T}%type_scope P%function_scope _ / The reduction tactics unfold mkset when applied to 3 arguments mkset is transparent Expands to: Constant mathcomp.classical.classical_sets.mkset Declared in library mathcomp.classical.classical_sets, line 277, characters 11-16
Source code
Definition
Notation image f A := [seq f x | x in A] Expands to: Notation mathcomp.boot.fintype.image Declared in library mathcomp.boot.fintype, line 1132, characters 0-44
Source code
Definition
image2 : forall {TA TB rT : Type}, set TA -> set TB -> (TA -> TB -> rT) -> set rT image2 is not universe polymorphic Arguments image2 {TA TB rT}%type_scope (A B)%classical_set_scope f%function_scope _ / The reduction tactics unfold image2 when applied to 7 arguments image2 is transparent Expands to: Constant mathcomp.classical.classical_sets.image2 Declared in library mathcomp.classical.classical_sets, line 289, characters 11-17
Source code
Definition
preimage : forall {T rT : Type}, (T -> rT) -> set rT -> set T preimage is not universe polymorphic Arguments preimage {T rT}%type_scope f%function_scope Y%classical_set_scope t / (where some original arguments have been renamed) The reduction tactics unfold preimage when applied to 5 arguments preimage is transparent Expands to: Constant mathcomp.classical.classical_sets.preimage Declared in library mathcomp.classical.classical_sets, line 299, characters 11-19
Source code
Definition
Notation setT := [set: _] Expands to: Notation mathcomp.boot.finset.setT Declared in library mathcomp.boot.finset, line 256, characters 0-41
Source code
[set | A1 z.1 /\ A2 z.1 z.2].
Definition
set0 : forall {T : finType}, {set T} set0 is not universe polymorphic Arguments set0 {T} set0 is transparent Expands to: Constant mathcomp.boot.finset.set0 Declared in library mathcomp.boot.finset, line 233, characters 11-15
Source code
[set | A1 z.2 z.1 /\ A2 z.2].
Lemma
Source code
Proof.
Definition
Notation set1 := @set1.body Expands to: Notation mathcomp.boot.finset.set1 Declared in library mathcomp.boot.finset, line 258, characters 0-66 set1.body : forall {T : finType}, T -> {set T} set1.body is not universe polymorphic Arguments set1.body {T} a Expands to: Constant mathcomp.boot.finset.set1.body Declared in library mathcomp.boot.finset, line 258, characters 0-66
Source code
[set | forall , P i -> F i a].
Definition
setI : forall [T : finType], {set T} -> {set T} -> {set T} setI is not universe polymorphic Arguments setI [T] (A B)%set_scope setI is transparent Expands to: Constant mathcomp.boot.finset.setI Declared in library mathcomp.boot.finset, line 267, characters 11-15
Source code
[set | exists2 , P i & F i a].
Definition
setU : forall [T : finType], {set T} -> {set T} -> {set T} setU is not universe polymorphic Arguments setU [T] (A B)%set_scope setU is transparent Expands to: Constant mathcomp.boot.finset.setU Declared in library mathcomp.boot.finset, line 266, characters 11-15
Source code
Local Notation
Source code
Lemma
Source code
Proof.
Definition
nonempty : forall {T : Type}, {pred T} -> Prop nonempty is not universe polymorphic Arguments nonempty {T}%type_scope A nonempty is transparent Expands to: Constant mathcomp.classical.wochoice.nonempty Declared in library mathcomp.classical.wochoice, line 41, characters 11-19
Source code
Definition
setC : forall [T : finType], {set T} -> {set T} setC is not universe polymorphic Arguments setC [T] A%set_scope setC is transparent Expands to: Constant mathcomp.boot.finset.setC Declared in library mathcomp.boot.finset, line 268, characters 11-15
Source code
End basic_definitions.
Arguments preimage T rT f Y t /.
Arguments set0 _ _ /.
Arguments setT _ _ /.
Arguments set1 _ _ _ /.
Arguments setI _ _ _ _ /.
Arguments setU _ _ _ _ /.
Arguments setC _ _ _ /.
Arguments setD _ _ _ _ /.
Arguments setX _ _ _ _ _ /.
Arguments setXR _ _ _ _ _ /.
Arguments setXL _ _ _ _ _ /.
Arguments fst_set _ _ _ _ /.
Arguments snd_set _ _ _ _ /.
Arguments subsetP {T A B}.
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
(setU .. (a1 |` [set a2]) .. [set an]) : classical_set_scope.
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
Definition
setD : forall [T : finType], {set T} -> {set T} -> {set T} setD is not universe polymorphic Arguments setD [T] (A B)%set_scope setD is transparent Expands to: Constant mathcomp.boot.finset.setD Declared in library mathcomp.boot.finset, line 269, characters 11-15
Source code
Arguments setY _ _ _ _ /.
Notation
Source code
Notation
Source code
Notation
Source code
(bigcup P (fun => F)) : classical_set_scope.
Notation
Source code
(\bigcup_( in @setT T) F) : classical_set_scope.
Notation
Source code
(\bigcup_( in `I_n) F) : classical_set_scope.
Notation
Source code
(\bigcup_( in [set | (n <= i)%N]) F) : classical_set_scope.
Notation
Source code
Notation
Source code
(bigcap P (fun => F)) : classical_set_scope.
Notation
Source code
(\bigcap_( in @setT T) F) : classical_set_scope.
Notation
Source code
(\bigcap_( in `I_n) F) : classical_set_scope.
Notation
Source code
(\bigcap_( in [set | (n <= i)%N]) F) : classical_set_scope.
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
[set` Interval (BLeft a) (BRight b)] : classical_set_scope.
Notation
Source code
[set` Interval (BRight a) (BRight b)] : classical_set_scope.
Notation
Source code
[set` Interval (BLeft a) (BLeft b)] : classical_set_scope.
Notation
Source code
[set` Interval (BRight a) (BLeft b)] : classical_set_scope.
Notation
Source code
[set` Interval -oo%O (BRight b)] : classical_set_scope.
Notation
Source code
[set` Interval -oo%O (BLeft b)] : classical_set_scope.
Notation
Source code
[set` Interval (BLeft a) +oo%O] : classical_set_scope.
Notation
Source code
[set` Interval (BRight a) +oo%O] : classical_set_scope.
Notation
Source code
[set` Interval -oo%O +oo%O] : classical_set_scope.
Lemma
Source code
Proof.
#[global] Hint Resolve nat_nonempty : core.
Lemma
Source code
Lemma
Source code
[set` j] `<=` [set` i] ->
{in i &, forall , P x y} -> {in j &, forall , P x y}.
Proof.
Lemma
Source code
((f @^-1` [set` i]) x) = (f x \in i).
Proof.
Lemma
Source code
f @^-1` `]y, +oo[%classic = [set | (y < f x)%O].
#[deprecated(since="mathcomp-analysis 1.8.0", note="renamed to preimage_itvoy")]
Notation
Source code
Lemma
Source code
f @^-1` `[y, +oo[%classic = [set | (y <= f x)%O].
#[deprecated(since="mathcomp-analysis 1.8.0", note="renamed to preimage_itvcy")]
Notation
Source code
Lemma
Source code
f @^-1` `]-oo, y[%classic = [set | (f x < y)%O].
#[deprecated(since="mathcomp-analysis 1.8.0", note="renamed to preimage_itvNyo")]
Notation
Source code
Lemma
Source code
f @^-1` `]-oo, y]%classic = [set | (f x <= y)%O].
#[deprecated(since="mathcomp-analysis 1.8.0", note="renamed to preimage_itvNyc")]
Notation
Source code
Lemma
Source code
[set | P x] = [set | Q x].
Proof.
Coercion
setX : forall [fT1 fT2 : finType], {set fT1} -> {set fT2} -> {set Datatypes_prod__canonical__fintype_Finite fT1 fT2} setX is not universe polymorphic Arguments setX [fT1 fT2] (A1 A2)%set_scope setX is transparent Expands to: Constant mathcomp.boot.finset.setX Declared in library mathcomp.boot.finset, line 1114, characters 11-15
Source code
Definition
fst_set : forall [T1 T2 : Type], set (T1 * T2) -> set T1 fst_set is not universe polymorphic Arguments fst_set [T1 T2]%type_scope A%classical_set_scope _ / The reduction tactics unfold fst_set when applied to 4 arguments fst_set is transparent Expands to: Constant mathcomp.classical.classical_sets.fst_set Declared in library mathcomp.classical.classical_sets, line 310, characters 11-18
Source code
exist (fun => x \in P) x.
Lemma
Source code
Proof.
Lemma
Source code
pred_oapp D = mem (some @` D)%classic.
Proof.
Lemma
Source code
pred_oapp (mem D) = mem (some @` D)%classic.
Proof.
Section basic_lemmas.
Context { : Type}.
Implicit Types A B C D : set T.
Lemma
Source code
Proof.
Source code
Proof.
Lemma
Source code
Proof.
Source code
Proof.
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
apply: contra_notP => /forallNP h.
by apply/eqP; rewrite predeqE => t; split => // _; apply: contrapT.
Qed.
Notation
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
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
Lemma
Source code
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
Lemma
Source code
Definition
snd_set : forall [T1 T2 : Type], set (T1 * T2) -> set T2 snd_set is not universe polymorphic Arguments snd_set [T1 T2]%type_scope A%classical_set_scope _ / The reduction tactics unfold snd_set when applied to 4 arguments snd_set is transparent Expands to: Constant mathcomp.classical.classical_sets.snd_set Declared in library mathcomp.classical.classical_sets, line 311, characters 11-18
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
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
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
(forall , (~` B) x -> A x = C x) -> (A `|` B) = (C `|` B).
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
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
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Definition
setXR : forall [T1 T2 : Type], set T1 -> (T1 -> set T2) -> set (T1 * T2) setXR is not universe polymorphic Arguments setXR [T1 T2]%type_scope A1%classical_set_scope A2%function_scope _ / The reduction tactics unfold setXR when applied to 5 arguments setXR is transparent Expands to: Constant mathcomp.classical.classical_sets.setXR Declared in library mathcomp.classical.classical_sets, line 312, characters 11-16
Source code
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
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by move=> NAx y; apply: contraPnot => ->.
Qed.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
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
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by move=> sBC_A; split=> x ?; apply sBC_A; [left | right].
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by rewrite -AB => -[].
by split=> [[]//|At]; move: (AB t At).
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
A `<=` B -> C `<=` D -> A `&` C !=set0 -> B `&` D !=set0.
Proof.
Lemma
Source code
A `<=` B -> C `<=` D -> B `&` D = set0 -> A `&` C = set0.
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by split => //; apply/negP; apply: contra_not BA => /eqP ->.
by rewrite eqEsubset => AB BA; split => //; exact: contra_not AB.
Qed.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
by move/subsets_disjoint; rewrite setCK setIC => /subsets_disjoint.
by apply/subsets_disjoint; rewrite setCK setIC; apply/subsets_disjoint.
Qed.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by apply: asbool_eq_equiv; rewrite asbool_and !asbool_neg asbool_or negb_or.
Qed.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
by move=> [[At|Bt] Ct]; [left|right].
by move=> [[At Ct]|[Bt Ct]]; split => //; [left|right].
Qed.
Lemma
Source code
Lemma
Source code
Proof.
by move=> [[At Bt]|Ct]; split; by [left|right].
by move=> [[At|Ct] [Bt|Ct']]; by [left|right].
Qed.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
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
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
- by left.
- by right.
- by split=> //; left.
- by split=> //; right.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(X1 `&` Y1) `*` (X2 `&` Y2) = X1 `*` X2 `&` Y1 `*` Y2.
Proof.
Lemma
Source code
A `<=` B -> C `<=` D -> C `*` A `<=` D `*` B.
Proof.
Lemma
Source code
A `*` \bigcup_( in P) F i = \bigcup_( in P) (A `*` F i).
Proof.
by move=> [n Pn [/= Ax Fny]]; split => //; exists n.
Qed.
Lemma
Source code
\bigcup_( in P) F i `*` A = \bigcup_( in P) (F i `*` A).
Proof.
by move=> [n Pn [/= Ax Fny]]; split => //; exists n.
Qed.
Lemma
Source code
\bigcup_( in A1) ([set i] `*` A2 i) = A1 `*`` A2.
Proof.
Lemma
Source code
\bigcup_( in A2) (A1 i `*` [set i]) = A1 ``*` A2.
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
End basic_lemmas.
Arguments subsetT {T} A.
#[global]
Hint Resolve subsetUl subsetUr subIsetl subIsetr subDsetl subDsetr : core.
Arguments setU_id2r {T} C {A B}.
Lemma
Source code
[set x | _ in A] = if A == set0 then set0 else [set x].
Proof.
Section set_order.
Import Order.TTheory.
Lemma
Source code
[set | f x = g x] = [set | (f x <= g x)%O] `&` [set | (f x >= g x)%O].
Lemma
Source code
[set | f x != g x ] = [set | (f x < g x)%O] `|` [set | (f x > g x)%O].
End set_order.
Lemma
Source code
[set f x y | in A & in B] = uncurry f @` (A `*` B).
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
([set` S] == set0) = (S == fset0).
Proof.
Section InitialSegment.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Definition
bigcap : forall [T I : Type], set I -> (I -> set T) -> set T bigcap is not universe polymorphic Arguments bigcap [T I]%type_scope P%classical_set_scope F%function_scope _ bigcap is transparent Expands to: Constant mathcomp.classical.classical_sets.bigcap Declared in library mathcomp.classical.classical_sets, line 320, characters 11-17
Source code
Definition
bigcup : forall [T I : Type], set I -> (I -> set T) -> set T bigcup is not universe polymorphic Arguments bigcup [T I]%type_scope P%classical_set_scope F%function_scope _ bigcup is transparent Expands to: Constant mathcomp.classical.classical_sets.bigcup Declared in library mathcomp.classical.classical_sets, line 322, characters 11-17
Source code
Definition
Notation subset := subset.body Expands to: Notation mathcomp.boot.fintype.subset Declared in library mathcomp.boot.fintype, line 395, characters 0-88 subset.body : forall [T : finType], mem_pred T -> mem_pred T -> bool subset.body is not universe polymorphic Arguments subset.body [T] A B Expands to: Constant mathcomp.boot.fintype.subset.body Declared in library mathcomp.boot.fintype, line 395, characters 0-88
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
End InitialSegment.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
[\/ B == [set true], B == [set false], B == set0 | B == setT].
Proof.
- have -> : B = setT by apply/seteqP; split => // -[] _; exact: set_mem.
by apply/or4P; rewrite eqxx/= !orbT.
- suff : B = [set true] by move=> ->; apply/or4P; rewrite eqxx.
apply/seteqP; split => -[]// /mem_set; last by move=> _; exact: set_mem.
by rewrite (negbTE Bf).
- suff : B = [set false] by move=> ->; apply/or4P; rewrite eqxx/= orbT.
apply/seteqP; split => -[]// /mem_set; last by move=> _; exact: set_mem.
by rewrite (negbTE Bt).
- suff : B = set0 by move=> ->; apply/or4P; rewrite eqxx/= !orbT.
by apply/seteqP; split => -[]//=; rewrite 2!notin_setE in Bt, Bf.
Qed.
Lemma
Source code
[disjoint A & B]%fset = [disjoint [set` A] & [set` B]].
Proof.
Section SetFset.
Context { : choiceType}.
Implicit Types (x y : T) (A B : {fset T}).
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
[set` [fset x | in A & P x]%fset] = [set` A] `&` [set` P].
Lemma
Source code
[set` (A `|` B)%fset] = [set` A] `|` [set` B].
Proof.
Lemma
Source code
Lemma
Source code
[set` (A `\` B)%fset] = [set` A] `\` [set` B].
Proof.
Lemma
Source code
Lemma
Source code
Source code
[set` imfset key f p] = f @` [set` p].
Proof.
End SetFset.
Section SetMonoids.
Variable ( : Type).
Import Monoid.
.
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
End SetMonoids.
Section base_image_lemmas.
Context { : Type}.
Implicit Types (A B : set aT) (f : aT -> rT) (Y : set rT).
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
End base_image_lemmas.
#[global]
Hint Extern 0 ((?f @` _) (?f _)) => solve [apply: imageP; assumption] : core.
#[global] Hint Extern 0 ((?f @` setT) _) => solve [apply: imageT] : core.
Section image_lemmas.
Context { : Type}.
Implicit Types (A B : set aT) (f : aT -> rT) (Y : set rT).
Lemma
Source code
Lemma
Source code
(f a \in [set f x | in A]) = (a \in A).
Lemma
Source code
Proof.
Lemma
Source code
{homo f : / x \in A >-> x \in Y} <-> {homo f : / A x >-> Y x}.
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(f @` A `<=` B) = (A `<=` f @^-1` B).
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
[\/ A = set0, A = [set a], A = [set b] | A = [set a; b]].
Proof.
by rewrite setUid => /subset_set1[]->; [apply: Or41|apply: Or42].
have [|/nonsubset[x [/[dup] /Aab []// -> Ab _]]] := pselect (A `<=` [set a]).
by move=> /subset_set1[]->; [apply: Or41|apply: Or42].
have [|/nonsubset[y [/[dup] /Aab []// -> Aa _]]] := pselect (A `<=` [set b]).
by move=> /subset_set1[]->; [apply: Or41|apply: Or43].
by apply: Or44; apply/seteqP; split=> // z /= [] ->.
Qed.
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
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(forall , A x -> f x = f' x) -> f @` A = f' @` A.
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(f @^-1` (Y1 `&` Y2)) !=set0 <-> (f @^-1` Y1 `&` f @^-1` Y2) !=set0.
Proof.
Lemma
Source code
f @^-1` (\bigcup_ ( in P) F i) = \bigcup_( in P) (f @^-1` F i).
Proof.
Lemma
Source code
f @^-1` (\bigcap_ ( in P) F i) = \bigcap_( in P) (f @^-1` F i).
Proof.
Lemma
Source code
{in D, F =1 G} -> D `&` F @^-1` A = D `&` G @^-1` A.
Proof.
Lemma
Source code
i \notin f @` D -> D `&` f @^-1` [set i] = set0.
Proof.
Lemma
Source code
(f \o g) @^-1` A = g @^-1` (f @^-1` A).
Proof.
Lemma
Source code
Proof.
Lemma
Source code
f @^-1` [set g x | in C] = [set | f x \in g @` C].
Proof.
Lemma
Source code
f @^-1` (Y1 `&` Y2) = set0 <-> f @^-1` Y1 `&` f @^-1` Y2 = set0.
Lemma
Source code
Proof.
Lemma
Source code
A `&` range f `<=` set0 -> f @^-1` A = set0.
Proof.
Lemma
Source code
Proof.
by apply: contraPnot => -[t _ <-] /seteqP[+ _] => /(_ t) /=.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End image_lemmas.
Arguments sub_image_setI {aT rT f A B} t _.
Arguments subset_set1 {_ _ _}.
Arguments subset_set2 {_ _ _ _}.
Lemma
Source code
( : set aT) ( : set bT) : A `<=` B -> C `<=` D ->
[set f x y | in A & in C] `<=` [set f x y | in B & in D].
Proof.
Lemma
Source code
g @` (f @` A) = (g \o f) @` A.
Proof.
Definition
proper : forall [T : finType], mem_pred T -> mem_pred T -> bool proper is not universe polymorphic Arguments proper [T] A B proper is transparent Expands to: Constant mathcomp.boot.fintype.proper Declared in library mathcomp.boot.fintype, line 402, characters 11-17
Source code
Identity Coercion set_system_to_set : set_system >-> set.
Section set_systems.
Context {} ( : set_system T).
Definition
setY : forall {T : Type}, set T -> set T -> set T setY is not universe polymorphic Arguments setY {T}%type_scope (A B)%classical_set_scope _ / The reduction tactics unfold setY when applied to 4 arguments setY is transparent Expands to: Constant mathcomp.classical.classical_sets.setY Declared in library mathcomp.classical.classical_sets, line 371, characters 11-15
Source code
Definition
set_type : finType -> predArgType set_type is not universe polymorphic Arguments set_type T Expands to: Inductive mathcomp.boot.finset.set_type Declared in library mathcomp.boot.finset, line 136, characters 10-18
Source code
End set_systems.
Lemma
Source code
cancel f g -> [set | P (f @` A)] `<=` [set g @` A | in P].
Proof.
Lemma
Source code
cancel g f -> [set g @` A | in P] `<=` [set | P (f @` A)].
Proof.
Lemma
Source code
cancel f g -> cancel g f ->
[set g @` A | in P] = [set | P (f @` A)].
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
some @` (f @^-1` A) = omap f @^-1` (some @` A).
Proof.
by move=> [x|] [a Aa //= [afx]]; exists x; rewrite // -afx.
Qed.
Lemma
Source code
some @` (f @` A) = omap f @` (some @` A).
Proof.
Lemma
Source code
[disjoint some @` A & some @` B] = [disjoint A & B].
Proof.
Lemma
Source code
inl x \in [set inr y | in Y] = false.
Lemma
Source code
inr y \in [set inl x | in X] = false.
Lemma
Source code
inr y \in [set @inr A B y | in Y] = (y \in Y).
Lemma
Source code
inl x \in [set @inl A B x | in X] = (x \in X).
Section bigop_lemmas.
Context { : Type}.
Implicit Types (A : set T) (i : I) (P : set I) (F G : I -> set T).
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
: / [set F i | in P] `<=` [set G i | in P] >-> F `<=` G}.
Proof.
Lemma
Source code
: / [set F i | in P] `<=` [set G i | in P] >-> G `<=` F}.
Proof.
Lemma
Source code
\bigcup_( in P) F i = \bigcup_( in P) G i.
Proof.
move=> A [i ? <-]; exists i => //; rewrite FG.
Qed.
Lemma
Source code
\bigcap_( in P) F i = \bigcap_( in P) G i.
Proof.
move=> A [i ? <-]; exists i => //; rewrite FG.
Qed.
Lemma
Source code
Proof.
[apply PFt; exists i | exact: (PFt _ Pi)].
Qed.
Lemma
Source code
Proof.
Lemma
Source code
f @` (\bigcup_( in P) (F i)) = \bigcup_( in P) f @` F i.
Proof.
by move=> _ [i Pi [x Fix <-]]; exists x => //; exists i.
Qed.
Lemma
Source code
[set~ None] `&` \bigcap_( in P) some @` F i.
Proof.
by move=> _ [x Fx <-]; split=> // i; exists x => //; apply: Fx.
by move=> [x|[//=]] [_ Fx]; exists x => //= i /Fx [y ? [<-]].
Qed.
Lemma
Source code
Proof.
Lemma
Source code
\bigcup_( in P) F i = \bigcup_( in Q) F i.
Proof.
Lemma
Source code
\bigcap_( in P) F i = \bigcap_( in Q) F i.
Proof.
Lemma
Source code
\bigcup_( in P) F i = \bigcup_( in Q) G i.
Proof.
Lemma
Source code
\bigcap_( in P) F i = \bigcap_( in Q) G i.
Proof.
Lemma
Source code
(\bigcup_( in P) F i) `|` (\bigcup_( in P) G i).
Proof.
by [left; exists i|right; exists i|exists i =>//; left|exists i =>//; right].
Qed.
Lemma
Source code
(\bigcap_( in P) F i) `&` (\bigcap_( in P) G i).
Proof.
by apply: eq_bigcupr => *; rewrite setCI.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
\bigcap_( in P) (F i `&` A) = \bigcap_( in P) F i `&` A.
Proof.
Lemma
Source code
\bigcap_( in P) (A `&` F i) = A `&` \bigcap_( in P) F i.
Proof.
Lemma
Source code
\bigcup_( in P) (F i `|` A) = \bigcup_( in P) F i `|` A.
Proof.
Lemma
Source code
\bigcup_( in P) (A `|` F i) = A `|` \bigcup_( in P) F i.
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(\bigcup_( in P) F i !=set0) <-> exists2 , P i & F i !=set0.
Proof.
Qed.
Lemma
Source code
(forall , P i -> F i = set0) -> \bigcup_( in P) F i = set0.
Proof.
Lemma
Source code
(exists2 , P i & F i = set0) -> \bigcap_( in P) F i = set0.
Proof.
Lemma
Source code
(forall , P i -> F i = setT) -> \bigcap_( in P) F i = setT.
Proof.
Lemma
Source code
(exists2 , P i & F i = setT) -> \bigcup_( in P) F i = setT.
Proof.
Lemma
Source code
(\bigcup_( in P) F i = set0) <-> forall , P i -> F i = set0.
Proof.
Lemma
Source code
(\bigcap_( in P) F i = setT) <-> forall , P i -> F i = setT.
Proof.
Lemma
Source code
A `&` \bigcup_( in P) F i = \bigcup_( in P) (A `&` F i).
Proof.
by [exists k |split => //; exists k].
Qed.
Lemma
Source code
\bigcup_( in P) F i `&` A = \bigcup_( in P) (F i `&` A).
Proof.
Lemma
Source code
A `|` \bigcap_( in P) F i = \bigcap_( in P) (A `|` F i).
Proof.
by under eq_bigcupr do rewrite -setCU.
Qed.
Lemma
Source code
\bigcap_( in P) F i `|` A = \bigcap_( in P) (F i `|` A).
Proof.
Lemma
Source code
\bigcup_( in P) F i = \bigcup_ if i \in P then F i else set0.
Proof.
by exists i => //; case: ifPn; rewrite (inE, notin_setE).
by case: ifPn; rewrite (inE, notin_setE) => Pi Fix; exists i.
Qed.
Lemma
Source code
\bigcup_( in P `&` Q) F i = \bigcup_( in P) if i \in Q then F i else set0.
Proof.
by rewrite in_setI; case: (i \in P) (i \in Q) => [] [].
Qed.
Lemma
Source code
\bigcup_( in P `&` Q) F i = \bigcup_( in Q) if i \in P then F i else set0.
Proof.
by rewrite in_setI; case: (i \in P) (i \in Q) => [] [].
Qed.
Lemma
Source code
\bigcap_( in P) F i = \bigcap_ if i \in P then F i else setT.
Proof.
by case: ifP; rewrite ?setCT.
Qed.
Lemma
Source code
\bigcap_( in P `&` Q) F i = \bigcap_( in P) if i \in Q then F i else setT.
Proof.
by rewrite in_setI; case: (i \in P) (i \in Q) => [] [].
Qed.
Lemma
Source code
\bigcap_( in P `&` Q) F i = \bigcap_( in Q) if i \in P then F i else setT.
Proof.
by rewrite in_setI; case: (i \in P) (i \in Q) => [] [].
Qed.
Lemma
Source code
Lemma
Source code
\bigcup_( in X `|` Y) F i = \bigcup_( in X) F i `|` \bigcup_( in Y) F i.
Proof.
by move=> [Xz|Yz]; [left|right]; exists z.
by move=> [[z Xz Fzy]|[z Yz Fxz]]; exists z => //; [left|right].
Qed.
Lemma
Source code
\bigcap_( in X `|` Y) F i = \bigcap_( in X) F i `&` \bigcap_( in Y) F i.
Proof.
Lemma
Source code
\bigcup_( in x |` X) F i = F x `|` \bigcup_( in X) F i.
Proof.
Lemma
Source code
\bigcap_( in x |` X) F i = F x `&` \bigcap_( in X) F i.
Proof.
Lemma
Source code
\bigcup_( in X) F i = F x `|` \bigcup_( in X `\ x) F i.
Proof.
Lemma
Source code
\bigcap_( in X) F i = F x `&` \bigcap_( in X `\ x) F i.
Proof.
Lemma
Source code
(~` (\big[setU/set0]_( <- s | P t) f t)) = \big[setI/setT]_( <- s | P t) ~` f t.
Lemma
Source code
(~` (\big[setI/setT]_( <- s | P t) f t)) =
\big[setU/set0]_( <- s | P t) ~` f t.
Lemma
Source code
\bigcap_( in P) (A `\` F i) = A `\` \bigcup_( in P) F i.
Proof.
Lemma
Source code
\bigcup_( in P) F i `\` A = \bigcup_( in P) (F i `\` A).
Proof.
Lemma
Source code
( : set I) ( : I -> set J) :
\bigcup_( in P `*`` Q) F k.1 k.2 = \bigcup_( in P) \bigcup_( in Q i) F i j.
Proof.
Lemma
Source code
\bigcup_( in P `*` Q) F k.1 k.2 = \bigcup_( in P) \bigcup_( in Q) F i j.
Proof.
Lemma
Source code
\bigcup_( in \bigcup_( in P) F n) G i =
\bigcup_( in P) \bigcup_( in F n) G i.
Proof.
by move=> x [n ? [m ?]] h; exists m => //; exists n.
Qed.
Lemma
Source code
\bigcup_( in P) F i =
(\bigcup_( in P `&` Q) F i) `|` (\bigcup_( in P `&` ~` Q) F i).
Proof.
Lemma
Source code
\bigcap_( in P) F i =
(\bigcap_( in P `&` Q) F i) `&` (\bigcap_( in P `&` ~` Q) F i).
Proof.
Lemma
Source code
(forall , P i -> F i `<=` A) -> \bigcup_( in P) F i `<=` A.
Proof.
Lemma
Source code
(forall , P i -> A `<=` F i) -> A `<=` \bigcap_( in P) F i.
Proof.
Lemma
Source code
\bigcup_( in P) F i `<=` \bigcup_( in P) G i.
Proof.
Lemma
Source code
\bigcup_( in P) F i `<=` \bigcup_( in Q) F i.
Proof.
Lemma
Source code
\bigcap_( in P) F i `<=` \bigcap_( in P) G i.
Proof.
End bigop_lemmas.
Arguments bigcup_setD1 {T I} x.
Arguments bigcap_setD1 {T I} x.
Lemma
Source code
F j `\` \bigcup_( in [set | P k /\ k != j]) (F j `\` F i) =
\bigcap_( in P) F i.
Proof.
by have [->//|ij] := eqVneq i j; apply: contra_notP UFt => Fit; exists i.
by split=> [|[k [Pk kj]] [Fjt]]; [|apply]; exact: UFt.
Qed.
Definition
SigSub : forall {T : Type} {pT : predType T} {P : pT} [x : T], x \in P -> {x0 : T | x0 \in P} SigSub is not universe polymorphic Arguments SigSub {T}%type_scope {pT P} [x] _ SigSub is transparent Expands to: Constant mathcomp.classical.classical_sets.SigSub Declared in library mathcomp.classical.classical_sets, line 476, characters 11-17
Source code
fun => if i == 0 then A else if i == 1 then B else set0.
Arguments bigcup2 T A B n /.
Lemma
Source code
Proof.
by case=> -[_ At|[_ Bt|//]]; [left|right].
Qed.
Lemma
Source code
Proof.
by case=> -[_ At|[_ Bt|//]]; [left|right].
Qed.
Definition
setC_inj : forall [T : finType], injective (setC (T:=T)) setC_inj is not universe polymorphic Expanded type for implicit arguments setC_inj : forall [T : finType] [x1 x2 : {set T}], ~: x1 = ~: x2 -> x1 = x2 Arguments setC_inj [T x1 x2] _ setC_inj is opaque Expands to: Constant mathcomp.boot.finset.setC_inj Declared in library mathcomp.boot.finset, line 617, characters 6-14
Source code
fun => if i == 0 then A else if i == 1 then B else setT.
Arguments bigcap2 T A B n /.
Lemma
Source code
Proof.
by apply: eq_bigcupr => -[|[|[]]]//=; rewrite setCT.
Qed.
Lemma
Source code
Proof.
by apply: eq_bigcupr => // -[|[|[]]].
Qed.
Lemma
Source code
\bigcup_ F n = F 0%N `|` \bigcup_( in ~` `I_1) F n.
Proof.
Lemma
Source code
\bigcup_( in f @` P) F x = \bigcup_( in P) F (f x).
Proof.
by case=> i Pi Ffix; exists (f i); [exists i|].
Qed.
Lemma
Source code
\bigcap_( in P) F i = \bigcap_( : P) F (val j).
Proof.
Lemma
Source code
\bigcap_( in f @` P) F x = \bigcap_( in P) F (f x).
Proof.
Lemma
Source code
( : I -> set U) ( : {fset I}) :
\bigcup_( in [set | i \in X]) F i = \big[setU/set0]_( <- X) F i :> set U.
Proof.
by rewrite big_seq_fset0 -subset0 => x [].
rewrite -(fsetD1K xX) set_fsetU set_fset1 big_fsetU1 ?inE ?eqxx//=.
by rewrite bigcup_setU1 IHX// fproperD1.
Qed.
Lemma
Source code
( : I -> set U) ( : {fset I}) :
\bigcap_( in [set | i \in X]) F i = \big[setI/setT]_( <- X) F i :> set U.
Proof.
Lemma
Source code
\bigcup_( in [set | j \in x |` X]%fset) F i =
F x `|` \bigcup_( in [set | j \in X]) F i.
Proof.
Lemma
Source code
\bigcap_( in [set | j \in x |` X]%fset) F i =
F x `&` \bigcap_( in [set | j \in X]) F i.
Proof.
Lemma
Source code
x \in X ->
\bigcup_( in [set | i \in X]%fset) F i =
F x `|` \bigcup_( in [set | i \in X `\ x]%fset) F i.
Proof.
Lemma
Source code
x \in X ->
\bigcap_( in [set | i \in X]%fset) F i =
F x `&` \bigcap_( in [set | i \in X `\ x]%fset) F i.
Proof.
Section bigcup_seq.
Variables ( : choiceType) ( : Type).
Lemma
Source code
\bigcup_( in [set | (x \in s) && P x]) (f t) =
\big[setU/set0]_( <- s | P t) (f t).
Proof.
rewrite big_cons -ih predeqE => u; split=> [[t /andP[]]|].
- rewrite inE => /orP[/eqP ->{t} -> fhu|ts Pt ftu]; first by left.
case: ifPn => Ph; first by right; exists t => //; apply/andP; split.
by exists t => //; apply/andP; split.
- case: ifPn => [Ph [fhu|[t /andP[ts Pt] ftu]]|Ph [t /andP[ts Pt ftu]]].
+ by exists h => //; apply/andP; split => //; rewrite mem_head.
+ by exists t => //; apply/andP; split => //; rewrite inE orbC ts.
+ by exists t => //; apply/andP; split => //; rewrite inE orbC ts.
Qed.
Lemma
Source code
\bigcup_( in [set` s]) (f t) = \big[setU/set0]_( <- s) (f t).
Proof.
Lemma
Source code
\bigcap_( in [set | (x \in s) && P x]) (f t) =
\big[setI/setT]_( <- s | P t) (f t).
Proof.
Lemma
Source code
\bigcap_( in [set` s]) (f t) = \big[setI/setT]_( <- s) (f t).
Proof.
End bigcup_seq.
Lemma
Source code
\bigcup_( in [set` P]) f t = \big[setU/set0]_( in P) f t.
Proof.
move=> /mem_set; rewrite (@big_morph _ _ (fun => u \in X) false orb).
- by rewrite big_has_cond => /hasP[x _ /andP[xP]]; rewrite inE => ufx; exists x.
- by move=> /= x y; apply/idP/orP; rewrite !inE.
- by rewrite in_set0.
Qed.
Section smallest.
Context {} ( : set T -> Prop) ( : set T).
Definition
subsetCW : forall {T : Type} {A B : set T}, A = B -> (B `<=` A)%classic subsetCW is not universe polymorphic Expanded type for implicit arguments subsetCW : forall {T : Type} {A B : set T}, A = B -> forall [t : T], B t -> A t Arguments subsetCW {T}%type_scope {A B}%classical_set_scope _ [t] _ subsetCW is transparent Expands to: Constant mathcomp.classical.classical_sets.subsetCW Declared in library mathcomp.classical.classical_sets, line 795, characters 11-19
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End smallest.
#[global] Hint Resolve sub_gen_smallest : core.
Lemma
Source code
C (smallest C G2) -> G1 `<=` G2 -> smallest C G1 `<=` smallest C G2.
Proof.
Lemma
Source code
(forall , C2 G -> C1 G) ->
forall , smallest C1 G `<=` smallest C2 G.
Proof.
Section bigop_nat_lemmas.
Context { : Type}.
Implicit Types (A : set T) (F : nat -> set T).
Lemma
Source code
Proof.
by apply: eq_bigcupl; split=> i; rewrite /= mem_index_iota leq0n.
Qed.
Lemma
Source code
\bigcup_( < n.+1) G (inord i) = \big[setU/set0]_( < n.+1) G i.
Proof.
by apply/val_inj => /=; rewrite inordK.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
\big[setU/set0]_( < 2) bigcup2 A B i = A `|` B.
Proof.
Lemma
Source code
\big[setI/setT]_( < 2) bigcap2 A B i = A `&` B.
Proof.
Lemma
Source code
\bigcup_ F i = \big[setU/set0]_( < n) F i `|` \bigcup_ F (n + i).
Proof.
apply: eq_bigcupl; split=> // k _.
have [ltkn|lenk] := ltnP k n; [left => //|right].
by exists (k - n); rewrite // subnKC.
Qed.
Lemma
Source code
\bigcap_ F i = \big[setI/setT]_( < n) F i `&` \bigcap_ F (n + i).
Proof.
Lemma
Source code
{homo (fun => \big[setU/set0]_( < n) F i) : / (n <= m) >-> n `<=` m}.
Proof.
by exists i => //=; rewrite (leq_trans im).
Qed.
Lemma
Source code
{homo (fun => \big[setI/setT]_( < n) F i) : / (n <= m) >-> m `<=` n}.
Proof.
Lemma
Source code
{homo (fun => \big[setU/set0]_( < n | P i) F i)
: / (n <= m) >-> n `<=` m}.
Proof.
exact: (@subset_bigsetU (fun => if P i then F i else _)).
Qed.
Lemma
Source code
{homo (fun => \big[setI/setT]_( < n | P i) F i)
: / (n <= m) >-> m `<=` n}.
Proof.
exact: (@subset_bigsetI (fun => if P i then F i else _)).
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End bigop_nat_lemmas.
Definition
ordII : forall {n : nat}, 'I_n -> `I_n ordII is not universe polymorphic Arguments ordII {n}%nat_scope k ordII is transparent Expands to: Constant mathcomp.classical.classical_sets.ordII Declared in library mathcomp.classical.classical_sets, line 1277, characters 11-16
Source code
Definition
IIord : forall {n : nat}, `I_n -> 'I_n IIord is not universe polymorphic Arguments IIord {n}%nat_scope k IIord is transparent Expands to: Constant mathcomp.classical.classical_sets.IIord Declared in library mathcomp.classical.classical_sets, line 1278, characters 11-16
Source code
Definition
ordIIK : forall {n : nat}, cancel ordII IIord ordIIK is not universe polymorphic Arguments ordIIK {n}%nat_scope x ordIIK is opaque Expands to: Constant mathcomp.classical.classical_sets.ordIIK Declared in library mathcomp.classical.classical_sets, line 1280, characters 11-17
Source code
Definition
set_system : Type -> Type set_system is not universe polymorphic Arguments set_system U%type_scope set_system is transparent Expands to: Constant mathcomp.classical.classical_sets.set_system Declared in library mathcomp.classical.classical_sets, line 1634, characters 11-21
Source code
forall , f x !=set0 /\ is_subset1 (f x).
Definition
setI_closed : forall {T : Type}, set_system T -> Prop setI_closed is not universe polymorphic Arguments setI_closed {T}%type_scope G setI_closed is transparent Expands to: Constant mathcomp.classical.classical_sets.setI_closed Declared in library mathcomp.classical.classical_sets, line 1640, characters 11-22
Source code
if pselect (exists : T, `[<P x>]) isn't left exP then x0
else projT1 (sigW exP).
CoInductive
Source code
|
Source code
|
Source code
Lemma
Source code
xget_spec x0 P (xget x0 P) (P (xget x0 P)).
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
P x -> is_subset1 P -> xget x0 P = x.
Proof.
Lemma
Source code
P x -> (forall , P y -> y = x) -> xget x0 P = x.
Proof.
Lemma
Source code
(forall , ~ P x) -> xget x0 P = x0.
Proof.
Definition
setU_closed : forall {T : Type}, set_system T -> Prop setU_closed is not universe polymorphic Arguments setU_closed {T}%type_scope G setU_closed is transparent Expands to: Constant mathcomp.classical.classical_sets.setU_closed Declared in library mathcomp.classical.classical_sets, line 1642, characters 11-22
Source code
( : aT -> rT -> Prop) := fun => xget (f0 x) (f x).
Lemma
Source code
f a !=set0 -> f a (fun_of_rel f0 f a).
Proof.
Lemma
Source code
( : aT -> rT -> Prop) ( : aT -> rT) :
is_subset1 (f a) -> forall , f a b -> fun_of_rel f0 f a = b.
Proof.
Lemma
Source code
(forall : { | x \in A}, P u) =
(forall : T, forall ( : A u), P (exist _ u (mem_set a))).
Proof.
have Au : A u by rewrite inE in a.
by rewrite (Prop_irrelevance a (mem_set Au)); apply: PA.
Qed.
Lemma
Source code
{in A, forall , P x} <-> forall , A x -> P x.
Proof.
Lemma
Source code
{in A & B, forall , P x y} <-> (forall , A x -> B y -> P x y).
Proof.
Lemma
Source code
{in [set: T1], forall : T1, P1 x : Prop} -> forall : T1, P1 x : Prop.
Proof.
Lemma
Source code
{in [set: T1] & [set: T2], forall ( : T1) ( : T2), P2 x y : Prop} ->
forall ( : T1) ( : T2), P2 x y : Prop.
Proof.
Lemma
Source code
{in [set: T1] & [set: T2] & [set: T3], forall ( : T1) ( : T2) ( : T3), P3 x y z : Prop} ->
forall ( : T1) ( : T2) ( : T3), P3 x y z : Prop.
Proof.
Lemma
Source code
{in [set: T1], bijective f} -> bijective 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
isPointed.Build (forall : T, T' t) (fun=> point).
.
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
isPointed.Build (T * T')%type (point, point).
.
Source code
Source code
Source code
isPointed.Build (n.-tuple T) (nseq n point).
.
Source code
Source code
Source code
isPointed.Build 'M[T]_(m, n) (\matrix_(_, _) point)%R.
.
Source code
Source code
Source code
.
Source code
Source code
Source code
Notation
Source code
Notation
Source code
(at level 0, x name, format "[ 'get' x | E ]", only printing) : form_scope.
Notation
Source code
(at level 0, x name, format "[ 'get' x : T | E ]", only parsing) : form_scope.
Notation
Source code
(at level 0, x name, format "[ 'get' x | E ]") : form_scope.
Section PointedTheory.
Context { : pointedType}.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
P x -> (forall , P y -> y = x) -> get P = x.
Proof.
Lemma
Source code
Lemma
Source code
End PointedTheory.
.
Source code
Source code
Source code
Source code
Source code
zero : X;
one : X;
zero_one_neq : zero != one;
}.
Source code
Source code
Source code
.
Source code
Source code
Source code
{ of Choice X & isBiPointed X }.
Variant
Source code
Source code
Arguments squash {T} x.
Notation
Source code
Tactic Notation "squash" uconstr(x) := (exists; refine x) ||
match goal with |- $| ?T | => exists; refine [the T of x] end.
Definition
bigcup2 : forall [T : Type], set T -> set T -> nat -> set T bigcup2 is not universe polymorphic Arguments bigcup2 [T]%type_scope (A B)%classical_set_scope n%nat_scope / _ (where some original arguments have been renamed) The reduction tactics unfold bigcup2 when applied to 4 arguments bigcup2 is transparent Expands to: Constant mathcomp.classical.classical_sets.bigcup2 Declared in library mathcomp.classical.classical_sets, line 2091, characters 11-18
Source code
projT1 (cid (let: squash x := s in @ex_intro T _ x isT)).
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
axiom : T -> False
}.
.
Source code
Source code
Source code
Definition
bigcap2 : forall [T : Type], set T -> set T -> nat -> set T bigcap2 is not universe polymorphic Arguments bigcap2 [T]%type_scope (A B)%classical_set_scope n%nat_scope / _ (where some original arguments have been renamed) The reduction tactics unfold bigcap2 when applied to 4 arguments bigcap2 is transparent Expands to: Constant mathcomp.classical.classical_sets.bigcap2 Declared in library mathcomp.classical.classical_sets, line 2107, characters 11-18
Source code
Definition
smallest : forall {T : Type}, (set T -> Prop) -> set T -> set T smallest is not universe polymorphic Arguments smallest {T}%type_scope C%function_scope G%classical_set_scope _ smallest is transparent Expands to: Constant mathcomp.classical.classical_sets.smallest Declared in library mathcomp.classical.classical_sets, line 2233, characters 11-19
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
.
Source code
.
Source code
Source code
Source code
Source code
}.
.
Source code
Source code
Source code
Definition
is_subset1 : forall {T : Type}, set T -> Prop is_subset1 is not universe polymorphic Arguments is_subset1 {T}%type_scope A%classical_set_scope is_subset1 is transparent Expands to: Constant mathcomp.classical.classical_sets.is_subset1 Declared in library mathcomp.classical.classical_sets, line 2355, characters 11-21
Source code
Lemma
Source code
.
Source code
Source code
Source code
Definition
is_fun : forall {T1 T2 : Type}, (T1 -> T2 -> Prop) -> Prop is_fun is not universe polymorphic Arguments is_fun {T1 T2}%type_scope f%function_scope is_fun is transparent Expands to: Constant mathcomp.classical.classical_sets.is_fun Declared in library mathcomp.classical.classical_sets, line 2356, characters 11-17
Source code
Lemma
Source code
Proof.
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
Definition
is_total : forall {T1 T2 : Type}, (T1 -> T2 -> Prop) -> Prop is_total is not universe polymorphic Arguments is_total {T1 T2}%type_scope f%function_scope is_total is transparent Expands to: Constant mathcomp.classical.classical_sets.is_total Declared in library mathcomp.classical.classical_sets, line 2357, characters 11-19
Source code
Definition
is_totalfun : forall {T1 T2 : Type}, (T1 -> T2 -> Prop) -> Prop is_totalfun is not universe polymorphic Arguments is_totalfun {T1 T2}%type_scope f%function_scope is_totalfun is transparent Expands to: Constant mathcomp.classical.classical_sets.is_totalfun Declared in library mathcomp.classical.classical_sets, line 2358, characters 11-22
Source code
Lemma
Source code
Definition
xget : forall {T : choiceType}, T -> set T -> T xget is not universe polymorphic Arguments xget {T} x0 P%classical_set_scope xget is transparent Expands to: Constant mathcomp.classical.classical_sets.xget Declared in library mathcomp.classical.classical_sets, line 2361, characters 11-15
Source code
Source code
Source code
forall ( : T -> Type), (forall : emptyType, G (alt s)) -> (forall , G (sort x)) ->
forall , G x.
Notation
Source code
Notation
Source code
Lemma
Source code
Source code
Source code
(forall , (exists : emptyType, alt y = x) + (exists , sort y = x)) ->
quasi_canonical_ sort alt.
Arguments qcanon {T C sort alt} x.
Lemma
Source code
Proof.
set T := Choice.Pack _.
have [/unsquash x|/(_ (squash _)) TF] := pselect $|T|.
right.
pose Tp := isPointed.Build T x.
pose TT : pointedType := HB.pack T Te Tc Tp.
by exists TT.
left.
pose TMixin := Choice_isEmpty.Build T TF.
pose TT : emptyType := HB.pack T Te Tc TMixin.
by exists TT.
Qed.
Lemma
Source code
Proof.
[left; exists (Empty.Pack F) | right; exists T].
Qed.
Lemma
Source code
Proof.
[left; exists (Empty.Pack F) | right; exists T].
Qed.
Section partitions.
Definition
fun_of_rel : forall [T : Type], rel T -> T -> pred T fun_of_rel is not universe polymorphic Arguments fun_of_rel [T]%type_scope _ _ _ fun_of_rel is a reversible coercion fun_of_rel is transparent Expands to: Constant mathcomp.classical.boolp.fun_of_rel Declared in library mathcomp.classical.boolp, line 625, characters 0-48
Source code
forall : I, D i -> D j -> F i `&` F j !=set0 -> i = j.
Lemma
Source code
Proof.
Lemma
Source code
(forall , (m < n)%N -> F m `&` F n = set0) -> trivIset setT F.
Proof.
Lemma
Source code
(forall , F n.+1 `<=` ~` (\big[setU/set0]_( < n.+1) F i)) -> trivIset setT F.
Proof.
by case: n h => // n h; apply: (subset_trans (sF n)); exact/subsetC/bigsetU_sup.
Qed.
Lemma
Source code
trivIset D F <-> trivIset setT (fun => if i \in D then F i else set0).
Proof.
Lemma
Source code
Lemma
Source code
trivIset D F <->
forall : I, D i -> D j -> i != j -> F i `&` F j = set0.
Proof.
Lemma
Source code
forall , D m -> n <= m -> \big[setU/set0]_( < n | D i) F i `&` F m = set0.
Proof.
by move=> _; rewrite big_ord0 set0I.
move=> lt_nm; rewrite big_mkcond/= big_ord_recr -big_mkcond/=.
rewrite setIUl IHn 1?ltnW// set0U.
by case: ifPn => [Dn|NDn]; rewrite ?set0I// tA// ltn_eqF.
Qed.
Lemma
Source code
trivIset D F -> trivIset D (fun => G i `&` F i).
Proof.
Qed.
Lemma
Source code
trivIset D F -> trivIset D (fun => F i `&` G i).
Proof.
Qed.
Lemma
Source code
D `<=` D' -> trivIset D' F -> trivIset D F.
Proof.
Lemma
Source code
(A `&` B = set0) = trivIset setT (bigcup2 A B).
Proof.
Lemma
Source code
trivIset D (F \o f) -> trivIset (f @` D) F.
Proof.
Qed.
Lemma
Source code
{in D &, injective f} ->
trivIset D (F \o f) = trivIset (f @` D) F.
Proof.
move=> trivF i j Di Dj Ffij; apply: finj; rewrite ?in_setE//.
by apply: trivF => //=; [exists i| exists j].
Qed.
Lemma
Source code
trivIset D (fun => f @^-1` [set x]).
Proof.
Lemma
Source code
( : aT -> rT) : trivIset D (fun => A `&` f @^-1` [set x]).
Proof.
Lemma
Source code
(forall , trivIset (D n) F) ->
(forall , n != m -> D n i -> D m j -> F i `&` F j !=set0 -> i = j) ->
trivIset (\bigcup_ D k) F.
Proof.
have [nm|nm] := eqVneq n m; first by apply: (tB m) => //; rewrite -nm.
exact: (H _ _ _ _ nm).
Qed.
Lemma
Source code
trivIset setT D ->
trivIset (\bigcup_ D i) F ->
trivIset setT (fun => \bigcup_( in D i) F t).
Proof.
have mn : m = n by apply: h => //; [exists i|exists j|exists t].
rewrite {}mn {m} in Dim Fmt *.
by apply: D0 => //; exists n.
Qed.
Definition
unsquash : forall {T : Type}, $| T | -> T unsquash is not universe polymorphic Arguments unsquash {T}%type_scope s unsquash is transparent Expands to: Constant mathcomp.classical.classical_sets.unsquash Declared in library mathcomp.classical.classical_sets, line 2514, characters 11-19
Source code
Lemma
Source code
Proof.
Lemma
Source code
D `<=` D' -> (forall , D' i -> ~ D i -> F i = set0) ->
cover D F = cover D' F.
Proof.
Lemma
Source code
[set F i | in D] = [set G i | in D] ->
cover D F = cover D G.
Proof.
Definition
Builders_64.pickle : forall [T : Type], T -> nat Builders_64.pickle is not universe polymorphic Arguments Builders_64.pickle [T]%type_scope _ Builders_64.pickle is transparent Expands to: Constant mathcomp.classical.classical_sets.Builders_64.pickle Declared in library mathcomp.classical.classical_sets, line 2532, characters 11-17
Source code
[/\ cover D F = A, trivIset D F & forall , D i -> F i !=set0].
Definition
Builders_64.unpickle : forall T : Type, nat -> option T Builders_64.unpickle is not universe polymorphic Arguments Builders_64.unpickle T%type_scope _%nat_scope Builders_64.unpickle is transparent Expands to: Constant mathcomp.classical.classical_sets.Builders_64.unpickle Declared in library mathcomp.classical.classical_sets, line 2533, characters 11-19
Source code
[get | D i /\ F i x].
Definition
Builders_73.eq_op : forall [T : Type], T -> T -> bool Builders_73.eq_op is not universe polymorphic Arguments Builders_73.eq_op [T]%type_scope x y Builders_73.eq_op is transparent Expands to: Constant mathcomp.classical.classical_sets.Builders_73.eq_op Declared in library mathcomp.classical.classical_sets, line 2549, characters 11-16
Source code
F (pblock_index D F x).
Notation
Source code
Lemma
Source code
trivIset D F -> trivIsets [set F i | in D].
Proof.
Lemma
Source code
D `<=` D' -> (forall , D' i -> ~ D i -> F i = set0) ->
trivIset D F = trivIset D' F.
Proof.
rewrite propeqE; split=> [DF i j D'i D'j FiFj0|D'F i j Di Dj FiFj0].
have [Di|Di] := pselect (D i); last first.
by move: FiFj0; rewrite (DD'F i) // set0I => /set0P; rewrite eqxx.
have [Dj|Dj] := pselect (D j).
- exact: DF.
- by move: FiFj0; rewrite (DD'F j) // setI0 => /set0P; rewrite eqxx.
by apply D'F => //; apply DD'.
Qed.
Lemma
Source code
[set | (k < size s1)] `<=` D -> perm_eq s1 s2 ->
trivIset D (fun => nth set0 s1 i) -> trivIset D (fun => nth set0 s2 i).
Proof.
apply/trivIsetP => i j Di Dj ij.
rewrite {}s12 {s2}; have [si|si] := ltnP i (size s); last first.
by rewrite (nth_default set0) ?size_map// set0I.
rewrite (nth_map O) //; have [sj|sj] := ltnP j (size s); last first.
by rewrite setIC (nth_default set0) ?size_map// set0I.
have nth_mem k : k < size s -> nth O s k \in iota 0 (size s1).
by move=> ?; rewrite -(perm_mem ss1) mem_nth.
rewrite (nth_map O)// ts1 ?(nth_uniq,(perm_uniq ss1),iota_uniq)//; apply/s1D.
- by have := nth_mem _ si; rewrite mem_iota leq0n add0n.
- by have := nth_mem _ sj; rewrite mem_iota leq0n add0n.
Qed.
End partitions.
#[deprecated(note="Use trivIset_setIl instead")]
Notation
Source code
Section Zorn.
Definition
Builders_73.find : forall [T : Type], pred T -> nat -> option T Builders_73.find is not universe polymorphic Arguments Builders_73.find [T]%type_scope _ _%nat_scope Builders_73.find is transparent Expands to: Constant mathcomp.classical.classical_sets.Builders_73.find Declared in library mathcomp.classical.classical_sets, line 2553, characters 11-15
Source code
forall , A s -> A t -> R s t \/ R t s.
Let
Source code
(forall , total_on A R -> exists , forall , A s -> R s t) ->
wo_chain R P -> exists2 , z \in predT & upper_bound R P z.
Proof.
suff : total_on P R by move=> /Atot[t ARt]; exists t.
move=> s t Ps Pt; have [| |] := RP [predU (pred1 s) & (pred1 t)].
- by move=> x; rewrite !inE => /orP[/eqP ->{x}|/eqP ->{x}].
- by exists s; rewrite !inE eqxx.
- move=> x [[]]; rewrite !inE => /orP[/eqP ->{x}|/eqP ->{x}].
+ by move=> /(_ t); rewrite !inE eqxx orbT => /(_ isT) Rst _; left.
+ by move=> /(_ s); rewrite !inE eqxx => /(_ isT) Rts _; right.
Qed.
Lemma
Source code
(forall , R t t) -> (forall , R r s -> R s t -> R r t) ->
(forall , R s t -> R t s -> s = t) ->
(forall : set T, total_on A R -> exists , forall , A s -> R s t) ->
exists , forall , R t s -> s = t.
Proof.
have [//| |P _ RP|] := @Zorn's_lemma _ R predT _.
- by move=> ? ? ? _ _ _; exact: Rtrans.
- exact: total_on_wo_chain.
by move=> x _ Rx; exists x => s Rxs; apply: (Ranti _ _ _ Rxs) => //; exact: Rx.
Qed.
Definition
no : forall {T : emptyType}, T -> Logic.False no is not universe polymorphic Arguments no {T} _ no is transparent Expands to: Constant mathcomp.classical.classical_sets.no Declared in library mathcomp.classical.classical_sets, line 2569, characters 11-13
Source code
forall , R t s -> R s t.
Lemma
Source code
(forall , R t t) -> (forall , R r s -> R s t -> R r t) ->
(forall , total_on A R -> exists , forall , A s -> R s t) ->
exists , premaximal R t.
Proof.
have [//| | |z _ Hz] := @Zorn's_lemma T R predT.
- by move=> ? ? ? _ _ _; exact: Rtrans.
- by move=> A _ RA; exact: total_on_wo_chain.
by exists z => s Rzs; exact: Hz.
Qed.
End Zorn.
Section Zorn_subset.
Variables ( : Type) ( : set (set T)).
Lemma
Source code
(forall : set (set T), F `<=` P -> total_on F subset ->
P (\bigcup_( in F) X)) ->
exists , P A /\ forall , A `<` B -> ~ P B.
Proof.
have {}totR F ( : total_on F R) : exists , forall , F sA -> R sA sB.
have FP : [set val x | in F] `<=` P.
by move=> _ [X FX <-]; apply: set_mem; exact/valP.
have totF : total_on [set val x | in F] subset.
move=> _ _ [X FX <-] [Y FY <-].
by have [/asboolP|/asboolP] := FR _ _ FX FY; [left|right].
exists (SigSub (mem_set (totP _ FP totF))) => A FA.
exact/asboolP/(bigcup_sup (imageP val _)).
have [| | |sA sAmax] := Zorn _ _ _ totR.
- by move=> ?; apply/asboolP; exact: subset_refl.
- by move=> ? ? ? /asboolP ? /asboolP st; apply/asboolP; exact: subset_trans st.
- by move=> [A PA] [B PB] /asboolP AB /asboolP BA; exact/eq_exist/seteqP.
- exists (val sA); case: sA => A PA /= in sAmax *; split; first exact: set_mem.
move=> B AB PB.
have : R (exist (fun : T -> Prop => x \in P) A PA) (SigSub (mem_set PB)).
by apply/asboolP; exact: properW.
move=> /(sAmax (SigSub (mem_set PB)))[BA].
by move: AB; rewrite BA; exact: properxx.
Qed.
End Zorn_subset.
Definition
any : forall {T : emptyType} {U : Type}, T -> U any is not universe polymorphic Arguments any {T} {U}%type_scope _ any is transparent Expands to: Constant mathcomp.classical.classical_sets.any Declared in library mathcomp.classical.classical_sets, line 2570, characters 11-14
Source code
[/\ A `<=` B, trivIset A F & forall ,
A `<` C -> C `<=` B -> ~ trivIset C F ].
Section maximal_disjoint_subcollection.
Context { : Type}.
Variables ( : I -> set T) ( : set I).
Let := fun => X `<=` D /\ trivIset X B.
Let
Source code
A `<=` P -> total_on A (fun => x `<=` y) -> P (\bigcup_( in A) x).
Proof.
move=> i j [x Ax] xi [y Ay] yj ij; have [xy|yx] := h _ _ Ax Ay.
- by apply: (AP _ Ay).2 => //; exact: xy.
- by apply: (AP _ Ax).2 => //; exact: yx.
Qed.
Lemma
Source code
{ | maximal_disjoint_subcollection B E D }.
Proof.
by exists E; split => // F /maxE + FD; exact: contra_not.
Qed.
End maximal_disjoint_subcollection.
Section UpperLowerTheory.
Import Order.TTheory.
Variables ( : Order.disp_t) ( : porderType d).
Implicit Types (A : set T) (x y z : T).
Definition
trivIset : forall {T : finType}, {set {set T}} -> bool trivIset is not universe polymorphic Arguments trivIset {T} P%set_scope trivIset is transparent Expands to: Constant mathcomp.boot.finset.trivIset Declared in library mathcomp.boot.finset, line 2011, characters 11-19
Source code
Definition
cover : forall {T : finType}, {set {set T}} -> {set T} cover is not universe polymorphic Arguments cover {T} P%set_scope cover is transparent Expands to: Constant mathcomp.boot.finset.cover Declared in library mathcomp.boot.finset, line 2009, characters 11-16
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Definition
partition : forall {T : finType}, {set {set T}} -> {set T} -> bool partition is not universe polymorphic Arguments partition {T} (P D)%set_scope partition is transparent Expands to: Constant mathcomp.boot.finset.partition Declared in library mathcomp.boot.finset, line 2012, characters 11-20
Source code
Definition
pblock_index : forall [T : Type] [I : pointedType], (I -> Prop) -> (I -> set T) -> T -> I pblock_index is not universe polymorphic Arguments pblock_index [T]%type_scope [I] (D F)%function_scope x pblock_index is transparent Expands to: Constant mathcomp.classical.classical_sets.pblock_index Declared in library mathcomp.classical.classical_sets, line 2766, characters 11-23
Source code
Definition
pblock : forall {T : finType}, {set {set T}} -> T -> {set T} pblock is not universe polymorphic Arguments pblock {T} P%set_scope x pblock is transparent Expands to: Constant mathcomp.boot.finset.pblock Declared in library mathcomp.boot.finset, line 2010, characters 11-17
Source code
Definition
total_on : forall [T : Type], set T -> (T -> T -> Prop) -> Prop total_on is not universe polymorphic Arguments total_on [T]%type_scope A%classical_set_scope R%function_scope total_on is transparent Expands to: Constant mathcomp.classical.classical_sets.total_on Declared in library mathcomp.classical.classical_sets, line 2819, characters 11-19
Source code
Definition
premaximal : forall [T : Type], (T -> T -> Prop) -> T -> Prop premaximal is not universe polymorphic Arguments premaximal [T]%type_scope R%function_scope t premaximal is transparent Expands to: Constant mathcomp.classical.classical_sets.premaximal Declared in library mathcomp.classical.classical_sets, line 2849, characters 11-21
Source code
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
Proof.
Lemma
Source code
Proof.
Definition
maximal_disjoint_subcollection : forall [T I : Type], (I -> set T) -> set I -> set I -> Prop maximal_disjoint_subcollection is not universe polymorphic Arguments maximal_disjoint_subcollection [T I]%type_scope F%function_scope (A B)%classical_set_scope maximal_disjoint_subcollection is transparent Expands to: Constant mathcomp.classical.classical_sets.maximal_disjoint_subcollection Declared in library mathcomp.classical.classical_sets, line 2897, characters 11-41
Source code
Definition
ubound : forall [d : disp_t] [T : porderType d], set T -> set T ubound is not universe polymorphic Arguments ubound [d T] A%classical_set_scope _ ubound is transparent Expands to: Constant mathcomp.classical.classical_sets.ubound Declared in library mathcomp.classical.classical_sets, line 2930, characters 11-17
Source code
Lemma
Source code
Proof.
by split; [rewrite ub_set1|exact: lb_ub_refl].
by rewrite ub_set1 => xy /lb_ub_set1 yx; apply/eqP; rewrite eq_le xy yx.
Qed.
Lemma
Source code
Proof.
Definition
lbound : forall [d : disp_t] [T : porderType d], set T -> set T lbound is not universe polymorphic Arguments lbound [d T] A%classical_set_scope _ lbound is transparent Expands to: Constant mathcomp.classical.classical_sets.lbound Declared in library mathcomp.classical.classical_sets, line 2931, characters 11-17
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Definition
down : forall [d : disp_t] [T : porderType d], set T -> set T down is not universe polymorphic Arguments down [d T] A%classical_set_scope _ down is transparent Expands to: Constant mathcomp.classical.classical_sets.down Declared in library mathcomp.classical.classical_sets, line 2965, characters 11-15
Source code
Lemma
Source code
Proof.
by split; [rewrite lb_set1|apply ub_lb_refl].
by rewrite lb_set1 => xy /ub_lb_set1 yx; apply/eqP; rewrite eq_le xy yx.
Qed.
Lemma
Source code
Proof.
Definition
has_ubound : forall [d : disp_t] [T : porderType d], set T -> Prop has_ubound is not universe polymorphic Arguments has_ubound [d T] A%classical_set_scope has_ubound is transparent Expands to: Constant mathcomp.classical.classical_sets.has_ubound Declared in library mathcomp.classical.classical_sets, line 2967, characters 11-21
Source code
End UpperLowerTheory.
Section UpperLowerOrderTheory.
Import Order.TTheory.
Variables ( : Order.disp_t) ( : orderType d).
Implicit Types (A : set T) (x y z : T).
Lemma
Source code
supremums A !=set0 -> A t -> (supremum x0 A >= t)%O.
Proof.
Lemma
Source code
infimums A !=set0 -> A t -> (infimum x0 A <= t)%O.
Proof.
End UpperLowerOrderTheory.
Lemma
Source code
Proof.
case: (pselect (ubound A n)) => [/ih //|An {ih}] An1.
exists n.+1; split => // m Am; case/existsNP : An => k /not_implyP[Ak /negP].
rewrite -Order.TotalTheory.ltNge => kn.
by rewrite (Order.POrderTheory.le_trans _ (Am _ Ak)).
Qed.
Definition
has_lbound : forall [d : disp_t] [T : porderType d], set T -> Prop has_lbound is not universe polymorphic Arguments has_lbound [d T] A%classical_set_scope has_lbound is transparent Expands to: Constant mathcomp.classical.classical_sets.has_lbound Declared in library mathcomp.classical.classical_sets, line 2969, characters 11-21
Source code
forall , F A -> G B -> A `&` B !=set0.
Notation
Source code
Section meets.
Lemma
Source code
Proof.
Lemma
Source code
F `<=` F' -> G `<=` G' -> F' `#` G' -> F `#` G.
Proof.
Lemma
Source code
G `<=` G' -> F `#` G' -> F `#` G.
Proof.
Lemma
Source code
F `<=` F' -> F' `#` G -> F `#` G.
Proof.
End meets.
Fact
Source code
Proof.
Module
Source code
Module
Source code
Section SetOrder.
Context { : Type}.
Implicit Types A B : set T.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Source code
.
Source code
Source code
Source code
Source code
.
Source code
Source code
Order.isMeetJoinDistrLattice.Build set_display (set T)
le_def lt_def (@setIC _) (@setUC _) (@setIA _) (@setUA _)
joinKI meetKU (@setIUl _) setIid.
Lemma
Source code
Lemma
Source code
Proof.
Source code
.
Source code
Source code
Source code
SetOrder_sub0set.
Source code
.
Source code
Source code
Source code
SetOrder_setTsub.
Lemma
Source code
Lemma
Source code
Source code
.
Source code
Source code
Source code
set_display (set T) subKI joinIB.
Source code
.
Source code
Source code
Source code
set_display (set T) (fun => esym (setTD x)).
End SetOrder.
Module
Source code
End Internal.
Module
Source code
Export Internal.Exports.
Section exports.
Context { : Type}.
Implicit Types A B : set T.
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
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End exports.
End Exports.
End SetOrder.
Export SetOrder.Exports.
Section product.
Variables ( : Type).
Implicit Type A B : set (T1 * T2).
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
Proof.
End product.
Section section.
Variables ( : Type).
Implicit Types (A : set (T1 * T2)) (x : T1) (y : T2).
Definition
supremums : forall [d : disp_t] [T : porderType d], set T -> set T supremums is not universe polymorphic Arguments supremums [d T] A%classical_set_scope _ supremums is transparent Expands to: Constant mathcomp.classical.classical_sets.supremums Declared in library mathcomp.classical.classical_sets, line 2998, characters 11-20
Source code
Definition
supremum : forall [d : disp_t] [T : porderType d], T -> set T -> T supremum is not universe polymorphic Arguments supremum [d T] x0 A%classical_set_scope supremum is transparent Expands to: Constant mathcomp.classical.classical_sets.supremum Declared in library mathcomp.classical.classical_sets, line 3013, characters 11-19
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by rewrite /xsection/= inE => -[] /=; rewrite notin_setE in xX1.
Qed.
Lemma
Source code
Proof.
by rewrite /ysection/= inE => -[_]; rewrite notin_setE in yX2.
Qed.
Lemma
Source code
xsection (\bigcup_ F n) x = \bigcup_ xsection (F n) x.
Proof.
Lemma
Source code
ysection (\bigcup_ F n) y = \bigcup_ ysection (F n) y.
Proof.
Lemma
Source code
trivIset setT (fun => xsection (F n) x).
Proof.
Lemma
Source code
trivIset setT (fun => ysection (F n) y).
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
End section.
Declare Scope relation_scope.
Delimit Scope relation_scope with relation.
Notation
Source code
([set | exists2 , A (xy.1, z) & B (z, xy.2)]) : relation_scope.
Notation
Source code
Local Open Scope relation_scope.
Lemma
Source code
A `<=` C -> B `<=` D -> A \; B `<=` C \; D.
Proof.
Qed.
Lemma
Source code
E \; range (fun => (x, x)) = E.
Proof.
by exists x => //; exists x.
Qed.
Lemma
Source code
Proof.
Definition
infimums : forall [d : disp_t] [T : porderType d], set T -> set T infimums is not universe polymorphic Arguments infimums [d T] A%classical_set_scope _ infimums is transparent Expands to: Constant mathcomp.classical.classical_sets.infimums Declared in library mathcomp.classical.classical_sets, line 3032, characters 11-19
Source code
Lemma
Source code
Proof.
Local Close Scope relation_scope.