diff options
| author | Cyril Cohen | 2019-10-16 11:26:43 +0200 |
|---|---|---|
| committer | Cyril Cohen | 2019-10-16 11:26:43 +0200 |
| commit | 6b59540a2460633df4e3d8347cb4dfe2fb3a3afb (patch) | |
| tree | 1239c1d5553d51a7d73f2f8b465f6a23178ff8a0 /docs/htmldoc/mathcomp.ssreflect.fintype.html | |
| parent | dd82aaeae7e9478efc178ce8430986649555b032 (diff) | |
removing everything but index which redirects to the new page
Diffstat (limited to 'docs/htmldoc/mathcomp.ssreflect.fintype.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.ssreflect.fintype.html | 2157 |
1 files changed, 0 insertions, 2157 deletions
diff --git a/docs/htmldoc/mathcomp.ssreflect.fintype.html b/docs/htmldoc/mathcomp.ssreflect.fintype.html deleted file mode 100644 index a99038e..0000000 --- a/docs/htmldoc/mathcomp.ssreflect.fintype.html +++ /dev/null @@ -1,2157 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<link href="coqdoc.css" rel="stylesheet" type="text/css" /> -<title>mathcomp.ssreflect.fintype</title> -</head> - -<body> - -<div id="page"> - -<div id="header"> -</div> - -<div id="main"> - -<h1 class="libtitle">Library mathcomp.ssreflect.fintype</h1> - -<div class="code"> -<span class="comment">(* (c) Copyright 2006-2016 Microsoft Corporation and Inria. <br/> - Distributed under the terms of CeCILL-B. *)</span><br/> - -<br/> -</div> - -<div class="doc"> - The Finite interface describes Types with finitely many elements, - supplying a duplicate-free sequence of all the elements. It is a subclass - of Countable and thus of Choice and Equality. As with Countable, the - interface explicitly includes these somewhat redundant superclasses to - ensure that Canonical instance inference remains consistent. Finiteness - could be stated more simply by bounding the range of the pickle function - supplied by the Countable interface, but this would yield a useless - computational interpretation due to the wasteful Peano integer encodings. - Because the Countable interface is closely tied to the Finite interface - and is not much used on its own, the Countable mixin is included inside - the Finite mixin; this makes it much easier to derive Finite variants of - interfaces, in this file for subFinType, and in the finalg library. - We define the following interfaces and structures: - finType == the packed class type of the Finite interface. - FinType T m == the packed finType class for type T and Finite mixin m. - Finite.axiom e <-> every x : T occurs exactly once in e : seq T. - FinMixin ax_e == the Finite mixin for T, encapsulating - ax_e : Finite.axiom e for some e : seq T. - UniqFinMixin uniq_e total_e == an alternative mixin constructor that uses - uniq_e : uniq e and total_e : e =i xpredT. - PcanFinMixin fK == the Finite mixin for T, given f : T -> fT and g with fT - a finType and fK : pcancel f g. - CanFinMixin fK == the Finite mixin for T, given f : T -> fT and g with fT - a finType and fK : cancel f g. - subFinType == the join interface type for subType and finType. - [finType of T for fT] == clone for T of the finType fT. - [finType of T] == clone for T of the finType inferred for T. - [subFinType of T] == a subFinType structure for T, when T already has both - finType and subType structures. - [finMixin of T by <: ] == a finType structure for T, when T has a subType - structure over an existing finType. - We define or propagate the finType structure appropriately for all basic - types : unit, bool, option, prod, sum, sig and sigT. We also define a - generic type constructor for finite subtypes based on an explicit - enumeration: - seq_sub s == the subType of all x \in s, where s : seq T for some - eqType T; seq_sub s has a canonical finType instance - when T is a choiceType. - adhoc_seq_sub_choiceType s, adhoc_seq_sub_finType s == - non-canonical instances for seq_sub s, s : seq T, - which can be used when T is not a choiceType. - Bounded integers are supported by the following type and operations: - 'I_n, ordinal n == the finite subType of integers i < n, whose - enumeration is {0, ..., n.-1}. 'I_n coerces to nat, - so all the integer arithmetic functions can be used - with 'I_n. - Ordinal lt_i_n == the element of 'I_n with (nat) value i, given - lt_i_n : i < n. - nat_of_ord i == the nat value of i : 'I_n (this function is a - coercion so it is not usually displayed). - ord_enum n == the explicit increasing sequence of the i : 'I_n. - cast_ord eq_n_m i == the element j : 'I_m with the same value as i : 'I_n - given eq_n_m : n = m (indeed, i : nat and j : nat - are convertible). - widen_ord le_n_m i == a j : 'I_m with the same value as i : 'I_n, given - le_n_m : n <= m. - rev_ord i == the complement to n.-1 of i : 'I_n, such that - i + rev_ord i = n.-1. - inord k == the i : 'I_n.+1 with value k (n is inferred from the - context). - sub_ord k == the i : 'I_n.+1 with value n - k (n is inferred from - the context). - ord0 == the i : 'I_n.+1 with value 0 (n is inferred from the - context). - ord_max == the i : 'I_n.+1 with value n (n is inferred from the - context). - bump h k == k.+1 if k >= h, else k (this is a nat function). - unbump h k == k.-1 if k > h, else k (this is a nat function). - lift i j == the j' : 'I_n with value bump i j, where i : 'I_n - and j : 'I_n.-1. - unlift i j == None if i = j, else Some j', where j' : 'I_n.-1 has - value unbump i j, given i, j : 'I_n. - lshift n j == the i : 'I(m + n) with value j : 'I_m. - rshift m k == the i : 'I(m + n) with value m + k, k : 'I_n. - unsplit u == either lshift n j or rshift m k, depending on - whether if u : 'I_m + 'I_n is inl j or inr k. - split i == the u : 'I_m + 'I_n such that i = unsplit u; the - type 'I(m + n) of i determines the split. - Finally, every type T with a finType structure supports the following - operations: - enum A == a duplicate-free list of all the x \in A, where A is a - collective predicate over T. - #|A| == the cardinal of A, i.e., the number of x \in A. - enum_val i == the i'th item of enum A, where i : 'I(#|A|). - enum_rank x == the i : 'I(#|T|) such that enum_val i = x. - enum_rank_in Ax0 x == some i : 'I(#|A|) such that enum_val i = x if - x \in A, given Ax0 : x0 \in A. - A \subset B <=> all x \in A satisfy x \in B. - A \proper B <=> all x \in A satisfy x \in B but not the converse. - [disjoint A & B] <=> no x \in A satisfies x \in B. - image f A == the sequence of f x for all x : T such that x \in A - (where a is an applicative predicate), of length #|P|. - The codomain of F can be any type, but image f A can - only be used as a collective predicate is it is an - eqType. - codom f == a sequence spanning the codomain of f (:= image f T). - [seq F | x : T in A] := image (fun x : T => F) A. - [seq F | x : T] := [seq F | x <- {: T} ]. - [seq F | x in A], [seq F | x] == variants without casts. - iinv im_y == some x such that P x holds and f x = y, given - im_y : y \in image f P. - invF inj_f y == the x such that f x = y, for inj_j : injective f with - f : T -> T. - dinjectiveb A f <=> the restriction of f : T -> R to A is injective - (this is a bolean predicate, R must be an eqType). - injectiveb f <=> f : T -> R is injective (boolean predicate). - pred0b A <=> no x : T satisfies x \in A. - [forall x, P] <=> P (in which x can appear) is true for all values of x - x must range over a finType. - [exists x, P] <=> P is true for some value of x. - [forall (x | C), P] := [forall x, C ==> P]. - [forall x in A, P] := [forall (x | x \in A), P]. - [exists (x | C), P] := [exists x, C && P]. - [exists x in A, P] := [exists (x | x \in A), P]. - and typed variants [forall x : T, P], [forall (x : T | C), P], - [exists x : T, P], [exists x : T in A, P], etc. -<ul class="doclist"> -<li>> The outer brackets can be omitted when nesting finitary quantifiers, - e.g., [forall i in I, forall j in J, exists a, f i j == a]. - 'forall_pP <-> view for [forall x, p _ ], for pP : reflect .. (p _). - 'exists_pP <-> view for [exists x, p _ ], for pP : reflect .. (p _). - 'forall_in_pP <-> view for [forall x in .., p _ ], for pP as above. - 'exists_in_pP <-> view for [exists x in .., p _ ], for pP as above. - [pick x | P] == Some x, for an x such that P holds, or None if there - is no such x. - [pick x : T] == Some x with x : T, provided T is nonempty, else None. - [pick x in A] == Some x, with x \in A, or None if A is empty. - -</li> -</ul> - [pick x in A | P] == Some x, with x \in A such that P holds, else None. - [pick x | P & Q] := [pick x | P & Q]. - [pick x in A | P & Q] := [pick x | P & Q]. - and (un)typed variants [pick x : T | P], [pick x : T in A], [pick x], etc. - [arg min(i < i0 | P) M] == a value i : T minimizing M : nat, subject - to the condition P (i may appear in P and M), and - provided P holds for i0. - [arg max(i > i0 | P) M] == a value i maximizing M subject to P and - provided P holds for i0. - [arg min(i < i0 in A) M] == an i \in A minimizing M if i0 \in A. - [arg max(i > i0 in A) M] == an i \in A maximizing M if i0 \in A. - [arg min(i < i0) M] == an i : T minimizing M, given i0 : T. - [arg max(i > i0) M] == an i : T maximizing M, given i0 : T. - These are special instances of - [arg[ord](i < i0 | P) F] == a value i : I, minimizing F wrt ord : rel T - such that for all j : T, ord (F i) (F j) - subject to the condition P, and provided P i0 - where I : finType, T : eqType and F : I -> T - [arg[ord](i < i0 in A) F] == an i \in A minimizing F wrt ord, if i0 \in A. - [arg[ord](i < i0) F] == an i : T minimizing F wrt ord, given i0 : T. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Set Implicit Arguments</span>.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <a name="Finite"><span class="id" title="module">Finite</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Finite.RawMixin"><span class="id" title="section">RawMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="Finite.RawMixin.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.axiom"><span class="id" title="definition">axiom</span></a> <span class="id" title="var">e</span> := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.RawMixin.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#count_mem"><span class="id" title="abbreviation">count_mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="Finite.uniq_enumP"><span class="id" title="lemma">uniq_enumP</span></a> <span class="id" title="var">e</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.RawMixin.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e"><span class="id" title="variable">e</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Record</span> <a name="Finite.mixin_of"><span class="id" title="record">mixin_of</span></a> := <a name="Finite.Mixin"><span class="id" title="constructor">Mixin</span></a> {<br/> - <a name="Finite.mixin_base"><span class="id" title="projection">mixin_base</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.mixin_of"><span class="id" title="record">Countable.mixin_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.RawMixin.T"><span class="id" title="variable">T</span></a>;<br/> - <a name="Finite.mixin_enum"><span class="id" title="projection">mixin_enum</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.RawMixin.T"><span class="id" title="variable">T</span></a>;<br/> - <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mixin_enum"><span class="id" title="method">mixin_enum</span></a><br/> -}.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.RawMixin"><span class="id" title="section">RawMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Finite.Mixins"><span class="id" title="section">Mixins</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="Finite.Mixins.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.countType"><span class="id" title="abbreviation">countType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.EnumMixin"><span class="id" title="definition">EnumMixin</span></a> :=<br/> - <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Pack"><span class="id" title="constructor">Countable.Pack</span></a> <span class="id" title="var">_</span> (<a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Class"><span class="id" title="constructor">Countable.Class</span></a> <span class="id" title="var">_</span> <span class="id" title="var">m</span>) <span class="id" title="keyword">as</span> <span class="id" title="var">cT</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Mixins.T"><span class="id" title="variable">T</span></a><br/> - <span class="id" title="keyword">return</span> <span class="id" title="keyword">∀</span> <span class="id" title="var">e</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cT"><span class="id" title="variable">cT</span></a>, <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_of"><span class="id" title="record">mixin_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span><br/> - @<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Mixin"><span class="id" title="constructor">Mixin</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>) <span class="id" title="var">m</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.UniqMixin"><span class="id" title="definition">UniqMixin</span></a> <span class="id" title="var">e</span> <span class="id" title="var">Ue</span> <span class="id" title="var">eT</span> := @<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumMixin"><span class="id" title="definition">EnumMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.uniq_enumP"><span class="id" title="lemma">uniq_enumP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Ue"><span class="id" title="variable">Ue</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eT"><span class="id" title="variable">eT</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="Finite.Mixins.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.count_enum"><span class="id" title="definition">count_enum</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#pmap"><span class="id" title="definition">pmap</span></a> (@<a class="idref" href="mathcomp.ssreflect.choice.html#pickle_inv"><span class="id" title="definition">pickle_inv</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Mixins.T"><span class="id" title="variable">T</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> 0 <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Mixins.n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="Finite.Mixins.ubT"><span class="id" title="variable">ubT</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Mixins.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="mathcomp.ssreflect.choice.html#pickle"><span class="id" title="definition">pickle</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Mixins.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="Finite.count_enumP"><span class="id" title="lemma">count_enumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.count_enum"><span class="id" title="definition">count_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.CountMixin"><span class="id" title="definition">CountMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumMixin"><span class="id" title="definition">EnumMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.count_enumP"><span class="id" title="lemma">count_enumP</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Mixins"><span class="id" title="section">Mixins</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Finite.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Record</span> <a name="Finite.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">T</span> := <a name="Finite.Class"><span class="id" title="constructor">Class</span></a> {<br/> - <a name="Finite.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.class_of"><span class="id" title="record">Choice.class_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>;<br/> - <a name="Finite.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_of"><span class="id" title="record">mixin_of</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#base"><span class="id" title="method">base</span></a>)<br/> -}.<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.base2"><span class="id" title="definition">base2</span></a> <span class="id" title="var">T</span> <span class="id" title="var">c</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Class"><span class="id" title="constructor">Countable.Class</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#c"><span class="id" title="variable">c</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_base"><span class="id" title="projection">mixin_base</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#c"><span class="id" title="variable">c</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Structure</span> <a name="Finite.type"><span class="id" title="record">type</span></a> : <span class="id" title="keyword">Type</span> := <a name="Finite.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="Finite.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sort"><span class="id" title="method">sort</span></a>}.<br/> -<span class="id" title="keyword">Variables</span> (<a name="Finite.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Finite.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.type"><span class="id" title="record">type</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#c"><span class="id" title="variable">c</span></a>.<br/> -<span class="id" title="keyword">Let</span> <a name="Finite.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="Finite.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_of"><span class="id" title="record">mixin_of</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#b0"><span class="id" title="variable">b0</span></a>)) :=<br/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> & <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.class"><span class="id" title="definition">Choice.class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#b"><span class="id" title="variable">b</span></a> ⇒<br/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> & <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.xclass"><span class="id" title="abbreviation">xclass</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.xclass"><span class="id" title="abbreviation">xclass</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.countType"><span class="id" title="definition">countType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Pack"><span class="id" title="constructor">Countable.Pack</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef.cT"><span class="id" title="variable">cT</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base2"><span class="id" title="definition">base2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.xclass"><span class="id" title="abbreviation">xclass</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Import</span> <a name="Finite.Exports"><span class="id" title="module">Exports</span></a>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_base"><span class="id" title="projection">mixin_base</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_base"><span class="id" title="projection">mixin_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_base"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_base"><span class="id" title="projection">Countable.mixin_of</span></a>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base"><span class="id" title="projection">Choice.class_of</span></a>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base2"><span class="id" title="definition">base2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base2"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base2"><span class="id" title="definition">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base2"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.base2"><span class="id" title="definition">Countable.class_of</span></a>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.sort"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.sort"><span class="id" title="projection">Sortclass</span></a>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.eqType"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.choiceType"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/> -<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.countType"><span class="id" title="definition">countType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.countType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.countType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.countType"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.countType"><span class="id" title="definition">Countable.type</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">countType</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.type"><span class="id" title="record">type</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="Finite.Exports.FinType"><span class="id" title="abbreviation">FinType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="Finite.Exports.FinMixin"><span class="id" title="abbreviation">FinMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumMixin"><span class="id" title="definition">EnumMixin</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="Finite.Exports.UniqFinMixin"><span class="id" title="abbreviation">UniqFinMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.UniqMixin"><span class="id" title="definition">UniqMixin</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="274683adfd1c9a24b44d4dd6ea30913a"><span class="id" title="notation">"</span></a>[ 'finType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'finType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="0e3773306b0834fa9a0572c7b198b77f"><span class="id" title="notation">"</span></a>[ 'finType' 'of' T ]" := (@<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'finType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports"><span class="id" title="module">Exports</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Type</span> <a name="Finite.EnumSig"><span class="id" title="module">EnumSig</span></a>.<br/> -<span class="id" title="keyword">Parameter</span> <a name="Finite.EnumSig.enum"><span class="id" title="axiom">enum</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">cT</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.type"><span class="id" title="record">type</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cT"><span class="id" title="variable">cT</span></a>.<br/> -<span class="id" title="keyword">Axiom</span> <a name="Finite.EnumSig.enumDef"><span class="id" title="axiom">enumDef</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumSig.enum"><span class="id" title="axiom">enum</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <span class="id" title="keyword">fun</span> <span class="id" title="var">cT</span> ⇒ <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_enum"><span class="id" title="projection">mixin_enum</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cT"><span class="id" title="variable">cT</span></a>).<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumSig"><span class="id" title="module">EnumSig</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <a name="Finite.EnumDef"><span class="id" title="module">EnumDef</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumSig"><span class="id" title="module">EnumSig</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.EnumDef.enum"><span class="id" title="definition">enum</span></a> <span class="id" title="var">cT</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.mixin_enum"><span class="id" title="projection">mixin_enum</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cT"><span class="id" title="variable">cT</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="Finite.EnumDef.enumDef"><span class="id" title="definition">enumDef</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumDef.enum"><span class="id" title="definition">enum</span></a>.<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.EnumDef"><span class="id" title="module">EnumDef</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="Finite.enum"><span class="id" title="abbreviation">enum</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.enum"><span class="id" title="axiom">EnumDef.enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite"><span class="id" title="module">Finite</span></a>.<br/> -<span class="id" title="keyword">Export</span> <span class="id" title="var">Finite.Exports</span>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">finEnum_unlock</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#Unlockable"><span class="id" title="constructor">Unlockable</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enumDef"><span class="id" title="axiom">Finite.EnumDef.enumDef</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Workaround for the silly syntactic uniformity restriction on coercions; - this avoids a cross-dependency between finset.v and prime.v for the - definition of the \pi(A) notation. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="fin_pred_sort"><span class="id" title="definition">fin_pred_sort</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">pT</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predType"><span class="id" title="record">predType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred_sort"><span class="id" title="projection">pred_sort</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pT"><span class="id" title="variable">pT</span></a>.<br/> -<span class="id" title="keyword">Identity</span> <span class="id" title="keyword">Coercion</span> <span class="id" title="var">pred_sort_of_fin</span> : <span class="id" title="var">fin_pred_sort</span> >-> <span class="id" title="var">pred_sort</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="enum_mem"><span class="id" title="definition">enum_mem</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">mA</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem_pred"><span class="id" title="inductive">mem_pred</span></a> <span class="id" title="var">_</span>) := <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mA"><span class="id" title="variable">mA</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">Finite.enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="enum"><span class="id" title="abbreviation">enum</span></a> <span class="id" title="var">A</span> := (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_mem"><span class="id" title="definition">enum_mem</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">A</span>)).<br/> -<span class="id" title="keyword">Definition</span> <a name="pick"><span class="id" title="definition">pick</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="mathcomp.ssreflect.seq.html#ohead"><span class="id" title="definition">ohead</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">"</span></a>[ 'pick' x | P ]" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <span class="id" title="var">P</span>%<span class="id" title="var">B</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">format</span> "[ 'pick' x | P ]") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="d583921bee6150451237862f0867ac60"><span class="id" title="notation">"</span></a>[ 'pick' x : T | P ]" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> : <span class="id" title="var">T</span> ⇒ <span class="id" title="var">P</span>%<span class="id" title="var">B</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Definition</span> <a name="pick_true"><span class="id" title="definition">pick_true</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="154ee3eb81d73b8390e3de359a921c93"><span class="id" title="notation">"</span></a>[ 'pick' x : T ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pick_true"><span class="id" title="definition">pick_true</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> -<span class="id" title="keyword">Notation</span> <a name="95df359c617dd6f171f175b2564583ac"><span class="id" title="notation">"</span></a>[ 'pick' x ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#154ee3eb81d73b8390e3de359a921c93"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#154ee3eb81d73b8390e3de359a921c93"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#154ee3eb81d73b8390e3de359a921c93"><span class="id" title="notation">:</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.ssreflect.fintype.html#154ee3eb81d73b8390e3de359a921c93"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="7f5e9e8b1b532c63b99f9b66661efb56"><span class="id" title="notation">"</span></a>[ 'pic' 'k' x : T ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pick_true"><span class="id" title="definition">pick_true</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">format</span> "[ 'pic' 'k' x : T ]") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="eb3facfb03ff01f53a5cb4e77e71a8f3"><span class="id" title="notation">"</span></a>[ 'pick' x | P & Q ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <span class="id" title="var">Q</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>,<br/> - <span class="id" title="var">format</span> "[ '[hv ' 'pick' x | P '/ ' & Q ] ']'") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e362c6edcc64ae7f67e05a238952af48"><span class="id" title="notation">"</span></a>[ 'pick' x : T | P & Q ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <span class="id" title="var">Q</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="c37d1b05b70882746ce17952ea00c535"><span class="id" title="notation">"</span></a>[ 'pick' x 'in' A ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.fintype.html#17198bb01f8e546f36bb74df399b01c5"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">format</span> "[ 'pick' x 'in' A ]") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="53e3737519551652956351ad0ab6da13"><span class="id" title="notation">"</span></a>[ 'pick' x : T 'in' A ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d583921bee6150451237862f0867ac60"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="3043ac3013f1c8d6829579fd47423346"><span class="id" title="notation">"</span></a>[ 'pick' x 'in' A | P ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#eb3facfb03ff01f53a5cb4e77e71a8f3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#eb3facfb03ff01f53a5cb4e77e71a8f3"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#eb3facfb03ff01f53a5cb4e77e71a8f3"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#eb3facfb03ff01f53a5cb4e77e71a8f3"><span class="id" title="notation">&</span></a> <span class="id" title="var">P</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#eb3facfb03ff01f53a5cb4e77e71a8f3"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>,<br/> - <span class="id" title="var">format</span> "[ '[hv ' 'pick' x 'in' A '/ ' | P ] ']'") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="94552778856d1bcf7f060dc106b47877"><span class="id" title="notation">"</span></a>[ 'pick' x : T 'in' A | P ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#e362c6edcc64ae7f67e05a238952af48"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e362c6edcc64ae7f67e05a238952af48"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e362c6edcc64ae7f67e05a238952af48"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e362c6edcc64ae7f67e05a238952af48"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e362c6edcc64ae7f67e05a238952af48"><span class="id" title="notation">&</span></a> <span class="id" title="var">P</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e362c6edcc64ae7f67e05a238952af48"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="267681cdbe65ec2e385ab01d5a0e14a6"><span class="id" title="notation">"</span></a>[ 'pick' x 'in' A | P & Q ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#3043ac3013f1c8d6829579fd47423346"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#3043ac3013f1c8d6829579fd47423346"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#3043ac3013f1c8d6829579fd47423346"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#3043ac3013f1c8d6829579fd47423346"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <span class="id" title="var">Q</span><a class="idref" href="mathcomp.ssreflect.fintype.html#3043ac3013f1c8d6829579fd47423346"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">format</span><br/> - "[ '[hv ' 'pick' x 'in' A '/ ' | P '/ ' & Q ] ']'") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="0cdf60dbc086c7ee4a83b50ce31ac52e"><span class="id" title="notation">"</span></a>[ 'pick' x : T 'in' A | P & Q ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#94552778856d1bcf7f060dc106b47877"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#94552778856d1bcf7f060dc106b47877"><span class="id" title="notation">pick</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#94552778856d1bcf7f060dc106b47877"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#94552778856d1bcf7f060dc106b47877"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#94552778856d1bcf7f060dc106b47877"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <span class="id" title="var">Q</span><a class="idref" href="mathcomp.ssreflect.fintype.html#94552778856d1bcf7f060dc106b47877"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -</div> - -<div class="doc"> - We lock the definitions of card and subset to mitigate divergence of the - Coq term comparison algorithm. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Type</span> <a name="CardDefSig"><span class="id" title="module">CardDefSig</span></a>.<br/> -<span class="id" title="keyword">Parameter</span> <a name="CardDefSig.card"><span class="id" title="axiom">card</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#card_type"><span class="id" title="abbreviation">card_type</span></a>. <span class="id" title="keyword">Axiom</span> <a name="CardDefSig.cardEdef"><span class="id" title="axiom">cardEdef</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#CardDefSig.card"><span class="id" title="axiom">card</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#card_def"><span class="id" title="abbreviation">card_def</span></a>.<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardDefSig"><span class="id" title="module">CardDefSig</span></a>.<br/> -<span class="id" title="keyword">Module</span> <a name="CardDef"><span class="id" title="module">CardDef</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#CardDefSig"><span class="id" title="module">CardDefSig</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="CardDef.card"><span class="id" title="definition">card</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#card_type"><span class="id" title="abbreviation">card_type</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#card_def"><span class="id" title="abbreviation">card_def</span></a>. <span class="id" title="keyword">Definition</span> <a name="CardDef.cardEdef"><span class="id" title="definition">cardEdef</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardDef.card"><span class="id" title="definition">card</span></a>.<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardDef"><span class="id" title="module">CardDef</span></a>.<br/> -</div> - -<div class="doc"> - Should be Include, but for a silly restriction: can't Include at toplevel! -</div> -<div class="code"> -<span class="id" title="keyword">Export</span> <span class="id" title="var">CardDef</span>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">card_unlock</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#Unlockable"><span class="id" title="constructor">Unlockable</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cardEdef"><span class="id" title="axiom">cardEdef</span></a>.<br/> -</div> - -<div class="doc"> - A is at level 99 to allow the notation #|G : H| in groups. -</div> -<div class="code"> -<span class="id" title="keyword">Notation</span> <a name="234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">"</span></a>#| A |" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#card"><span class="id" title="axiom">card</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">A</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">A</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">format</span> "#| A |") : <span class="id" title="var">nat_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="pred0b"><span class="id" title="definition">pred0b</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <a name="FiniteQuant"><span class="id" title="module">FiniteQuant</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variant</span> <a name="FiniteQuant.quantified"><span class="id" title="inductive">quantified</span></a> := <a name="FiniteQuant.Quantified"><span class="id" title="constructor">Quantified</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">fin_quant_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">Q</span>. <span class="comment">(* Bogus, only used to declare scope. *)</span><br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="ea5146b504820609501c18972cdc0754"><span class="id" title="notation">"</span></a>F ^*" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.Quantified"><span class="id" title="constructor">Quantified</span></a> <span class="id" title="var">F</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2).<br/> -<span class="id" title="keyword">Notation</span> <a name="56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">"</span></a>F ^~" := (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <span class="id" title="var">F</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="FiniteQuant.Definitions"><span class="id" title="section">Definitions</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="FiniteQuant.Definitions.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.quantified"><span class="id" title="inductive">quantified</span></a>) (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.Definitions.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="FiniteQuant.quant0b"><span class="id" title="definition">quant0b</span></a> <span class="id" title="var">Bp</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#pred0b"><span class="id" title="definition">pred0b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fbeb549dcb6350fb8ceb1bda39acce60"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fbeb549dcb6350fb8ceb1bda39acce60"><span class="id" title="notation">pred</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fbeb549dcb6350fb8ceb1bda39acce60"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.Definitions.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fbeb549dcb6350fb8ceb1bda39acce60"><span class="id" title="notation">|</span></a> <span class="id" title="keyword">let</span>: <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Bp"><span class="id" title="variable">Bp</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">F</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fbeb549dcb6350fb8ceb1bda39acce60"><span class="id" title="notation">]</span></a>.<br/> -</div> - -<div class="doc"> - The first redundant argument protects the notation from Coq's K-term - display kludge; the second protects it from simpl and /=. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="FiniteQuant.ex"><span class="id" title="definition">ex</span></a> <span class="id" title="var">B</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>.<br/> -</div> - -<div class="doc"> - Binding the predicate value rather than projecting it prevents spurious - unfolding of the boolean connectives by unification. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="FiniteQuant.all"><span class="id" title="definition">all</span></a> <span class="id" title="var">B</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <span class="id" title="keyword">let</span>: <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <span class="id" title="keyword">let</span>: <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#a133e82bab56729f895f9b2b31e837cd"><span class="id" title="notation">==></span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">)^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <span class="id" title="keyword">let</span>: <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">)^*</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.Definitions"><span class="id" title="section">Definitions</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">"</span></a>[ x | B ]" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.quant0b"><span class="id" title="definition">quant0b</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <span class="id" title="var">B</span> <span class="id" title="var">x</span>)) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>).<br/> -<span class="id" title="keyword">Notation</span> <a name="a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">"</span></a>[ x : T | B ]" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.quant0b"><span class="id" title="definition">quant0b</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> : <span class="id" title="var">T</span> ⇒ <span class="id" title="var">B</span> <span class="id" title="var">x</span>)) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>).<br/> - -<br/> -<span class="id" title="keyword">Module</span> <a name="FiniteQuant.Exports"><span class="id" title="module">Exports</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">"</span></a>, F" := <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">format</span> ", '/ ' F") : <span class="id" title="var">fin_quant_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">"</span></a>[ 'forall' x B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all"><span class="id" title="definition">all</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> "[ '[hv' 'forall' x B ] ']'") : <span class="id" title="var">bool_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="fb0199913c9911d56fa87965a9a828a3"><span class="id" title="notation">"</span></a>[ 'forall' x : T B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all"><span class="id" title="definition">all</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">"</span></a>[ 'forall' ( x | C ) B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> "[ '[hv' '[' 'forall' ( x '/ ' | C ) ']' B ] ']'") : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="b14c43cd248537980c3a1a815ab087df"><span class="id" title="notation">"</span></a>[ 'forall' ( x : T | C ) B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="9b40a7420e06ba2a775d87b43bd1c69f"><span class="id" title="notation">"</span></a>[ 'forall' x 'in' A B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> "[ '[hv' '[' 'forall' x '/ ' 'in' A ']' B ] ']'") : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e786d38fb1c78583c78486483761dfff"><span class="id" title="notation">"</span></a>[ 'forall' x : T 'in' A B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="491573e303f379eb171e60e73aff62ae"><span class="id" title="notation">"</span></a>, 'forall' x B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all"><span class="id" title="definition">all</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> ", '/ ' 'forall' x B") : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e1924a831ebc4eede7a49ea158a3d66c"><span class="id" title="notation">"</span></a>, 'forall' x : T B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all"><span class="id" title="definition">all</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="59ce155014a925cca079058b40bab72e"><span class="id" title="notation">"</span></a>, 'forall' ( x | C ) B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> ", '/ ' '[' 'forall' ( x '/ ' | C ) ']' B") : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e43a13e3d639c464aa3578ee61719a3b"><span class="id" title="notation">"</span></a>, 'forall' ( x : T | C ) B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="7406769ad390d6c18d532b497e931ef0"><span class="id" title="notation">"</span></a>, 'forall' x 'in' A B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> ", '/ ' '[' 'forall' x '/ ' 'in' A ']' B") : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="c6e0bc4114dd714e7262ed511d975a84"><span class="id" title="notation">"</span></a>, 'forall' x : T 'in' A B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.all_in"><span class="id" title="definition">all_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">"</span></a>[ 'exists' x B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex"><span class="id" title="definition">ex</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> "[ '[hv' 'exists' x B ] ']'") : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="9b7547477b3531f14d89d6b13ad78482"><span class="id" title="notation">"</span></a>[ 'exists' x : T B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex"><span class="id" title="definition">ex</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">"</span></a>[ 'exists' ( x | C ) B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> "[ '[hv' '[' 'exists' ( x '/ ' | C ) ']' B ] ']'") : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="14d06eec1f5f7dfac346d730fae6723c"><span class="id" title="notation">"</span></a>[ 'exists' ( x : T | C ) B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="f302e204901821a508e6d6d00228c0ed"><span class="id" title="notation">"</span></a>[ 'exists' x 'in' A B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> "[ '[hv' '[' 'exists' x '/ ' 'in' A ']' B ] ']'") : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="251e8192c305cd7601bbed67fd6d6249"><span class="id" title="notation">"</span></a>[ 'exists' x : T 'in' A B ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="879ea41111b984d072ab3bba11feda79"><span class="id" title="notation">"</span></a>, 'exists' x B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex"><span class="id" title="definition">ex</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> ", '/ ' 'exists' x B") : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="5675e9c5cf174e09b1b7005056e9bd89"><span class="id" title="notation">"</span></a>, 'exists' x : T B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex"><span class="id" title="definition">ex</span></a> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e38196bd288251be5369c1e4ce7316f7"><span class="id" title="notation">"</span></a>, 'exists' ( x | C ) B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> ", '/ ' '[' 'exists' ( x '/ ' | C ) ']' B") : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="3b2dca918c748246f164f2487e80f224"><span class="id" title="notation">"</span></a>, 'exists' ( x : T | C ) B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> <span class="id" title="var">C</span> <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">fin_quant_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="919732e2a395b004050c56ad6129fab5"><span class="id" title="notation">"</span></a>, 'exists' x 'in' A B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#fee710af89d70df72664de2598d9dce0"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200,<br/> - <span class="id" title="var">format</span> ", '/ ' '[' 'exists' x '/ ' 'in' A ']' B") : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="0145806588c5e908657ca7bbbf7abd16"><span class="id" title="notation">"</span></a>, 'exists' x : T 'in' A B" := <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">[</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.ex_in"><span class="id" title="definition">ex_in</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span>) <span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a144991985dddee1fffe479e66e76aa4"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#56df6c3db37fd477fd0b9e866d6c43d1"><span class="id" title="notation">^~</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea5146b504820609501c18972cdc0754"><span class="id" title="notation">^*</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">B</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 200, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">bool_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant.Exports"><span class="id" title="module">Exports</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FiniteQuant"><span class="id" title="module">FiniteQuant</span></a>.<br/> -<span class="id" title="keyword">Export</span> <span class="id" title="var">FiniteQuant.Exports</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="disjoint"><span class="id" title="definition">disjoint</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem_pred"><span class="id" title="inductive">mem_pred</span></a> <span class="id" title="var">_</span>) := @<a class="idref" href="mathcomp.ssreflect.fintype.html#pred0b"><span class="id" title="definition">pred0b</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predI"><span class="id" title="definition">predI</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">"</span></a>[ 'disjoint' A & B ]" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#disjoint"><span class="id" title="definition">disjoint</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">A</span>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">B</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0,<br/> - <span class="id" title="var">format</span> "'[hv' [ 'disjoint' '/ ' A '/' & B ] ']'") : <span class="id" title="var">bool_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Type</span> <a name="SubsetDefSig"><span class="id" title="module">SubsetDefSig</span></a>.<br/> -<span class="id" title="keyword">Parameter</span> <a name="SubsetDefSig.subset"><span class="id" title="axiom">subset</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#subset_type"><span class="id" title="abbreviation">subset_type</span></a>. <span class="id" title="keyword">Axiom</span> <a name="SubsetDefSig.subsetEdef"><span class="id" title="axiom">subsetEdef</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#SubsetDefSig.subset"><span class="id" title="axiom">subset</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#subset_def"><span class="id" title="abbreviation">subset_def</span></a>.<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubsetDefSig"><span class="id" title="module">SubsetDefSig</span></a>.<br/> -<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Export</span> <a name="SubsetDef"><span class="id" title="module">SubsetDef</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#SubsetDefSig"><span class="id" title="module">SubsetDefSig</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="SubsetDef.subset"><span class="id" title="definition">subset</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#subset_type"><span class="id" title="abbreviation">subset_type</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#subset_def"><span class="id" title="abbreviation">subset_def</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="SubsetDef.subsetEdef"><span class="id" title="definition">subsetEdef</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubsetDef.subset"><span class="id" title="definition">subset</span></a>.<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubsetDef"><span class="id" title="module">SubsetDef</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subset_unlock</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#Unlockable"><span class="id" title="constructor">Unlockable</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#subsetEdef"><span class="id" title="axiom">subsetEdef</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="4102da6205bd8605932488256a8bd517"><span class="id" title="notation">"</span></a>A \subset B" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">A</span>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">B</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="keyword">no</span> <span class="id" title="keyword">associativity</span>) : <span class="id" title="var">bool_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="proper"><span class="id" title="definition">proper</span></a> <span class="id" title="var">T</span> <span class="id" title="var">A</span> <span class="id" title="var">B</span> := @<a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">"</span></a>A \proper B" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#proper"><span class="id" title="definition">proper</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">A</span>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">B</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="keyword">no</span> <span class="id" title="keyword">associativity</span>) : <span class="id" title="var">bool_scope</span>.<br/> - -<br/> -</div> - -<div class="doc"> - image, xinv, inv, and ordinal operations will be defined later. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Section</span> <a name="OpsTheory"><span class="id" title="section">OpsTheory</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="OpsTheory.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<span class="id" title="var">P</span> <span class="id" title="var">Q</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>) (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>) (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enumP"><span class="id" title="lemma">enumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">Finite.enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="OpsTheory.EnumPick"><span class="id" title="section">EnumPick</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="OpsTheory.EnumPick.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enumT"><span class="id" title="lemma">enumT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">Finite.enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_enum"><span class="id" title="lemma">mem_enum</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_uniq"><span class="id" title="lemma">enum_uniq</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum0"><span class="id" title="lemma">enum0</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Nil"><span class="id" title="abbreviation">Nil</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum1"><span class="id" title="lemma">enum1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variant</span> <a name="pick_spec"><span class="id" title="inductive">pick_spec</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> - | <a name="Pick"><span class="id" title="constructor">Pick</span></a> <span class="id" title="var">x</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.EnumPick.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#pick_spec"><span class="id" title="inductive">pick_spec</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>)<br/> - | <a name="Nopick"><span class="id" title="constructor">Nopick</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.EnumPick.P"><span class="id" title="variable">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#xpred0"><span class="id" title="abbreviation">xpred0</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#pick_spec"><span class="id" title="inductive">pick_spec</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="pickP"><span class="id" title="lemma">pickP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#pick_spec"><span class="id" title="inductive">pick_spec</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.EnumPick.P"><span class="id" title="variable">P</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.EnumPick"><span class="id" title="section">EnumPick</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_enum"><span class="id" title="lemma">eq_enum</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_pick"><span class="id" title="lemma">eq_pick</span></a> <span class="id" title="var">P</span> <span class="id" title="var">Q</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Q"><span class="id" title="variable">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Q"><span class="id" title="variable">Q</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardE"><span class="id" title="lemma">cardE</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_card"><span class="id" title="lemma">eq_card</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_card_trans"><span class="id" title="lemma">eq_card_trans</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card0"><span class="id" title="lemma">card0</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a>@<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardT"><span class="id" title="lemma">cardT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>). <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card1"><span class="id" title="lemma">card1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_card0"><span class="id" title="lemma">eq_card0</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_cardT"><span class="id" title="lemma">eq_cardT</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_card1"><span class="id" title="lemma">eq_card1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardUI"><span class="id" title="lemma">cardUI</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5eb5169ac355423e8c7c929c40b7aef7"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5eb5169ac355423e8c7c929c40b7aef7"><span class="id" title="notation">predU</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5eb5169ac355423e8c7c929c40b7aef7"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5eb5169ac355423e8c7c929c40b7aef7"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">predI</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardID"><span class="id" title="lemma">cardID</span></a> <span class="id" title="var">B</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">predI</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">predD</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardC"><span class="id" title="lemma">cardC</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardU1"><span class="id" title="lemma">cardU1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#8324d85bd43121a4b363319e87c00d28"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#8324d85bd43121a4b363319e87c00d28"><span class="id" title="notation">predU1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#8324d85bd43121a4b363319e87c00d28"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#8324d85bd43121a4b363319e87c00d28"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card2"><span class="id" title="lemma">card2</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#pred2"><span class="id" title="definition">pred2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">).+1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardC1"><span class="id" title="lemma">cardC1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#predC1"><span class="id" title="definition">predC1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardD1"><span class="id" title="lemma">cardD1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">predD1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="max_card"><span class="id" title="lemma">max_card</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_size"><span class="id" title="lemma">card_size</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_uniqP"><span class="id" title="lemma">card_uniqP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card0_eq"><span class="id" title="lemma">card0_eq</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="pred0P"><span class="id" title="lemma">pred0P</span></a> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#pred0b"><span class="id" title="definition">pred0b</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="pred0Pn"><span class="id" title="lemma">pred0Pn</span></a> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pred0b"><span class="id" title="definition">pred0b</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_gt0P"><span class="id" title="lemma">card_gt0P</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">i</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 0).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subsetE"><span class="id" title="lemma">subsetE</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pred0b"><span class="id" title="definition">pred0b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">predD</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f096036bbf59880580e05ce6b526a3b6"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subsetP"><span class="id" title="lemma">subsetP</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subsetPn"><span class="id" title="lemma">subsetPn</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">)</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_leq_card"><span class="id" title="lemma">subset_leq_card</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subxx_hint"><span class="id" title="lemma">subxx_hint</span></a> (<span class="id" title="var">mA</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem_pred"><span class="id" title="inductive">mem_pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mA"><span class="id" title="variable">mA</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mA"><span class="id" title="variable">mA</span></a>.<br/> -<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">subxx_hint</span> : <span class="id" title="var">core</span>.<br/> - -<br/> -</div> - -<div class="doc"> - The parametrization by predType makes it easier to apply subxx. -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="subxx"><span class="id" title="lemma">subxx</span></a> (<span class="id" title="var">pT</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predType"><span class="id" title="record">predType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>) (<span class="id" title="var">pA</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#pT"><span class="id" title="variable">pT</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#pA"><span class="id" title="variable">pA</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#pA"><span class="id" title="variable">pA</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_subset"><span class="id" title="lemma">eq_subset</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_subset_r"><span class="id" title="lemma">eq_subset_r</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)^~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.ssreflect.fintype.html#subset"><span class="id" title="axiom">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)^~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_subxx"><span class="id" title="lemma">eq_subxx</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_predT"><span class="id" title="lemma">subset_predT</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="predT_subset"><span class="id" title="lemma">predT_subset</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_pred1"><span class="id" title="lemma">subset_pred1</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_eqP"><span class="id" title="lemma">subset_eqP</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_cardP"><span class="id" title="lemma">subset_cardP</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_leqif_card"><span class="id" title="lemma">subset_leqif_card</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#22d09a36997010daec8f30c044c9e5d4"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#22d09a36997010daec8f30c044c9e5d4"><span class="id" title="notation">?=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#22d09a36997010daec8f30c044c9e5d4"><span class="id" title="notation">iff</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#22d09a36997010daec8f30c044c9e5d4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#22d09a36997010daec8f30c044c9e5d4"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_trans"><span class="id" title="lemma">subset_trans</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_all"><span class="id" title="lemma">subset_all</span></a> <span class="id" title="var">s</span> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="properE"><span class="id" title="lemma">properE</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="properP"><span class="id" title="lemma">properP</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#ba2b0e492d2b4675a0acf3ea92aabadd"><span class="id" title="notation">∧</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#ba2b0e492d2b4675a0acf3ea92aabadd"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#ba2b0e492d2b4675a0acf3ea92aabadd"><span class="id" title="notation">)</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="proper_sub"><span class="id" title="lemma">proper_sub</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="proper_subn"><span class="id" title="lemma">proper_subn</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="proper_trans"><span class="id" title="lemma">proper_trans</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="proper_sub_trans"><span class="id" title="lemma">proper_sub_trans</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="sub_proper_trans"><span class="id" title="lemma">sub_proper_trans</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="proper_card"><span class="id" title="lemma">proper_card</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="proper_irrefl"><span class="id" title="lemma">proper_irrefl</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="properxx"><span class="id" title="lemma">properxx</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f8a5284fd4c86e7670efa54241b49929"><span class="id" title="notation">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_proper"><span class="id" title="lemma">eq_proper</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#proper"><span class="id" title="definition">proper</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#proper"><span class="id" title="definition">proper</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_proper_r"><span class="id" title="lemma">eq_proper_r</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.ssreflect.fintype.html#proper"><span class="id" title="definition">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)^~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.ssreflect.fintype.html#proper"><span class="id" title="definition">proper</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)^~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint_sym"><span class="id" title="lemma">disjoint_sym</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_disjoint"><span class="id" title="lemma">eq_disjoint</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#disjoint"><span class="id" title="definition">disjoint</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#disjoint"><span class="id" title="definition">disjoint</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_disjoint_r"><span class="id" title="lemma">eq_disjoint_r</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.ssreflect.fintype.html#disjoint"><span class="id" title="definition">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)^~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.ssreflect.fintype.html#disjoint"><span class="id" title="definition">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)^~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="subset_disjoint"><span class="id" title="lemma">subset_disjoint</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint_subset"><span class="id" title="lemma">disjoint_subset</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint_trans"><span class="id" title="lemma">disjoint_trans</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#4102da6205bd8605932488256a8bd517"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint0"><span class="id" title="lemma">disjoint0</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_disjoint0"><span class="id" title="lemma">eq_disjoint0</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint1"><span class="id" title="lemma">disjoint1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_disjoint1"><span class="id" title="lemma">eq_disjoint1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> <span class="id" title="var">B</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjointU"><span class="id" title="lemma">disjointU</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predU"><span class="id" title="definition">predU</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#C"><span class="id" title="variable">C</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjointU1"><span class="id" title="lemma">disjointU1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> <span class="id" title="var">B</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#predU1"><span class="id" title="definition">predU1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint_cons"><span class="id" title="lemma">disjoint_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> <span class="id" title="var">B</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint_has"><span class="id" title="lemma">disjoint_has</span></a> <span class="id" title="var">s</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="disjoint_cat"><span class="id" title="lemma">disjoint_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">A</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#93e0a78b945d3f9f22195c004c67aa36"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">disjoint</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#1c170b7d9dd618ec64d5610e390a3afe"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OpsTheory"><span class="id" title="section">OpsTheory</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">subxx_hint</span> : <span class="id" title="var">core</span>.<br/> - -<br/> - -<br/> -</div> - -<div class="doc"> - -<div class="paragraph"> </div> - - Boolean quantifiers for finType - -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Section</span> <a name="QuantifierCombinators"><span class="id" title="section">QuantifierCombinators</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="QuantifierCombinators.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="QuantifierCombinators.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) (<a name="QuantifierCombinators.PP"><span class="id" title="variable">PP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Prop</span>).<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="QuantifierCombinators.viewP"><span class="id" title="variable">viewP</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#QuantifierCombinators.PP"><span class="id" title="variable">PP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#QuantifierCombinators.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="existsPP"><span class="id" title="lemma">existsPP</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#QuantifierCombinators.PP"><span class="id" title="variable">PP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#QuantifierCombinators.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="forallPP"><span class="id" title="lemma">forallPP</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#QuantifierCombinators.PP"><span class="id" title="variable">PP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">∀</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#QuantifierCombinators.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#QuantifierCombinators"><span class="id" title="section">QuantifierCombinators</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="8b7fa1ab1e19edde9ba1acc9ca3eb925"><span class="id" title="notation">"</span></a>'exists_ view" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#existsPP"><span class="id" title="lemma">existsPP</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">view</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 4, <span class="id" title="tactic">right</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "''exists_' view").<br/> -<span class="id" title="keyword">Notation</span> <a name="9af4e4f3721983d2b10d20381f462e05"><span class="id" title="notation">"</span></a>'forall_ view" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#forallPP"><span class="id" title="lemma">forallPP</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">view</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 4, <span class="id" title="tactic">right</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "''forall_' view").<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Quantifiers"><span class="id" title="section">Quantifiers</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="Quantifiers.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="Quantifiers.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">D</span> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Quantifiers.T"><span class="id" title="variable">T</span></a>) (<span class="id" title="var">f</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#Quantifiers.rT"><span class="id" title="variable">rT</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="forallP"><span class="id" title="lemma">forallP</span></a> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">∀</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eqfunP"><span class="id" title="lemma">eqfunP</span></a> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">∀</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="forall_inP"><span class="id" title="lemma">forall_inP</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="forall_inPP"><span class="id" title="lemma">forall_inPP</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P</span> <span class="id" title="var">PP</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#PP"><span class="id" title="variable">PP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#PP"><span class="id" title="variable">PP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eqfun_inP"><span class="id" title="lemma">eqfun_inP</span></a> <span class="id" title="var">D</span> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="existsP"><span class="id" title="lemma">existsP</span></a> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="exists_eqP"><span class="id" title="lemma">exists_eqP</span></a> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="exists_inP"><span class="id" title="lemma">exists_inP</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="exists_inPP"><span class="id" title="lemma">exists_inPP</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P</span> <span class="id" title="var">PP</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#PP"><span class="id" title="variable">PP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#PP"><span class="id" title="variable">PP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="exists_eq_inP"><span class="id" title="lemma">exists_eq_inP</span></a> <span class="id" title="var">D</span> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_existsb"><span class="id" title="lemma">eq_existsb</span></a> <span class="id" title="var">P1</span> <span class="id" title="var">P2</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_existsb_in"><span class="id" title="lemma">eq_existsb_in</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P1</span> <span class="id" title="var">P2</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_forallb"><span class="id" title="lemma">eq_forallb</span></a> <span class="id" title="var">P1</span> <span class="id" title="var">P2</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">∀</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">∀</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_forallb_in"><span class="id" title="lemma">eq_forallb_in</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P1</span> <span class="id" title="var">P2</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P1"><span class="id" title="variable">P1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P2"><span class="id" title="variable">P2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="negb_forall"><span class="id" title="lemma">negb_forall</span></a> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">∀</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="negb_forall_in"><span class="id" title="lemma">negb_forall_in</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="negb_exists"><span class="id" title="lemma">negb_exists</span></a> <span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea6c97f834d69613538d4da1fb704b25"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">∀</span></a> <span class="id" title="var">x</span><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ce8c9a990e3e773a56ef37417d3761c6"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="negb_exists_in"><span class="id" title="lemma">negb_exists_in</span></a> <span class="id" title="var">D</span> <span class="id" title="var">P</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e9122b3568d6f47f958b76a6e55e4e40"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Quantifiers"><span class="id" title="section">Quantifiers</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="4715ba7ec7543f1f0e59a66abcc6b176"><span class="id" title="notation">"</span></a>'exists_in_ view" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#exists_inPP"><span class="id" title="lemma">exists_inPP</span></a> <span class="id" title="var">_</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">view</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 4, <span class="id" title="tactic">right</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "''exists_in_' view").<br/> -<span class="id" title="keyword">Notation</span> <a name="7ab87ba6635c11183235c06b3250fc9f"><span class="id" title="notation">"</span></a>'forall_in_ view" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#forall_inPP"><span class="id" title="lemma">forall_inPP</span></a> <span class="id" title="var">_</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">view</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 4, <span class="id" title="tactic">right</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "''forall_in_' view").<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Extrema"><span class="id" title="section">Extrema</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variant</span> <a name="extremum_spec"><span class="id" title="inductive">extremum_spec</span></a> {<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>} (<span class="id" title="var">ord</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) {<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>}<br/> - (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) : <span class="id" title="var">I</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> - <a name="ExtremumSpec"><span class="id" title="constructor">ExtremumSpec</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> & (<span class="id" title="keyword">∀</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a>, <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord"><span class="id" title="variable">ord</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a>)) :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#extremum_spec"><span class="id" title="inductive">extremum_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord"><span class="id" title="variable">ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Let</span> <a name="Extrema.arg_pred"><span class="id" title="variable">arg_pred</span></a> {<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>} <span class="id" title="var">ord</span> {<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>} (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">pred</span></a> <span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord"><span class="id" title="variable">ord</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a>)<a class="idref" href="mathcomp.ssreflect.fintype.html#90a753c4c9a43b6ba4178e7bc1e47801"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Extrema.Extremum"><span class="id" title="section">Extremum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Context</span> {<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>} {<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>} (<span class="id" title="var">ord</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> -<span class="id" title="keyword">Context</span> (<span class="id" title="var">i0</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="Extrema.Extremum.ord_refl"><span class="id" title="variable">ord_refl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflexive"><span class="id" title="definition">reflexive</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.ord"><span class="id" title="variable">ord</span></a>.<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="Extrema.Extremum.ord_trans"><span class="id" title="variable">ord_trans</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#transitive"><span class="id" title="definition">transitive</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.ord"><span class="id" title="variable">ord</span></a>.<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="Extrema.Extremum.ord_total"><span class="id" title="variable">ord_total</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#total"><span class="id" title="definition">total</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.ord"><span class="id" title="variable">ord</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="extremum"><span class="id" title="definition">extremum</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#odflt"><span class="id" title="abbreviation">odflt</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.i0"><span class="id" title="variable">i0</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.arg_pred"><span class="id" title="variable">arg_pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.ord"><span class="id" title="variable">ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.F"><span class="id" title="variable">F</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="Extrema.Extremum.Pi0"><span class="id" title="variable">Pi0</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.i0"><span class="id" title="variable">i0</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="extremumP"><span class="id" title="lemma">extremumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#extremum_spec"><span class="id" title="inductive">extremum_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.ord"><span class="id" title="variable">ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#extremum"><span class="id" title="definition">extremum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.Extremum"><span class="id" title="section">Extremum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">"</span></a>[ 'arg[' ord ]_( i < i0 | P ) F ]" :=<br/> - (<a class="idref" href="mathcomp.ssreflect.fintype.html#extremum"><span class="id" title="definition">extremum</span></a> <span class="id" title="var">ord</span> <span class="id" title="var">i0</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <span class="id" title="var">P</span>%<span class="id" title="var">B</span>) (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <span class="id" title="var">F</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">ord</span>, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg[' ord ]_( i < i0 | P ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="331f7185e81731ef2b1eb9cef1aed0ab"><span class="id" title="notation">"</span></a>[ 'arg[' ord ]_( i < i0 'in' A ) F ]" :=<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">arg</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">[</span></a><span class="id" title="var">ord</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation"><</span></a> <span class="id" title="var">i0</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">ord</span>, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg[' ord ]_( i < i0 'in' A ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="be936861724bff9e36682d789ae9b182"><span class="id" title="notation">"</span></a>[ 'arg[' ord ]_( i < i0 ) F ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">arg</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">[</span></a><span class="id" title="var">ord</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation"><</span></a> <span class="id" title="var">i0</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#d2709c05b8893fbfce6113b58d692e11"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">ord</span>, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg[' ord ]_( i < i0 ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Extrema.ArgMinMax"><span class="id" title="section">ArgMinMax</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="Extrema.ArgMinMax.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="Extrema.ArgMinMax.i0"><span class="id" title="variable">i0</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a>) (<a name="Extrema.ArgMinMax.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a>) (<a name="Extrema.ArgMinMax.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="Extrema.ArgMinMax.Pi0"><span class="id" title="variable">Pi0</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i0"><span class="id" title="variable">i0</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="arg_min"><span class="id" title="definition">arg_min</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#extremum"><span class="id" title="definition">extremum</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#leq"><span class="id" title="definition">leq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.F"><span class="id" title="variable">F</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="arg_max"><span class="id" title="definition">arg_max</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#extremum"><span class="id" title="definition">extremum</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#geq"><span class="id" title="definition">geq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.F"><span class="id" title="variable">F</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="arg_minP"><span class="id" title="lemma">arg_minP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#extremum_spec"><span class="id" title="inductive">extremum_spec</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#leq"><span class="id" title="definition">leq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#arg_min"><span class="id" title="definition">arg_min</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="arg_maxP"><span class="id" title="lemma">arg_maxP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#extremum_spec"><span class="id" title="inductive">extremum_spec</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#geq"><span class="id" title="definition">geq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#arg_max"><span class="id" title="definition">arg_max</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema.ArgMinMax"><span class="id" title="section">ArgMinMax</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Extrema"><span class="id" title="section">Extrema</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">"</span></a>[ 'arg' 'min_' ( i < i0 | P ) F ]" :=<br/> - (<a class="idref" href="mathcomp.ssreflect.fintype.html#arg_min"><span class="id" title="definition">arg_min</span></a> <span class="id" title="var">i0</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <span class="id" title="var">P</span>%<span class="id" title="var">B</span>) (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <span class="id" title="var">F</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg' 'min_' ( i < i0 | P ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="2cde4928bb3542e0ca5a7e077a8913f9"><span class="id" title="notation">"</span></a>[ 'arg' 'min_' ( i < i0 'in' A ) F ]" :=<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">arg</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">min_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation"><</span></a> <span class="id" title="var">i0</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg' 'min_' ( i < i0 'in' A ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="e5817a24cc2cc0af66d8b419bd648d77"><span class="id" title="notation">"</span></a>[ 'arg' 'min_' ( i < i0 ) F ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">arg</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">min_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation"><</span></a> <span class="id" title="var">i0</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#79dffc1e6b5d4e4f052c7b13571343b2"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg' 'min_' ( i < i0 ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">"</span></a>[ 'arg' 'max_' ( i > i0 | P ) F ]" :=<br/> - (<a class="idref" href="mathcomp.ssreflect.fintype.html#arg_max"><span class="id" title="definition">arg_max</span></a> <span class="id" title="var">i0</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <span class="id" title="var">P</span>%<span class="id" title="var">B</span>) (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <span class="id" title="var">F</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg' 'max_' ( i > i0 | P ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="8c93946cb15f001ab4d5f5c30fb6714a"><span class="id" title="notation">"</span></a>[ 'arg' 'max_' ( i > i0 'in' A ) F ]" :=<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">arg</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">max_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">></span></a> <span class="id" title="var">i0</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg' 'max_' ( i > i0 'in' A ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="a57ad5b6fddb3eb1ec2dc5e2d6e2871b"><span class="id" title="notation">"</span></a>[ 'arg' 'max_' ( i > i0 ) F ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">arg</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">max_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">></span></a> <span class="id" title="var">i0</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span><a class="idref" href="mathcomp.ssreflect.fintype.html#93615dc0fa359e70f6f3e6106709d1fb"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">i</span>, <span class="id" title="var">i0</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> - <span class="id" title="var">format</span> "[ 'arg' 'max_' ( i > i0 ) F ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -</div> - -<div class="doc"> - -<div class="paragraph"> </div> - - Boolean injectivity test for functions with a finType domain - -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Injectiveb"><span class="id" title="section">Injectiveb</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="Injectiveb.aT"><span class="id" title="variable">aT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="Injectiveb.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="Injectiveb.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#rT"><span class="id" title="variable">rT</span></a>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">D</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="dinjectiveb"><span class="id" title="definition">dinjectiveb</span></a> <span class="id" title="var">D</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="injectiveb"><span class="id" title="definition">injectiveb</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#dinjectiveb"><span class="id" title="definition">dinjectiveb</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.aT"><span class="id" title="variable">aT</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="dinjectivePn"><span class="id" title="lemma">dinjectivePn</span></a> <span class="id" title="var">D</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">y</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">predD1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a>)<br/> - (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#dinjectiveb"><span class="id" title="definition">dinjectiveb</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="dinjectiveP"><span class="id" title="lemma">dinjectiveP</span></a> <span class="id" title="var">D</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#dinjectiveb"><span class="id" title="definition">dinjectiveb</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#D"><span class="id" title="variable">D</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="injectivePn"><span class="id" title="lemma">injectivePn</span></a> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">y</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#injectiveb"><span class="id" title="definition">injectiveb</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="injectiveP"><span class="id" title="lemma">injectiveP</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb.f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#injectiveb"><span class="id" title="definition">injectiveb</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Injectiveb"><span class="id" title="section">Injectiveb</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="image_mem"><span class="id" title="definition">image_mem</span></a> <span class="id" title="var">T</span> <span class="id" title="var">T'</span> <span class="id" title="var">f</span> <span class="id" title="var">mA</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T'"><span class="id" title="variable">T'</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_mem"><span class="id" title="definition">enum_mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mA"><span class="id" title="variable">mA</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="image"><span class="id" title="abbreviation">image</span></a> <span class="id" title="var">f</span> <span class="id" title="var">A</span> := (<a class="idref" href="mathcomp.ssreflect.fintype.html#image_mem"><span class="id" title="definition">image_mem</span></a> <span class="id" title="var">f</span> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <span class="id" title="var">A</span>)).<br/> -<span class="id" title="keyword">Notation</span> <a name="c3ff8d84d4e3e273bebfcf7502deb41a"><span class="id" title="notation">"</span></a>[ 'seq' F | x 'in' A ]" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <span class="id" title="var">F</span>) <span class="id" title="var">A</span>)<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">F</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>,<br/> - <span class="id" title="var">format</span> "'[hv' [ 'seq' F '/ ' | x 'in' A ] ']'") : <span class="id" title="var">seq_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="fea7b704a5c856eb498b893cecdbf59f"><span class="id" title="notation">"</span></a>[ 'seq' F | x : T 'in' A ]" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> : <span class="id" title="var">T</span> ⇒ <span class="id" title="var">F</span>) <span class="id" title="var">A</span>)<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">F</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">seq_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">"</span></a>[ 'seq' F | x : T ]" :=<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#fea7b704a5c856eb498b893cecdbf59f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#fea7b704a5c856eb498b893cecdbf59f"><span class="id" title="notation">seq</span></a> <span class="id" title="var">F</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fea7b704a5c856eb498b893cecdbf59f"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fea7b704a5c856eb498b893cecdbf59f"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fea7b704a5c856eb498b893cecdbf59f"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred_of_simpl"><span class="id" title="definition">pred_of_simpl</span></a> (@<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred_of_argType"><span class="id" title="definition">pred_of_argType</span></a> <span class="id" title="var">T</span>)<a class="idref" href="mathcomp.ssreflect.fintype.html#fea7b704a5c856eb498b893cecdbf59f"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">F</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>,<br/> - <span class="id" title="var">format</span> "'[hv' [ 'seq' F '/ ' | x : T ] ']'") : <span class="id" title="var">seq_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="dc1a65f38690032c3e9abd642c420006"><span class="id" title="notation">"</span></a>[ 'seq' F , x ]" := <a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">seq</span></a> <span class="id" title="var">F</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">:</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">]</span></a><br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">F</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">x</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">seq_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="codom"><span class="id" title="definition">codom</span></a> <span class="id" title="var">T</span> <span class="id" title="var">T'</span> <span class="id" title="var">f</span> := @<a class="idref" href="mathcomp.ssreflect.fintype.html#image_mem"><span class="id" title="definition">image_mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Image"><span class="id" title="section">Image</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="Image.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Image.SizeImage"><span class="id" title="section">SizeImage</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="Image.SizeImage.T'"><span class="id" title="variable">T'</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Image.SizeImage.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T'"><span class="id" title="variable">T'</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_image"><span class="id" title="lemma">size_image</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.SizeImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_codom"><span class="id" title="lemma">size_codom</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.SizeImage.f"><span class="id" title="variable">f</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="codomE"><span class="id" title="lemma">codomE</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.SizeImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.SizeImage.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.SizeImage"><span class="id" title="section">SizeImage</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="Image.T'"><span class="id" title="variable">T'</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="Image.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T'"><span class="id" title="variable">T'</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="imageP"><span class="id" title="lemma">imageP</span></a> <span class="id" title="var">A</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="codomP"><span class="id" title="lemma">codomP</span></a> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Remark</span> <a name="iinv_proof"><span class="id" title="lemma">iinv_proof</span></a> <span class="id" title="var">A</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="iinv"><span class="id" title="definition">iinv</span></a> <span class="id" title="var">A</span> <span class="id" title="var">y</span> <span class="id" title="var">fAy</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#s2val"><span class="id" title="definition">s2val</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#iinv_proof"><span class="id" title="lemma">iinv_proof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fAy"><span class="id" title="variable">fAy</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="f_iinv"><span class="id" title="lemma">f_iinv</span></a> <span class="id" title="var">A</span> <span class="id" title="var">y</span> <span class="id" title="var">fAy</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#iinv"><span class="id" title="definition">iinv</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fAy"><span class="id" title="variable">fAy</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_iinv"><span class="id" title="lemma">mem_iinv</span></a> <span class="id" title="var">A</span> <span class="id" title="var">y</span> <span class="id" title="var">fAy</span> : @<a class="idref" href="mathcomp.ssreflect.fintype.html#iinv"><span class="id" title="definition">iinv</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fAy"><span class="id" title="variable">fAy</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="in_iinv_f"><span class="id" title="lemma">in_iinv_f</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">fAfx</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> @<a class="idref" href="mathcomp.ssreflect.fintype.html#iinv"><span class="id" title="definition">iinv</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#fAfx"><span class="id" title="variable">fAfx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="preim_iinv"><span class="id" title="lemma">preim_iinv</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">y</span> <span class="id" title="var">fAy</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#preim"><span class="id" title="definition">preim</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#iinv"><span class="id" title="definition">iinv</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fAy"><span class="id" title="variable">fAy</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="image_f"><span class="id" title="lemma">image_f</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="codom_f"><span class="id" title="lemma">codom_f</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="image_codom"><span class="id" title="lemma">image_codom</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="image_pred0"><span class="id" title="lemma">image_pred0</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Image.Injective"><span class="id" title="section">Injective</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="Image.Injective.injf"><span class="id" title="variable">injf</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_image"><span class="id" title="lemma">mem_image</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="pre_image"><span class="id" title="lemma">pre_image</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">preim</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="image_iinv"><span class="id" title="lemma">image_iinv</span></a> <span class="id" title="var">A</span> <span class="id" title="var">y</span> (<span class="id" title="var">fTy</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#iinv"><span class="id" title="definition">iinv</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fTy"><span class="id" title="variable">fTy</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="iinv_f"><span class="id" title="lemma">iinv_f</span></a> <span class="id" title="var">x</span> <span class="id" title="var">fTfx</span> : @<a class="idref" href="mathcomp.ssreflect.fintype.html#iinv"><span class="id" title="definition">iinv</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#fTfx"><span class="id" title="variable">fTfx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="image_pre"><span class="id" title="lemma">image_pre</span></a> (<span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T'"><span class="id" title="variable">T'</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">preim</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">predI</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="bij_on_codom"><span class="id" title="lemma">bij_on_codom</span></a> (<span class="id" title="var">x0</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">on</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">pred</span></a> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">bijective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="bij_on_image"><span class="id" title="lemma">bij_on_image</span></a> <span class="id" title="var">A</span> (<span class="id" title="var">x0</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">on</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">pred</span></a> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7b6257ffc80683f59381cd58d26a8458"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">bijective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.Injective"><span class="id" title="section">Injective</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fixpoint</span> <a name="preim_seq"><span class="id" title="definition">preim_seq</span></a> <span class="id" title="var">s</span> :=<br/> - <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span><br/> - (<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#preim"><span class="id" title="definition">preim</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <span class="id" title="var">y</span>)) <span class="id" title="keyword">is</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <span class="id" title="var">x</span> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#cons"><span class="id" title="constructor">cons</span></a> <span class="id" title="var">x</span> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#preim_seq"><span class="id" title="definition">preim_seq</span></a> <span class="id" title="var">s'</span>)<br/> - <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#0a934e621391740b862762275992e626"><span class="id" title="notation">[::]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_preim"><span class="id" title="lemma">map_preim</span></a> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.T'"><span class="id" title="variable">T'</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#preim_seq"><span class="id" title="definition">preim_seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Image"><span class="id" title="section">Image</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="flatten_imageP"><span class="id" title="lemma">flatten_imageP</span></a> (<span class="id" title="var">aT</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">rT</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>)<br/> - (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#rT"><span class="id" title="variable">rT</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#rT"><span class="id" title="variable">rT</span></a>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#flatten"><span class="id" title="definition">flatten</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#c3ff8d84d4e3e273bebfcf7502deb41a"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#c3ff8d84d4e3e273bebfcf7502deb41a"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#c3ff8d84d4e3e273bebfcf7502deb41a"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#c3ff8d84d4e3e273bebfcf7502deb41a"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#c3ff8d84d4e3e273bebfcf7502deb41a"><span class="id" title="notation">]</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="CardFunImage"><span class="id" title="section">CardFunImage</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="CardFunImage.T"><span class="id" title="variable">T</span></a> <a name="CardFunImage.T'"><span class="id" title="variable">T'</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="CardFunImage.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T'"><span class="id" title="variable">T'</span></a>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="leq_image_card"><span class="id" title="lemma">leq_image_card</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_in_image"><span class="id" title="lemma">card_in_image</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="image_injP"><span class="id" title="lemma">image_injP</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="CardFunImage.injf"><span class="id" title="variable">injf</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_image"><span class="id" title="lemma">card_image</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_codom"><span class="id" title="lemma">card_codom</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_preim"><span class="id" title="lemma">card_preim</span></a> (<span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.T'"><span class="id" title="variable">T'</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">preim</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#83755aca2de7eb9ea173a9881e23c03e"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">predI</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#9505898acdd70a74fca20676bf8d8084"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="CardFunImage.card_range"><span class="id" title="variable">card_range</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.T'"><span class="id" title="variable">T'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="inj_card_onto"><span class="id" title="lemma">inj_card_onto</span></a> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="inj_card_bij"><span class="id" title="lemma">inj_card_bij</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage.f"><span class="id" title="variable">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardFunImage"><span class="id" title="section">CardFunImage</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="FinCancel"><span class="id" title="section">FinCancel</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="FinCancel.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="FinCancel.f"><span class="id" title="variable">f</span></a> <a name="FinCancel.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="FinCancel.Inv"><span class="id" title="section">Inv</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="FinCancel.Inv.injf"><span class="id" title="variable">injf</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="injF_onto"><span class="id" title="lemma">injF_onto</span></a> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="invF"><span class="id" title="definition">invF</span></a> <span class="id" title="var">y</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#iinv"><span class="id" title="definition">iinv</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#injF_onto"><span class="id" title="lemma">injF_onto</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a>).<br/> -<span class="id" title="keyword">Lemma</span> <a name="invF_f"><span class="id" title="lemma">invF_f</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#invF"><span class="id" title="definition">invF</span></a>. <br/> -<span class="id" title="keyword">Lemma</span> <a name="f_invF"><span class="id" title="lemma">f_invF</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#invF"><span class="id" title="definition">invF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a>. <br/> -<span class="id" title="keyword">Lemma</span> <a name="injF_bij"><span class="id" title="lemma">injF_bij</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a>. <br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.Inv"><span class="id" title="section">Inv</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="FinCancel.fK"><span class="id" title="variable">fK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.g"><span class="id" title="variable">g</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="canF_sym"><span class="id" title="lemma">canF_sym</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="canF_LR"><span class="id" title="lemma">canF_LR</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="canF_RL"><span class="id" title="lemma">canF_RL</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="canF_eq"><span class="id" title="lemma">canF_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="canF_invF"><span class="id" title="lemma">canF_invF</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#invF"><span class="id" title="definition">invF</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#can_inj"><span class="id" title="lemma">can_inj</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel.fK"><span class="id" title="variable">fK</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinCancel"><span class="id" title="section">FinCancel</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="EqImage"><span class="id" title="section">EqImage</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="EqImage.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="EqImage.T'"><span class="id" title="variable">T'</span></a> : <span class="id" title="keyword">Type</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_image"><span class="id" title="lemma">eq_image</span></a> (<span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage.T'"><span class="id" title="variable">T'</span></a>) :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#B"><span class="id" title="variable">B</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_codom"><span class="id" title="lemma">eq_codom</span></a> (<span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage.T'"><span class="id" title="variable">T'</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_invF"><span class="id" title="lemma">eq_invF</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">injf</span> <span class="id" title="var">injg</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> @<a class="idref" href="mathcomp.ssreflect.fintype.html#invF"><span class="id" title="definition">invF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#injf"><span class="id" title="variable">injf</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> @<a class="idref" href="mathcomp.ssreflect.fintype.html#invF"><span class="id" title="definition">invF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#injg"><span class="id" title="variable">injg</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#EqImage"><span class="id" title="section">EqImage</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Standard finTypes -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unit_enumP"><span class="id" title="lemma">unit_enumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">[::</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">]</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="unit_finMixin"><span class="id" title="definition">unit_finMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinMixin"><span class="id" title="abbreviation">FinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#unit_enumP"><span class="id" title="lemma">unit_enumP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#unit_finMixin"><span class="id" title="definition">unit_finMixin</span></a>.<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_unit"><span class="id" title="lemma">card_unit</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="bool_enumP"><span class="id" title="lemma">bool_enumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">[::</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">]</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="bool_finMixin"><span class="id" title="definition">bool_finMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinMixin"><span class="id" title="abbreviation">FinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bool_enumP"><span class="id" title="lemma">bool_enumP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">bool_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bool_finMixin"><span class="id" title="definition">bool_finMixin</span></a>.<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_bool"><span class="id" title="lemma">card_bool</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 2. <br/> - -<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="OptionFinType"><span class="id" title="section">OptionFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="OptionFinType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="option_enum"><span class="id" title="definition">option_enum</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#some"><span class="id" title="abbreviation">some</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enumF"><span class="id" title="abbreviation">enumF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OptionFinType.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="option_enumP"><span class="id" title="lemma">option_enumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#option_enum"><span class="id" title="definition">option_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="option_finMixin"><span class="id" title="definition">option_finMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinMixin"><span class="id" title="abbreviation">FinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#option_enumP"><span class="id" title="lemma">option_enumP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">option_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OptionFinType.T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#option_finMixin"><span class="id" title="definition">option_finMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_option"><span class="id" title="lemma">card_option</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OptionFinType.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#OptionFinType.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OptionFinType"><span class="id" title="section">OptionFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="TransferFinType"><span class="id" title="section">TransferFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="TransferFinType.eT"><span class="id" title="variable">eT</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.countType"><span class="id" title="abbreviation">countType</span></a>) (<a name="TransferFinType.fT"><span class="id" title="variable">fT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="TransferFinType.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#eT"><span class="id" title="variable">eT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fT"><span class="id" title="variable">fT</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="pcan_enumP"><span class="id" title="lemma">pcan_enumP</span></a> <span class="id" title="var">g</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TransferFinType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#undup"><span class="id" title="definition">undup</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#pmap"><span class="id" title="definition">pmap</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enumF"><span class="id" title="abbreviation">enumF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TransferFinType.fT"><span class="id" title="variable">fT</span></a>))).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="PcanFinMixin"><span class="id" title="definition">PcanFinMixin</span></a> <span class="id" title="var">g</span> <span class="id" title="var">fK</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#FinMixin"><span class="id" title="abbreviation">FinMixin</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#pcan_enumP"><span class="id" title="lemma">pcan_enumP</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fK"><span class="id" title="variable">fK</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="CanFinMixin"><span class="id" title="definition">CanFinMixin</span></a> <span class="id" title="var">g</span> (<span class="id" title="var">fK</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TransferFinType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#g"><span class="id" title="variable">g</span></a>) := <a class="idref" href="mathcomp.ssreflect.fintype.html#PcanFinMixin"><span class="id" title="definition">PcanFinMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#can_pcan"><span class="id" title="lemma">can_pcan</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fK"><span class="id" title="variable">fK</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#TransferFinType"><span class="id" title="section">TransferFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="SubFinType"><span class="id" title="section">SubFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="SubFinType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.choiceType"><span class="id" title="abbreviation">choiceType</span></a>) (<a name="SubFinType.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> -<span class="id" title="keyword">Import</span> <span class="id" title="var">Finite</span>.<br/> - -<br/> -<span class="id" title="keyword">Structure</span> <a name="subFinType"><span class="id" title="record">subFinType</span></a> := <a name="SubFinType"><span class="id" title="constructor">SubFinType</span></a> {<br/> - <a name="subFin_sort"><span class="id" title="projection">subFin_sort</span></a> :> <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinType.P"><span class="id" title="variable">P</span></a>;<br/> - <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#mixin_of"><span class="id" title="record">mixin_of</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_eqType"><span class="id" title="definition">sub_eqType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#subFin_sort"><span class="id" title="method">subFin_sort</span></a>)<br/> -}.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="pack_subFinType"><span class="id" title="definition">pack_subFinType</span></a> <span class="id" title="var">U</span> :=<br/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">cT</span> <span class="id" title="var">b</span> <span class="id" title="var">m</span> & <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cT"><span class="id" title="variable">cT</span></a>) (@<a class="idref" href="mathcomp.ssreflect.fintype.html#Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a>) ⇒<br/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">sT</span> <span class="id" title="var">m'</span> & <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m'"><span class="id" title="variable">m'</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> ⇒ @<a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinType"><span class="id" title="constructor">SubFinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m'"><span class="id" title="variable">m'</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">sT</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#subFinType"><span class="id" title="record">subFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="subFin_mixin"><span class="id" title="definition">subFin_mixin</span></a> <span class="id" title="var">sT</span> :=<br/> - <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinType"><span class="id" title="constructor">SubFinType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">m</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#mixin_of"><span class="id" title="record">mixin_of</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_eqType"><span class="id" title="definition">sub_eqType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a>) <span class="id" title="tactic">in</span> <span class="id" title="var">m</span>.<br/> - -<br/> -<span class="id" title="keyword">Coercion</span> <span class="id" title="var">subFinType_subCountType</span> <span class="id" title="var">sT</span> := @<a class="idref" href="mathcomp.ssreflect.choice.html#SubCountType"><span class="id" title="constructor">SubCountType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#subFin_mixin"><span class="id" title="definition">subFin_mixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subFinType_subCountType</span>.<br/> - -<br/> -<span class="id" title="keyword">Coercion</span> <span class="id" title="var">subFinType_finType</span> <span class="id" title="var">sT</span> :=<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a> (<a class="idref" href="mathcomp.ssreflect.choice.html#sub_choiceClass"><span class="id" title="definition">sub_choiceClass</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#subFin_mixin"><span class="id" title="definition">subFin_mixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a>)).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subFinType_finType</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="codom_val"><span class="id" title="lemma">codom_val</span></a> <span class="id" title="var">sT</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinType.T"><span class="id" title="variable">T</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinType"><span class="id" title="section">SubFinType</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - This assumes that T has both finType and subCountType structures. -</div> -<div class="code"> -<span class="id" title="keyword">Notation</span> <a name="ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">"</span></a>[ 'subFinType' 'of' T ]" := (@<a class="idref" href="mathcomp.ssreflect.fintype.html#pack_subFinType"><span class="id" title="definition">pack_subFinType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'subFinType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="FinTypeForSub"><span class="id" title="section">FinTypeForSub</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="FinTypeForSub.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="FinTypeForSub.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>) (<a name="FinTypeForSub.sT"><span class="id" title="variable">sT</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#subCountType"><span class="id" title="record">subCountType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="sub_enum"><span class="id" title="definition">sub_enum</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.sT"><span class="id" title="variable">sT</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#pmap"><span class="id" title="definition">pmap</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enumF"><span class="id" title="abbreviation">enumF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_sub_enum"><span class="id" title="lemma">mem_sub_enum</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sub_enum"><span class="id" title="definition">sub_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="sub_enum_uniq"><span class="id" title="lemma">sub_enum_uniq</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sub_enum"><span class="id" title="definition">sub_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="val_sub_enum"><span class="id" title="lemma">val_sub_enum</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sub_enum"><span class="id" title="definition">sub_enum</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.P"><span class="id" title="variable">P</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - We can't declare a canonical structure here because we've already - stated that subType_sort and FinType.sort unify via to the - subType_finType structure. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="SubFinMixin"><span class="id" title="definition">SubFinMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#UniqFinMixin"><span class="id" title="abbreviation">UniqFinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sub_enum_uniq"><span class="id" title="lemma">sub_enum_uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mem_sub_enum"><span class="id" title="lemma">mem_sub_enum</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="SubFinMixin_for"><span class="id" title="definition">SubFinMixin_for</span></a> (<span class="id" title="var">eT</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eT"><span class="id" title="variable">eT</span></a> :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#eq_rect"><span class="id" title="definition">eq_rect</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#mixin_of"><span class="id" title="record">Finite.mixin_of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinMixin"><span class="id" title="definition">SubFinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eT"><span class="id" title="variable">eT</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="FinTypeForSub.sfT"><span class="id" title="variable">sfT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#subFinType"><span class="id" title="record">subFinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.P"><span class="id" title="variable">P</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_sub"><span class="id" title="lemma">card_sub</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.sfT"><span class="id" title="variable">sfT</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">pred</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_card_sub"><span class="id" title="lemma">eq_card_sub</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.sfT"><span class="id" title="variable">sfT</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">pred</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinTypeForSub"><span class="id" title="section">FinTypeForSub</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - This assumes that T has a subCountType structure over a type that - has a finType structure. -</div> -<div class="code"> -<span class="id" title="keyword">Notation</span> <a name="fede21e6a36088be0833d2600143b39c"><span class="id" title="notation">"</span></a>[ 'finMixin' 'of' T 'by' <: ]" :=<br/> - (<a class="idref" href="mathcomp.ssreflect.fintype.html#SubFinMixin_for"><span class="id" title="definition">SubFinMixin_for</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">T</span>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span>))<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'finMixin' 'of' T 'by' <: ]") : <span class="id" title="var">form_scope</span>.<br/> - -<br/> -</div> - -<div class="doc"> - Regression for the subFinType stack -Record myb : Type := MyB {myv : bool; _ : ~~ myv}. -Canonical myb_sub := Eval hnf in [subType for myv]. -Definition myb_eqm := Eval hnf in [eqMixin of myb by <: ]. -Canonical myb_eq := Eval hnf in EqType myb myb_eqm. -Definition myb_chm := [choiceMixin of myb by <: ]. -Canonical myb_ch := Eval hnf in ChoiceType myb myb_chm. -Definition myb_cntm := [countMixin of myb by <: ]. -Canonical myb_cnt := Eval hnf in CountType myb myb_cntm. -Canonical myb_scnt := Eval hnf in [subCountType of myb]. -Definition myb_finm := [finMixin of myb by <: ]. -Canonical myb_fin := Eval hnf in FinType myb myb_finm. -Canonical myb_sfin := Eval hnf in [subFinType of myb]. -Print Canonical Projections. -Print myb_finm. -Print myb_cntm. - -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Section</span> <a name="CardSig"><span class="id" title="section">CardSig</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="CardSig.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="CardSig.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="sig_finMixin"><span class="id" title="definition">sig_finMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#fede21e6a36088be0833d2600143b39c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#fede21e6a36088be0833d2600143b39c"><span class="id" title="notation">finMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fede21e6a36088be0833d2600143b39c"><span class="id" title="notation">of</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardSig.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fede21e6a36088be0833d2600143b39c"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fede21e6a36088be0833d2600143b39c"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sig_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardSig.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sig_finMixin"><span class="id" title="definition">sig_finMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sig_subFinType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">subFinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">of</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardSig.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_sig"><span class="id" title="lemma">card_sig</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardSig.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">pred</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardSig.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#CardSig"><span class="id" title="section">CardSig</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Subtype for an explicit enumeration. -</div> -<div class="code"> -<span class="id" title="keyword">Section</span> <a name="SeqSubType"><span class="id" title="section">SeqSubType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="SeqSubType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="SeqSubType.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Record</span> <a name="seq_sub"><span class="id" title="record">seq_sub</span></a> : <span class="id" title="keyword">Type</span> := <a name="SeqSub"><span class="id" title="constructor">SeqSub</span></a> {<a name="ssval"><span class="id" title="projection">ssval</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqSubType.T"><span class="id" title="variable">T</span></a>; <a name="ssvalP"><span class="id" title="projection">ssvalP</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#in_mem"><span class="id" title="definition">in_mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ssval"><span class="id" title="method">ssval</span></a> (@<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqSubType.T"><span class="id" title="variable">T</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqSubType.s"><span class="id" title="variable">s</span></a>)}.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_sub_subType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ssval"><span class="id" title="projection">ssval</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="seq_sub_eqMixin"><span class="id" title="definition">seq_sub_eqMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub"><span class="id" title="record">seq_sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_sub_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub"><span class="id" title="record">seq_sub</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_eqMixin"><span class="id" title="definition">seq_sub_eqMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="seq_sub_enum"><span class="id" title="definition">seq_sub_enum</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub"><span class="id" title="record">seq_sub</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#undup"><span class="id" title="definition">undup</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#pmap"><span class="id" title="definition">pmap</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqSubType.s"><span class="id" title="variable">s</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_seq_sub_enum"><span class="id" title="lemma">mem_seq_sub_enum</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_enum"><span class="id" title="definition">seq_sub_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="val_seq_sub_enum"><span class="id" title="lemma">val_seq_sub_enum</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqSubType.s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_enum"><span class="id" title="definition">seq_sub_enum</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqSubType.s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="seq_sub_pickle"><span class="id" title="definition">seq_sub_pickle</span></a> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#index"><span class="id" title="definition">index</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_enum"><span class="id" title="definition">seq_sub_enum</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="seq_sub_unpickle"><span class="id" title="definition">seq_sub_unpickle</span></a> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#some"><span class="id" title="abbreviation">some</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_enum"><span class="id" title="definition">seq_sub_enum</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>.<br/> -<span class="id" title="keyword">Lemma</span> <a name="seq_sub_pickleK"><span class="id" title="lemma">seq_sub_pickleK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_pickle"><span class="id" title="definition">seq_sub_pickle</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_unpickle"><span class="id" title="definition">seq_sub_unpickle</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="seq_sub_countMixin"><span class="id" title="definition">seq_sub_countMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.CountMixin"><span class="id" title="abbreviation">CountMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_pickleK"><span class="id" title="lemma">seq_sub_pickleK</span></a>.<br/> -<span class="id" title="keyword">Fact</span> <a name="seq_sub_axiom"><span class="id" title="lemma">seq_sub_axiom</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_enum"><span class="id" title="definition">seq_sub_enum</span></a>.<br/> - <span class="id" title="keyword">Definition</span> <a name="seq_sub_finMixin"><span class="id" title="definition">seq_sub_finMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Mixin"><span class="id" title="constructor">Finite.Mixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_countMixin"><span class="id" title="definition">seq_sub_countMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_axiom"><span class="id" title="lemma">seq_sub_axiom</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Beware: these are not the canonical instances, as they are not consistent - with the generic sub_choiceType canonical instance. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="adhoc_seq_sub_choiceMixin"><span class="id" title="definition">adhoc_seq_sub_choiceMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#PcanChoiceMixin"><span class="id" title="lemma">PcanChoiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_pickleK"><span class="id" title="lemma">seq_sub_pickleK</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="adhoc_seq_sub_choiceType"><span class="id" title="definition">adhoc_seq_sub_choiceType</span></a> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.ChoiceType"><span class="id" title="abbreviation">ChoiceType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub"><span class="id" title="record">seq_sub</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#adhoc_seq_sub_choiceMixin"><span class="id" title="definition">adhoc_seq_sub_choiceMixin</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="adhoc_seq_sub_finType"><span class="id" title="definition">adhoc_seq_sub_finType</span></a> :=<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#274683adfd1c9a24b44d4dd6ea30913a"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#274683adfd1c9a24b44d4dd6ea30913a"><span class="id" title="notation">finType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#274683adfd1c9a24b44d4dd6ea30913a"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub"><span class="id" title="record">seq_sub</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#274683adfd1c9a24b44d4dd6ea30913a"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#adhoc_seq_sub_choiceType"><span class="id" title="definition">adhoc_seq_sub_choiceType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_finMixin"><span class="id" title="definition">seq_sub_finMixin</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#274683adfd1c9a24b44d4dd6ea30913a"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqSubType"><span class="id" title="section">SeqSubType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="SeqFinType"><span class="id" title="section">SeqFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="SeqFinType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.choiceType"><span class="id" title="abbreviation">choiceType</span></a>) (<a name="SeqFinType.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="seq_sub_choiceMixin"><span class="id" title="definition">seq_sub_choiceMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">choiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="abbreviation">sT</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_sub_choiceType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.ChoiceType"><span class="id" title="abbreviation">ChoiceType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="abbreviation">sT</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_choiceMixin"><span class="id" title="definition">seq_sub_choiceMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_sub_countType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.CountType"><span class="id" title="abbreviation">CountType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="abbreviation">sT</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_countMixin"><span class="id" title="definition">seq_sub_countMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqFinType.s"><span class="id" title="variable">s</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_sub_subCountType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">subCountType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="abbreviation">sT</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_sub_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="abbreviation">sT</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#seq_sub_finMixin"><span class="id" title="definition">seq_sub_finMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqFinType.s"><span class="id" title="variable">s</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_sub_subFinType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">subFinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="abbreviation">sT</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_seq_sub"><span class="id" title="lemma">card_seq_sub</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqFinType.s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#sT"><span class="id" title="abbreviation">sT</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqFinType.s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#SeqFinType"><span class="id" title="section">SeqFinType</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - -<div class="paragraph"> </div> - - Ordinal finType : {0, ... , n-1} - -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Section</span> <a name="OrdinalSub"><span class="id" title="section">OrdinalSub</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="OrdinalSub.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Inductive</span> <a name="ordinal"><span class="id" title="inductive">ordinal</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predArgType"><span class="id" title="definition">predArgType</span></a> := <a name="Ordinal"><span class="id" title="constructor">Ordinal</span></a> <span class="id" title="var">m</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalSub.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Coercion</span> <span class="id" title="var">nat_of_ord</span> <span class="id" title="var">i</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> <span class="id" title="var">m</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">m</span>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ordinal_subType</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#nat_of_ord"><span class="id" title="definition">nat_of_ord</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="ordinal_eqMixin"><span class="id" title="definition">ordinal_eqMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ordinal_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal_eqMixin"><span class="id" title="definition">ordinal_eqMixin</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="ordinal_choiceMixin"><span class="id" title="definition">ordinal_choiceMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">choiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ordinal_choiceType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.ChoiceType"><span class="id" title="abbreviation">ChoiceType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal_choiceMixin"><span class="id" title="definition">ordinal_choiceMixin</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="ordinal_countMixin"><span class="id" title="definition">ordinal_countMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">countMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ordinal_countType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.CountType"><span class="id" title="abbreviation">CountType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal_countMixin"><span class="id" title="definition">ordinal_countMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ordinal_subCountType</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">subCountType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#9bbd910cbebcec91f8279b0711b4702d"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="ltn_ord"><span class="id" title="lemma">ltn_ord</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalSub.n"><span class="id" title="variable">n</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="ord_inj"><span class="id" title="lemma">ord_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#nat_of_ord"><span class="id" title="definition">nat_of_ord</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="ord_enum"><span class="id" title="definition">ord_enum</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#pmap"><span class="id" title="definition">pmap</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> 0 <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalSub.n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="val_ord_enum"><span class="id" title="lemma">val_ord_enum</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord_enum"><span class="id" title="definition">ord_enum</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> 0 <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalSub.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="ord_enum_uniq"><span class="id" title="lemma">ord_enum_uniq</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord_enum"><span class="id" title="definition">ord_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_ord_enum"><span class="id" title="lemma">mem_ord_enum</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord_enum"><span class="id" title="definition">ord_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="ordinal_finMixin"><span class="id" title="definition">ordinal_finMixin</span></a> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#UniqFinMixin"><span class="id" title="abbreviation">UniqFinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord_enum_uniq"><span class="id" title="lemma">ord_enum_uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mem_ord_enum"><span class="id" title="lemma">mem_ord_enum</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ordinal_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal_finMixin"><span class="id" title="definition">ordinal_finMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ordinal_subFinType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">subFinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ea70e506e168d39ce0ec3d3ecd2c349f"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalSub"><span class="id" title="section">OrdinalSub</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">"</span></a>''I_' n" := (<a class="idref" href="mathcomp.ssreflect.fintype.html#ordinal"><span class="id" title="inductive">ordinal</span></a> <span class="id" title="var">n</span>)<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "''I_' n").<br/> - -<br/> -<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">ltn_ord</span> : <span class="id" title="var">core</span>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="OrdinalEnum"><span class="id" title="section">OrdinalEnum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="OrdinalEnum.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="val_enum_ord"><span class="id" title="lemma">val_enum_ord</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> 0 <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalEnum.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_enum_ord"><span class="id" title="lemma">size_enum_ord</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalEnum.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_ord"><span class="id" title="lemma">card_ord</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalEnum.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nth_enum_ord"><span class="id" title="lemma">nth_enum_ord</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">m</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalEnum.n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i0"><span class="id" title="variable">i0</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nth_ord_enum"><span class="id" title="lemma">nth_ord_enum</span></a> (<span class="id" title="var">i0</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i0"><span class="id" title="variable">i0</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="index_enum_ord"><span class="id" title="lemma">index_enum_ord</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#index"><span class="id" title="definition">index</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalEnum"><span class="id" title="section">OrdinalEnum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="widen_ord_proof"><span class="id" title="lemma">widen_ord_proof</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a>.<br/> - <span class="id" title="keyword">Definition</span> <a name="widen_ord"><span class="id" title="definition">widen_ord</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> <span class="id" title="var">le_n_m</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#widen_ord_proof"><span class="id" title="lemma">widen_ord_proof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#le_n_m"><span class="id" title="variable">le_n_m</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cast_ord_proof"><span class="id" title="lemma">cast_ord_proof</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a>.<br/> - <span class="id" title="keyword">Definition</span> <a name="cast_ord"><span class="id" title="definition">cast_ord</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> <span class="id" title="var">eq_n_m</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord_proof"><span class="id" title="lemma">cast_ord_proof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n_m"><span class="id" title="variable">eq_n_m</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cast_ord_id"><span class="id" title="lemma">cast_ord_id</span></a> <span class="id" title="var">n</span> <span class="id" title="var">eq_n</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n"><span class="id" title="variable">eq_n</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cast_ord_comp"><span class="id" title="lemma">cast_ord_comp</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">n3</span> <span class="id" title="var">eq_n2</span> <span class="id" title="var">eq_n3</span> <span class="id" title="var">i</span> :<br/> - @<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n3"><span class="id" title="variable">n3</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n3"><span class="id" title="variable">eq_n3</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n2"><span class="id" title="variable">eq_n2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a><br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#etrans"><span class="id" title="definition">etrans</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n2"><span class="id" title="variable">eq_n2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n3"><span class="id" title="variable">eq_n3</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cast_ordK"><span class="id" title="lemma">cast_ordK</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">eq_n</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n"><span class="id" title="variable">eq_n</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n"><span class="id" title="variable">eq_n</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cast_ordKV"><span class="id" title="lemma">cast_ordKV</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">eq_n</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n"><span class="id" title="variable">eq_n</span></a>)) (@<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n"><span class="id" title="variable">eq_n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cast_ord_inj"><span class="id" title="lemma">cast_ord_inj</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">eq_n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eq_n"><span class="id" title="variable">eq_n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rev_ord_proof"><span class="id" title="lemma">rev_ord_proof</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>.<br/> - <span class="id" title="keyword">Definition</span> <a name="rev_ord"><span class="id" title="definition">rev_ord</span></a> <span class="id" title="var">n</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#rev_ord_proof"><span class="id" title="lemma">rev_ord_proof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rev_ordK"><span class="id" title="lemma">rev_ordK</span></a> {<span class="id" title="var">n</span>} : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#rev_ord"><span class="id" title="definition">rev_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rev_ord_inj"><span class="id" title="lemma">rev_ord_inj</span></a> {<span class="id" title="var">n</span>} : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#rev_ord"><span class="id" title="definition">rev_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -</div> - -<div class="doc"> - bijection between any finType T and the Ordinal finType of its cardinal -</div> -<div class="code"> -<span class="id" title="keyword">Section</span> <a name="EnumRank"><span class="id" title="section">EnumRank</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="EnumRank.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_rank_subproof"><span class="id" title="lemma">enum_rank_subproof</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> 0 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="enum_rank_in"><span class="id" title="definition">enum_rank_in</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">A</span> (<span class="id" title="var">Ax0</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <span class="id" title="var">x</span> :=<br/> - <a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank_subproof"><span class="id" title="lemma">enum_rank_subproof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Ax0"><span class="id" title="variable">Ax0</span></a>)) (<a class="idref" href="mathcomp.ssreflect.seq.html#index"><span class="id" title="definition">index</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="enum_rank"><span class="id" title="definition">enum_rank</span></a> <span class="id" title="var">x</span> := @<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank_in"><span class="id" title="definition">enum_rank_in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_default"><span class="id" title="lemma">enum_default</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="enum_val"><span class="id" title="definition">enum_val</span></a> <span class="id" title="var">A</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_default"><span class="id" title="lemma">enum_default</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_valP"><span class="id" title="lemma">enum_valP</span></a> <span class="id" title="var">A</span> <span class="id" title="var">i</span> : @<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_val_nth"><span class="id" title="lemma">enum_val_nth</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> <span class="id" title="var">i</span> : @<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nth_image"><span class="id" title="lemma">nth_image</span></a> <span class="id" title="var">T'</span> <span class="id" title="var">y0</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T'"><span class="id" title="variable">T'</span></a>) <span class="id" title="var">A</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>) :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y0"><span class="id" title="variable">y0</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#image"><span class="id" title="abbreviation">image</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nth_codom"><span class="id" title="lemma">nth_codom</span></a> <span class="id" title="var">T'</span> <span class="id" title="var">y0</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#T'"><span class="id" title="variable">T'</span></a>) (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>) :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#y0"><span class="id" title="variable">y0</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nth_enum_rank_in"><span class="id" title="lemma">nth_enum_rank_in</span></a> <span class="id" title="var">x00</span> <span class="id" title="var">x0</span> <span class="id" title="var">A</span> <span class="id" title="var">Ax0</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank_in"><span class="id" title="definition">enum_rank_in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Ax0"><span class="id" title="variable">Ax0</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x00"><span class="id" title="variable">x00</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>))<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nth_enum_rank"><span class="id" title="lemma">nth_enum_rank</span></a> <span class="id" title="var">x0</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank"><span class="id" title="definition">enum_rank</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_rankK_in"><span class="id" title="lemma">enum_rankK_in</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">A</span> <span class="id" title="var">Ax0</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank_in"><span class="id" title="definition">enum_rank_in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Ax0"><span class="id" title="variable">Ax0</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_rankK"><span class="id" title="lemma">enum_rankK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank"><span class="id" title="definition">enum_rank</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_valK_in"><span class="id" title="lemma">enum_valK_in</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">A</span> <span class="id" title="var">Ax0</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank_in"><span class="id" title="definition">enum_rank_in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Ax0"><span class="id" title="variable">Ax0</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_valK"><span class="id" title="lemma">enum_valK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank"><span class="id" title="definition">enum_rank</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_rank_inj"><span class="id" title="lemma">enum_rank_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank"><span class="id" title="definition">enum_rank</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_val_inj"><span class="id" title="lemma">enum_val_inj</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_val_bij_in"><span class="id" title="lemma">enum_val_bij_in</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">on</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">bijective</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#7a12faf7e5f15d58335f3e4b34342ab7"><span class="id" title="notation">)}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_rank_bij"><span class="id" title="lemma">enum_rank_bij</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank"><span class="id" title="definition">enum_rank</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_val_bij"><span class="id" title="lemma">enum_val_bij</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a>).<br/> - -<br/> -</div> - -<div class="doc"> - Due to the limitations of the Coq unification patterns, P can only be - inferred from the premise of this lemma, not its conclusion. As a result - this lemma will only be usable in forward chaining style. -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="fin_all_exists"><span class="id" title="lemma">fin_all_exists</span></a> <span class="id" title="var">U</span> (<span class="id" title="var">P</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="mathcomp.ssreflect.fintype.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Prop</span>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="fin_all_exists2"><span class="id" title="lemma">fin_all_exists2</span></a> <span class="id" title="var">U</span> (<span class="id" title="var">P</span> <span class="id" title="var">Q</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="mathcomp.ssreflect.fintype.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Prop</span>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#Q"><span class="id" title="variable">Q</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.fintype.html#Q"><span class="id" title="variable">Q</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#EnumRank"><span class="id" title="section">EnumRank</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_rank_ord"><span class="id" title="lemma">enum_rank_ord</span></a> <span class="id" title="var">n</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank"><span class="id" title="definition">enum_rank</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#card_ord"><span class="id" title="lemma">card_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>)) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_val_ord"><span class="id" title="lemma">enum_val_ord</span></a> <span class="id" title="var">n</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#card_ord"><span class="id" title="lemma">card_ord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - The integer bump / unbump operations. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="bump"><span class="id" title="definition">bump</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="unbump"><span class="id" title="definition">unbump</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="bumpK"><span class="id" title="lemma">bumpK</span></a> <span class="id" title="var">h</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="neq_bump"><span class="id" title="lemma">neq_bump</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unbumpKcond"><span class="id" title="lemma">unbumpKcond</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unbumpK"><span class="id" title="lemma">unbumpK</span></a> {<span class="id" title="var">h</span>} : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#predC1"><span class="id" title="definition">predC1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="bump_addl"><span class="id" title="lemma">bump_addl</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="bumpS"><span class="id" title="lemma">bumpS</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">).+1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unbump_addl"><span class="id" title="lemma">unbump_addl</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unbumpS"><span class="id" title="lemma">unbumpS</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">).+1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="leq_bump"><span class="id" title="lemma">leq_bump</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="leq_bump2"><span class="id" title="lemma">leq_bump2</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="bumpC"><span class="id" title="lemma">bumpC</span></a> <span class="id" title="var">h1</span> <span class="id" title="var">h2</span> <span class="id" title="var">i</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h1"><span class="id" title="variable">h1</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h2"><span class="id" title="variable">h2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h1"><span class="id" title="variable">h1</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h2"><span class="id" title="variable">h2</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h2"><span class="id" title="variable">h2</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h1"><span class="id" title="variable">h1</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -</div> - -<div class="doc"> - The lift operations on ordinals; to avoid a messy dependent type, - unlift is a partial operation (returns an option). -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lift_subproof"><span class="id" title="lemma">lift_subproof</span></a> <span class="id" title="var">n</span> <span class="id" title="var">h</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#bump"><span class="id" title="definition">bump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="lift"><span class="id" title="definition">lift</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a>) := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lift_subproof"><span class="id" title="lemma">lift_subproof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unlift_subproof"><span class="id" title="lemma">unlift_subproof</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) (<span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">j</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#unbump"><span class="id" title="definition">unbump</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="unlift"><span class="id" title="definition">unlift</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#omap"><span class="id" title="abbreviation">omap</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">j</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#unlift_subproof"><span class="id" title="lemma">unlift_subproof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a>)) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Variant</span> <a name="unlift_spec"><span class="id" title="inductive">unlift_spec</span></a> <span class="id" title="var">n</span> <span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> - | <a name="UnliftSome"><span class="id" title="constructor">UnliftSome</span></a> <span class="id" title="var">j</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#unlift_spec"><span class="id" title="inductive">unlift_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a>)<br/> - | <a name="UnliftNone"><span class="id" title="constructor">UnliftNone</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#unlift_spec"><span class="id" title="inductive">unlift_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unliftP"><span class="id" title="lemma">unliftP</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#unlift_spec"><span class="id" title="inductive">unlift_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#unlift"><span class="id" title="definition">unlift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="neq_lift"><span class="id" title="lemma">neq_lift</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unlift_none"><span class="id" title="lemma">unlift_none</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#unlift"><span class="id" title="definition">unlift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unlift_some"><span class="id" title="lemma">unlift_some</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">{</span></a><span class="id" title="var">j</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#unlift"><span class="id" title="definition">unlift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lift_inj"><span class="id" title="lemma">lift_inj</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="liftK"><span class="id" title="lemma">liftK</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#unlift"><span class="id" title="definition">unlift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#h"><span class="id" title="variable">h</span></a>).<br/> - -<br/> -</div> - -<div class="doc"> - Shifting and splitting indices, for cutting and pasting arrays -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lshift_subproof"><span class="id" title="lemma">lshift_subproof</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_m</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rshift_subproof"><span class="id" title="lemma">rshift_subproof</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="lshift"><span class="id" title="definition">lshift</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_m</span></a>) := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift_subproof"><span class="id" title="lemma">lshift_subproof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="rshift"><span class="id" title="definition">rshift</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift_subproof"><span class="id" title="lemma">rshift_subproof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="split_subproof"><span class="id" title="lemma">split_subproof</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#73030c22bc0b1fa771c65aa5414c65f9"><span class="id" title="notation">≥</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="split"><span class="id" title="definition">split</span></a> {<span class="id" title="var">m</span> <span class="id" title="var">n</span>} (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a> :=<br/> - <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ltnP"><span class="id" title="lemma">ltnP</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span><br/> - | <a class="idref" href="mathcomp.ssreflect.ssrnat.html#LtnNotGeq"><span class="id" title="constructor">LtnNotGeq</span></a> <span class="id" title="var">lt_i_m</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">_</span> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> <span class="id" title="var">lt_i_m</span>)<br/> - | <a class="idref" href="mathcomp.ssreflect.ssrnat.html#GeqNotLtn"><span class="id" title="constructor">GeqNotLtn</span></a> <span class="id" title="var">ge_i_m</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">_</span> (<a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#split_subproof"><span class="id" title="lemma">split_subproof</span></a> <span class="id" title="var">ge_i_m</span>))<br/> - <span class="id" title="keyword">end</span>.<br/> - -<br/> -<span class="id" title="keyword">Variant</span> <a name="split_spec"><span class="id" title="inductive">split_spec</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> - | <a name="SplitLo"><span class="id" title="constructor">SplitLo</span></a> (<span class="id" title="var">j</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_m</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#split_spec"><span class="id" title="inductive">split_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#j"><span class="id" title="variable">j</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/> - | <a name="SplitHi"><span class="id" title="constructor">SplitHi</span></a> (<span class="id" title="var">k</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#split_spec"><span class="id" title="inductive">split_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#k"><span class="id" title="variable">k</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="splitP"><span class="id" title="lemma">splitP</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#split_spec"><span class="id" title="inductive">split_spec</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="unsplit"><span class="id" title="definition">unsplit</span></a> {<span class="id" title="var">m</span> <span class="id" title="var">n</span>} (<span class="id" title="var">jk</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) :=<br/> - <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#jk"><span class="id" title="variable">jk</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">j</span> ⇒ <a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="var">j</span> | <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">k</span> ⇒ <a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="var">k</span> <span class="id" title="keyword">end</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="ltn_unsplit"><span class="id" title="lemma">ltn_unsplit</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">jk</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#unsplit"><span class="id" title="definition">unsplit</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#jk"><span class="id" title="variable">jk</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#jk"><span class="id" title="variable">jk</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="splitK"><span class="id" title="lemma">splitK</span></a> {<span class="id" title="var">m</span> <span class="id" title="var">n</span>} : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#unsplit"><span class="id" title="definition">unsplit</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unsplitK"><span class="id" title="lemma">unsplitK</span></a> {<span class="id" title="var">m</span> <span class="id" title="var">n</span>} : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.fintype.html#unsplit"><span class="id" title="definition">unsplit</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="OrdinalPos"><span class="id" title="section">OrdinalPos</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="OrdinalPos.n'"><span class="id" title="variable">n'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="ord0"><span class="id" title="definition">ord0</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#ltn0Sn"><span class="id" title="lemma">ltn0Sn</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalPos.n'"><span class="id" title="variable">n'</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="ord_max"><span class="id" title="definition">ord_max</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#ltnSn"><span class="id" title="lemma">ltnSn</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalPos.n'"><span class="id" title="variable">n'</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="leq_ord"><span class="id" title="lemma">leq_ord</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalPos.n'"><span class="id" title="variable">n'</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="sub_ord_proof"><span class="id" title="lemma">sub_ord_proof</span></a> <span class="id" title="var">m</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalPos.n'"><span class="id" title="variable">n'</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="abbreviation">n</span></a>.<br/> - <span class="id" title="keyword">Definition</span> <a name="sub_ord"><span class="id" title="definition">sub_ord</span></a> <span class="id" title="var">m</span> := <a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#sub_ord_proof"><span class="id" title="lemma">sub_ord_proof</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="sub_ordK"><span class="id" title="lemma">sub_ordK</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalPos.n'"><span class="id" title="variable">n'</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalPos.n'"><span class="id" title="variable">n'</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="inord"><span class="id" title="definition">inord</span></a> <span class="id" title="var">m</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord0"><span class="id" title="definition">ord0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="inordK"><span class="id" title="lemma">inordK</span></a> <span class="id" title="var">m</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#inord"><span class="id" title="definition">inord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="inord_val"><span class="id" title="lemma">inord_val</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#inord"><span class="id" title="definition">inord</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="enum_ordS"><span class="id" title="lemma">enum_ordS</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord0"><span class="id" title="definition">ord0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord0"><span class="id" title="definition">ord0</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n'</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lift_max"><span class="id" title="lemma">lift_max</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n'</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord_max"><span class="id" title="definition">ord_max</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lift0"><span class="id" title="lemma">lift0</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n'</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ord0"><span class="id" title="definition">ord0</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>. <br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#OrdinalPos"><span class="id" title="section">OrdinalPos</span></a>.<br/> - -<br/> - -<br/> -</div> - -<div class="doc"> - Product of two fintypes which is a fintype -</div> -<div class="code"> -<span class="id" title="keyword">Section</span> <a name="ProdFinType"><span class="id" title="section">ProdFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="ProdFinType.T1"><span class="id" title="variable">T1</span></a> <a name="ProdFinType.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="prod_enum"><span class="id" title="definition">prod_enum</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#623af7e6d063f6c25f88725170ed3a4c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#623af7e6d063f6c25f88725170ed3a4c"><span class="id" title="notation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#x1"><span class="id" title="variable">x1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#623af7e6d063f6c25f88725170ed3a4c"><span class="id" title="notation">|</span></a> <span class="id" title="var">x1</span> <a class="idref" href="mathcomp.ssreflect.seq.html#623af7e6d063f6c25f88725170ed3a4c"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#623af7e6d063f6c25f88725170ed3a4c"><span class="id" title="notation">,</span></a> <span class="id" title="var">x2</span> <a class="idref" href="mathcomp.ssreflect.seq.html#623af7e6d063f6c25f88725170ed3a4c"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#623af7e6d063f6c25f88725170ed3a4c"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="predX_prod_enum"><span class="id" title="lemma">predX_prod_enum</span></a> (<span class="id" title="var">A1</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<span class="id" title="var">A2</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">predX</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#prod_enum"><span class="id" title="definition">prod_enum</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A1"><span class="id" title="variable">A1</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prod_enumP"><span class="id" title="lemma">prod_enumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#prod_enum"><span class="id" title="definition">prod_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="prod_finMixin"><span class="id" title="definition">prod_finMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinMixin"><span class="id" title="abbreviation">FinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#prod_enumP"><span class="id" title="lemma">prod_enumP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">prod_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#prod_finMixin"><span class="id" title="definition">prod_finMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cardX"><span class="id" title="lemma">cardX</span></a> (<span class="id" title="var">A1</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<span class="id" title="var">A2</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">predX</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A1"><span class="id" title="variable">A1</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_prod"><span class="id" title="lemma">card_prod</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_card_prod"><span class="id" title="lemma">eq_card_prod</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">)}</span></a>) : <a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T1"><span class="id" title="variable">T1</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#ProdFinType"><span class="id" title="section">ProdFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="TagFinType"><span class="id" title="section">TagFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="TagFinType.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="TagFinType.T_"><span class="id" title="variable">T_</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="tag_enum"><span class="id" title="definition">tag_enum</span></a> :=<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#flatten"><span class="id" title="definition">flatten</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#Tagged"><span class="id" title="definition">Tagged</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enumF"><span class="id" title="abbreviation">enumF</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a>)<a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enumF"><span class="id" title="abbreviation">enumF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.I"><span class="id" title="variable">I</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="tag_enumP"><span class="id" title="lemma">tag_enumP</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#axiom"><span class="id" title="definition">Finite.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#tag_enum"><span class="id" title="definition">tag_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="tag_finMixin"><span class="id" title="definition">tag_finMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinMixin"><span class="id" title="abbreviation">FinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#tag_enumP"><span class="id" title="lemma">tag_enumP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">tag_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#tag_finMixin"><span class="id" title="definition">tag_finMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_tagged"><span class="id" title="lemma">card_tagged</span></a> :<br/> - <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sumn"><span class="id" title="definition">sumn</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum"><span class="id" title="abbreviation">enum</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType.I"><span class="id" title="variable">I</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#TagFinType"><span class="id" title="section">TagFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="SumFinType"><span class="id" title="section">SumFinType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> <a name="SumFinType.T1"><span class="id" title="variable">T1</span></a> <a name="SumFinType.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#finType"><span class="id" title="abbreviation">finType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="sum_enum"><span class="id" title="definition">sum_enum</span></a> :=<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enumF"><span class="id" title="abbreviation">enumF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T1"><span class="id" title="variable">T1</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#93e0a78b945d3f9f22195c004c67aa36"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">|</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#enumF"><span class="id" title="abbreviation">enumF</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="sum_enum_uniq"><span class="id" title="lemma">sum_enum_uniq</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sum_enum"><span class="id" title="definition">sum_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_sum_enum"><span class="id" title="lemma">mem_sum_enum</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sum_enum"><span class="id" title="definition">sum_enum</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="sum_finMixin"><span class="id" title="definition">sum_finMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#UniqFinMixin"><span class="id" title="abbreviation">UniqFinMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#sum_enum_uniq"><span class="id" title="lemma">sum_enum_uniq</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#mem_sum_enum"><span class="id" title="lemma">mem_sum_enum</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sum_finType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#FinType"><span class="id" title="abbreviation">FinType</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T2"><span class="id" title="variable">T2</span></a>) <a class="idref" href="mathcomp.ssreflect.fintype.html#sum_finMixin"><span class="id" title="definition">sum_finMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="card_sum"><span class="id" title="lemma">card_sum</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">{:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#fa3b33ae9d0a52de608b305a09f3b881"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T1"><span class="id" title="variable">T1</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType.T2"><span class="id" title="variable">T2</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#SumFinType"><span class="id" title="section">SumFinType</span></a>.<br/> -</div> -</div> - -<div id="footer"> -<hr/><a href="index.html">Index</a><hr/>This page has been generated by <a href="http://coq.inria.fr/">coqdoc</a> -</div> - -</div> - -</body> -</html>
\ No newline at end of file |
