Partial-core returns, complete era maps and successor curves
DefinitionBianchiIX_EraReturnDataFor real variables , set
The shear components and wall rates are
These functions define the normalized vacuum Bianchi IX vector field . For , define
and .
For , put
For , set and
Write for the normalized vector field and for its constraint.
The normalized and projective state spaces are and with their finite-product norms. The maps act on these state spaces.
Define the core radius, angle, and clock factor by
For , write , , and . All quotients use the total convention .
The core state space is with coordinates . Define
For fixed put , , , and define
For real , put and define
Write , , and let be the maximal solution of with initial value at and domain . Put
Write , , and . Define
The entrance parametrization and radial exit factor are
For projective initial data , put
Coordinates of three-vectors are indexed by ; projective coordinates are indexed by . For real variables , set
The shear components and wall rates are
These functions define the normalized vacuum Bianchi IX vector field . For , define
and .
For , put
For , set and
Write for the normalized vector field and for its constraint.
The normalized and projective state spaces are and with their finite-product norms. The maps act on these state spaces.
Define the core radius, angle, and clock factor by
For , write , , and . All quotients use the total convention .
The core state space is with coordinates . Define
For fixed put , , , and define
At use the abbreviations
Let . Define the matrix by its rows, in the order and columns :
Define the two rates and the matrix by
Here is the Kronecker symbol. The total formulas are defined also when a wall amplitude vanishes, and use .
Define the rates in normalized time and the positive flow factors by
The interval integral is oriented and uses its total Bochner-integral definition for every choice of endpoints and initial data.
For real , define
Division at zero has its total real-field meaning.
Write . For a time function put . Let be the infimum of positive times in the normalized maximal domain at which with negative event rate, and set . The incoming condition means , or and . Define
All vector norms are supremum norms and operator norms are induced by them. For real variables , set
The shear components and wall rates are
These functions define the normalized vacuum Bianchi IX vector field . For , define
and .
For , put
For , set and
Write for the normalized vector field and for its constraint.
The normalized and projective state spaces are and with their finite-product norms. The maps act on these state spaces.
Define the core radius, angle, and clock factor by
For , write , , and . All quotients use the total convention .
The core state space is with coordinates . Define
For fixed put , , , and define
For real , put and define
Write , , and let be the maximal solution of with initial value at and domain . Put
Write , , and . Define
The entrance parametrization and radial exit factor are
For projective initial data , put
Coordinates of three-vectors are indexed by ; projective coordinates are indexed by .
For , put , , and
The infimum uses the total real-order convention. Write when is the least element of , every lies in with , the active wall is strictly above one for , and
All vector and operator norms below use the finite-product supremum norm. For real variables , set
The shear components and wall rates are
These functions define the normalized vacuum Bianchi IX vector field . For , define
and .
For , put
For , set and
Write for the normalized vector field and for its constraint.
The normalized and projective state spaces are and with their finite-product norms. The maps act on these state spaces.
The projective vector field in normalized time is
Write , , and let be the maximal solution of with initial value at and domain . Put
Put , , , , and .
Define
For a normalized trajectory write
For , set , , and
Let mean that this infimum is a least element, the full interval lies in the maximal domain with positive , the growing wall is below one before the endpoint, and its normalized-time derivative is strictly positive at the endpoint. The infimum has its total real-order meaning.
Write , , , and . The physical connection coordinates are
Below denotes the canonical core return time from and its radial and wall coordinates. Let , , , and . A cone direction at has , , . For a map with positive output walls, its positive cone property means has positive radial component and for . For real variables , set
The shear components and wall rates are
These functions define the normalized vacuum Bianchi IX vector field . For , define
and .
For , put
For , set and
Write for the normalized vector field and for its constraint.
The normalized and projective state spaces are and with their finite-product norms. The maps act on these state spaces.
The projective vector field in normalized time is
Write , , and let be the maximal solution of with initial value at and domain . Put
For , define
For any real height , put
The infimum uses the total real-order convention. Let mean that is the least element of , and, writing , that
All vector and operator norms use the finite-product supremum norms.
For , put ,
Let mean that this infimum is a least element, the full interval lies in the maximal domain with , the active wall is below one before the endpoint, and its normalized-time derivative is strictly positive throughout the interval. The infimum has its total real-order meaning.
For define the cyclic chart by
Its normalized symmetry is
Put and
Write and .
In the era formulas below, denotes the core return map and its composition with reflection. For use the natural height and define , , and . The complete era maps are
For a graph write , , , , . Let denote Lean's total choice inverse . For , , define
Write for the Gauss inverse branch. The retained phase set is .
A curve is admissible at budget if, for every , , , both functions are at , and , . For an arbitrary graph, define its successor walls by
where is the canonical amplitude extension after composing with the choice inverse of , with slope or . The one-step property at consists of the following. Put , , . One has . For every , is strictly decreasing on , and for ,
The successor is admissible at budget and, with , satisfies , , . The retained branch intervals are pairwise disjoint and . Define
The integral is oriented, and division uses the total reciprocal .
For real functions and real endpoints , define and by
Write when comparing several pairs of input functions.
For real functions , set
Let be the root-curve construction applied to , and set
For another pair , use the analogous notation.
Let , , and . Denote by the canonical amplitude extension of from , and by the extension from .
The data includes the scalar local-inverse predicate: a inverse at taking to , with derivative and two-sided inverse germs. It also includes the diagonal map , the graph restrictions, the retained phase unions, and the complete one-step property of the era curve.
import Mathlib.Analysis.Calculus.InverseFunctionTheorem.ContDiff
import Mathlib.Analysis.Calculus.InverseFunctionTheorem.Deriv
import Mathlib.Tactic.NormNum
import Mathlib.Analysis.SpecialFunctions.Log.Basic
import Mathlib.Tactic.FieldSimp
import Mathlib.Tactic.Linarith
import Mathlib.Tactic.Positivity
import Mathlib.Tactic.Ring
import Mathlib.Analysis.Calculus.Deriv.Prod
import Mathlib.LinearAlgebra.Matrix.Notation
import Mathlib.Tactic.FinCases
import Mathlib.Analysis.Calculus.Deriv.MeanValue
import Mathlib.Analysis.Calculus.ContDiff.Deriv
import Mathlib.Analysis.Calculus.Deriv.Inv
import Mathlib.Analysis.Calculus.Deriv.Add
import Mathlib.Analysis.SpecificLimits.Basic
import Mathlib.Data.List.Induction
import Mathlib.Algebra.BigOperators.Ring.Finset
import Mathlib.MeasureTheory.Measure.Lebesgue.Basic
import Definitions.Def_BianchiIX_Analysis_AmplitudeExtension
import Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus
import Mathlib.Analysis.Calculus.Deriv.Pow
import Mathlib.Analysis.Calculus.Deriv.Mul
import Mathlib.Analysis.Real.Sqrt
import Mathlib.Analysis.Calculus.Deriv.Slope
import Mathlib.MeasureTheory.Constructions.BorelSpace.Metrizable
import Mathlib.Analysis.SpecialFunctions.Pow.Continuity
import Mathlib.Analysis.SpecialFunctions.Sqrt
import Definitions.Def_BianchiIX_Dynamics_CoreAngle
import Mathlib.Analysis.Calculus.FDeriv.Symmetric
import Mathlib.Tactic.Module
import Mathlib.Analysis.SpecialFunctions.Arsinh
import Mathlib.Analysis.Calculus.ContDiff.Operations
import Mathlib.Analysis.Calculus.MeanValue
import Mathlib.Data.Fin.VecNotation
import Mathlib.Tactic.FunProp
import Mathlib.Tactic.LinearCombination
import Mathlib.Analysis.SpecialFunctions.Arcosh
import Mathlib.Analysis.SpecialFunctions.Pow.Deriv
import Mathlib.Analysis.SpecialFunctions.Integrals.Basic
import Mathlib.Analysis.ODE.ExistUnique
import Mathlib.Data.Matrix.Mul
import Mathlib.Algebra.BigOperators.Fin
import Mathlib.Analysis.Calculus.FDeriv.Partial
import Mathlib.Analysis.Calculus.ImplicitContDiff
import Mathlib.Analysis.ODE.Gronwall
import Mathlib.Analysis.SpecialFunctions.Trigonometric.ArctanDeriv
import Mathlib.Analysis.SpecialFunctions.Trigonometric.DerivHyp
import Mathlib.Topology.Instances.Real.Lemmas
import Mathlib.MeasureTheory.Integral.IntervalIntegral.DistLEIntegral
import Mathlib.Tactic.GCongr
import Mathlib.Topology.Order.OrderClosed
import Mathlib.Topology.Order.IntermediateValue
import Definitions.Def_BianchiIX_Dynamics_ProjectiveState
import Definitions.Def_BianchiIX_Dynamics_CoreMultipliers
import Mathlib.Analysis.Calculus.ParametricIntervalIntegral
import Mathlib.Topology.Order.Compact
import Mathlib.MeasureTheory.Integral.DominatedConvergence
import Mathlib.Data.Real.Basic
import Definitions.Def_BianchiIX_Dynamics_ProjectiveRegularity
import Definitions.Def_BianchiIX_Dynamics_MaximalFlow
import Definitions.Def_BianchiIX_Dynamics_Events
import Definitions.Def_BianchiIX_Dynamics_ProjectiveFlowVariation
import Mathlib.MeasureTheory.Integral.IntervalIntegral.IntegrationByParts
import Definitions.Def_BianchiIX_Dynamics_ConnectionReturn
import Definitions.Def_BianchiIX_Dynamics_ConnectionPhysicalReturn
import Definitions.Def_BianchiIX_Dynamics_CoreReturnDifferential
import Definitions.Def_BianchiIX_Dynamics_CoreConnectionChart
import Mathlib.Analysis.SpecialFunctions.Log.Deriv
import Mathlib.Analysis.SpecialFunctions.ExpDeriv
import Mathlib.Topology.Order.ProjIcc
import Mathlib.Analysis.Normed.Operator.Basic
import Mathlib.Analysis.Normed.Module.FiniteDimension
import Mathlib.LinearAlgebra.Determinant
import Mathlib.Topology.Instances.Matrix
import Mathlib.LinearAlgebra.Matrix.Trace
import Mathlib.Analysis.Calculus.FDeriv.Analytic
import Mathlib.Topology.Algebra.Module.Determinant
import Mathlib.Analysis.Calculus.Deriv.Pi
import Definitions.Def_BianchiIX_Dynamics_CompactConnectionReturn
import Definitions.Def_BianchiIX_EntrancePhaseResponseData
import Mathlib.Topology.MetricSpace.Thickening
import Mathlib.Topology.MetricSpace.Cauchy
import Mathlib.Analysis.Calculus.ContDiff.Comp
import Mathlib.Analysis.Calculus.Deriv.Comp
import Mathlib.Analysis.Calculus.UniformLimitsDeriv
import Definitions.Def_BianchiIX_Dynamics_CompactCoreReturn
import Mathlib.Analysis.SpecialFunctions.ImproperIntegrals
import Mathlib.Analysis.Calculus.ParametricIntegral
import Mathlib.MeasureTheory.Integral.Bochner.ContinuousLinearMap
import Mathlib.Analysis.SpecialFunctions.Pow.Real
import Definitions.Def_BianchiIX_TerminalConnectionData
import Definitions.Def_BianchiIX_TerminalConeData
import Mathlib.Analysis.Calculus.FDeriv.Mul
import Mathlib.LinearAlgebra.Matrix.ToLin
import Mathlib.Analysis.Calculus.FDeriv.Comp
import Mathlib.Algebra.Order.Floor.Ring
import Mathlib.Algebra.Order.Floor.Semiring
import Definitions.Def_BianchiIX_Statistics_GaussInverse
import Definitions.Def_BianchiIX_Analysis_AmplitudeSequence
import Mathlib.Topology.Algebra.InfiniteSum.Order
import Mathlib.Data.PNat.Basic
import Mathlib.MeasureTheory.Constructions.BorelSpace.Basic
import Mathlib.MeasureTheory.Function.Floor
section
noncomputable section
namespace BianchiIX
open Filter
open scoped Topology
structure ScalarLocalInverseAt (f : ℝ → ℝ) (a : ℝ) (g : ℝ → ℝ) : Prop where
apply_base : g (f a) = a
contDiffAt : ContDiffAt ℝ 1 g (f a)
hasDerivAt : HasDerivAt g (deriv f a)⁻¹ (f a)
left_inverse : ∀ᶠ x in 𝓝 a, g (f x) = x
right_inverse : ∀ᶠ y in 𝓝 (f a), f (g y) = y
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
def graphPhase (F : (Fin 3 → ℝ) → ℝ) (U W : ℝ → ℝ) (r : ℝ) : ℝ := F ![r, U r, W r]
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set Filter
open scoped Topology
def intervalRadiusInverse (k : ℝ → ℝ) (a b : ℝ) : ℝ → ℝ := Function.invFunOn k (Icc a b)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
def retainedBranchPhases (N : ℕ) (L R : ℕ → ℝ) : Set ℝ :=
⋃ m ∈ Finset.range N, Ioo (R m) (L m)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def radiusAmplitude (k U : ℝ → ℝ) (a b x : ℝ) : ℝ := U (intervalRadiusInverse k a b x)
def radiusAmplitudeSlope (k U : ℝ → ℝ) (a b x : ℝ) : ℝ :=
deriv U (intervalRadiusInverse k a b x) / deriv k (intervalRadiusInverse k a b x)
def radiusAmplitudeExtension (k U : ℝ → ℝ) (a b : ℝ) : ℝ → ℝ :=
amplitudeCurveExtension (k b) (k a) (radiusAmplitude k U a b) (radiusAmplitudeSlope k U a b)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def radiusAmplitudeWindowExtension (k U : ℝ → ℝ) (a b l r : ℝ) : ℝ → ℝ :=
amplitudeCurveExtension l r (radiusAmplitude k U a b) (radiusAmplitudeSlope k U a b)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set Filter
open scoped Topology
def scaleCoreVariationLinear (k : ℝ) : CoreAngleState →L[ℝ] CoreAngleState :=
ContinuousLinearMap.pi ![ContinuousLinearMap.proj 0,
k • ContinuousLinearMap.proj 1, ContinuousLinearMap.proj 2]
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
/-- Positive multipliers from an arbitrary projective initial point to its moving exit. -/
def partialCoreReturnMultiplier (τ : ProjectiveState → ℝ) (y : ProjectiveState) (i : Fin 2) : ℝ :=
coreFlowMultiplier y 0 0 (τ y) i
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def partialCoreVariationBudget (k u p : ℝ) (v : CoreAngleState) (dz : ℝ) : ℝ :=
|v 0| + k * |v 1| + |v 2| + (k ^ 2 * u + p / k) * |dz|
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set Filter
open scoped Topology
def partialCoreDownwardReturnTime (y : ProjectiveState) : ℝ :=
sInf {t : ℝ | 0 < t ∧ t ∈ normalizedMaxDomain (fromProjectiveState y) 0 ∧
projectiveOriginalFlow y 0 t 2 = 1 ∧
normalizedEventRate projectiveActiveWall (fromProjectiveState y) 0 t < 0}
def partialCoreDownwardReturnState (y : ProjectiveState) : CoreAngleState :=
toCoreAngleState (projectiveOriginalFlow y 0 (partialCoreDownwardReturnTime y))
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def coreConnectionParameters (τ : CoreAngleState → ℝ) (Y : CoreAngleState) : ConnectionParameters :=
coreExitConnectionParameters (coreReturnState τ Y)
def coreReflectionState (τ : CoreAngleState → ℝ) (Y : CoreAngleState) : CoreAngleState :=
connectionReturnPhysicalState (coreConnectionParameters τ Y)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set Filter
open scoped Topology
def reflectionReturnTime (Y : CoreAngleState) : ℝ :=
connectionReturnTime (coreExitConnectionParameters Y)
def reflectionReturnState (Y : CoreAngleState) : CoreAngleState :=
connectionReturnPhysicalState (coreExitConnectionParameters Y)
def compactConnectionPhysicalState (η : ℝ) (Y : CoreAngleState) : CoreAngleState :=
![compactConnectionPhase η Y, compactConnectionState η Y 1, compactConnectionState η Y 3]
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
def coreReflectionTime (Y : CoreAngleState) : ℝ :=
reflectionReturnTime (coreReturnState coreRadiusReturnTime Y) + coreRadiusReturnTime Y
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set Filter
open scoped Topology
def terminalNaturalTime (η : ℝ) (J : ℕ) (Y : ExitTailState) : ℝ :=
terminalConnectionTime (η * ((Y 0 - 2) / 2) ^ J) Y
def terminalNaturalBoundedPhase (η : ℝ) (J : ℕ) (Y : ExitTailState) : ℝ :=
2 / terminalNaturalPhase η J Y
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
/-- The last downward core state after `m` nonterminal reflections. -/
def eraCoreExit (m : ℕ) : CoreAngleState → CoreAngleState :=
coreReturnState coreRadiusReturnTime ∘ (coreReflectionState coreRadiusReturnTime)^[m]
def eraBoundedPhase (η : ℝ) (J m : ℕ) : CoreAngleState → ℝ :=
terminalNaturalBoundedPhase η J ∘ eraCoreExit m
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
def eraOutputState (η : ℝ) (J m : ℕ) : CoreAngleState → ProjectiveState :=
terminalNaturalState η J ∘ eraCoreExit m
def eraOutputRadius (η : ℝ) (J m : ℕ) : CoreAngleState → ℝ :=
terminalNaturalPhase η J ∘ eraCoreExit m
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def eraGraphRadius (η : ℝ) (J m : ℕ) (U W : ℝ → ℝ) : ℝ → ℝ :=
graphPhase (eraOutputRadius η J m) U W
def eraGraphWall (η : ℝ) (J m : ℕ) (U W : ℝ → ℝ) (i : Fin 4) : ℝ → ℝ :=
graphPhase (fun X => eraOutputState η J m X i) U W
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def eraInverseBranch (η : ℝ) (J m : ℕ) (β : ℝ) (U W : ℝ → ℝ) : ℝ → ℝ :=
fun y => 2 / intervalRadiusInverse (graphPhase (eraBoundedPhase η J m) U W)
(2 * ((m : ℝ) + 1 + β)) (2 * ((m : ℝ) + 2 - β)) y
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def eraAmplitudeExtension (η : ℝ) (J m : ℕ) (β : ℝ) (U W : ℝ → ℝ) (i : Fin 4) : ℝ → ℝ :=
radiusAmplitudeWindowExtension (eraGraphRadius η J m U W) (eraGraphWall η J m U W i)
(2 * ((m : ℝ) + 1 + β)) (2 * ((m : ℝ) + 2 - β)) (2 / (1 - 2 * β)) (1 / β)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
def eraRetainedPhases (η : ℝ) (J N : ℕ) (β : ℝ) (U W : ℝ → ℝ) : Set ℝ :=
retainedBranchPhases N (fun m => eraInverseBranch η J m β U W (2 * β))
(fun m => eraInverseBranch η J m β U W (1 - 2 * β))
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
structure EraCurve where
U : ℝ → ℝ
W : ℝ → ℝ
namespace EraCurve
def state (Γ : EraCurve) (r : ℝ) : CoreAngleState := ![r, Γ.U r, Γ.W r]
def Admissible (Γ : EraCurve) (B : ℝ) : Prop :=
∀ r : ℝ, 2 < r → 0 < Γ.U r ∧ 0 < Γ.W r ∧ Γ.U r + Γ.W r ≤ B ∧
ContDiffAt ℝ 1 Γ.U r ∧ ContDiffAt ℝ 1 Γ.W r ∧
|deriv Γ.U r| ≤ Real.sqrt (Γ.U r) ∧ |deriv Γ.W r| ≤ Real.sqrt (Γ.W r)
def successor (Γ : EraCurve) (η : ℝ) (J m : ℕ) (β : ℝ) : EraCurve :=
⟨eraAmplitudeExtension η J m β Γ.U Γ.W 1, eraAmplitudeExtension η J m β Γ.U Γ.W 3⟩
/-- Uniform data for one actual era, its selected inverse branches, and its successor curves. -/
structure StepEstimates (Γ : EraCurve) (η : ℝ) (J : ℕ) (σ B C : ℝ) : Prop where
beta_pos : 0 < B ^ σ
beta_small : B ^ σ < 1 / 160
branch : ∀ m : ℕ, m < ⌊1 / B ^ σ⌋₊ →
let h := eraInverseBranch η J m (B ^ σ) Γ.U Γ.W
let K := Icc (2 * B ^ σ) (1 - 2 * B ^ σ)
StrictAntiOn h K ∧ ∀ y ∈ K,
h y ∈ Ioo (1 / ((m : ℝ) + 2)) (1 / ((m : ℝ) + 1)) ∧
graphPhase (eraBoundedPhase η J m) Γ.U Γ.W (2 / h y) = y ∧
ContDiffAt ℝ 1 h y ∧ deriv h y < 0 ∧
|h y - gaussInv ((m : ℝ) + 1) y| ≤ C * B / ((m : ℝ) + 1) ^ 2 ∧
|Real.log (|deriv h y| / |deriv (gaussInv ((m : ℝ) + 1)) y|)| ≤ 5 * C * Real.sqrt B
successor_admissible : ∀ m : ℕ, m < ⌊1 / B ^ σ⌋₊ →
(Γ.successor η J m (B ^ σ)).Admissible (B ^ (4 / 3 : ℝ))
successor_match : ∀ m : ℕ, m < ⌊1 / B ^ σ⌋₊ → ∀ y ∈ Icc (2 * B ^ σ) (1 - 2 * B ^ σ),
let x := 2 / eraInverseBranch η J m (B ^ σ) Γ.U Γ.W y
eraOutputRadius η J m (Γ.state x) = 2 / y ∧
(Γ.successor η J m (B ^ σ)).U (2 / y) = eraOutputState η J m (Γ.state x) 1 ∧
(Γ.successor η J m (B ^ σ)).W (2 / y) = eraOutputState η J m (Γ.state x) 3
branch_disjoint : (↑(Finset.range ⌊1 / B ^ σ⌋₊) : Set ℕ).PairwiseDisjoint
(fun m => Ioo (eraInverseBranch η J m (B ^ σ) Γ.U Γ.W (1 - 2 * B ^ σ))
(eraInverseBranch η J m (B ^ σ) Γ.U Γ.W (2 * B ^ σ)))
stopped_volume : volume (Ioo (0 : ℝ) 1 \ eraRetainedPhases η J ⌊1 / B ^ σ⌋₊ (B ^ σ) Γ.U Γ.W) ≤
ENNReal.ofReal (10 * B ^ σ)
end EraCurve
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
namespace EraCurve
def constant (B : ℝ) : EraCurve := ⟨fun _ => B / 2, fun _ => B / 2⟩
/-- Unretained digits have empty branch domains; a constant curve makes their unused descendants total. -/
def nextCurve (Γ : EraCurve) (η : ℝ) (J : ℕ) (σ B : ℝ) (a : ℕ+) : EraCurve :=
if a.natPred < ⌊1 / B ^ σ⌋₊ then Γ.successor η J a.natPred (B ^ σ)
else constant (B ^ (4 / 3 : ℝ))
def family (Γ : EraCurve) (η : ℝ) (J : ℕ) (σ B : ℝ) (w : List ℕ+) : EraCurve :=
w.reverseRecOn Γ (fun v a γ => γ.nextCurve η J σ (eraAmplitude B v.length) a)
end EraCurve
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set
def eraNextState (η : ℝ) (J m : ℕ) (X : CoreAngleState) : CoreAngleState :=
![eraOutputRadius η J m X, eraOutputState η J m X 1, eraOutputState η J m X 3]
def eraBudgetReturn (η : ℝ) (J m : ℕ) (p : ℝ × CoreAngleState) : ℝ × CoreAngleState :=
(p.1 ^ (4 / 3 : ℝ), eraNextState η J m p.2)
def eraInputSelection (σ Bstar : ℝ) (m : ℕ) : Set (ℝ × CoreAngleState) :=
{p | p.1 ∈ Ioc 0 Bstar ∧ m < ⌊1 / p.1 ^ σ⌋₊ ∧
0 < p.2 1 ∧ 0 < p.2 2 ∧ p.2 1 + p.2 2 ≤ p.1 ∧
p.2 0 ∈ Icc (2 * ((m : ℝ) + 1 + p.1 ^ σ)) (2 * ((m : ℝ) + 2 - p.1 ^ σ))}
def eraSelectedInputs (η : ℝ) (J : ℕ) (σ Bstar : ℝ) (m : ℕ) : Set (ℝ × CoreAngleState) :=
{p | p ∈ eraInputSelection σ Bstar m ∧
2 / eraOutputRadius η J m p.2 ∈ Ioo (2 * p.1 ^ σ) (1 - 2 * p.1 ^ σ)}
end BianchiIX
end
end