aboutsummaryrefslogtreecommitdiff
path: root/docs/htmldoc/mathcomp.ssreflect.seq.html
diff options
context:
space:
mode:
authorEnrico Tassi2018-04-20 10:54:22 +0200
committerEnrico Tassi2018-04-20 10:54:22 +0200
commited05182cece6bb3706e09b2ce14af4a41a2e8141 (patch)
treee850d7314b6372d0476cf2ffaf7d3830721db7b1 /docs/htmldoc/mathcomp.ssreflect.seq.html
parent3d196f44681fb3b23ff8a79fbd44e12308680531 (diff)
generate the documentation for 1.7
Diffstat (limited to 'docs/htmldoc/mathcomp.ssreflect.seq.html')
-rw-r--r--docs/htmldoc/mathcomp.ssreflect.seq.html2577
1 files changed, 2577 insertions, 0 deletions
diff --git a/docs/htmldoc/mathcomp.ssreflect.seq.html b/docs/htmldoc/mathcomp.ssreflect.seq.html
new file mode 100644
index 0000000..8f7211f
--- /dev/null
+++ b/docs/htmldoc/mathcomp.ssreflect.seq.html
@@ -0,0 +1,2577 @@
+<!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.seq</title>
+</head>
+
+<body>
+
+<div id="page">
+
+<div id="header">
+</div>
+
+<div id="main">
+
+<h1 class="libtitle">Library mathcomp.ssreflect.seq</h1>
+
+<div class="code">
+<span class="comment">(*&nbsp;(c)&nbsp;Copyright&nbsp;2006-2016&nbsp;Microsoft&nbsp;Corporation&nbsp;and&nbsp;Inria.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>
+&nbsp;Distributed&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;CeCILL-B.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</span><br/>
+<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="mathcomp.ssreflect.ssreflect.html#"><span class="id" title="library">mathcomp.ssreflect.ssreflect</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ The seq type is the ssreflect type for sequences; it is an alias for the
+ standard Coq list type. The ssreflect library equips it with many
+ operations, as well as eqType and predType (and, later, choiceType)
+ structures. The operations are geared towards reflection: they generally
+ expect and provide boolean predicates, e.g., the membership predicate
+ expects an eqType. To avoid any confusion we do not Import the Coq List
+ module.
+ As there is no true subtyping in Coq, we don't use a type for non-empty
+ sequences; rather, we pass explicitly the head and tail of the sequence.
+ The empty sequence is especially bothersome for subscripting, since it
+ forces us to pass a default value. This default value can often be hidden
+ by a notation.
+ Here is the list of seq operations:
+<a name="lab35"></a><h2 class="section">Constructors:</h2>
+
+ seq T == the type of sequences of items of type T.
+ bitseq == seq bool.
+ [:: ], nil, Nil T == the empty sequence (of type T).
+ x :: s, cons x s, Cons T x s == the sequence x followed by s (of type T).
+ [:: x] == the singleton sequence.
+ [:: x_0; ...; x_n] == the explicit sequence of the x_i.
+ [:: x_0, ..., x_n &amp; s] == the sequence of the x_i, followed by s.
+ rcons s x == the sequence s, followed by x.
+ All of the above, except rcons, can be used in patterns. We define a view
+ lastP and an induction principle last_ind that can be used to decompose
+ or traverse a sequence in a right to left order. The view lemma lastP has
+ a dependent family type, so the ssreflect tactic case/lastP: p =&gt; [|p' x]
+ will generate two subgoals in which p has been replaced by [:: ] and by
+ rcons p' x, respectively.
+<a name="lab36"></a><h2 class="section">Factories:</h2>
+
+ nseq n x == a sequence of n x's.
+ ncons n x s == a sequence of n x's, followed by s.
+ seqn n x_0 ... x_n-1 == the sequence of the x_i; can be partially applied.
+ iota m n == the sequence m, m + 1, ..., m + n - 1.
+ mkseq f n == the sequence f 0, f 1, ..., f (n - 1).
+<a name="lab37"></a><h2 class="section">Sequential access:</h2>
+
+ head x0 s == the head (zero'th item) of s if s is non-empty, else x0.
+ ohead s == None if s is empty, else Some x when the head of s is x.
+ behead s == s minus its head, i.e., s' if s = x :: s', else [:: ].
+ last x s == the last element of x :: s (which is non-empty).
+ belast x s == x :: s minus its last item.
+<a name="lab38"></a><h2 class="section">Dimensions:</h2>
+
+ size s == the number of items (length) in s.
+ shape ss == the sequence of sizes of the items of the sequence of
+ sequences ss.
+<a name="lab39"></a><h2 class="section">Random access:</h2>
+
+ nth x0 s i == the item i of s (numbered from 0), or x0 if s does
+ not have at least i+1 items (i.e., size x &lt;= i)
+ s`<i>i == standard notation for nth x0 s i for a default x0,
+ e.g., 0 for rings.
+ set_nth x0 s i y == s where item i has been changed to y; if s does not
+ have an item i, it is first padded with copies of x0
+ to size i+1.
+ incr_nth s i == the nat sequence s with item i incremented (s is
+ first padded with 0's to size i+1, if needed).
+<a name="lab40"></a><h2 class="section">Predicates:</h2>
+
+ nilp s == s is [:: ].
+ := (size s == 0).
+ x \in s == x appears in s (this requires an eqType for T).
+ index x s == the first index at which x appears in s, or size s if
+ x \notin s.
+ has p s == the (applicative, boolean) predicate p holds for some
+ item in s.
+ all p s == p holds for all items in s.
+ find p s == the index of the first item in s for which p holds,
+ or size s if no such item is found.
+ count p s == the number of items of s for which p holds.
+ count_mem x s == the number of times x occurs in s := count (pred1 x) s.
+ constant s == all items in s are identical (trivial if s = [:: ])
+ uniq s == all the items in s are pairwise different.
+ subseq s1 s2 == s1 is a subsequence of s2, i.e., s1 = mask m s2 for
+ some m : bitseq (see below).
+ perm_eq s1 s2 == s2 is a permutation of s1, i.e., s1 and s2 have the
+ items (with the same repetitions), but possibly in a
+ different order.
+ perm_eql s1 s2 &lt;-&gt; s1 and s2 behave identically on the left of perm_eq.
+ perm_eqr s1 s2 &lt;-&gt; s1 and s2 behave identically on the right of perm_eq.
+ These left/right transitive versions of perm_eq make it easier to chain
+ a sequence of equivalences.
+<a name="lab41"></a><h2 class="section">Filtering:</h2>
+
+ filter p s == the subsequence of s consisting of all the items
+ for which the (boolean) predicate p holds.
+ rem x s == the subsequence of s, where the first occurrence
+ of x has been removed (compare filter (predC1 x) s
+ where ALL occurrences of x are removed).
+ undup s == the subsequence of s containing only the first
+ occurrence of each item in s, i.e., s with all
+ duplicates removed.
+ mask m s == the subsequence of s selected by m : bitseq, with
+ item i of s selected by bit i in m (extra items or
+ bits are ignored.
+<a name="lab42"></a><h2 class="section">Surgery:</h2>
+
+ s1 ++ s2, cat s1 s2 == the concatenation of s1 and s2.
+ take n s == the sequence containing only the first n items of s
+ (or all of s if size s &lt;= n).
+ drop n s == s minus its first n items ( [:: ] if size s &lt;= n)
+ rot n s == s rotated left n times (or s if size s &lt;= n).
+ := drop n s ++ take n s
+ rotr n s == s rotated right n times (or s if size s &lt;= n).
+ rev s == the (linear time) reversal of s.
+ catrev s1 s2 == the reversal of s1 followed by s2 (this is the
+ recursive form of rev).
+<a name="lab43"></a><h2 class="section">Iterators: for s == [:: x_1, ..., x_n], t == [:: y_1, ..., y_m],</h2>
+
+ map f s == the sequence [:: f x_1, ..., f x_n].
+ allpairs f s t == the sequence of all the f x y, with x and y drawn from
+ s and t, respectively, in row-major order.
+ := [:: f x_1 y_1; ...; f x_1 y_m; f x_2 y_1; ...; f x_n y_m]
+ pmap pf s == the sequence [:: y_i1, ..., y_ik] where i1 &lt; ... &lt; ik,
+ pf x_i = Some y_i, and pf x_j = None iff j is not in
+ {i1, ..., ik}.
+ foldr f a s == the right fold of s by f (i.e., the natural iterator).
+ := f x_1 (f x_2 ... (f x_n a))
+ sumn s == x_1 + (x_2 + ... + (x_n + 0)) (when s : seq nat).
+ foldl f a s == the left fold of s by f.
+ := f (f ... (f a x_1) ... x_n-1) x_n
+ scanl f a s == the sequence of partial accumulators of foldl f a s.
+ := [:: f a x_1; ...; foldl f a s]
+ pairmap f a s == the sequence of f applied to consecutive items in a :: s.
+ := [:: f a x_1; f x_1 x_2; ...; f x_n-1 x_n]
+ zip s t == itemwise pairing of s and t (dropping any extra items).
+ := [:: (x_1, y_1); ...; (x_mn, y_mn) ] with mn = minn n m.
+ unzip1 s == [:: (x_1).1; ...; (x_n).1] when s : seq (S * T).
+ unzip2 s == [:: (x_1).2; ...; (x_n).2] when s : seq (S * T).
+ flatten s == x_1 ++ ... ++ x_n ++ [:: ] when s : seq (seq T).
+ reshape r s == s reshaped into a sequence of sequences whose sizes are
+ given by r (truncating if s is too long or too short).
+ := [:: [:: x_1; ...; x_r1];
+ [:: x</i>(r1 + 1); ...; x(r0 + r1) ];
+ ...;
+ [:: x(r1 + ... + r(k-1) + 1); ...; x(r0 + ... rk) ]#]
+ flatten_index sh r c == the index, in flatten ss, of the item of indexes
+ (r, c) in any sequence of sequences ss of shape sh
+ := sh_1 + sh_2 + ... + sh_r + c
+ reshape_index sh i == the index, in reshape sh s, of the sequence
+ containing the i-th item of s.
+ reshape_offset sh i == the offset, in the (reshape_index sh i)-th
+ sequence of reshape sh s of the i-th item of s
+<a name="lab44"></a><h2 class="section">Notation for manifest comprehensions:</h2>
+
+ [seq x &lt;- s | C] := filter (fun x =&gt; C) s.
+ [seq E | x &lt;- s] := map (fun x =&gt; E) s.
+ [seq E | x &lt;- s, y &lt;- t] := allpairs (fun x y =&gt; E) s t.
+ [seq x &lt;- s | C1 &amp; C2] := [seq x &lt;- s | C1 &amp;&amp; C2].
+ [seq E | x &lt;- s &amp; C] := [seq E | x &lt;- [seq x | C] ].
+&gt; The above allow optional type casts on the eigenvariables, as in
+ [seq x : T &lt;- s | C] or [seq E | x : T &lt;- s, y : U &lt;- t]. The cast may be
+ needed as type inference considers E or C before s.
+ We are quite systematic in providing lemmas to rewrite any composition
+ of two operations. "rev", whose simplifications are not natural, is
+ protected with nosimpl.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Set Implicit Arguments</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">seq_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">SEQ</span>.<br/>
+<span class="id" title="keyword">Open</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Inductive seq (T : Type) : Type := Nil | Cons of T &amp; seq T.
+</div>
+<div class="code">
+<span class="id" title="keyword">Notation</span> <a name="seq"><span class="id" title="abbreviation">seq</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#list"><span class="id" title="inductive">list</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="Cons"><span class="id" title="abbreviation">Cons</span></a> <span class="id" title="var">T</span> := (@<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#cons"><span class="id" title="constructor">cons</span></a> <span class="id" title="var">T</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="Nil"><span class="id" title="abbreviation">Nil</span></a> <span class="id" title="var">T</span> := (@<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nil"><span class="id" title="constructor">nil</span></a> <span class="id" title="var">T</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/>
+
+<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ As :: and ++ are (improperly) declared in Init.datatypes, we only rebind
+ them here.
+</div>
+<div class="code">
+<span class="id" title="keyword">Infix</span> <a name="d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">&quot;</span></a>::" := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#cons"><span class="id" title="constructor">cons</span></a> : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ GG - this triggers a camlp4 warning, as if this Notation had been Reserved
+</div>
+<div class="code">
+<span class="id" title="keyword">Notation</span> <a name="747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">&quot;</span></a>[ :: ]" := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nil"><span class="id" title="constructor">nil</span></a> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ :: ]") : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">&quot;</span></a>[ :: x1 ]" := (<span class="id" title="var">x1</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ :: x1 ]") : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="b45cd7bb39a665f1b02881a9baea9e9d"><span class="id" title="notation">&quot;</span></a>[ :: x &amp; s ]" := (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <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">Notation</span> <a name="fcbb95c5c5fd941c49e06d09a4f5a316"><span class="id" title="notation">&quot;</span></a>[ :: x1 , x2 , .. , xn &amp; s ]" := (<span class="id" title="var">x1</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">x2</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> .. (<span class="id" title="var">xn</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s</span>) ..)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span><br/>
+&nbsp;&nbsp;"'[hv' [ :: '[' x1 , '/' x2 , '/' .. , '/' xn ']' '/ ' &amp; s ] ']'"<br/>
+&nbsp;&nbsp;) : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">&quot;</span></a>[ :: x1 ; x2 ; .. ; xn ]" := (<span class="id" title="var">x1</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">x2</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> .. <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <span class="id" title="var">xn</span><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> ..)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ :: '[' x1 ; '/' x2 ; '/' .. ; '/' xn ']' ]"<br/>
+&nbsp;&nbsp;) : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Sequences"><span class="id" title="section">Sequences</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="Sequences.n0"><span class="id" title="variable">n0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>. <span class="comment">(*&nbsp;numerical&nbsp;parameter&nbsp;for&nbsp;take,&nbsp;drop&nbsp;et&nbsp;al&nbsp;*)</span><br/>
+<span class="id" title="keyword">Variable</span> <a name="Sequences.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>. <span class="comment">(*&nbsp;must&nbsp;come&nbsp;before&nbsp;the&nbsp;implicit&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</span><br/>
+<span class="id" title="keyword">Variable</span> <a name="Sequences.x0"><span class="id" title="variable">x0</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.T"><span class="id" title="variable">T</span></a>. <span class="comment">(*&nbsp;default&nbsp;for&nbsp;head/nth&nbsp;*)</span><br/>
+
+<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.seq.html#Sequences.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="size"><span class="id" title="definition">size</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <span class="id" title="var">s'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">).+1</span></a> <span class="id" title="keyword">else</span> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size0nil"><span class="id" title="lemma">size0nil</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="nilp"><span class="id" title="definition">nilp</span></a> <span class="id" title="var">s</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nilP"><span class="id" title="lemma">nilP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#nilp"><span class="id" title="definition">nilp</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ohead"><span class="id" title="definition">ohead</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">_</span> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.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">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="head"><span class="id" title="definition">head</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">_</span> <span class="id" title="keyword">then</span> <span class="id" title="var">x</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="behead"><span class="id" title="definition">behead</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_behead"><span class="id" title="lemma">size_behead</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#behead"><span class="id" title="definition">behead</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">).-1</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Factories
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ncons"><span class="id" title="definition">ncons</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.ssreflect.ssrnat.html#iter"><span class="id" title="definition">iter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#cons"><span class="id" title="constructor">cons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="nseq"><span class="id" title="definition">nseq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_ncons"><span class="id" title="lemma">size_ncons</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_nseq"><span class="id" title="lemma">size_nseq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ n-ary, dependently typed constructor.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="seqn_type"><span class="id" title="definition">seqn_type</span></a> <span class="id" title="var">n</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seqn_type"><span class="id" title="definition">seqn_type</span></a> <span class="id" title="var">n'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="seqn_rec"><span class="id" title="definition">seqn_rec</span></a> <span class="id" title="var">f</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seqn_type"><span class="id" title="definition">seqn_type</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.ssreflect.seq.html#seqn_type"><span class="id" title="definition">seqn_type</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">then</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#seqn_rec"><span class="id" title="definition">seqn_rec</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">s</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)) <span class="id" title="var">n'</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="seqn"><span class="id" title="definition">seqn</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#seqn_rec"><span class="id" title="definition">seqn_rec</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Sequence catenation "cat".
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="cat"><span class="id" title="definition">cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s1'</span> <span class="id" title="keyword">then</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s1'</span> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><br/>
+<span class="id" title="keyword">where</span> <a name="bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">&quot;</span></a>s1 ++ s2" := (<a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span>) : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat0s"><span class="id" title="lemma">cat0s</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat1s"><span class="id" title="lemma">cat1s</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat_cons"><span class="id" title="lemma">cat_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat_nseq"><span class="id" title="lemma">cat_nseq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cats0"><span class="id" title="lemma">cats0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="catA"><span class="id" title="lemma">catA</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_cat"><span class="id" title="lemma">size_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ last, belast, rcons, and last induction.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="rcons"><span class="id" title="definition">rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">z</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <span class="id" title="var">s'</span> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rcons_cons"><span class="id" title="lemma">rcons_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cats1"><span class="id" title="lemma">cats1</span></a> <span class="id" title="var">s</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="last"><span class="id" title="definition">last</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x'</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <span class="id" title="var">x'</span> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="belast"><span class="id" title="definition">belast</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x'</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> <span class="id" title="var">x'</span> <span class="id" title="var">s'</span><a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">)</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="lastI"><span class="id" title="lemma">lastI</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="last_cons"><span class="id" title="lemma">last_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_rcons"><span class="id" title="lemma">size_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">).+1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_belast"><span class="id" title="lemma">size_belast</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="last_cat"><span class="id" title="lemma">last_cat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="last_rcons"><span class="id" title="lemma">last_rcons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="belast_cat"><span class="id" title="lemma">belast_cat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="belast_rcons"><span class="id" title="lemma">belast_rcons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat_rcons"><span class="id" title="lemma">cat_rcons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rcons_cat"><span class="id" title="lemma">rcons_cat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">CoInductive</span> <a name="last_spec"><span class="id" title="inductive">last_spec</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.seq.html#Sequences.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/>
+&nbsp;&nbsp;| <a name="LastNil"><span class="id" title="constructor">LastNil</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#last_spec"><span class="id" title="inductive">last_spec</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><br/>
+&nbsp;&nbsp;| <a name="LastRcons"><span class="id" title="constructor">LastRcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last_spec"><span class="id" title="inductive">last_spec</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="lastP"><span class="id" title="lemma">lastP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last_spec"><span class="id" title="inductive">last_spec</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="last_ind"><span class="id" title="lemma">last_ind</span></a> <span class="id" title="var">P</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">s</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">s</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Sequence indexing.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="nth"><span class="id" title="definition">nth</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> {<span class="id" title="keyword">struct</span> <span class="id" title="var">n</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">then</span> @<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <span class="id" title="var">s'</span> <span class="id" title="var">n'</span> <span class="id" title="keyword">else</span> <span class="id" title="var">x</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="set_nth"><span class="id" title="definition">set_nth</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> <span class="id" title="var">y</span> {<span class="id" title="keyword">struct</span> <span class="id" title="var">n</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">then</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> @<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> <span class="id" title="var">s'</span> <span class="id" title="var">n'</span> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth0"><span class="id" title="lemma">nth0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#head"><span class="id" title="definition">head</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_default"><span class="id" title="lemma">nth_default</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_nil"><span class="id" title="lemma">nth_nil</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="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="last_nth"><span class="id" title="lemma">last_nth</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_last"><span class="id" title="lemma">nth_last</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">).-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_behead"><span class="id" title="lemma">nth_behead</span></a> <span class="id" title="var">s</span> <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="mathcomp.ssreflect.seq.html#behead"><span class="id" title="definition">behead</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_cat"><span class="id" title="lemma">nth_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</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.seq.html#s2"><span class="id" title="variable">s2</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><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.seq.html#s1"><span class="id" title="variable">s1</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_rcons"><span class="id" title="lemma">nth_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_ncons"><span class="id" title="lemma">nth_ncons</span></a> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">s</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</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.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_nseq"><span class="id" title="lemma">nth_nseq</span></a> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <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="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_from_nth"><span class="id" title="lemma">eq_from_nth</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_set_nth"><span class="id" title="lemma">size_set_nth</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#maxn"><span class="id" title="definition">maxn</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="set_nth_nil"><span class="id" title="lemma">set_nth_nil</span></a> <span class="id" title="var">n</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_set_nth"><span class="id" title="lemma">nth_set_nth</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#567afa6fb1db7dcd21b2a36fff7bcf36"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#567afa6fb1db7dcd21b2a36fff7bcf36"><span class="id" title="notation">eta</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#567afa6fb1db7dcd21b2a36fff7bcf36"><span class="id" title="notation">with</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#208083cddfca3726231c4e84b7c928c1"><span class="id" title="notation">|-&gt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#567afa6fb1db7dcd21b2a36fff7bcf36"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="set_set_nth"><span class="id" title="lemma">set_set_nth</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n1</span> <span class="id" title="var">y1</span> <span class="id" title="var">n2</span> <span class="id" title="var">y2</span> (<span class="id" title="var">s2</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ find, count, has, all.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Sequences.SeqFind"><span class="id" title="section">SeqFind</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="find"><span class="id" title="definition">find</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <span class="id" title="var">s'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">).+1</span></a> <span class="id" title="keyword">else</span> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="filter"><span class="id" title="definition">filter</span></a> <span class="id" title="var">s</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <span class="id" title="var">s'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="count"><span class="id" title="definition">count</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="has"><span class="id" title="definition">has</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="all"><span class="id" title="definition">all</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_filter"><span class="id" title="lemma">size_filter</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_count"><span class="id" title="lemma">has_count</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_size"><span class="id" title="lemma">count_size</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_count"><span class="id" title="lemma">all_count</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_all"><span class="id" title="lemma">filter_all</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_filterP"><span class="id" title="lemma">all_filterP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_id"><span class="id" title="lemma">filter_id</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_find"><span class="id" title="lemma">has_find</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="find_size"><span class="id" title="lemma">find_size</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="find_cat"><span class="id" title="lemma">find_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_nil"><span class="id" title="lemma">has_nil</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.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="has_seq1"><span class="id" title="lemma">has_seq1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_nseq"><span class="id" title="lemma">has_nseq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_seqb"><span class="id" title="lemma">has_seqb</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_nil"><span class="id" title="lemma">all_nil</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_seq1"><span class="id" title="lemma">all_seq1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_nseq"><span class="id" title="lemma">all_nseq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_nseqb"><span class="id" title="lemma">all_nseqb</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3b17cb5f3a16fa64a62421f68786f750"><span class="id" title="notation">==&gt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="find_nseq"><span class="id" title="lemma">find_nseq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_find"><span class="id" title="lemma">nth_find</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</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.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="before_find"><span class="id" title="lemma">before_find</span></a> <span class="id" title="var">s</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.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="filter_cat"><span class="id" title="lemma">filter_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_rcons"><span class="id" title="lemma">filter_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_cat"><span class="id" title="lemma">count_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_cat"><span class="id" title="lemma">has_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><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="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_rcons"><span class="id" title="lemma">has_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><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="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_cat"><span class="id" title="lemma">all_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_rcons"><span class="id" title="lemma">all_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SeqFind.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#Sequences.SeqFind"><span class="id" title="section">SeqFind</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_find"><span class="id" title="lemma">eq_find</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_filter"><span class="id" title="lemma">eq_filter</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_count"><span class="id" title="lemma">eq_count</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_has"><span class="id" title="lemma">eq_has</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_all"><span class="id" title="lemma">eq_all</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Sequences.SubPred"><span class="id" title="section">SubPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="Sequences.SubPred.a1"><span class="id" title="variable">a1</span></a> <a name="Sequences.SubPred.a2"><span class="id" title="variable">a2</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.T"><span class="id" title="variable">T</span></a>).<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="Sequences.SubPred.s12"><span class="id" title="variable">s12</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#subpred"><span class="id" title="definition">subpred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a2"><span class="id" title="variable">a2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sub_find"><span class="id" title="lemma">sub_find</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sub_has"><span class="id" title="lemma">sub_has</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#Sequences.SubPred.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sub_count"><span class="id" title="lemma">sub_count</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sub_all"><span class="id" title="lemma">sub_all</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.SubPred.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#Sequences.SubPred.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#Sequences.SubPred"><span class="id" title="section">SubPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_pred0"><span class="id" title="lemma">filter_pred0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_predT"><span class="id" title="lemma">filter_predT</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_predI"><span class="id" title="lemma">filter_predI</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predI"><span class="id" title="definition">predI</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_pred0"><span class="id" title="lemma">count_pred0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_predT"><span class="id" title="lemma">count_predT</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_predUI"><span class="id" title="lemma">count_predUI</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predU"><span class="id" title="definition">predU</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predI"><span class="id" title="definition">predI</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_predC"><span class="id" title="lemma">count_predC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predC"><span class="id" title="definition">predC</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_filter"><span class="id" title="lemma">count_filter</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predI"><span class="id" title="definition">predI</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_pred0"><span class="id" title="lemma">has_pred0</span></a> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.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="has_predT"><span class="id" title="lemma">has_predT</span></a> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_predC"><span class="id" title="lemma">has_predC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#predC"><span class="id" title="definition">predC</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_predU"><span class="id" title="lemma">has_predU</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#predU"><span class="id" title="definition">predU</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><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="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_pred0"><span class="id" title="lemma">all_pred0</span></a> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_predT"><span class="id" title="lemma">all_predT</span></a> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_predC"><span class="id" title="lemma">all_predC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#predC"><span class="id" title="definition">predC</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_predI"><span class="id" title="lemma">all_predI</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#predI"><span class="id" title="definition">predI</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Surgery: drop, take, rot, rotr.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="drop"><span class="id" title="definition">drop</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> {<span class="id" title="keyword">struct</span> <span class="id" title="var">s</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span>, <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <span class="id" title="var">n'</span> <span class="id" title="var">s'</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_behead"><span class="id" title="lemma">drop_behead</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#iter"><span class="id" title="definition">iter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#behead"><span class="id" title="definition">behead</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop0"><span class="id" title="lemma">drop0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop1"><span class="id" title="lemma">drop1</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#behead"><span class="id" title="definition">behead</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_oversize"><span class="id" title="lemma">drop_oversize</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_size"><span class="id" title="lemma">drop_size</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_cons"><span class="id" title="lemma">drop_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_drop"><span class="id" title="lemma">size_drop</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_cat"><span class="id" title="lemma">drop_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><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.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_size_cat"><span class="id" title="lemma">drop_size_cat</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nconsK"><span class="id" title="lemma">nconsK</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_drop"><span class="id" title="lemma">drop_drop</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n2"><span class="id" title="variable">n2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="take"><span class="id" title="definition">take</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> {<span class="id" title="keyword">struct</span> <span class="id" title="var">s</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span>, <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> ⇒ <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <span class="id" title="var">n'</span> <span class="id" title="var">s'</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take0"><span class="id" title="lemma">take0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take_oversize"><span class="id" title="lemma">take_oversize</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take_size"><span class="id" title="lemma">take_size</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take_cons"><span class="id" title="lemma">take_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">)</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_rcons"><span class="id" title="lemma">drop_rcons</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat_take_drop"><span class="id" title="lemma">cat_take_drop</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_takel"><span class="id" title="lemma">size_takel</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_take"><span class="id" title="lemma">size_take</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take_cat"><span class="id" title="lemma">take_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
+&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><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.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take_size_cat"><span class="id" title="lemma">take_size_cat</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="takel_cat"><span class="id" title="lemma">takel_cat</span></a> <span class="id" title="var">s1</span> :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">s2</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_drop"><span class="id" title="lemma">nth_drop</span></a> <span class="id" title="var">s</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.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_take"><span class="id" title="lemma">nth_take</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">s</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ drop_nth and take_nth below do NOT use the default n0, because the "n"
+ can be inferred from the condition, whereas the nth default value x0
+ will have to be given explicitly (and this will provide "d" as well).
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_nth"><span class="id" title="lemma">drop_nth</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take_nth"><span class="id" title="lemma">take_nth</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Rotation
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="rot"><span class="id" title="definition">rot</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot0"><span class="id" title="lemma">rot0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_rot"><span class="id" title="lemma">size_rot</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_oversize"><span class="id" title="lemma">rot_oversize</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_size"><span class="id" title="lemma">rot_size</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_rot"><span class="id" title="lemma">has_rot</span></a> <span class="id" title="var">s</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_size_cat"><span class="id" title="lemma">rot_size_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</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.seq.html#s1"><span class="id" title="variable">s1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bd3a6d577cd53c0f76a9a712a1be8f7b"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="rotr"><span class="id" title="definition">rotr</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotK"><span class="id" title="lemma">rotK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_inj"><span class="id" title="lemma">rot_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences.n0"><span class="id" title="variable">n0</span></a>). <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot1_cons"><span class="id" title="lemma">rot1_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> 1 (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ (efficient) reversal
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="catrev"><span class="id" title="definition">catrev</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s1'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> <span class="id" title="var">s1'</span> (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Sequences"><span class="id" title="section">Sequences</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ rev must be defined outside a Section because Coq's end of section
+ "cooking" removes the nosimpl guard.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="rev"><span class="id" title="definition">rev</span></a> <span class="id" title="var">T</span> (<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.seq.html#T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>).<br/>
+
+<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="count_mem"><span class="id" title="abbreviation">count_mem</span></a> <span class="id" title="var">x</span> := (<a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_of_simpl"><span class="id" title="definition">pred_of_simpl</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <span class="id" title="var">x</span>))).<br/>
+
+<br/>
+<span class="id" title="keyword">Infix</span> <a name="2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">&quot;</span></a>++" := <a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a> : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">&quot;</span></a>[ 'seq' x &lt;- s | C ]" := (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <span class="id" title="var">C</span>%<span class="id" title="var">B</span>) <span class="id" title="var">s</span>)<br/>
+&nbsp;(<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,<br/>
+&nbsp;&nbsp;<span class="id" title="var">format</span> "[ '[hv' 'seq' x &lt;- s '/ ' | C ] ']'") : <span class="id" title="var">seq_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="79b6022a720a133df94e3476d683e3f2"><span class="id" title="notation">&quot;</span></a>[ 'seq' x &lt;- s | C1 &amp; C2 ]" := <a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">seq</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">s</span> <a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">|</span></a> <span class="id" title="var">C1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <span class="id" title="var">C2</span><a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">]</span></a><br/>
+&nbsp;(<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,<br/>
+&nbsp;&nbsp;<span class="id" title="var">format</span> "[ '[hv' 'seq' x &lt;- s '/ ' | C1 '/ ' &amp; C2 ] ']'") : <span class="id" title="var">seq_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">&quot;</span></a>[ 'seq' x : T &lt;- s | C ]" := (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</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">C</span>%<span class="id" title="var">B</span>) <span class="id" title="var">s</span>)<br/>
+&nbsp;(<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">only</span> <span class="id" title="var">parsing</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="013384776af473286d92c2ee9f9a55c4"><span class="id" title="notation">&quot;</span></a>[ 'seq' x : T &lt;- s | C1 &amp; C2 ]" := <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">seq</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">s</span> <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">|</span></a> <span class="id" title="var">C1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <span class="id" title="var">C2</span><a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">]</span></a><br/>
+&nbsp;(<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">only</span> <span class="id" title="var">parsing</span>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Double induction/recursion.
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="seq2_ind"><span class="id" title="lemma">seq2_ind</span></a> <span class="id" title="var">T1</span> <span class="id" title="var">T2</span> (<span class="id" title="var">P</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#T2"><span class="id" title="variable">T2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span>) :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Rev"><span class="id" title="section">Rev</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="Rev.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Rev.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="catrev_catl"><span class="id" title="lemma">catrev_catl</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="catrev_catr"><span class="id" title="lemma">catrev_catr</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="catrevE"><span class="id" title="lemma">catrevE</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#catrev"><span class="id" title="definition">catrev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_cons"><span class="id" title="lemma">rev_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_rev"><span class="id" title="lemma">size_rev</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_cat"><span class="id" title="lemma">rev_cat</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_rcons"><span class="id" title="lemma">rev_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="revK"><span class="id" title="lemma">revK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (@<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Rev.T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_rev"><span class="id" title="lemma">nth_rev</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#x0"><span class="id" title="variable">x0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_rev"><span class="id" title="lemma">filter_rev</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_rev"><span class="id" title="lemma">count_rev</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_rev"><span class="id" title="lemma">has_rev</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_rev"><span class="id" title="lemma">all_rev</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="take_rev"><span class="id" title="lemma">take_rev</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="drop_rev"><span class="id" title="lemma">drop_rev</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#Rev"><span class="id" title="section">Rev</span></a>.<br/>
+
+<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Equality and eqType for seq.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqSeq"><span class="id" title="section">EqSeq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="EqSeq.n0"><span class="id" title="variable">n0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="EqSeq.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="EqSeq.x0"><span class="id" title="variable">x0</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.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">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.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="eqseq"><span class="id" title="definition">eqseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> {<span class="id" title="keyword">struct</span> <span class="id" title="var">s2</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">x1</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s1'</span>, <span class="id" title="var">x2</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s2'</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><span class="id" title="var">x1</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <span class="id" title="var">x2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#eqseq"><span class="id" title="definition">eqseq</span></a> <span class="id" title="var">s1'</span> <span class="id" title="var">s2'</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eqseqP"><span class="id" title="lemma">eqseqP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.axiom"><span class="id" title="definition">Equality.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#eqseq"><span class="id" title="definition">eqseq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_eqMixin</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#eqseqP"><span class="id" title="lemma">eqseqP</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_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.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#seq_eqMixin"><span class="id" title="definition">seq_eqMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eqseqE"><span class="id" title="lemma">eqseqE</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#eqseq"><span class="id" title="definition">eqseq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eqseq_cons"><span class="id" title="lemma">eqseq_cons</span></a> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eqseq_cat"><span class="id" title="lemma">eqseq_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span> <span class="id" title="var">s4</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s4"><span class="id" title="variable">s4</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s4"><span class="id" title="variable">s4</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eqseq_rcons"><span class="id" title="lemma">eqseq_rcons</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_eq0"><span class="id" title="lemma">size_eq0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_filter"><span class="id" title="lemma">has_filter</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ mem_seq and index.
+ mem_seq defines a predType for seq.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="mem_seq"><span class="id" title="definition">mem_seq</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.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.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#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#xpredU1"><span class="id" title="abbreviation">xpredU1</span></a> <span class="id" title="var">y</span> (<a class="idref" href="mathcomp.ssreflect.seq.html#mem_seq"><span class="id" title="definition">mem_seq</span></a> <span class="id" title="var">s'</span>) <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#xpred0"><span class="id" title="abbreviation">xpred0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="eqseq_class"><span class="id" title="definition">eqseq_class</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.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Identity</span> <span class="id" title="keyword">Coercion</span> <span class="id" title="var">seq_of_eqseq</span> : <span class="id" title="var">eqseq_class</span> &gt;-&gt; <span class="id" title="var">seq</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Coercion</span> <span class="id" title="var">pred_of_eq_seq</span> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#eqseq_class"><span class="id" title="definition">eqseq_class</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_class"><span class="id" title="abbreviation">pred_class</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mem_seq"><span class="id" title="definition">mem_seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">seq_predType</span> := @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mkPredType"><span class="id" title="definition">mkPredType</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.T"><span class="id" title="variable">T</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.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#pred_of_eq_seq"><span class="id" title="definition">pred_of_eq_seq</span></a>.<br/>
+</div>
+
+<div class="doc">
+ The line below makes mem_seq a canonical instance of topred.
+</div>
+<div class="code">
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mem_seq_predType</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mkPredType"><span class="id" title="definition">mkPredType</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mem_seq"><span class="id" title="definition">mem_seq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="in_cons"><span class="id" title="lemma">in_cons</span></a> <span class="id" title="var">y</span> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="in_nil"><span class="id" title="lemma">in_nil</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.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="mem_seq1"><span class="id" title="lemma">mem_seq1</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/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+&nbsp;<span class="comment">(*&nbsp;to&nbsp;be&nbsp;repeated&nbsp;after&nbsp;the&nbsp;Section&nbsp;discharge.&nbsp;*)</span><br/>
+<span class="id" title="keyword">Let</span> <a name="EqSeq.inE"><span class="id" title="variable">inE</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#mem_seq1"><span class="id" title="lemma">mem_seq1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#in_cons"><span class="id" title="lemma">in_cons</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#inE"><span class="id" title="definition">inE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_seq2"><span class="id" title="lemma">mem_seq2</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y1</span> <span class="id" title="var">y2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred2"><span class="id" title="abbreviation">xpred2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_seq3"><span class="id" title="lemma">mem_seq3</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y1</span> <span class="id" title="var">y2</span> <span class="id" title="var">y3</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y3"><span class="id" title="variable">y3</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred3"><span class="id" title="abbreviation">xpred3</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y3"><span class="id" title="variable">y3</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_seq4"><span class="id" title="lemma">mem_seq4</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y1</span> <span class="id" title="var">y2</span> <span class="id" title="var">y3</span> <span class="id" title="var">y4</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y3"><span class="id" title="variable">y3</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y4"><span class="id" title="variable">y4</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b2d6f6eec274c9f9919a378a42b5b183"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred4"><span class="id" title="abbreviation">xpred4</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y1"><span class="id" title="variable">y1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y2"><span class="id" title="variable">y2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y3"><span class="id" title="variable">y3</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y4"><span class="id" title="variable">y4</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_cat"><span class="id" title="lemma">mem_cat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_rcons"><span class="id" title="lemma">mem_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_head"><span class="id" title="lemma">mem_head</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_last"><span class="id" title="lemma">mem_last</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_behead"><span class="id" title="lemma">mem_behead</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#behead"><span class="id" title="definition">behead</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_belast"><span class="id" title="lemma">mem_belast</span></a> <span class="id" title="var">s</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_nth"><span class="id" title="lemma">mem_nth</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_take"><span class="id" title="lemma">mem_take</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_drop"><span class="id" title="lemma">mem_drop</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqSeq.Filters"><span class="id" title="section">Filters</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="EqSeq.Filters.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="hasP"><span class="id" title="lemma">hasP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="hasPn"><span class="id" title="lemma">hasPn</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><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="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="allP"><span class="id" title="lemma">allP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="allPn"><span class="id" title="lemma">allPn</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><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="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_filter"><span class="id" title="lemma">mem_filter</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.Filters"><span class="id" title="section">Filters</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqSeq.EqIn"><span class="id" title="section">EqIn</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a name="EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_in_filter"><span class="id" title="lemma">eq_in_filter</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_in_find"><span class="id" title="lemma">eq_in_find</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_in_count"><span class="id" title="lemma">eq_in_count</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_in_all"><span class="id" title="lemma">eq_in_all</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_in_has"><span class="id" title="lemma">eq_in_has</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#EqSeq.EqIn.a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#EqSeq.EqIn"><span class="id" title="section">EqIn</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_has_r"><span class="id" title="lemma">eq_has_r</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</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/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_all_r"><span class="id" title="lemma">eq_all_r</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</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/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_sym"><span class="id" title="lemma">has_sym</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <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/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_pred1"><span class="id" title="lemma">has_pred1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</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.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_rev"><span class="id" title="lemma">mem_rev</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Constant sequences, i.e., the image of nseq.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="constant"><span class="id" title="definition">constant</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <span class="id" title="var">x</span>) <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_pred1P"><span class="id" title="lemma">all_pred1P</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</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.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_pred1_constant"><span class="id" title="lemma">all_pred1_constant</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</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.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#constant"><span class="id" title="definition">constant</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_pred1_nseq"><span class="id" title="lemma">all_pred1_nseq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</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.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nseqP"><span class="id" title="lemma">nseqP</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#19ab5cfd7e4f60fa14f22b576013bd96"><span class="id" title="notation">&gt;</span></a> 0) (<a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="constant_nseq"><span class="id" title="lemma">constant_nseq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#constant"><span class="id" title="definition">constant</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Uses x0
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="constantP"><span class="id" title="lemma">constantP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#constant"><span class="id" title="definition">constant</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Duplicate-freenes.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="uniq"><span class="id" title="definition">uniq</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <span class="id" title="var">s'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cons_uniq"><span class="id" title="lemma">cons_uniq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</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#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat_uniq"><span class="id" title="lemma">cat_uniq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">[&amp;&amp;</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.seq.html#s1"><span class="id" title="variable">s1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><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/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">&amp;</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.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="uniq_catC"><span class="id" title="lemma">uniq_catC</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="uniq_catCA"><span class="id" title="lemma">uniq_catCA</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rcons_uniq"><span class="id" title="lemma">rcons_uniq</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</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#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_uniq"><span class="id" title="lemma">filter_uniq</span></a> <span class="id" title="var">s</span> <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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_uniq"><span class="id" title="lemma">rot_uniq</span></a> <span class="id" title="var">s</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#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_uniq"><span class="id" title="lemma">rev_uniq</span></a> <span class="id" title="var">s</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#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_memPn"><span class="id" title="lemma">count_memPn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_uniq_mem"><span class="id" title="lemma">count_uniq_mem</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_pred1_uniq"><span class="id" title="lemma">filter_pred1_uniq</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</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.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Removing duplicates
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="undup"><span class="id" title="definition">undup</span></a> <span class="id" title="var">s</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <span class="id" title="var">s'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#undup"><span class="id" title="definition">undup</span></a> <span class="id" title="var">s'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#undup"><span class="id" title="definition">undup</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_undup"><span class="id" title="lemma">size_undup</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</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#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_undup"><span class="id" title="lemma">mem_undup</span></a> <span class="id" title="var">s</span> : <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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="undup_uniq"><span class="id" title="lemma">undup_uniq</span></a> <span class="id" title="var">s</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#undup"><span class="id" title="definition">undup</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="undup_id"><span class="id" title="lemma">undup_id</span></a> <span class="id" title="var">s</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="ltn_size_undup"><span class="id" title="lemma">ltn_size_undup</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#undup"><span class="id" title="definition">undup</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_undup"><span class="id" title="lemma">filter_undup</span></a> <span class="id" title="var">p</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</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#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="undup_nil"><span class="id" title="lemma">undup_nil</span></a> <span class="id" title="var">s</span> : <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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Lookup
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="index"><span class="id" title="definition">index</span></a> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</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.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="index_size"><span class="id" title="lemma">index_size</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#index"><span class="id" title="definition">index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="index_mem"><span class="id" title="lemma">index_mem</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_index"><span class="id" title="lemma">nth_index</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="index_cat"><span class="id" title="lemma">index_cat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#index"><span class="id" title="definition">index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="index_uniq"><span class="id" title="lemma">index_uniq</span></a> <span class="id" title="var">i</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="index_head"><span class="id" title="lemma">index_head</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#index"><span class="id" title="definition">index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="index_last"><span class="id" title="lemma">index_last</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</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#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_uniq"><span class="id" title="lemma">nth_uniq</span></a> <span class="id" title="var">s</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="uniqPn"><span class="id" title="lemma">uniqPn</span></a> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">[/\</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">]</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="uniqP"><span class="id" title="lemma">uniqP</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">pred</span></a> <span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="abbreviation">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_rot"><span class="id" title="lemma">mem_rot</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eqseq_rot"><span class="id" title="lemma">eqseq_rot</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqSeq.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">CoInductive</span> <a name="rot_to_spec"><span class="id" title="inductive">rot_to_spec</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> := <a name="RotToSpec"><span class="id" title="constructor">RotToSpec</span></a> <span class="id" title="var">i</span> <span class="id" title="var">s'</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s'"><span class="id" title="variable">s'</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_to"><span class="id" title="lemma">rot_to</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot_to_spec"><span class="id" title="inductive">rot_to_spec</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#EqSeq"><span class="id" title="section">EqSeq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="inE"><span class="id" title="definition">inE</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#mem_seq1"><span class="id" title="lemma">mem_seq1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#in_cons"><span class="id" title="lemma">in_cons</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#inE"><span class="id" title="definition">inE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="NthTheory"><span class="id" title="section">NthTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nthP"><span class="id" title="lemma">nthP</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">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.seq.html#T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">x</span> <span class="id" title="var">x0</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">i</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</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.seq.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="NthTheory.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="has_nthP"><span class="id" title="lemma">has_nthP</span></a> (<span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#NthTheory.T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">s</span> <span class="id" title="var">x0</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">i</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</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.seq.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>)) (<a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_nthP"><span class="id" title="lemma">all_nthP</span></a> (<span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#NthTheory.T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">s</span> <span class="id" title="var">x0</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.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">i</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</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.seq.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>)) (<a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#NthTheory"><span class="id" title="section">NthTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="set_nth_default"><span class="id" title="lemma">set_nth_default</span></a> <span class="id" title="var">T</span> <span class="id" title="var">s</span> (<span class="id" title="var">y0</span> <span class="id" title="var">x0</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#y0"><span class="id" title="variable">y0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="headI"><span class="id" title="lemma">headI</span></a> <span class="id" title="var">T</span> <span class="id" title="var">s</span> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#head"><span class="id" title="definition">head</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#behead"><span class="id" title="definition">behead</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="bitseq"><span class="id" title="definition">bitseq</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">bitseq_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#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">eqType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bitseq"><span class="id" title="definition">bitseq</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">bitseq_predType</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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#df3be14ed329a6c5934d595bc1fa80bd"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#df3be14ed329a6c5934d595bc1fa80bd"><span class="id" title="notation">predType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#df3be14ed329a6c5934d595bc1fa80bd"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#bitseq"><span class="id" title="definition">bitseq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#df3be14ed329a6c5934d595bc1fa80bd"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Incrementing the ith nat in a seq nat, padding with 0's if needed. This
+ allows us to use nat seqs as bags of nats.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="incr_nth"><span class="id" title="definition">incr_nth</span></a> <span class="id" title="var">v</span> <span class="id" title="var">i</span> {<span class="id" title="keyword">struct</span> <span class="id" title="var">i</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#v"><span class="id" title="variable">v</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">v'</span> <span class="id" title="keyword">then</span> <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">i'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">then</span> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> <span class="id" title="var">v'</span> <span class="id" title="var">i'</span> <span class="id" title="keyword">else</span> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">v'</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> 1<a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_incr_nth"><span class="id" title="lemma">nth_incr_nth</span></a> <span class="id" title="var">v</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 (<a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_incr_nth"><span class="id" title="lemma">size_incr_nth</span></a> <span class="id" title="var">v</span> <span class="id" title="var">i</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</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.seq.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="incr_nth_inj"><span class="id" title="lemma">incr_nth_inj</span></a> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#v"><span class="id" title="variable">v</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="incr_nthC"><span class="id" title="lemma">incr_nthC</span></a> <span class="id" title="var">v</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#incr_nth"><span class="id" title="definition">incr_nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#j"><span class="id" title="variable">j</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Equality up to permutation
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PermSeq"><span class="id" title="section">PermSeq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="PermSeq.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/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.seq.html#PermSeq.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="perm_eq"><span class="id" title="definition">perm_eq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :=<br/>
+&nbsp;&nbsp;<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/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">pred</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">|</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">]</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eqP"><span class="id" title="lemma">perm_eqP</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_refl"><span class="id" title="lemma">perm_eq_refl</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+ <span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">perm_eq_refl</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_sym"><span class="id" title="lemma">perm_eq_sym</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#symmetric"><span class="id" title="definition">symmetric</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_trans"><span class="id" title="lemma">perm_eq_trans</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#transitive"><span class="id" title="definition">transitive</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> := (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <span class="id" title="var">s1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <span class="id" title="var">s2</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="perm_eqr"><span class="id" title="abbreviation">perm_eqr</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> := (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <span class="id" title="var">s1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <span class="id" title="var">s2</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eqlE"><span class="id" title="lemma">perm_eqlE</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eqlP"><span class="id" title="lemma">perm_eqlP</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eqrP"><span class="id" title="lemma">perm_eqrP</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eqr"><span class="id" title="abbreviation">perm_eqr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_catC"><span class="id" title="lemma">perm_catC</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_cat2l"><span class="id" title="lemma">perm_cat2l</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_cons"><span class="id" title="lemma">perm_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_cat2r"><span class="id" title="lemma">perm_cat2r</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_catAC"><span class="id" title="lemma">perm_catAC</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_catCA"><span class="id" title="lemma">perm_catCA</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_rcons"><span class="id" title="lemma">perm_rcons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_rot"><span class="id" title="lemma">perm_rot</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_rotr"><span class="id" title="lemma">perm_rotr</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_rev"><span class="id" title="lemma">perm_eq_rev</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_filter"><span class="id" title="lemma">perm_filter</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">P</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_filterC"><span class="id" title="lemma">perm_filterC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predC"><span class="id" title="definition">predC</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_mem"><span class="id" title="lemma">perm_eq_mem</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_all"><span class="id" title="lemma">perm_eq_all</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">P</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_size"><span class="id" title="lemma">perm_eq_size</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_small"><span class="id" title="lemma">perm_eq_small</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="uniq_leq_size"><span class="id" title="lemma">uniq_leq_size</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="leq_size_uniq"><span class="id" title="lemma">leq_size_uniq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="uniq_size_uniq"><span class="id" title="lemma">uniq_size_uniq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><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.seq.html#s1"><span class="id" title="variable">s1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="leq_size_perm"><span class="id" title="lemma">leq_size_perm</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_uniq"><span class="id" title="lemma">perm_uniq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_uniq"><span class="id" title="lemma">perm_eq_uniq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="uniq_perm_eq"><span class="id" title="lemma">uniq_perm_eq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_mem_uniq"><span class="id" title="lemma">count_mem_uniq</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#count_mem"><span class="id" title="abbreviation">count_mem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="catCA_perm_ind"><span class="id" title="lemma">catCA_perm_ind</span></a> <span class="id" title="var">P</span> :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="catCA_perm_subst"><span class="id" title="lemma">catCA_perm_subst</span></a> <span class="id" title="var">R</span> <span class="id" title="var">F</span> :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#F"><span class="id" title="variable">F</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#F"><span class="id" title="variable">F</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#PermSeq"><span class="id" title="section">PermSeq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="perm_eql"><span class="id" title="abbreviation">perm_eql</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> := (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <span class="id" title="var">s1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <span class="id" title="var">s2</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="perm_eqr"><span class="id" title="abbreviation">perm_eqr</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> := (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <span class="id" title="var">s1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <span class="id" title="var">s2</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">perm_eq_refl</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="RotrLemmas"><span class="id" title="section">RotrLemmas</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="RotrLemmas.n0"><span class="id" title="variable">n0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="RotrLemmas.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="RotrLemmas.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/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.seq.html#RotrLemmas.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_rotr"><span class="id" title="lemma">size_rotr</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_rotr"><span class="id" title="lemma">mem_rotr</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.seq.html#RotrLemmas.T'"><span class="id" title="variable">T'</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotr_size_cat"><span class="id" title="lemma">rotr_size_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</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.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotr1_rcons"><span class="id" title="lemma">rotr1_rcons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> 1 (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_rotr"><span class="id" title="lemma">has_rotr</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotr_uniq"><span class="id" title="lemma">rotr_uniq</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.seq.html#RotrLemmas.T'"><span class="id" title="variable">T'</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.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotrK"><span class="id" title="lemma">rotrK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotr_inj"><span class="id" title="lemma">rotr_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_rotr"><span class="id" title="lemma">rev_rotr</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_rot"><span class="id" title="lemma">rev_rot</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#RotrLemmas.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#RotrLemmas"><span class="id" title="section">RotrLemmas</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="RotCompLemmas"><span class="id" title="section">RotCompLemmas</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="RotCompLemmas.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.seq.html#RotCompLemmas.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_addn"><span class="id" title="lemma">rot_addn</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotS"><span class="id" title="lemma">rotS</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> 1 (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_add_mod"><span class="id" title="lemma">rot_add_mod</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_rot"><span class="id" title="lemma">rot_rot</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rot_rotr"><span class="id" title="lemma">rot_rotr</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rotr_rotr"><span class="id" title="lemma">rotr_rotr</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#RotCompLemmas"><span class="id" title="section">RotCompLemmas</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Mask"><span class="id" title="section">Mask</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="Mask.n0"><span class="id" title="variable">n0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="Mask.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">m</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#bitseq"><span class="id" title="definition">bitseq</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.seq.html#Mask.T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="mask"><span class="id" title="definition">mask</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> {<span class="id" title="keyword">struct</span> <span class="id" title="var">m</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">b</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">m'</span>, <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">s'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">s'</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask_false"><span class="id" title="lemma">mask_false</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask_true"><span class="id" title="lemma">mask_true</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask0"><span class="id" title="lemma">mask0</span></a> <span class="id" title="var">m</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask1"><span class="id" title="lemma">mask1</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask_cons"><span class="id" title="lemma">mask_cons</span></a> <span class="id" title="var">b</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_mask"><span class="id" title="lemma">size_mask</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask_cat"><span class="id" title="lemma">mask_cat</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m2"><span class="id" title="variable">m2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_mask_cons"><span class="id" title="lemma">has_mask_cons</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_mask"><span class="id" title="lemma">has_mask</span></a> <span class="id" title="var">a</span> <span class="id" title="var">m</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask_rot"><span class="id" title="lemma">mask_rot</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Mask.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Mask.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Mask.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>)) (<a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="resize_mask"><span class="id" title="lemma">resize_mask</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><span class="id" title="notation">{</span></a><span class="id" title="var">m1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><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.seq.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Mask"><span class="id" title="section">Mask</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqMask"><span class="id" title="section">EqMask</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="EqMask.n0"><span class="id" title="variable">n0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="EqMask.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/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<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.seq.html#EqMask.T"><span class="id" title="variable">T</span></a>) (<span class="id" title="var">m</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#bitseq"><span class="id" title="definition">bitseq</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_mask_cons"><span class="id" title="lemma">mem_mask_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">b</span> <span class="id" title="var">m</span> <span class="id" title="var">y</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_mask"><span class="id" title="lemma">mem_mask</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask_uniq"><span class="id" title="lemma">mask_uniq</span></a> <span class="id" title="var">s</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">m</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#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_mask_rot"><span class="id" title="lemma">mem_mask_rot</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMask.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMask.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#EqMask"><span class="id" title="section">EqMask</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Subseq"><span class="id" title="section">Subseq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="Subseq.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/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.seq.html#Subseq.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="subseq"><span class="id" title="definition">subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s2'</span> <span class="id" title="keyword">then</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s1'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <span class="id" title="var">s1'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <span class="id" title="var">s2'</span> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sub0seq"><span class="id" title="lemma">sub0seq</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq0"><span class="id" title="lemma">subseq0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseqP"><span class="id" title="lemma">subseqP</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">m</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><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.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mask_subseq"><span class="id" title="lemma">mask_subseq</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq_trans"><span class="id" title="lemma">subseq_trans</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#transitive"><span class="id" title="definition">transitive</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq_refl"><span class="id" title="lemma">subseq_refl</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+ <span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">subseq_refl</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="cat_subseq"><span class="id" title="lemma">cat_subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">s3</span> <span class="id" title="var">s4</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s4"><span class="id" title="variable">s4</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s4"><span class="id" title="variable">s4</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="prefix_subseq"><span class="id" title="lemma">prefix_subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="suffix_subseq"><span class="id" title="lemma">suffix_subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_subseq"><span class="id" title="lemma">mem_subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sub1seq"><span class="id" title="lemma">sub1seq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_subseq"><span class="id" title="lemma">size_subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_subseq_leqif"><span class="id" title="lemma">size_subseq_leqif</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">?=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">iff</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq_cons"><span class="id" title="lemma">subseq_cons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq_rcons"><span class="id" title="lemma">subseq_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq_uniq"><span class="id" title="lemma">subseq_uniq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s1"><span class="id" title="variable">s1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Subseq"><span class="id" title="section">Subseq</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">subseq_refl</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Rem"><span class="id" title="section">Rem</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="Rem.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="Rem.x"><span class="id" title="variable">x</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="rem"><span class="id" title="definition">rem</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.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#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">t</span> <span class="id" title="keyword">then</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Rem.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <span class="id" title="var">t</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rem"><span class="id" title="definition">rem</span></a> <span class="id" title="var">t</span>) <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rem_id"><span class="id" title="lemma">rem_id</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#Rem.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_to_rem"><span class="id" title="lemma">perm_to_rem</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#Rem.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Rem.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_rem"><span class="id" title="lemma">size_rem</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#Rem.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><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.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">).-1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rem_subseq"><span class="id" title="lemma">rem_subseq</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rem_uniq"><span class="id" title="lemma">rem_uniq</span></a> <span class="id" title="var">s</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_rem"><span class="id" title="lemma">mem_rem</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rem_filter"><span class="id" title="lemma">rem_filter</span></a> <span class="id" title="var">s</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</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.seq.html#Rem.x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_rem_uniq"><span class="id" title="lemma">mem_rem_uniq</span></a> <span class="id" title="var">s</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rem"><span class="id" title="definition">rem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#11efb36d4e2b98f4519391785d68e99e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#11efb36d4e2b98f4519391785d68e99e"><span class="id" title="notation">predD1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#11efb36d4e2b98f4519391785d68e99e"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Rem.x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#11efb36d4e2b98f4519391785d68e99e"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Rem"><span class="id" title="section">Rem</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Map"><span class="id" title="section">Map</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="Map.n0"><span class="id" title="variable">n0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="Map.T1"><span class="id" title="variable">T1</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Map.x1"><span class="id" title="variable">x1</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T1"><span class="id" title="variable">T1</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="Map.T2"><span class="id" title="variable">T2</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Map.x2"><span class="id" title="variable">x2</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>) (<a name="Map.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#Map.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="map"><span class="id" title="definition">map</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_cons"><span class="id" title="lemma">map_cons</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_nseq"><span class="id" title="lemma">map_nseq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_cat"><span class="id" title="lemma">map_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><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.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_map"><span class="id" title="lemma">size_map</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="behead_map"><span class="id" title="lemma">behead_map</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#behead"><span class="id" title="definition">behead</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#behead"><span class="id" title="definition">behead</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_map"><span class="id" title="lemma">nth_map</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#Map.x2"><span class="id" title="variable">x2</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</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.seq.html#Map.x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_rcons"><span class="id" title="lemma">map_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</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.seq.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="last_map"><span class="id" title="lemma">last_map</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="belast_map"><span class="id" title="lemma">belast_map</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#belast"><span class="id" title="definition">belast</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#belast"><span class="id" title="definition">belast</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_map"><span class="id" title="lemma">filter_map</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#filter"><span class="id" title="definition">filter</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#preim"><span class="id" title="definition">preim</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="find_map"><span class="id" title="lemma">find_map</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#preim"><span class="id" title="definition">preim</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="has_map"><span class="id" title="lemma">has_map</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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/8.8.0/stdlib//Coq.ssr.ssrbool.html#preim"><span class="id" title="definition">preim</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="all_map"><span class="id" title="lemma">all_map</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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/8.8.0/stdlib//Coq.ssr.ssrbool.html#preim"><span class="id" title="definition">preim</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_map"><span class="id" title="lemma">count_map</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#preim"><span class="id" title="definition">preim</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_take"><span class="id" title="lemma">map_take</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_drop"><span class="id" title="lemma">map_drop</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_rot"><span class="id" title="lemma">map_rot</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rot"><span class="id" title="definition">rot</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_rotr"><span class="id" title="lemma">map_rotr</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rotr"><span class="id" title="definition">rotr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.n0"><span class="id" title="variable">n0</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_rev"><span class="id" title="lemma">map_rev</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_mask"><span class="id" title="lemma">map_mask</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</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.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="inj_map"><span class="id" title="lemma">inj_map</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Map.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Map"><span class="id" title="section">Map</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">&quot;</span></a>[ 'seq' E | i &lt;- s ]" := (<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> ⇒ <span class="id" title="var">E</span>) <span class="id" title="var">s</span>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">i</span> <span class="id" title="var">ident</span>,<br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="var">format</span> "[ '[hv' 'seq' E '/ ' | i &lt;- s ] ']'") : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="f43141da0ed3a7afb1f3d8e8c21aeb7f"><span class="id" title="notation">&quot;</span></a>[ 'seq' E | i &lt;- s &amp; C ]" := <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">seq</span></a> <span class="id" title="var">E</span> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">seq</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">s</span> <a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">|</span></a> <span class="id" title="var">C</span><a class="idref" href="mathcomp.ssreflect.seq.html#faaecc4bc48cb840f19fdaac0da16989"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><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">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">i</span> <span class="id" title="var">ident</span>,<br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="var">format</span> "[ '[hv' 'seq' E '/ ' | i &lt;- s '/ ' &amp; C ] ']'") : <span class="id" title="var">seq_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="4067c992e782519cfa852ee62a1537c6"><span class="id" title="notation">&quot;</span></a>[ 'seq' E | i : T &lt;- s ]" := (<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> : <span class="id" title="var">T</span> ⇒ <span class="id" title="var">E</span>) <span class="id" title="var">s</span>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">i</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">Notation</span> <a name="c0cb8a8407550b2074de8a16bb14e784"><span class="id" title="notation">&quot;</span></a>[ 'seq' E | i : T &lt;- s &amp; C ]" :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#4067c992e782519cfa852ee62a1537c6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#4067c992e782519cfa852ee62a1537c6"><span class="id" title="notation">seq</span></a> <span class="id" title="var">E</span> <a class="idref" href="mathcomp.ssreflect.seq.html#4067c992e782519cfa852ee62a1537c6"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#4067c992e782519cfa852ee62a1537c6"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.seq.html#4067c992e782519cfa852ee62a1537c6"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">seq</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">s</span> <a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">|</span></a> <span class="id" title="var">C</span><a class="idref" href="mathcomp.ssreflect.seq.html#eae64066c2bc9a5bddbb5e796214d018"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#4067c992e782519cfa852ee62a1537c6"><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">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">i</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">Lemma</span> <a name="filter_mask"><span class="id" title="lemma">filter_mask</span></a> <span class="id" title="var">T</span> <span class="id" title="var">a</span> (<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.seq.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mask"><span class="id" title="definition">mask</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.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FilterSubseq"><span class="id" title="section">FilterSubseq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="FilterSubseq.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/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<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.seq.html#FilterSubseq.T"><span class="id" title="variable">T</span></a>) (<span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FilterSubseq.T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_subseq"><span class="id" title="lemma">filter_subseq</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq_filter"><span class="id" title="lemma">subseq_filter</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">a</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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="mathcomp.ssreflect.seq.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="subseq_uniqP"><span class="id" title="lemma">subseq_uniqP</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<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#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_to_subseq"><span class="id" title="lemma">perm_to_subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">s3</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s3"><span class="id" title="variable">s3</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#FilterSubseq"><span class="id" title="section">FilterSubseq</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqMap"><span class="id" title="section">EqMap</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="EqMap.n0"><span class="id" title="variable">n0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="EqMap.T1"><span class="id" title="variable">T1</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqMap.x1"><span class="id" title="variable">x1</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T1"><span class="id" title="variable">T1</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="EqMap.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqMap.x2"><span class="id" title="variable">x2</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>) (<a name="EqMap.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.seq.html#EqMap.T1"><span class="id" title="variable">T1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_f"><span class="id" title="lemma">map_f</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mapP"><span class="id" title="lemma">mapP</span></a> <span class="id" title="var">s</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_uniq"><span class="id" title="lemma">map_uniq</span></a> <span class="id" title="var">s</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_inj_in_uniq"><span class="id" title="lemma">map_inj_in_uniq</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_subseq"><span class="id" title="lemma">map_subseq</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#subseq"><span class="id" title="definition">subseq</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_index_map"><span class="id" title="lemma">nth_index_map</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x0</span> <span class="id" title="var">x</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_map"><span class="id" title="lemma">perm_map</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="EqMap.Hf"><span class="id" title="variable">Hf</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_map"><span class="id" title="lemma">mem_map</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="index_map"><span class="id" title="lemma">index_map</span></a> <span class="id" title="var">s</span> <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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_inj_uniq"><span class="id" title="lemma">map_inj_uniq</span></a> <span class="id" title="var">s</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.seq.html#EqMap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.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.seq.html#EqMap"><span class="id" title="section">EqMap</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_of_seq"><span class="id" title="lemma">map_of_seq</span></a> (<span class="id" title="var">T1</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">T2</span> (<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.seq.html#T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">fs</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>) (<span class="id" title="var">y0</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">f</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#fs"><span class="id" title="variable">fs</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#fs"><span class="id" title="variable">fs</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="MapComp"><span class="id" title="section">MapComp</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="MapComp.T1"><span class="id" title="variable">T1</span></a> <a name="MapComp.T2"><span class="id" title="variable">T2</span></a> <a name="MapComp.T3"><span class="id" title="variable">T3</span></a> : <span class="id" title="keyword">Type</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_id"><span class="id" title="lemma">map_id</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.seq.html#MapComp.T1"><span class="id" title="variable">T1</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/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_map"><span class="id" title="lemma">eq_map</span></a> (<span class="id" title="var">f1</span> <span class="id" title="var">f2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T2"><span class="id" title="variable">T2</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</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.seq.html#f2"><span class="id" title="variable">f2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_comp"><span class="id" title="lemma">map_comp</span></a> (<span class="id" title="var">f1</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T2"><span class="id" title="variable">T2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T3"><span class="id" title="variable">T3</span></a>) (<span class="id" title="var">f2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T2"><span class="id" title="variable">T2</span></a>) <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f2"><span class="id" title="variable">f2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#f1"><span class="id" title="variable">f1</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.seq.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mapK"><span class="id" title="lemma">mapK</span></a> (<span class="id" title="var">f1</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T2"><span class="id" title="variable">T2</span></a>) (<span class="id" title="var">f2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T2"><span class="id" title="variable">T2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp.T1"><span class="id" title="variable">T1</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</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.seq.html#f1"><span class="id" title="variable">f1</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.seq.html#f2"><span class="id" title="variable">f2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#MapComp"><span class="id" title="section">MapComp</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_in_map"><span class="id" title="lemma">eq_in_map</span></a> (<span class="id" title="var">T1</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">T2</span> (<span class="id" title="var">f1</span> <span class="id" title="var">f2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</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.seq.html#T1"><span class="id" title="variable">T1</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f2"><span class="id" title="variable">f2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><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.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_id_in"><span class="id" title="lemma">map_id_in</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">f</span> (<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.seq.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Map a partial function
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Pmap"><span class="id" title="section">Pmap</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="Pmap.aT"><span class="id" title="variable">aT</span></a> <a name="Pmap.rT"><span class="id" title="variable">rT</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Pmap.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rT"><span class="id" title="variable">rT</span></a>) (<a name="Pmap.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#rT"><span class="id" title="variable">rT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#aT"><span class="id" title="variable">aT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="pmap"><span class="id" title="definition">pmap</span></a> <span class="id" title="var">s</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <span class="id" title="keyword">let</span> <span class="id" title="var">r</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#pmap"><span class="id" title="definition">pmap</span></a> <span class="id" title="var">s'</span> <span class="id" title="tactic">in</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#oapp"><span class="id" title="abbreviation">oapp</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#cons"><span class="id" title="constructor">cons</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.f"><span class="id" title="variable">f</span></a> <span class="id" title="var">x</span>) <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_pK"><span class="id" title="lemma">map_pK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</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.seq.html#Pmap.g"><span class="id" title="variable">g</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#pmap"><span class="id" title="definition">pmap</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_pmap"><span class="id" title="lemma">size_pmap</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pmapS_filter"><span class="id" title="lemma">pmapS_filter</span></a> <span class="id" title="var">s</span> : <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/8.8.0/stdlib//Coq.ssr.ssrfun.html#some"><span class="id" title="abbreviation">some</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#Pmap.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="Pmap.fK"><span class="id" title="variable">fK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#ocancel"><span class="id" title="definition">ocancel</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.g"><span class="id" title="variable">g</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pmap_filter"><span class="id" title="lemma">pmap_filter</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.g"><span class="id" title="variable">g</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Pmap.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#Pmap"><span class="id" title="section">Pmap</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqPmap"><span class="id" title="section">EqPmap</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="EqPmap.aT"><span class="id" title="variable">aT</span></a> <a name="EqPmap.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="EqPmap.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rT"><span class="id" title="variable">rT</span></a>) (<a name="EqPmap.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#rT"><span class="id" title="variable">rT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#aT"><span class="id" title="variable">aT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_pmap"><span class="id" title="lemma">eq_pmap</span></a> (<span class="id" title="var">f1</span> <span class="id" title="var">f2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.rT"><span class="id" title="variable">rT</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</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.seq.html#f2"><span class="id" title="variable">f2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_pmap"><span class="id" title="lemma">mem_pmap</span></a> <span class="id" title="var">s</span> <span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</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.seq.html#EqPmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</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.seq.html#EqPmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="EqPmap.fK"><span class="id" title="variable">fK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#ocancel"><span class="id" title="definition">ocancel</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.g"><span class="id" title="variable">g</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="can2_mem_pmap"><span class="id" title="lemma">can2_mem_pmap</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">s</span> <span class="id" title="var">u</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</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.seq.html#EqPmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pmap_uniq"><span class="id" title="lemma">pmap_uniq</span></a> <span class="id" title="var">s</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#pmap"><span class="id" title="definition">pmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmap.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#EqPmap"><span class="id" title="section">EqPmap</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PmapSub"><span class="id" title="section">PmapSub</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="PmapSub.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="PmapSub.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a>) (<a name="PmapSub.sT"><span class="id" title="variable">sT</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.seq.html#p"><span class="id" title="variable">p</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_pmap_sub"><span class="id" title="lemma">size_pmap_sub</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#PmapSub.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#PmapSub.sT"><span class="id" title="variable">sT</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#PmapSub.p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#PmapSub"><span class="id" title="section">PmapSub</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqPmapSub"><span class="id" title="section">EqPmapSub</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="EqPmapSub.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="EqPmapSub.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a>) (<a name="EqPmapSub.sT"><span class="id" title="variable">sT</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.seq.html#p"><span class="id" title="variable">p</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="EqPmapSub.insT"><span class="id" title="variable">insT</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmapSub.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmapSub.sT"><span class="id" title="variable">sT</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_pmap_sub"><span class="id" title="lemma">mem_pmap_sub</span></a> <span class="id" title="var">s</span> <span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</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.seq.html#EqPmapSub.insT"><span class="id" title="variable">insT</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</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.seq.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pmap_sub_uniq"><span class="id" title="lemma">pmap_sub_uniq</span></a> <span class="id" title="var">s</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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#pmap"><span class="id" title="definition">pmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqPmapSub.insT"><span class="id" title="variable">insT</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#EqPmapSub"><span class="id" title="section">EqPmapSub</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Index sequence
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="iota"><span class="id" title="definition">iota</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="var">n'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_iota"><span class="id" title="lemma">size_iota</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="iota_add"><span class="id" title="lemma">iota_add</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n2"><span class="id" title="variable">n2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n1"><span class="id" title="variable">n1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n2"><span class="id" title="variable">n2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="iota_addl"><span class="id" title="lemma">iota_addl</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m2"><span class="id" title="variable">m2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.ssrnat.html#addn"><span class="id" title="definition">addn</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m1"><span class="id" title="variable">m1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_iota"><span class="id" title="lemma">nth_iota</span></a> <span class="id" title="var">p</span> <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.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#p"><span class="id" title="variable">p</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_iota"><span class="id" title="lemma">mem_iota</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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="iota_uniq"><span class="id" title="lemma">iota_uniq</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</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#iota"><span class="id" title="definition">iota</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Making a sequence of a specific length, using indexes to compute items.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="MakeSeq"><span class="id" title="section">MakeSeq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="MakeSeq.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="MakeSeq.x0"><span class="id" title="variable">x0</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="mkseq"><span class="id" title="definition">mkseq</span></a> <span class="id" title="var">f</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MakeSeq.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.seq.html#f"><span class="id" title="variable">f</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.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_mkseq"><span class="id" title="lemma">size_mkseq</span></a> <span class="id" title="var">f</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mkseq"><span class="id" title="definition">mkseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_mkseq"><span class="id" title="lemma">eq_mkseq</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mkseq"><span class="id" title="definition">mkseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mkseq"><span class="id" title="definition">mkseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#g"><span class="id" title="variable">g</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_mkseq"><span class="id" title="lemma">nth_mkseq</span></a> <span class="id" title="var">f</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#MakeSeq.x0"><span class="id" title="variable">x0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mkseq"><span class="id" title="definition">mkseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mkseq_nth"><span class="id" title="lemma">mkseq_nth</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#mkseq"><span class="id" title="definition">mkseq</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.seq.html#MakeSeq.x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</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.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#MakeSeq"><span class="id" title="section">MakeSeq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="MakeEqSeq"><span class="id" title="section">MakeEqSeq</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="MakeEqSeq.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">Lemma</span> <a name="mkseq_uniq"><span class="id" title="lemma">mkseq_uniq</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MakeEqSeq.T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#mkseq"><span class="id" title="definition">mkseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_eq_iotaP"><span class="id" title="lemma">perm_eq_iotaP</span></a> {<span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#MakeEqSeq.T"><span class="id" title="variable">T</span></a>} <span class="id" title="var">x0</span> (<span class="id" title="var">It</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> 0 (<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>)) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">Is</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Is"><span class="id" title="variable">Is</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#It"><span class="id" title="variable">It</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x0"><span class="id" title="variable">x0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#Is"><span class="id" title="variable">Is</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#MakeEqSeq"><span class="id" title="section">MakeEqSeq</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FoldRight"><span class="id" title="section">FoldRight</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="FoldRight.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="FoldRight.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>) (<a name="FoldRight.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>) (<a name="FoldRight.z0"><span class="id" title="variable">z0</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="foldr"><span class="id" title="definition">foldr</span></a> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRight.f"><span class="id" title="variable">f</span></a> <span class="id" title="var">x</span> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <span class="id" title="var">s'</span>) <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRight.z0"><span class="id" title="variable">z0</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRight"><span class="id" title="section">FoldRight</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FoldRightComp"><span class="id" title="section">FoldRightComp</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="FoldRightComp.T1"><span class="id" title="variable">T1</span></a> <a name="FoldRightComp.T2"><span class="id" title="variable">T2</span></a> : <span class="id" title="keyword">Type</span>) (<a name="FoldRightComp.h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="FoldRightComp.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>) (<a name="FoldRightComp.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.T2"><span class="id" title="variable">T2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>) (<a name="FoldRightComp.z0"><span class="id" title="variable">z0</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="foldr_cat"><span class="id" title="lemma">foldr_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.z0"><span class="id" title="variable">z0</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.z0"><span class="id" title="variable">z0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="foldr_map"><span class="id" title="lemma">foldr_map</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.z0"><span class="id" title="variable">z0</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.seq.html#FoldRightComp.h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> <span class="id" title="var">z</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#FoldRightComp.z0"><span class="id" title="variable">z0</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#FoldRightComp"><span class="id" title="section">FoldRightComp</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Quick characterization of the null sequence.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="sumn"><span class="id" title="definition">sumn</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#addn"><span class="id" title="definition">addn</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sumn_nseq"><span class="id" title="lemma">sumn_nseq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <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#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sumn_cat"><span class="id" title="lemma">sumn_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><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#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sumn_count"><span class="id" title="lemma">sumn_count</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<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#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sumn_rcons"><span class="id" title="lemma">sumn_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <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#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sumn_rev"><span class="id" title="lemma">sumn_rev</span></a> <span class="id" title="var">s</span> : <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#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="natnseq0P"><span class="id" title="lemma">natnseq0P</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</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.seq.html#s"><span class="id" title="variable">s</span></a>) 0) (<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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0).<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FoldLeft"><span class="id" title="section">FoldLeft</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="FoldLeft.T"><span class="id" title="variable">T</span></a> <a name="FoldLeft.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>) (<a name="FoldLeft.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="foldl"><span class="id" title="definition">foldl</span></a> <span class="id" title="var">z</span> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#foldl"><span class="id" title="definition">foldl</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#FoldLeft.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <span class="id" title="var">x</span>) <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="foldl_rev"><span class="id" title="lemma">foldl_rev</span></a> <span class="id" title="var">z</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#foldl"><span class="id" title="definition">foldl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> <span class="id" title="var">z</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#FoldLeft.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="foldl_cat"><span class="id" title="lemma">foldl_cat</span></a> <span class="id" title="var">z</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#foldl"><span class="id" title="definition">foldl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#foldl"><span class="id" title="definition">foldl</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldl"><span class="id" title="definition">foldl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#FoldLeft"><span class="id" title="section">FoldLeft</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Scan"><span class="id" title="section">Scan</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="Scan.T1"><span class="id" title="variable">T1</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Scan.x1"><span class="id" title="variable">x1</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T1"><span class="id" title="variable">T1</span></a>) (<a name="Scan.T2"><span class="id" title="variable">T2</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Scan.x2"><span class="id" title="variable">x2</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#T2"><span class="id" title="variable">T2</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="Scan.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.T2"><span class="id" title="variable">T2</span></a>) (<a name="Scan.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.T2"><span class="id" title="variable">T2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.T1"><span class="id" title="variable">T1</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="pairmap"><span class="id" title="definition">pairmap</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.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#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> <span class="id" title="var">y</span> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_pairmap"><span class="id" title="lemma">size_pairmap</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pairmap_cat"><span class="id" title="lemma">pairmap_cat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_pairmap"><span class="id" title="lemma">nth_pairmap</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.x2"><span class="id" title="variable">x2</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.f"><span class="id" title="variable">f</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.seq.html#Scan.x1"><span class="id" title="variable">x1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">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.seq.html#Scan.x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="scanl"><span class="id" title="definition">scanl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.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#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <span class="id" title="keyword">let</span> <span class="id" title="var">x'</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="var">y</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.seq.html#x'"><span class="id" title="variable">x'</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x'"><span class="id" title="variable">x'</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_scanl"><span class="id" title="lemma">size_scanl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="scanl_cat"><span class="id" title="lemma">scanl_cat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldl"><span class="id" title="definition">foldl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_scanl"><span class="id" title="lemma">nth_scanl</span></a> <span class="id" title="var">s</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.x1"><span class="id" title="variable">x1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#foldl"><span class="id" title="definition">foldl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Scan.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="scanlK"><span class="id" title="lemma">scanlK</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Scan.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#Scan.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pairmapK"><span class="id" title="lemma">pairmapK</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Scan.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#Scan.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#pairmap"><span class="id" title="definition">pairmap</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#Scan"><span class="id" title="section">Scan</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Zip"><span class="id" title="section">Zip</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="Zip.S"><span class="id" title="variable">S</span></a> <a name="Zip.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="zip"><span class="id" title="definition">zip</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.seq.html#Zip.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Zip.T"><span class="id" title="variable">T</span></a>) {<span class="id" title="keyword">struct</span> <span class="id" title="var">t</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>, <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span>, <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">t'</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">y</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <span class="id" title="var">s'</span> <span class="id" title="var">t'</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="unzip1"><span class="id" title="definition">unzip1</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/8.8.0/stdlib//Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Zip.S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Zip.T"><span class="id" title="variable">T</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="unzip2"><span class="id" title="definition">unzip2</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/8.8.0/stdlib//Coq.Init.Datatypes.html#snd"><span class="id" title="definition">snd</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Zip.S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Zip.T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="zip_unzip"><span class="id" title="lemma">zip_unzip</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#unzip1"><span class="id" title="definition">unzip1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#unzip2"><span class="id" title="definition">unzip2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="unzip1_zip"><span class="id" title="lemma">unzip1_zip</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#unzip1"><span class="id" title="definition">unzip1</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="unzip2_zip"><span class="id" title="lemma">unzip2_zip</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#unzip2"><span class="id" title="definition">unzip2</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size1_zip"><span class="id" title="lemma">size1_zip</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size2_zip"><span class="id" title="lemma">size2_zip</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#t"><span class="id" title="variable">t</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_zip"><span class="id" title="lemma">size_zip</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#minn"><span class="id" title="definition">minn</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.seq.html#s"><span class="id" title="variable">s</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.seq.html#t"><span class="id" title="variable">t</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="zip_cat"><span class="id" title="lemma">zip_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">t1</span> <span class="id" title="var">t2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t2"><span class="id" title="variable">t2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t2"><span class="id" title="variable">t2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_zip"><span class="id" title="lemma">nth_zip</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">i</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><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.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_zip_cond"><span class="id" title="lemma">nth_zip_cond</span></a> <span class="id" title="var">p</span> <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">i</span> :<br/>
+&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><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.seq.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><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.seq.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="zip_rcons"><span class="id" title="lemma">zip_rcons</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">z1</span> <span class="id" title="var">z2</span> :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z1"><span class="id" title="variable">z1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z2"><span class="id" title="variable">z2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#z1"><span class="id" title="variable">z1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z2"><span class="id" title="variable">z2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_zip"><span class="id" title="lemma">rev_zip</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#zip"><span class="id" title="definition">zip</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Zip"><span class="id" title="section">Zip</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="Flatten"><span class="id" title="section">Flatten</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="Flatten.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<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.seq.html#Flatten.T"><span class="id" title="variable">T</span></a>) (<span class="id" title="var">ss</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</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.seq.html#Flatten.T"><span class="id" title="variable">T</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="flatten"><span class="id" title="definition">flatten</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</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.seq.html#Flatten.T"><span class="id" title="variable">T</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="shape"><span class="id" title="definition">shape</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.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Flatten.T"><span class="id" title="variable">T</span></a>).<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="reshape"><span class="id" title="definition">reshape</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">s</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">sh'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <span class="id" title="var">sh'</span> (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="flatten_index"><span class="id" title="definition">flatten_index</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">r</span> <span class="id" title="var">c</span> := <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#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="reshape_index"><span class="id" title="definition">reshape_index</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#find"><span class="id" title="definition">find</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> 0) (<a class="idref" href="mathcomp.ssreflect.seq.html#scanl"><span class="id" title="definition">scanl</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#subn"><span class="id" title="definition">subn</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="reshape_offset"><span class="id" title="definition">reshape_offset</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><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#take"><span class="id" title="definition">take</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_flatten"><span class="id" title="lemma">size_flatten</span></a> <span class="id" title="var">ss</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</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.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flatten_cat"><span class="id" title="lemma">flatten_cat</span></a> <span class="id" title="var">ss1</span> <span class="id" title="var">ss2</span> : <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#ss1"><span class="id" title="variable">ss1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss2"><span class="id" title="variable">ss2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#ss1"><span class="id" title="variable">ss1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</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.seq.html#ss2"><span class="id" title="variable">ss2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_reshape"><span class="id" title="lemma">size_reshape</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#sh"><span class="id" title="variable">sh</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_reshape"><span class="id" title="lemma">nth_reshape</span></a> (<span class="id" title="var">sh</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) <span class="id" title="var">l</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#l"><span class="id" title="variable">l</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</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#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a>)) <a class="idref" href="mathcomp.ssreflect.seq.html#l"><span class="id" title="variable">l</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flattenK"><span class="id" title="lemma">flattenK</span></a> <span class="id" title="var">ss</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</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.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="reshapeKr"><span class="id" title="lemma">reshapeKr</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="reshapeKl"><span class="id" title="lemma">reshapeKl</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#08fe8636f4b45ae6787c490d19de1366"><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#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flatten_rcons"><span class="id" title="lemma">flatten_rcons</span></a> <span class="id" title="var">ss</span> <span class="id" title="var">s</span> : <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#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#ss"><span class="id" title="variable">ss</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flatten_seq1"><span class="id" title="lemma">flatten_seq1</span></a> <span class="id" title="var">s</span> : <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#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="count_flatten"><span class="id" title="lemma">count_flatten</span></a> <span class="id" title="var">ss</span> <span class="id" title="var">P</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</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.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count"><span class="id" title="definition">count</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="filter_flatten"><span class="id" title="lemma">filter_flatten</span></a> <span class="id" title="var">ss</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#Flatten.T"><span class="id" title="variable">T</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</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.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_flatten"><span class="id" title="lemma">rev_flatten</span></a> <span class="id" title="var">ss</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</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.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#rev"><span class="id" title="definition">rev</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.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_shape"><span class="id" title="lemma">nth_shape</span></a> <span class="id" title="var">ss</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> 0 (<a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="shape_rev"><span class="id" title="lemma">shape_rev</span></a> <span class="id" title="var">ss</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="eq_from_flatten_shape"><span class="id" title="lemma">eq_from_flatten_shape</span></a> <span class="id" title="var">ss1</span> <span class="id" title="var">ss2</span> :<br/>
+&nbsp;&nbsp;<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#ss1"><span class="id" title="variable">ss1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#ss2"><span class="id" title="variable">ss2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss1"><span class="id" title="variable">ss1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss2"><span class="id" title="variable">ss2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss1"><span class="id" title="variable">ss1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss2"><span class="id" title="variable">ss2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="rev_reshape"><span class="id" title="lemma">rev_reshape</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#rev"><span class="id" title="definition">rev</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#rev"><span class="id" title="definition">rev</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="reshape_rcons"><span class="id" title="lemma">reshape_rcons</span></a> <span class="id" title="var">s</span> <span class="id" title="var">sh</span> <span class="id" title="var">n</span> (<span class="id" title="var">m</span> := <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#sh"><span class="id" title="variable">sh</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#take"><span class="id" title="definition">take</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>)) (<a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flatten_indexP"><span class="id" title="lemma">flatten_indexP</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">r</span> <span class="id" title="var">c</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#flatten_index"><span class="id" title="definition">flatten_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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#sh"><span class="id" title="variable">sh</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="reshape_indexP"><span class="id" title="lemma">reshape_indexP</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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.seq.html#sh"><span class="id" title="variable">sh</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="reshape_offsetP"><span class="id" title="lemma">reshape_offsetP</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">i</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</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#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_offset"><span class="id" title="definition">reshape_offset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="reshape_indexK"><span class="id" title="lemma">reshape_indexK</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">i</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#flatten_index"><span class="id" title="definition">flatten_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape_offset"><span class="id" title="definition">reshape_offset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flatten_indexKl"><span class="id" title="lemma">flatten_indexKl</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">r</span> <span class="id" title="var">c</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#flatten_index"><span class="id" title="definition">flatten_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flatten_indexKr"><span class="id" title="lemma">flatten_indexKr</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">r</span> <span class="id" title="var">c</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_offset"><span class="id" title="definition">reshape_offset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#flatten_index"><span class="id" title="definition">flatten_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c"><span class="id" title="variable">c</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="nth_flatten"><span class="id" title="lemma">nth_flatten</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">ss</span> <span class="id" title="var">i</span> (<span class="id" title="var">r</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x0"><span class="id" title="variable">x0</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.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#x0"><span class="id" title="variable">x0</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.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r"><span class="id" title="variable">r</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape_offset"><span class="id" title="definition">reshape_offset</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#shape"><span class="id" title="definition">shape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#i"><span class="id" title="variable">i</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="reshape_leq"><span class="id" title="lemma">reshape_leq</span></a> <span class="id" title="var">sh</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span><br/>
+&nbsp;&nbsp;(<span class="id" title="var">r1</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i1"><span class="id" title="variable">i1</span></a>) (<span class="id" title="var">c1</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_offset"><span class="id" title="definition">reshape_offset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i1"><span class="id" title="variable">i1</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="var">r2</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_index"><span class="id" title="definition">reshape_index</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i2"><span class="id" title="variable">i2</span></a>) (<span class="id" title="var">c2</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#reshape_offset"><span class="id" title="definition">reshape_offset</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i2"><span class="id" title="variable">i2</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#i2"><span class="id" title="variable">i2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#r1"><span class="id" title="variable">r1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r2"><span class="id" title="variable">r2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#r1"><span class="id" title="variable">r1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#r2"><span class="id" title="variable">r2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#c1"><span class="id" title="variable">c1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c2"><span class="id" title="variable">c2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#Flatten"><span class="id" title="section">Flatten</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_flatten"><span class="id" title="lemma">map_flatten</span></a> <span class="id" title="var">S</span> <span class="id" title="var">T</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#S"><span class="id" title="variable">S</span></a>) <span class="id" title="var">ss</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</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.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.seq.html#map"><span class="id" title="definition">map</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.seq.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sumn_flatten"><span class="id" title="lemma">sumn_flatten</span></a> (<span class="id" title="var">ss</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>)) :<br/>
+&nbsp;&nbsp;<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#flatten"><span class="id" title="definition">flatten</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ss"><span class="id" title="variable">ss</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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> <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#ss"><span class="id" title="variable">ss</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="map_reshape"><span class="id" title="lemma">map_reshape</span></a> <span class="id" title="var">T</span> <span class="id" title="var">S</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#S"><span class="id" title="variable">S</span></a>) <span class="id" title="var">sh</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</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.seq.html#f"><span class="id" title="variable">f</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#reshape"><span class="id" title="definition">reshape</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#sh"><span class="id" title="variable">sh</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.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="EqFlatten"><span class="id" title="section">EqFlatten</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="EqFlatten.S"><span class="id" title="variable">S</span></a> <a name="EqFlatten.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">Lemma</span> <a name="flattenP"><span class="id" title="lemma">flattenP</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</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.seq.html#EqFlatten.T"><span class="id" title="variable">T</span></a>)) <span class="id" title="var">x</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">s</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><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.seq.html#A"><span class="id" title="variable">A</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="flatten_mapP"><span class="id" title="lemma">flatten_mapP</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqFlatten.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.seq.html#EqFlatten.T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">s</span> <span class="id" title="var">y</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><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.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.seq.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.seq.html#EqFlatten"><span class="id" title="section">EqFlatten</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="perm_undup_count"><span class="id" title="lemma">perm_undup_count</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">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.seq.html#T"><span class="id" title="variable">T</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</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.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</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.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">&lt;-</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#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#b7adbae1ad6b5f8e6d4ef64ae286f319"><span class="id" title="notation">]</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="AllPairs"><span class="id" title="section">AllPairs</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="AllPairs.S"><span class="id" title="variable">S</span></a> <a name="AllPairs.T"><span class="id" title="variable">T</span></a> <a name="AllPairs.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>) (<a name="AllPairs.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<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.seq.html#AllPairs.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#AllPairs.T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="allpairs"><span class="id" title="definition">allpairs</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</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.seq.html#AllPairs.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>)) <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="size_allpairs"><span class="id" title="lemma">size_allpairs</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><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.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><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.seq.html#t"><span class="id" title="variable">t</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="allpairs_cat"><span class="id" title="lemma">allpairs_cat</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">s2</span> <span class="id" title="var">t</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a>) <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#AllPairs"><span class="id" title="section">AllPairs</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">&quot;</span></a>[ 'seq' E | i &lt;- s , j &lt;- t ]" := (<a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> ⇒ <span class="id" title="var">E</span>) <span class="id" title="var">s</span> <span class="id" title="var">t</span>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">i</span> <span class="id" title="var">ident</span>, <span class="id" title="var">j</span> <span class="id" title="var">ident</span>,<br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="var">format</span> "[ '[hv' 'seq' E '/ ' | i &lt;- s , '/ ' j &lt;- t ] ']'")<br/>
+&nbsp;&nbsp;&nbsp;: <span class="id" title="var">seq_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="caf882c61138070de5fba274680fb504"><span class="id" title="notation">&quot;</span></a>[ 'seq' E | i : T &lt;- s , j : U &lt;- t ]" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> (<span class="id" title="keyword">fun</span> (<span class="id" title="var">i</span> : <span class="id" title="var">T</span>) (<span class="id" title="var">j</span> : <span class="id" title="var">U</span>) ⇒ <span class="id" title="var">E</span>) <span class="id" title="var">s</span> <span class="id" title="var">t</span>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">i</span> <span class="id" title="var">ident</span>, <span class="id" title="var">j</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">Section</span> <a name="EqAllPairs"><span class="id" title="section">EqAllPairs</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="EqAllPairs.S"><span class="id" title="variable">S</span></a> <a name="EqAllPairs.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/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">R</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">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.seq.html#EqAllPairs.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="allpairsP"><span class="id" title="lemma">allpairsP</span></a> <span class="id" title="var">R</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">z</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">p</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">[/\</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">]</span></a>)<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.seq.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="mem_allpairs"><span class="id" title="lemma">mem_allpairs</span></a> <span class="id" title="var">R</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">s1</span> <span class="id" title="var">t1</span> <span class="id" title="var">s2</span> <span class="id" title="var">t2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t2"><span class="id" title="variable">t2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s1"><span class="id" title="variable">s1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s2"><span class="id" title="variable">s2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t2"><span class="id" title="variable">t2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="allpairs_catr"><span class="id" title="lemma">allpairs_catr</span></a> <span class="id" title="var">R</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">s</span> <span class="id" title="var">t1</span> <span class="id" title="var">t2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t2"><span class="id" title="variable">t2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t2"><span class="id" title="variable">t2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="allpairs_uniq"><span class="id" title="lemma">allpairs_uniq</span></a> <span class="id" title="var">R</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">s</span> <span class="id" title="var">t</span> :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<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#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</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.seq.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">,</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.seq.html#c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#c212a7b762468fa83ed6c48a6ef21410"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#prod_curry"><span class="id" title="definition">prod_curry</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<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#allpairs"><span class="id" title="definition">allpairs</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#t"><span class="id" title="variable">t</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.seq.html#EqAllPairs"><span class="id" title="section">EqAllPairs</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