fix: fisherMetric50 bridge uses Pi.single (standard basis) not tangentBasis

The old bridge claimed fisherMetric50 p i j = fisherMetric p (tangentBasis i 0)
(tangentBasis j 0), which is WRONG — tangentBasis has a 1/p_0 cross-term.

Correct bridge: fisherMetric p (Pi.single i 1) (Pi.single j 1) = fisherMetric50 p i j
This is trivially true: ∑_k (δ_ik * δ_jk)/p_k = δ_ij/p_i.

Also fixed:
- Import syntax error (missing -/ closure)
- Import path: library.ChentsovFinite → CoreFormalism.ChentsovFinite
- Added BindingSiteHachimoji to lakefile

Note: ChentsovFinite.lean has broken Mathlib imports (pre-existing).
The h_fisher_basis proof is verified correct in isolation.
This commit is contained in:
allaun 2026-06-23 15:15:42 -05:00
parent cfb07d1c62
commit fda0c30c2a
2 changed files with 24 additions and 21 deletions

View file

@ -11,12 +11,11 @@
- Giani, Win, Conti 2025 (PVGS): photon-varied Gaussian states - Giani, Win, Conti 2025 (PVGS): photon-varied Gaussian states
- Chentsov 1972: unique Fisher metric on probability simplex - Chentsov 1972: unique Fisher metric on probability simplex
- Research-Stack library/ChentsovFinite.lean: formal uniqueness proof - Research-Stack library/ChentsovFinite.lean: formal uniqueness proof
-/} -/
import Mathlib.Data.Fin.Basic import Mathlib.Data.Fin.Basic
import Mathlib.Probability.Distributions.Uniform import Mathlib.Analysis.Convex.Simplex
import Mathlib.LinearAlgebra.Matrix.PosDef import CoreFormalism.ChentsovFinite
import library.ChentsovFinite
namespace BindingSiteHachimoji namespace BindingSiteHachimoji
@ -175,26 +174,29 @@ theorem chentsov_50 (g : (p : AminoAcidDistribution) → Fin 50 → Fin 50 →
⟨p.val, ⟨h_pos p, p.property.1⟩⟩ ⟨p.val, ⟨h_pos p, p.property.1⟩⟩
-- ================================================================ -- ================================================================
-- Bridge Step 2: fisherMetric50 = fisherMetric on basis vectors -- Bridge Step 2: fisherMetric50 = fisherMetric on standard basis
-- ================================================================ -- ================================================================
-- fisherMetric50 p i j = if i = j then 1/p.val i else 0 -- fisherMetric50 p i j = if i = j then 1/p.val i else 0
-- fisherMetric (toOpenSimplex p) (tangentBasis i 0) (tangentBasis j 0) -- fisherMetric p (Pi.single i 1) (Pi.single j 1)
-- = ∑ k, tangentBasis i 0 k * tangentBasis j 0 k / p.val k -- = ∑ k, (δ_ik * δ_jk) / p.val k = δ_ij / p.val i
-- For i = j: ∑ k, (tangentBasis i 0 k)² / p.val k -- These are equal on STANDARD basis vectors e_i = Pi.single i 1.
-- = 1/p.val i + 1/p.val 0 (from the e_i - e_0 structure) -- Note: on TANGENT basis vectors (e_i - e_0), fisherMetric has an
-- For i ≠ j: 1/p.val 0 (cross terms from e_0 component) -- extra 1/p_0 cross-term. The bridge uses standard basis instead.
-- This is NOT the same as δ_ij / p_i — fisherMetric50 is the
-- DIAGONAL metric component, fisherMetric is the full bilinear form
-- on tangent vectors e_i - e_0.
have h_fisher_basis : ∀ (p : AminoAcidDistribution) (i j : Fin 50), have h_fisher_basis : ∀ (p : AminoAcidDistribution) (i j : Fin 50),
fisherMetric50 p i j = fisherMetric (toOpenSimplex p) (Pi.single i 1) (Pi.single j 1) =
fisherMetric (toOpenSimplex p) (tangentBasis i 0) (tangentBasis j 0) := by fisherMetric50 p i j := by
intro p i j intro p i j
simp only [fisherMetric50, fisherMetric, tangentBasis] simp only [fisherMetric50, fisherMetric]
sorry -- Bridge obligation: expand ∑ k, tangentBasis i 0 k * tangentBasis j 0 k / p.val k by_cases hij : i = j
-- and show it equals δ_ij / p.val i (modulo the e_0 tangent basis structure). · subst hij
-- This requires careful case analysis on i = j vs i ≠ j and the rw [Finset.sum_eq_single i]
-- tangentBasis definition (e_i - e_0 has components at both i and 0). · simp [Pi.single]
· intro b _ hbi; simp [Pi.single, Ne.symm hbi]
· simp
· rw [Finset.sum_eq_single i]
· simp [Pi.single, hij]
· intro b _ hbi; simp [Pi.single, Ne.symm hbi]
· simp
-- ================================================================ -- ================================================================
-- Bridge Step 3: Construct RiemannianMetric 50 from g -- Bridge Step 3: Construct RiemannianMetric 50 from g

View file

@ -37,7 +37,8 @@ lean_lib «SilverSightFormal» where
`CoreFormalism.HachimojiManifoldAxiom, `CoreFormalism.HachimojiManifoldAxiom,
`CoreFormalism.HachimojiCodec, `CoreFormalism.HachimojiCodec,
`CoreFormalism.HachimojiLUT, `CoreFormalism.HachimojiLUT,
`CoreFormalism.HachimojiBridging `CoreFormalism.HachimojiBridging,
`BindingSite.BindingSiteHachimoji
] ]
lean_lib «SilverSightRRC» where lean_lib «SilverSightRRC» where