Skip to content

Commit 68808a1

Browse files
committed
port to work on Coq 8.10 with MathComp 1.9 or 1.10
1 parent 80413dc commit 68808a1

File tree

4 files changed

+41
-39
lines changed

4 files changed

+41
-39
lines changed

theories/fibm.v

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1512,7 +1512,7 @@ elim:n; first by rewrite !big_ord_recr !big_ord0 /= //.
15121512
move =>n [He Ho]; split.
15131513
rewrite big_ord_recl muln0 add0n doubleS fibSS - Ho.
15141514
have ->: fib n.*2 = \sum_(i < n.+1) 'C(n, i.+1) * fib i.+1.
1515-
rewrite -He big_ord_recl big_ord_recr muln0 add0n bin_small //.
1515+
by rewrite -He big_ord_recl big_ord_recr muln0 add0n bin_small //= addn0.
15161516
by rewrite addnC -big_split; apply:eq_bigr=> i _ /=; rewrite - mulnDl/= binS.
15171517
rewrite doubleS fibSS fibSS -Ho - He big_ord_recl bin0 muln1 /=.
15181518
transitivity (\sum_(i < n.+1) 'C(n, i) * fib (bump 0 i).+1
@@ -1523,7 +1523,6 @@ rewrite (big_ord_recr (n.+1)) bin_small //= addn0;congr addn.
15231523
by rewrite -big_split; apply:eq_bigr=> i _ /=; rewrite - mulnDr/= fibSS.
15241524
Qed.
15251525

1526-
15271526
Lemma fib_lt_lucas n: n != 0 -> fib n <= lucas n ?= iff (n==1).
15281527
Proof.
15291528
move => h; rewrite (lucas_fib h); move: h; case:n => // n _.
@@ -1602,7 +1601,7 @@ Proof.
16021601
case:j; first by rewrite /= addn0 subn0 mul2n addnn.
16031602
move => j;rewrite leq_eqVlt; case/orP => ljk.
16041603
rewrite (eqP ljk) mulnC - fib_double_lucas addnn subnn fib0.
1605-
by case: odd => //; rewrite subn0.
1604+
by case: odd => //; rewrite ?subn0 ?addn0.
16061605
have hb: 0 < fib (k - j.+1) by rewrite fib_gt0 //subn_gt0.
16071606
have ha:=(fib_sub (ltnW ljk)).
16081607
rewrite mulnC lucas_fib // (addnC k) fib_add // mulnDr addnC.
@@ -1620,7 +1619,7 @@ Proof.
16201619
case:j; first by rewrite leqn0 => /eqP ->.
16211620
move => j;rewrite leq_eqVlt; case/orP => ljk.
16221621
rewrite (eqP ljk) mulnC - fib_double_lucas addnn subnn fib0.
1623-
by case:odd; rewrite ? subn0.
1622+
by case: odd; rewrite ?subn0 ?addn0.
16241623
have hb: 0 < fib (j.+1 - k) by rewrite fib_gt0 //subn_gt0.
16251624
rewrite addnC fib_add // lucas_fib // mulnDl // addnC.
16261625
move: (fib_sub (ltnW ljk))=> ha; rewrite ha /=;move: ha; case:odd => ha.
@@ -1651,7 +1650,7 @@ Lemma lucas_lucas2 p n: p <= n ->
16511650
(if (odd p) then addn else subn) (lucas (n + p)) (lucas (n - p)).
16521651
Proof.
16531652
elim: p {-2} p (leqnn p) => [p|p IHp p0].
1654-
by rewrite leqn0; move/eqP=>-> /=; rewrite /= addn0 subn0 subnn.
1653+
by rewrite leqn0; move/eqP=>-> /=; rewrite /= addn0 subn0 subnn muln0.
16551654
rewrite leq_eqVlt; case/orP=> [|Hn1]; last by apply: IHp; rewrite - ltnS.
16561655
move /eqP => -> lnp.
16571656
case wwa: (p == 0).
@@ -3447,7 +3446,7 @@ by move => n H; rewrite /= mkseq_succ mkseq_succ !sum_rcons doubleS H.
34473446
Qed.
34483447

34493448
Lemma Zeckp_fib n: Zeckp (fib n.+2) = fib n.+1.
3450-
Proof. by rewrite /Zeckp Zeck_fib /Zeck_valp big_cons big_nil. Qed.
3449+
Proof. by rewrite /Zeckp Zeck_fib /Zeck_valp big_cons big_nil addn0. Qed.
34513450

34523451
Lemma Zeck_fib1 n: Zeck (fib n.*2.+1).-1 = rev (mkseq double n).
34533452
Proof.
@@ -5242,7 +5241,7 @@ Proof.
52425241
move => h.
52435242
have H1: Zeck_li n != 0.
52445243
by move: h; rewrite/ Zeck_li;case : (last n (Zeck n)).
5245-
by rewrite (FR_prop0 H1) (Zeckp_prop3b H1) - (Zeckp_prop4b h) FA_prop0bis.
5244+
by rewrite (FR_prop0 H1) (Zeckp_prop3b H1) - (Zeckp_prop4b h) FA_prop0bis ?addn0.
52465245
Qed.
52475246

52485247
Lemma FR_prop4 m: llen 1 (Zeck_li m) ->FR (Zeckp m).+1 = FR (Zeckp (Zeckp m)).
@@ -5331,7 +5330,7 @@ Proof.
53315330
move => sa sb; rewrite /s.
53325331
move:(Zeck_zeck_val m) (Zeck_ggen m) sb; rewrite /Zeck_li.
53335332
set l := (Zeck m) => qa qb; case => qc.
5334-
rewrite /l sa qc /= !Zeckp_0 Zeck_0 !Zeckp_fib !Zeck_fib Zeckv_nil.
5333+
rewrite /l sa qc /= !Zeckp_0 Zeck_0 !Zeckp_fib !Zeck_fib Zeckv_nil addn0.
53355334
by split => // /prednK {1} <-; rewrite Zeck_fib.
53365335
have lp0: 1 < last m l by apply: (leq_trans _ qc); rewrite !ltnS leq0n.
53375336
move:(Zeck_li_prop2 (ltnW lp0)) => lp1.
@@ -5787,14 +5786,14 @@ Lemma FR_fib_sum4 i j : 5 <= j -> j.+2 <= i ->
57875786
FR(fib i + fib j + 2) = (i-j+1)./2 + (j-4)./2 * (i-j+2)./2.
57885787
Proof.
57895788
move => ha hb; have hc:=(subnK (ltn_trans (leqnn 4) ha)).
5790-
by rewrite (FR_fib_sum2 (leqnSn 2) ha hb) mul0n -subnDA.
5789+
by rewrite (FR_fib_sum2 (leqnSn 2) ha hb) mul0n -subnDA addn0.
57915790
Qed.
57925791

57935792
Lemma FR_fib_sum5 i: FR(fib (i + 4) + 1) = (i.+3)./2.
5794-
Proof. by rewrite (FR_fib_sum1 i (leqnn 2)). Qed.
5793+
Proof. by rewrite (FR_fib_sum1 i (leqnn 2)) mul0n addn0. Qed.
57955794

57965795
Lemma FR_fib_sum6 i: FR(fib (i + 5) + 2) = (i.+3)./2.
5797-
Proof. by rewrite (FR_fib_sum1 i (leqnSn 2)). Qed.
5796+
Proof. by rewrite (FR_fib_sum1 i (leqnSn 2)) addn0. Qed.
57985797

57995798
Lemma FR_fib_sum7 i: FR(fib (i + 6) + 3) = (i.+3)./2 + (i.+4)./2.
58005799
Proof. by rewrite (FR_fib_sum1 i) //= mul1n. Qed.

theories/sset3.v

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1010,7 +1010,6 @@ move => h; move:(set2_equipotent_aux h); set g := Lf _ _ _.
10101010
move =>[gp _ _]. apply: (equipotent_bp gp).
10111011
Qed.
10121012

1013-
Proof.
10141013
(** We have a partition of a set by selecting a subset and its complement *)
10151014

10161015
Definition partition_with_complement x j :=

theories/ssete7.v

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Proof. by rewrite mulnC -mul_bin_diag bin1 mulnC. Qed.
3333

3434
Lemma mul_Sm_binm_1 n p: n * 'C(n+p,p) = p.+1 * 'C(n+p,p.+1).
3535
Proof.
36-
case: n => [| n]; first by rewrite add0n mul0n bin_small//.
36+
case: n => [| n]; first by rewrite add0n mul0n bin_small // muln0.
3737
rewrite -binom_mn_n addSn -mul_bin_diag -mul_bin_diag binom_mn_n //.
3838
Qed.
3939

@@ -257,7 +257,7 @@ Lemma stir1_S n m : 'So(n.+1, m.+1) = n * 'So(n, m.+1) + 'So(n, m).
257257
Proof. done. Qed.
258258

259259
Lemma stir1_Sn1 n : 'So(n.+1,1) = n `!.
260-
Proof. by elim:n => // n Hr; rewrite stir1_S stir1_n0 Hr. Qed.
260+
Proof. by elim:n => // n Hr; rewrite stir1_S stir1_n0 Hr addn0. Qed.
261261

262262
Lemma stir_Sn1 n : 'St(n.+1,1) = 1.
263263
Proof. by elim:n => // n Hr; rewrite stirS Hr stirn0. Qed.
@@ -387,7 +387,7 @@ move:p; elim: n.
387387
move => n Hrec p.
388388
case (ltnP n.+1 p) => ltnp.
389389
move : (ltnp); rewrite - subn_eq0 => /eqP ->; rewrite nbsurjn0 big1 //.
390-
move => [i lin] _; rewrite bin_small //; apply: (leq_trans lin ltnp).
390+
move => [i lin] _; rewrite bin_small ?muln0 //. apply: (leq_trans lin ltnp).
391391
move: ltnp; case: p.
392392
move => _; rewrite subn0 nbsurj_nn - euler_sum; apply: eq_bigr.
393393
by move => i _; rewrite bin0 muln1.
@@ -415,7 +415,7 @@ Qed.
415415
(* Worpitzky *)
416416
Lemma euler_sum_pow k n : k ^n.+1 = \sum_(i<n.+1) 'Eu(n.+1,i) * 'C(k+i,n.+1).
417417
Proof.
418-
elim:n; first by rewrite big_ord_recl big_ord0 mul1n // addn0 bin1 //.
418+
elim:n; first by rewrite big_ord_recl big_ord0 mul1n // addn0 bin1 // addn0.
419419
move => n Hrec.
420420
rewrite big_ord_recl // addn0 eulern0 mul1n.
421421
transitivity (\sum_(i < n.+2) i.+1 * 'Eu(n.+1, i) * 'C(k + i, n.+2)
@@ -436,7 +436,7 @@ Lemma sum_pow_euler n k:
436436
Proof.
437437
move: k; elim :n.
438438
move => k;rewrite big_ord0 big1 // => [] [i lin] _ /=.
439-
by rewrite bin_small // add0n leqW //.
439+
by rewrite bin_small ?muln0 // add0n leqW //.
440440
move => n IHn k; rewrite big_ord_recr /= IHn euler_sum_pow - big_split /=.
441441
by apply: eq_bigr => i _; rewrite - mulnDr (addSn n) binS.
442442
Qed.
@@ -799,21 +799,21 @@ Definition br m p := \sum_(k<m.+1) 'C(m,k) * 'St(k,p).
799799
Lemma foo1 n: br n n = 'St(n.+1,n.+1).
800800
Proof.
801801
rewrite /br big_ord_recr /= binn 2!stir_nn big1 // => i _.
802-
by rewrite stir_small1.
802+
by rewrite stir_small1 ?muln0.
803803
Qed.
804804

805805

806806
Lemma foo2 n: br n.+1 n = 'St(n.+2,n.+1).
807807
Proof.
808808
rewrite /br 2!big_ord_recr /= binn mul1n big1; last first.
809-
by move => i _; rewrite stir_small1.
809+
by move => i _; rewrite stir_small1 ?muln0.
810810
by rewrite add0n stirS binSn 2!stir_nn.
811811
Qed.
812812

813813
Lemma foo3 n: br n.+2 n = 'St(n.+3,n.+1).
814814
Proof.
815815
rewrite /br 3!big_ord_recr /= binn mul1n big1; last first.
816-
by move => i ; rewrite stir_small1.
816+
by move => i ; rewrite stir_small1 ?muln0.
817817
rewrite add0n stirS binS binn mulnDl mul1n -addnA binSn stir_nn muln1.
818818
rewrite addnA addnA stir_Snn (_: 'C(n.+2, n) + 'C(n.+1, 2) = n.+1 *n.+1).
819819
rewrite - mulnDr stirS stir_nn muln1 stir_Snn //.
@@ -838,7 +838,8 @@ Lemma sum_nbsurj n k: \sum_(i<k.+1) 'Sj(k,i) * 'C(n,i) = n ^k.
838838
Proof.
839839
move:n; elim:k; first by move => n; rewrite big_ord_recr big_ord0 nbsurj00 bin0.
840840
move => k Hrec n; case:n.
841-
by rewrite expnS mul0n big1 // => [] [i _] _ /=; case i.
841+
rewrite expnS mul0n big1 //= => [] [i _] _ /=; case i => //.
842+
by move => n; have ->: 'C(0, n.+1) = 0 by []; rewrite muln0.
842843
move => n; rewrite expnS - Hrec big_ord_recl nbsurjn0 mul0n add0n.
843844
transitivity (n.+1 * \sum_(i < k.+1) (('Sj(k, i) + 'Sj(k, i.+1)) * 'C(n, i))).
844845
rewrite big_distrr; apply: eq_bigr; move => [i lik] _ //=.
@@ -859,7 +860,9 @@ Qed.
859860

860861
Lemma sum_pow n k: \sum_(i<n) i ^k = \sum_(i<k.+1) 'Sj(k,i) * 'C(n,i.+1).
861862
Proof.
862-
elim:n => [| n Hrec]; first by rewrite big_ord0 big1 //.
863+
elim:n => [| n Hrec].
864+
rewrite big_ord0 big1 //; case => i Hi _.
865+
by have ->: 'C(0,i.+1) = 0 by []; rewrite muln0.
863866
rewrite big_ord_recr /= - sum_nbsurj Hrec - big_split //.
864867
by apply: eq_bigr =>i _ /=; rewrite - mulnDr.
865868
Qed.
@@ -1350,15 +1353,15 @@ rewrite [X in _ = X] (_: _ = \sum_(i < n.*2.-1 | ~~ odd i) 'C(n, i)).
13501353
have -> : (m.+2).*2.-1 = m.+3 + ( (m.+2).*2.-1 - m.+3).
13511354
symmetry;apply: subnKC; rewrite 2! doubleS -pred_Sn 3! ltnS.
13521355
rewrite -addnn; apply : leq_addr.
1353-
rewrite big_split_ord /= [in X in _ = _ + X] big1 //.
1356+
rewrite big_split_ord /= [in X in _ = _ + X] big1 ?addn0 //.
13541357
move => i _; rewrite bin_small ? if_same //.
13551358
by rewrite 3!addSn 3! ltnS leq_addr.
13561359
transitivity (\sum_(i < n.*2 | odd i) 'C(n, i)).
13571360
rewrite big_mkcond [in X in _ = X] big_mkcond /=.
13581361
move: np; case :n => // m _.
13591362
have -> : (m.+1).*2 = m.+2 + ( (m.+1).*2 - m.+2).
13601363
symmetry;apply: subnKC; rewrite doubleS !ltnS -addnn; apply : leq_addr.
1361-
rewrite big_split_ord /= [in X in _ = _ + X] big1 //.
1364+
rewrite big_split_ord /= [in X in _ = _ + X] big1 ?addn0 //.
13621365
move => i _; rewrite bin_small ? if_same //.
13631366
by rewrite addnC ! addnS ! ltnS; apply : leq_addl.
13641367
transitivity (\sum_(i<n) ('C(n, i.*2.+1))).
@@ -1964,7 +1967,7 @@ Definition DP_Fcount (l:seq bool) := count_mem false l.
19641967
Definition DP_balanced l := (DP_Tcount l == DP_Fcount l).
19651968

19661969
Lemma DP_count l: DP_Tcount l + DP_Fcount l = size l.
1967-
Proof. by elim:l => // a l /= <-; case:a. Qed.
1970+
Proof. by elim:l => // a l /= <-; case:a; rewrite add1n //= add0n addnS. Qed.
19681971

19691972
Lemma DP_count' m n l: size l = m + n ->
19701973
(DP_Tcount l == m) = (DP_Fcount l == n).
@@ -2095,7 +2098,7 @@ Qed.
20952098

20962099
Lemma set_to_listK m (X: {set 'I_m}) : (list_to_set m (char_seq X)) = X.
20972100
Proof.
2098-
by apply/setP => i; rewrite inE char_seq_prop (val_inj (Ordinal (ltn_ord i)) i).
2101+
by apply/setP => i; rewrite inE char_seq_prop (@val_inj _ _ _ (Ordinal (ltn_ord i)) i).
20992102
Qed.
21002103

21012104
Lemma set_to_list_cardinal m (X: {set 'I_m}) :
@@ -3376,8 +3379,8 @@ rewrite big_ord_recl /= bin0 nder0 mul1n (bigID (fun i : 'I_n.+1 => odd i)) /=.
33763379
have ->: \sum_(i < n.+1 | odd i) 'C(n.+1, bump 0 i) * nder (bump 0 i) =
33773380
\sum_(i < n.+1 | odd i) 'C(n.+1,i.+1) +
33783381
\sum_(i < n.+1 | odd i) 'C(n.+1,i.+1) * ((i.+1) *(nder i)).
3379-
rewrite addnC -big_split /=.
3380-
by apply:eq_big=> //[[i lin]] /= oi; rewrite nderS' oi.
3382+
rewrite addnC -big_split /=.
3383+
by apply:eq_big=> //[[i lin]] /= oi; rewrite nderS' oi /bump add1n addnC mulnS.
33813384
rewrite 2! addnA.
33823385
have <-: 2^n = 1 + \sum_(i < n.+1 | odd i) 'C(n.+1, i.+1).
33833386
rewrite - (F25 np) big_mkcond big_ord_recl /= bin0 // -big_mkcond; congr addn.
@@ -3479,7 +3482,6 @@ move /eqP; case; rewrite - ffunP; move => t; rewrite /f0 ffunE.
34793482
by apply: val_inj; case: (g t); case.
34803483
Qed.
34813484

3482-
34833485
Lemma G3_e (m n: nat): #|[set f:Ftype m.+1 n | monomial_eq f ]|
34843486
= #|[set f:Ftype m n | monomial_le f ]|.
34853487
Proof.
@@ -3491,7 +3493,9 @@ have restr_pr1: forall f: T, monomial_eq f ->
34913493
rewrite -{1}le1 big_ord_recr /restr; congr( _ + _) =>//=.
34923494
by apply: congr_big => // i _ /=; rewrite ffunE.
34933495
have restr_pr2: forall f: T, monomial_eq f -> monomial_le (restr f).
3494-
move => f feq; rewrite /monomial_le {3} (restr_pr1 _ feq); apply: leq_addr.
3496+
move => f feq; rewrite /monomial_le; move: (restr_pr1 _ feq).
3497+
move: (\sum_(i < m) restr f i) => n0 Hn.
3498+
by rewrite Hn; apply: leq_addr.
34953499
have restr_inj: {in [pred f | (monomial_eq f)] &, injective restr}.
34963500
move => f1 f2.
34973501
rewrite !inE => meq1 meq2 sr;rewrite - ffunP => i.
@@ -3508,7 +3512,8 @@ apply:eq_card => f; rewrite in_set in_set; apply /imsetP.
35083512
case: ifP => lef; last first.
35093513
by move=> [x]; rewrite inE => meq fr; move:lef; rewrite fr restr_pr2.
35103514
move: (leq_subr (\sum_(i < m) f i) n); rewrite -ltnS => le2.
3511-
pose g := [ffun i:'I_(m.+1) => if (unlift ord_max i) is Some j then f j
3515+
pose g : {ffun ordinal_finType m.+1 -> ordinal_finType n.+1} :=
3516+
[ffun i:'I_(m.+1) => if (unlift ord_max i) is Some j then f j
35123517
else (Ordinal le2)].
35133518
have gi : forall i: 'I_m, g (widen_ord (leqnSn m) i) = f i.
35143519
move => i; rewrite /g ffunE.

theories/stern.v

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Unset Printing Implicit Defensive.
2222

2323
Import BinPos.
2424
Import GRing.Theory Num.Theory.
25+
Import PrimeDecompAux.
2526

2627
(*
2728
Warning: Overwriting previous delimiting key num in scope N_scope
@@ -373,13 +374,11 @@ suff H: forall m, odd m -> log2 m <= log2 (base2rev m).
373374
by rewrite (base2rev_oddI on) =>sa sb; apply /eqP; rewrite eqn_leq sa sb.
374375
move => m on; rewrite (oddE on) base2r_odd log2_Sdouble.
375376
by case:m./2 => // m1; rewrite - log2_pow; apply:leqn_log; apply leq_addr.
376-
Qed.
377-
377+
Qed.
378378

379379
Definition natnat_to_nat1 em := (2 ^ (em.1) * (em.2).*2.+1).-1.
380380
Definition natnat_to_nat1_inv n := elogn2 0 n n.
381381

382-
383382
Lemma natnat_to_nat1_bij: bijective natnat_to_nat1.
384383
Proof.
385384
have C1: cancel natnat_to_nat1_inv natnat_to_nat1.
@@ -544,7 +543,7 @@ Lemma nn_to_n_merge_ext l1 l2 k1 k2
544543
Proof.
545544
have Ha l: nn_to_n_merge l [::] = nn_to_n_merge1 l by case:l.
546545
have Hb a: delta 0 a = a by rewrite /delta sub0n subn0.
547-
have Hc a: delta a 0 = a by rewrite /delta sub0n subn0.
546+
have Hc a: delta a 0 = a by rewrite /delta sub0n subn0 addn0.
548547
have Hd a b: delta a (a+b) = b.
549548
rewrite /delta addKn.
550549
by move: (leq_addr b a); rewrite - subn_eq0 => /eqP -> //.
@@ -3068,7 +3067,7 @@ Lemma fuscj_0 m: Fuscj 0 m = fusc m.
30683067
Proof. by rewrite /Fuscj fusci_0. Qed.
30693068

30703069
Lemma fuscj_val n: Fuscj n 0 = fusc n.
3071-
Proof. by rewrite /Fuscj/Fusci mul0n mul1n //. Qed.
3070+
Proof. by rewrite /Fuscj/Fusci mul0n mul1n // addn0. Qed.
30723071

30733072
Lemma fuscj_even n m: Fuscj (n.*2) m = Fuscj n (m.*2).
30743073
Proof. by rewrite /Fuscj fusci_even fusc_even fusc_odd addnC. Qed.
@@ -4007,10 +4006,10 @@ Definition fuscN2 p := if p is (Npos p) then (fuscP2 p) else (0,1).
40074006
Lemma fuscN2_prop n:
40084007
fuscN2 (bin_of_nat n) = (fusc n, fusc n.+1).
40094008
Proof.
4010-
case: n => [// | n]; rewrite - {2 3}(bin_of_natK n.+1) - nat_of_succ_gt0 /=.
4009+
case: n => [// | n]; rewrite - {2 3}(bin_of_natK n.+1) - nat_of_succ_pos /=.
40114010
elim: (pos_of_nat _ _).
4012-
+ by move => p /= ->; rewrite /= !natTrecE fusc_even fusc_odd nat_of_succ_gt0.
4013-
+ by move => p /= ->; rewrite /= !natTrecE fusc_even fusc_odd nat_of_succ_gt0.
4011+
+ by move => p /= ->; rewrite /= !natTrecE fusc_even fusc_odd nat_of_succ_pos.
4012+
+ by move => p /= ->; rewrite /= !natTrecE fusc_even fusc_odd nat_of_succ_pos.
40144013
+ done.
40154014
Qed.
40164015

0 commit comments

Comments
 (0)