Cyclic and transposition maps of the physical axes
DefinitionBianchiIX_Dynamics_AxisMapsbianchi-ix-era-statisticsdynamical-systems
For 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 .
Define the linear maps
Their linear-map and continuous-linear-equivalence realizations use and .
Definition code
import Definitions.Def_BianchiIX_Dynamics_Normalized
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.Analysis.Normed.Module.FiniteDimension
import Mathlib.LinearAlgebra.Determinant
noncomputable section
namespace BianchiIX
/-- New axes `(1,2,3)` are old axes `(2,3,1)`. -/
def axisCycle (x : NormalizedState) : NormalizedState :=
![(-x 0 + Real.sqrt 3 * x 1) / 2, (-Real.sqrt 3 * x 0 - x 1) / 2, x 3, x 4, x 2]
/-- Exchange the second and third axes, including their shear components. -/
def axisSwap (x : NormalizedState) : NormalizedState := ![x 0, -x 1, x 2, x 4, x 3]
theorem axisCycle_twice (x : NormalizedState) :
axisCycle (axisCycle x) =
![(-x 0 - Real.sqrt 3 * x 1) / 2, (Real.sqrt 3 * x 0 - x 1) / 2, x 4, x 2, x 3] := by
have hs : (Real.sqrt 3) ^ 2 = 3 := Real.sq_sqrt (by norm_num)
ext i
fin_cases i <;> dsimp [axisCycle] <;> ring_nf <;> norm_num [hs] <;> ring
theorem axisCycle_three (x : NormalizedState) : axisCycle (axisCycle (axisCycle x)) = x := by
have hs : (Real.sqrt 3) ^ 2 = 3 := Real.sq_sqrt (by norm_num)
rw [axisCycle_twice]
ext i
fin_cases i <;> dsimp [axisCycle] <;> ring_nf <;> norm_num [hs] <;> ring
@[simp] theorem axisSwap_twice (x : NormalizedState) : axisSwap (axisSwap x) = x := by
ext i
fin_cases i <;> simp [axisSwap]
def axisCycleLinear : NormalizedState →ₗ[ℝ] NormalizedState where
toFun := axisCycle
map_add' x y := by
ext i
fin_cases i <;> simp [axisCycle] <;> ring
map_smul' r x := by
ext i
fin_cases i <;> simp [axisCycle] <;> ring
def axisSwapLinear : NormalizedState →ₗ[ℝ] NormalizedState where
toFun := axisSwap
map_add' x y := by
ext i
fin_cases i <;> simp [axisSwap]
ring
map_smul' r x := by
ext i
fin_cases i <;> simp [axisSwap]
def axisCycleEquiv : NormalizedState ≃L[ℝ] NormalizedState :=
({ axisCycleLinear with
invFun := fun x => axisCycle (axisCycle x)
left_inv := axisCycle_three
right_inv := axisCycle_three } : NormalizedState ≃ₗ[ℝ] NormalizedState).toContinuousLinearEquiv
def axisSwapEquiv : NormalizedState ≃L[ℝ] NormalizedState :=
({ axisSwapLinear with
invFun := axisSwap
left_inv := axisSwap_twice
right_inv := axisSwap_twice } : NormalizedState ≃ₗ[ℝ] NormalizedState).toContinuousLinearEquiv
end BianchiIX
Source