Library PrimeGapS1.MaynardVerify
From Stdlib Require Import ZArith List Lia.
From mathcomp Require Import all_ssreflect all_algebra.
From PrimeGapS1.MaynardVerify Require Export Def.
From PrimeGapS1.MaynardVerify Require Import
M2_0 M2_1 M2_2 M2_3 M2_4 M2_5.
Import ListNotations.
Lemma seq_split_42 :
List.seq 0 42 =
List.seq 0 7 ++ List.seq 7 7 ++ List.seq 14 7
++ List.seq 21 7 ++ List.seq 28 7 ++ List.seq 35 7.
Proof. vm_compute. reflexivity. Qed.
Lemma M2_check_rows_app : ∀ l1 l2 : list nat,
M2_check_rows (l1 ++ l2) = M2_check_rows l1 && M2_check_rows l2.
Proof. intros l1 l2. apply List.forallb_app. Qed.
Lemma all_match_M2Z_true : all_match_M2Z = true.
Proof.
unfold all_match_M2Z.
rewrite seq_split_42.
rewrite !M2_check_rows_app.
rewrite M2_check_rows_0_6 M2_check_rows_7_13 M2_check_rows_14_20
M2_check_rows_21_27 M2_check_rows_28_34 M2_check_rows_35_41.
reflexivity.
Qed.
Opaque M1_entry_matchZ M2_entry_matchZ.
Lemma M2_entry_match_in_grid {i j} :
(i < 42)%nat → (j < 42)%nat →
M2_entry_matchZ i j = true.
Proof.
move⇒ Hi Hj.
have HM := all_match_M2Z_true.
rewrite /all_match_M2Z /M2_check_rows in HM.
have Hrow : forallb (M2_entry_matchZ i) (List.seq 0 42) = true
:= forallb_seq_in HM Hi.
exact: forallb_seq_in Hrow Hj.
Qed.