From mathcomp Require Import all_ssreflect. Section Nagoya2013. Definition Sk k n := \sum_(1<=i 1. Definition Tm n := \sum_(1<=k i _. by rewrite Sk1 muln1. rewrite big_mkord. congr subn. apply eq_bigr => i _. by rewrite !exp1n !muln1. Qed. Lemma Tm2 : Tm 2 = 3^m - 3. Proof. rewrite /Tm. have ->: 3^m - 3 = 2^m - 2 + (3^m - 1 - 2^m). rewrite addnC. rewrite addnBA. rewrite subnK. by rewrite -subnDA. rewrite subn1 -ltnS prednK. by apply ltn_exp2r, ltnW. by rewrite expn_gt0. rewrite -{1}(exp1n m). rewrite ltn_exp2r //. by apply ltnW. rewrite -Tm1. rewrite [in 3^m](_ : 3 = 1+2) //. rewrite Pascal. transitivity (Tm 1 + (\sum_(1 <= k < m) 'C(m,k) * 2^k)). rewrite -big_split /=. apply eq_bigr => i _. rewrite -mulnDr. congr muln. rewrite /Sk !big_cons !big_nil. by rewrite !addn0. congr addn. transitivity ((\sum_(0 <= k < m.+1) 'C(m,k) * 2^k) - 1 - 2^m). symmetry. rewrite (@big_cat_nat _ _ _ m) //=. rewrite (@big_cat_nat _ _ _ 1) //=; last by apply ltnW. rewrite addnAC. rewrite !big_nat1. rewrite bin0 binn. rewrite !mul1n expn0. by rewrite -addnA 2!addKn. rewrite big_mkord. congr subn. congr subn. apply eq_bigr => i _. by rewrite exp1n mul1n. Qed. Theorem Tmn n : Tm n.+1 = n.+2^m - n.+2. Proof. have Hm': m > 0 by apply ltnW. elim:n => [|n IHn] /=. by apply Tm1. have ->: n.+3^m - n.+3 = n.+2^m - n.+2 + (n.+3^m - 1 - n.+2^m). rewrite addnC. rewrite addnBA. rewrite subnK. by rewrite -subnDA. rewrite subn1 -ltnS prednK. by rewrite ltn_exp2r. by rewrite expn_gt0. apply (@leq_ltn_trans (n.+1^m)). by rewrite -{1}(expn1 n.+1) leq_pexp2l. by rewrite ltn_exp2r. rewrite -IHn. rewrite [in n.+3^m](_ : n.+3 = 1+n.+2) //. rewrite Pascal. transitivity (Tm n.+1 + (\sum_(1 <= k < m) 'C(m,k) * n.+2^k)). rewrite -big_split /=. apply eq_bigr => i _. rewrite -mulnDr. congr muln. rewrite /Sk. by rewrite (@big_cat_nat _ _ _ n.+2) //= big_nat1. congr addn. transitivity ((\sum_(0 <= k < m.+1) 'C(m,k) * n.+2^k) - 1 - n.+2^m). symmetry. rewrite (@big_cat_nat _ _ _ m) //=. rewrite (@big_cat_nat _ _ _ 1) //=. rewrite addnAC. rewrite !big_nat1. rewrite bin0 binn. rewrite !mul1n expn0. by rewrite -addnA 2!addKn. rewrite big_mkord. congr subn. congr subn. apply eq_bigr => i _. by rewrite exp1n mul1n. Qed. Theorem Skp p k : p > 2 -> prime p -> 1 <= k < p.-1 -> p %| Sk k p.-1. Admitted. End Nagoya2013. Section tpp2014. Lemma lem1 a : a*a = 0 %[mod 3] \/ a*a = 1 %[mod3]. Proof. remember (a %% 3) as m. rewrite -modnMm -Heqm. destruct m => /=. by left. destruct m => /=. by right. destruct m => /=. by right. have Hm: a %% 3 >= 3. by rewrite -Heqm. by rewrite leqNgt ltn_mod in Hm. Qed.