Flux measures and first hitting data on labelled wall sections
DefinitionBianchiIX_AxisSectionMeasureDataFor real variables , set
The shear components and wall rates are
These functions define the normalized vacuum Bianchi IX vector field .
Let with coordinates and the sup norm. Write
and let .
Write , , and . For initial data , let be the union of all open convex domains of solutions with these initial data, and let be their compatible curve. A solution has such a domain , a curve , and .
Let be the continuous linear operators on and set
For a fixed initial time , put
Write for the constraint differential.
For , define
Write for the matrix of a continuous linear operator in the standard basis. Set ,
A normalized symmetry is a continuous linear equivalence satisfying
These symmetries include the identity, composition, inverse, and the two maps
Transforming a solution replaces its curve by and keeps its time domain.
Write , with domain , and . For and a wall height , put
For a normalized axis symmetry , the chart is , with coordinates . At its flux density and measure are
Write for the signed section flux and for the corrected divergence. The three primary frames interchange axis zero with the chosen dominant axis.
For target frames , heights , and coordinate sets put , and . A hit from at time starts with at , exists in the maximal domain, and reaches a target frame with its first wall at the prescribed height, negative first shear, and coordinates in the corresponding target set. Write for these times , and . A wall arrival atlas from gives countably many injective branches covering each crossing time in each target chart. For a branch with map and time , put
Given a time set , an eligible point lies on the branch, has time in and target in . Its delay is there and otherwise. The first piece consists of eligible points attaining the infimum of all delays with the least branch encoding.
The first delay is the infimum over eligible branches, and the first time is the initial time plus the real value of this delay. For general initial data at time zero, global hitting times are all existing times in the given time set with endpoint in a target chart image. The first state is the flow evaluated at the real value of the infimum of the nonnegative extended hitting times. A success target removes the corresponding labelled failure slice. Four-coordinate nullity of means for every differentiable .
import Mathlib.MeasureTheory.Integral.Lebesgue.Markov
import Definitions.Def_BianchiIX_Dynamics_Normalized
import Mathlib.Analysis.Calculus.InverseFunctionTheorem.ContDiff
import Mathlib.MeasureTheory.Function.Jacobian
import Mathlib.Topology.Compactness.Lindelof
import Mathlib.Analysis.Calculus.Deriv.Pow
import Mathlib.Analysis.Calculus.Deriv.Mul
import Mathlib.Analysis.Calculus.Deriv.Add
import Mathlib.Analysis.Real.Sqrt
import Mathlib.Tactic.Linarith
import Mathlib.Tactic.Ring
import Mathlib.Analysis.Calculus.ContDiff.Operations
import Mathlib.Analysis.Calculus.Deriv.Prod
import Mathlib.Analysis.Calculus.MeanValue
import Mathlib.Data.Fin.VecNotation
import Mathlib.Tactic.FinCases
import Mathlib.Tactic.FunProp
import Mathlib.MeasureTheory.Constructions.Pi
import Definitions.Def_BianchiIX_AxisAndOrbitData
import Mathlib.Analysis.SpecialFunctions.Pow.Deriv
import Mathlib.Tactic.FieldSimp
import Mathlib.Analysis.SpecialFunctions.Integrals.Basic
import Mathlib.Analysis.ODE.ExistUnique
import Mathlib.Analysis.Calculus.FDeriv.Partial
import Mathlib.Analysis.SpecialFunctions.Sqrt
import Mathlib.Analysis.SpecialFunctions.Log.Deriv
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 Mathlib.LinearAlgebra.Determinant
import Mathlib.Data.Real.Basic
import Mathlib.LinearAlgebra.Alternating.Curry
import Mathlib.Analysis.Calculus.ImplicitContDiff
import Mathlib.MeasureTheory.Measure.WithDensity
import Definitions.Def_BianchiIX_Dynamics_MaximalFlow
import Definitions.Def_BianchiIX_Dynamics_AxisSymmetry
import Mathlib.Analysis.Normed.Module.FiniteDimension
import Mathlib.MeasureTheory.MeasurableSpace.Prod
import Mathlib.Analysis.Calculus.Deriv.Slope
import Mathlib.Topology.Compactness.Compact
section
/-! Strict expansion on a finite-measure invariant failure set, Section 7.1. -/
open MeasureTheory Set
open scoped ENNReal
namespace BianchiIX
variable {X : Type*} [MeasurableSpace X] {μ : Measure X}
/-- Iterates outside the return domain are excluded, even if a total extension is used. -/
def permanentFailure (R : X → X) (D E : Set X) : Set X :=
{x | ∀ n : ℕ, R^[n] x ∈ D ∩ E}
end BianchiIX
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped Topology ENNReal
abbrev FourCoordinates := Fin 4 → ℝ
/-- Nullity after every differentiable four-dimensional coordinate observation. -/
def NullInFourCoordinates (S : Set NormalizedState) : Prop :=
∀ P : NormalizedState → FourCoordinates, Differentiable ℝ P → volume (P '' S) = 0
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
def mainWallMeasure (h : ℝ) : Measure SectionCoordinates :=
(volume.restrict (mainWallChartDomain h)).withDensity (fun y => ENNReal.ofReal (mainWallChartDensity h y))
namespace MainWallArrival
end MainWallArrival
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set Filter MeasureTheory
open scoped Topology ENNReal
def transverseAxisWallOrbitPreimage (C : SectionCoordinates → NormalizedState)
(A : NormalizedSymmetry) (h t₀ : ℝ) (Z : Set SectionCoordinates) : Set SectionCoordinates :=
{y | ∃ t ∈ normalizedMaxDomain (C y) t₀, ∃ z ∈ Z,
axisWallChart A h z = normalizedMaxCurve (C y) t₀ t}
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
/-- The sum of the verified coordinate flux measures on labelled section charts. -/
def axisFamilyMeasure {ι : Type*} [MeasurableSpace ι] (k : ι → ℝ) : Measure (ι × SectionCoordinates) :=
Measure.sum (fun i => (mainWallMeasure (k i)).map (Prod.mk i))
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
namespace AxisWallArrival
variable {A B : NormalizedSymmetry} {h k t₀ : ℝ} (P : AxisWallArrival A B h k t₀)
def eligible (E : Set SectionCoordinates) (I : Set ℝ) : Set SectionCoordinates :=
{y | y ∈ P.source ∧ P.coordinateTime y ∈ I ∧ P.map y ∈ E}
def delay (E : Set SectionCoordinates) (I : Set ℝ) : SectionCoordinates → ℝ≥0∞ := by
classical
exact (P.eligible E I).piecewise (fun y => ENNReal.ofReal (P.coordinateTime y - t₀)) (fun _ => ∞)
end AxisWallArrival
/-- Actual target hits; labels may overlap and are not identified with disjoint physical sections. -/
def axisFamilyHittingTimes {ι : Type*} (A : NormalizedSymmetry) (B : ι → NormalizedSymmetry)
(h : ℝ) (k : ι → ℝ) (t₀ : ℝ) (E : ι → Set SectionCoordinates) (I : Set ℝ)
(y : SectionCoordinates) : Set ℝ :=
{t | t ∈ I ∧ ∃ i, (y, t) ∈ axisWallArrivalRelation A (B i) h (k i) t₀ ∧
axisWallCoordinates (B i) (normalizedMaxCurve (axisWallChart A h y) t₀ t) ∈ E i}
def axisFamilyHittingDomain {ι : Type*} (A : NormalizedSymmetry) (B : ι → NormalizedSymmetry)
(h : ℝ) (k : ι → ℝ) (t₀ : ℝ) (E : ι → Set SectionCoordinates) (I : Set ℝ) : Set SectionCoordinates :=
{y | (axisFamilyHittingTimes A B h k t₀ E I y).Nonempty}
namespace AxisWallAtlasFamily
variable {ι : Type*} {A : NormalizedSymmetry} {B : ι → NormalizedSymmetry}
{h t₀ : ℝ} {k : ι → ℝ} (C : AxisWallAtlasFamily A B h k t₀)
def firstDelay (E : ι → Set SectionCoordinates) (I : Set ℝ) (y : SectionCoordinates) : ℝ≥0∞ :=
⨅ i, ⨅ n, ((C i).branch n).delay (E i) I y
end AxisWallAtlasFamily
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
def globalAxisWallHittingTimes {ι : Type*} (A : ι → NormalizedSymmetry) (h : ι → ℝ)
(B : ι → Set SectionCoordinates) (I : Set ℝ) (x : NormalizedState) : Set ℝ :=
{t | t ∈ I ∧ t ∈ normalizedMaxDomain x 0 ∧
∃ i, ∃ y ∈ B i, axisWallChart (A i) (h i) y = normalizedMaxCurve x 0 t}
def globalAxisWallHittingDomain {ι : Type*} (A : ι → NormalizedSymmetry) (h : ι → ℝ)
(B : ι → Set SectionCoordinates) (I : Set ℝ) : Set NormalizedState :=
{x | (globalAxisWallHittingTimes A h B I x).Nonempty}
def globalAxisWallFirstDelay {ι : Type*} (A : ι → NormalizedSymmetry) (h : ι → ℝ)
(B : ι → Set SectionCoordinates) (I : Set ℝ) (x : NormalizedState) : ℝ≥0∞ :=
⨅ t : globalAxisWallHittingTimes A h B I x, ENNReal.ofReal t.val
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
namespace AxisWallAtlasFamily
variable {ι : Type*} {A : NormalizedSymmetry} {B : ι → NormalizedSymmetry}
{h t₀ : ℝ} {k : ι → ℝ} (C : AxisWallAtlasFamily A B h k t₀)
def firstTime (E : ι → Set SectionCoordinates) (I : Set ℝ) (y : SectionCoordinates) : ℝ :=
t₀ + (C.firstDelay E I y).toReal
end AxisWallAtlasFamily
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
def globalAxisWallFirstTime {ι : Type*} (A : ι → NormalizedSymmetry) (h : ι → ℝ)
(B : ι → Set SectionCoordinates) (I : Set ℝ) (x : NormalizedState) : ℝ :=
(globalAxisWallFirstDelay A h B I x).toReal
def globalAxisWallFirstState {ι : Type*} (A : ι → NormalizedSymmetry) (h : ι → ℝ)
(B : ι → Set SectionCoordinates) (I : Set ℝ) (x : NormalizedState) : NormalizedState :=
normalizedMaxCurve x 0 (globalAxisWallFirstTime A h B I x)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
namespace MainWallArrivalAtlas
end MainWallArrivalAtlas
def cumulativeReturnTime {X : Type*} (R : X → X) (τ : X → ℝ) (t₀ : ℝ) (n : ℕ) (y : X) : ℝ :=
t₀ + ∑ i ∈ Finset.range n, (τ (R^[i] y) - t₀)
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
def axisFamilyReturnTimes {ι : Type*} (B : ι → NormalizedSymmetry) (k : ι → ℝ) (t₀ : ℝ)
(E : ι → Set SectionCoordinates) (z : ι × SectionCoordinates) : Set ℝ :=
axisFamilyHittingTimes (B z.1) B (k z.1) k t₀ E (Ioi t₀) z.2
def axisFamilyReturnDomain {ι : Type*} (B : ι → NormalizedSymmetry) (k : ι → ℝ) (t₀ : ℝ)
(E : ι → Set SectionCoordinates) : Set (ι × SectionCoordinates) :=
{z | z.2 ∈ E z.1 ∧ (axisFamilyReturnTimes B k t₀ E z).Nonempty}
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
namespace AxisWallAtlasFamily
variable {ι : Type*} [Encodable ι] {A : NormalizedSymmetry} {B : ι → NormalizedSymmetry}
{h t₀ : ℝ} {k : ι → ℝ} (C : AxisWallAtlasFamily A B h k t₀)
/-- Choose the first encoded target and branch among those attaining the true earliest time. -/
def firstPiece (E : ι → Set SectionCoordinates) (I : Set ℝ) (q : ι × ℕ) : Set SectionCoordinates :=
{y | y ∈ ((C q.1).branch q.2).eligible (E q.1) I ∧
((C q.1).branch q.2).delay (E q.1) I y = C.firstDelay E I y ∧
∀ r : ι × ℕ, Encodable.encode r < Encodable.encode q →
((C r.1).branch r.2).delay (E r.1) I y ≠ C.firstDelay E I y}
end AxisWallAtlasFamily
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
def axisFamilyInfiniteReturns {ι : Type*} (B : ι → NormalizedSymmetry) (k : ι → ℝ) (t₀ : ℝ)
(E : ι → Set SectionCoordinates) : Set (ι × SectionCoordinates) :=
{z | z ∈ axisFamilySection E ∧ (axisFamilyReturnTimes B k t₀ E z).Infinite}
end BianchiIX
end
end
section
noncomputable section
namespace BianchiIX
open Set MeasureTheory
open scoped ENNReal
def axisFamilySuccessTargets {ι : Type*} (E : ι → Set SectionCoordinates)
(F : Set (ι × SectionCoordinates)) (i : ι) : Set SectionCoordinates :=
E i \ (Prod.mk i ⁻¹' F)
end BianchiIX
end
end