@@ -144,6 +144,13 @@ Lemma fact_look_up1S r k n p l :
144144 fact_look_up1 r k (9 + n1)%num (362880 + p)%num l9.
145145Proof . by []. Qed .
146146
147+ Lemma N362880 : N.to_nat (362880) = 9 `!.
148+ Proof .
149+ rewrite -[362880%num]/(9 * (8 * (7 * (720))))%num.
150+ rewrite 3!N2Nat.inj_mul 3!factS.
151+ congr ((_ * (_ * (_ * _)%coq_nat)%coq_nat)%coq_nat)%coq_nat.
152+ Qed .
153+
147154Lemma mem_fact_look_up1 r k n p (l : seq N) :
148155 {subset l <= (fact_look_up1 r k n p l)}.
149156Proof .
@@ -268,13 +275,7 @@ case=> [d9E|].
268275 rewrite nE mE1 divnMDl ?expn_gt0 //.
269276 rewrite mE divn_small; last by rewrite ltn_mod expn_gt0.
270277 by rewrite addn0 mulnC.
271- rewrite nE sum_factMD // -p1E N2Nat.inj_add.
272- have -> : N.to_nat (362880) = N.to_nat (9 * (8 * (7 * (720)))).
273- by congr N.to_nat.
274- rewrite [N.to_nat (9 * _)]N2Nat.inj_mul.
275- rewrite [N.to_nat (8 * _)]N2Nat.inj_mul.
276- rewrite [N.to_nat (7 * _)]N2Nat.inj_mul.
277- rewrite 3!factS.
278+ rewrite nE sum_factMD // -p1E N2Nat.inj_add N362880.
278279 by congr ((_ * (_ * (_ * _)%coq_nat)%coq_nat)%coq_nat + _)%coq_nat.
279280move=> d d1E.
280281suff : d1 < 10 by rewrite d1E.
@@ -344,11 +345,7 @@ case => [d8E mE|].
344345 by rewrite /sum_fact -[ndigits _ _]/1 big_ord_recr big_ord0.
345346case => [d9E mE|].
346347 apply: fact_look_up1_spec => //.
347- rewrite /sum_fact.
348- have -> : N.to_nat (362880) = N.to_nat (9 * (8 * (7 * (720)))).
349- by congr N.to_nat.
350- rewrite [N.to_nat (9 * _)]N2Nat.inj_mul.
351- rewrite [N.to_nat (8 * _)]N2Nat.inj_mul.
348+ rewrite /sum_fact N362880.
352349 rewrite -[ndigits _ _]/1 big_ord_recr big_ord0.
353350 rewrite [digitn _ _ _]/= [RHS]add0n 2!factS.
354351 by congr (_ * (_ * _)%coq_nat)%coq_nat.
@@ -431,7 +428,7 @@ Lemma Nfact_small_spec d :
431428 d < 10 -> Nfact_small (N.of_nat d) = N.of_nat (d `!).
432429Proof .
433430case: d => [//|] [//|] [//|] [//|] [//|] [//|] [//|] [//|] [//|] [_|//].
434- by rewrite 3!factS 3!Nat2N.inj_mul .
431+ by rewrite -N362880 N2Nat.id .
435432Qed .
436433
437434Fixpoint Nsum_fact10_aux (n : positive) p :=
593590Definition cend_in_cycle n m :=
594591 if (n <? m)%num then ~~ check_loop n 60 else false.
595592
596-
597593Lemma cend_in_cycleN_spec n m :
598594 ~~ cend_in_cycle n m -> (n <? m)%num ->
599595 exists k,
0 commit comments