diff options
| author | Yves Bertot | 2020-04-01 13:20:32 +0200 |
|---|---|---|
| committer | GitHub | 2020-04-01 13:20:32 +0200 |
| commit | e44b131a6c01c9cac13b48b07e3ee4d7f8e8fb6c (patch) | |
| tree | 5bdd7080085bc2d9cd4bc2c778fdce1e3d48587d /mathcomp/ssreflect/seq.v | |
| parent | 06048e6125b430133e3eb2102e166545f5f804f2 (diff) | |
| parent | 5f1229849aa90f64cf0126f47c622152383ba118 (diff) | |
Merge pull request #429 from pi8027/extend-nat-comparison
Extend comparison predicates for nat with minn and maxn and reorder arguments of those in order.v
Diffstat (limited to 'mathcomp/ssreflect/seq.v')
| -rw-r--r-- | mathcomp/ssreflect/seq.v | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/mathcomp/ssreflect/seq.v b/mathcomp/ssreflect/seq.v index f73c119..ed7c1dd 100644 --- a/mathcomp/ssreflect/seq.v +++ b/mathcomp/ssreflect/seq.v @@ -890,9 +890,7 @@ Lemma all_rev a s : all a (rev s) = all a s. Proof. by rewrite !all_count count_rev size_rev. Qed. Lemma rev_nseq n x : rev (nseq n x) = nseq n x. -Proof. -by elim: n => [// | n IHn]; rewrite -{1}(addn1 n) nseq_addn rev_cat IHn. -Qed. +Proof. by elim: n => // n IHn; rewrite -{1}(addn1 n) nseq_addn rev_cat IHn. Qed. End Sequences. @@ -1759,14 +1757,14 @@ Proof. exact (can_inj rotrK). Qed. Lemma take_rev s : take n0 (rev s) = rev (drop (size s - n0) s). Proof. set m := _ - n0; rewrite -[s in LHS](cat_take_drop m) rev_cat take_cat. -rewrite size_rev size_drop -minnE minnC ltnNge geq_minl [in take m s]/m /minn. +rewrite size_rev size_drop -minnE minnC leq_min ltnn /m. by have [_|/eqnP->] := ltnP; rewrite ?subnn take0 cats0. Qed. Lemma drop_rev s : drop n0 (rev s) = rev (take (size s - n0) s). Proof. set m := _ - n0; rewrite -[s in LHS](cat_take_drop m) rev_cat drop_cat. -rewrite size_rev size_drop -minnE minnC ltnNge geq_minl /= /m /minn. +rewrite size_rev size_drop -minnE minnC leq_min ltnn /m. by have [_|/eqnP->] := ltnP; rewrite ?take0 // subnn drop0. Qed. @@ -2434,11 +2432,10 @@ Proof. by move/subnKC <-; rewrite addSnnS iota_add nth_cat size_iota ltnn subnn. Qed. -Lemma mem_iota m n i : (i \in iota m n) = (m <= i) && (i < m + n). +Lemma mem_iota m n i : (i \in iota m n) = (m <= i < m + n). Proof. elim: n m => [|n IHn] /= m; first by rewrite addn0 ltnNge andbN. -rewrite -addSnnS leq_eqVlt in_cons eq_sym. -by case: eqP => [->|_]; [rewrite leq_addr | apply: IHn]. +by rewrite in_cons IHn addnS ltnS; case: ltngtP => // ->; rewrite leq_addr. Qed. Lemma iota_uniq m n : uniq (iota m n). @@ -2446,17 +2443,16 @@ Proof. by elim: n m => //= n IHn m; rewrite mem_iota ltnn /=. Qed. Lemma take_iota k m n : take k (iota m n) = iota m (minn k n). Proof. -rewrite /minn; case: ltnP => [lt_k_n|le_n_k]. - by elim: k n lt_k_n m => [|k IHk] [|n]//= H m; rewrite IHk. +have [lt_k_n|le_n_k] := ltnP. + by elim: k n lt_k_n m => [|k IHk] [|n] //= H m; rewrite IHk. by apply: take_oversize; rewrite size_iota. Qed. Lemma drop_iota k m n : drop k (iota m n) = iota (m + k) (n - k). Proof. -by elim: k m n => [|k IHk] m [|n]//=; rewrite ?addn0// IHk addSn addnS subSS. +by elim: k m n => [|k IHk] m [|n] //=; rewrite ?addn0 // IHk addnS subSS. Qed. - (* Making a sequence of a specific length, using indexes to compute items. *) Section MakeSeq. |
