Exact source: MathlibAnnex/Analysis/CStarAlgebra/CAR/GlobalTransport.lean
Pinned GitHub source · Raw UTF-8 source
Back to Pure CAR states admit two-sided inner intertwining sequences · Back to Pure-state homogeneity of the completed CAR algebra
1import MathlibAnnex.Analysis.CStarAlgebra.DenseCauchy2import MathlibAnnex.Topology.InfinitePath3import Mathlib.Topology.Algebra.Star.Unitary4import MathlibAnnex.Analysis.CStarAlgebra.CAR.Homogeneity5import MathlibAnnex.Analysis.CStarAlgebra.CAR.StateTransport67/-!8# Alternating global transport for CAR pure states910The local test order is encoded in `AlternatingState`: its movement function11has already consumed the current stage-test closeness. A transition first12moves the left vector close on the right tests, then moves the right vector13close on the next left tests. Thus no future test set is chosen after the14hypothesis which has to control it.15-/1617set_option autoImplicit false1819noncomputable section2021open Filter MathlibAnnex.Analysis.CStarAlgebra TopologicalSpace2223namespace MathlibAnnex.CStarAlgebra.CAR2425noncomputable def transportDense : ℕ → Limit := denseSeq Limit2627theorem denseRange_transportDense : DenseRange transportDense :=28 denseRange_denseSeq Limit2930noncomputable def densePrefix (n : ℕ) : Finset Limit :=31 by classical exact (Finset.range (n + 1)).image transportDense3233noncomputable def innerAt (u : unitary Limit) : StarAlgEquiv ℂ Limit Limit :=34 Unitary.conjStarAlgAut ℂ Limit (star u)3536noncomputable def protectedPrefix (u : unitary Limit) (n : ℕ) : Finset Limit :=37 by classical exact densePrefix n ∪ (densePrefix n).image (innerAt u).symm3839noncomputable def stageTests (n : ℕ) : Finset Limit :=40 by41 classical42 exact (Finset.univ.product Finset.univ).image43 (fun ij : Fin (2 ^ n) × Fin (2 ^ n) => limitMatrixUnit n ij.1 ij.2)4445def transportBudget (n : ℕ) : ℝ := (1 / 2 : ℝ) ^ n4647theorem transportBudget_pos (n : ℕ) : 0 < transportBudget n := by48 norm_num [transportBudget]4950theorem summable_transportBudget : Summable transportBudget := by51 change Summable fun n : ℕ => (1 / 2 : ℝ) ^ n52 exact summable_geometric_of_norm_lt_one (by norm_num)5354theorem mem_densePrefix {j n : ℕ} (hjn : j ≤ n) :55 transportDense j ∈ densePrefix n := by56 classical57 simp only [densePrefix]58 apply Finset.mem_image.mpr59 exact ⟨j, Finset.mem_range.mpr (Nat.lt_succ_of_le hjn), rfl⟩6061theorem mem_protectedPrefix {u : unitary Limit} {j n : ℕ} (hjn : j ≤ n) :62 transportDense j ∈ protectedPrefix u n :=63 by64 classical65 exact Finset.mem_union_left _ (mem_densePrefix hjn)6667theorem mem_symm_protectedPrefix {u : unitary Limit} {j n : ℕ} (hjn : j ≤ n) :68 (innerAt u).symm (transportDense j) ∈ protectedPrefix u n := by69 classical70 simp only [protectedPrefix]71 apply Finset.mem_union_right72 apply Finset.mem_image.mpr73 exact ⟨transportDense j, mem_densePrefix hjn, rfl⟩7475theorem mem_stageTests (n : ℕ) (i j : Fin (2 ^ n)) :76 limitMatrixUnit n i j ∈ stageTests n := by77 classical78 simp only [stageTests]79 apply Finset.mem_image.mpr80 exact ⟨(i, j), Finset.mem_product.mpr ⟨Finset.mem_univ _, Finset.mem_univ _⟩, rfl⟩8182/-- A recursion state whose left local theorem has already been specialized83to the current right vector. -/84structure AlternatingState85 {H K : Type*}86 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]87 [Nontrivial H]88 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]89 [Nontrivial K]90 (rho : Representation Limit H) (sigma : Representation Limit K)91 (xi : H) (eta : K) (step : ℕ) where92 left : unitary Limit93 right : unitary Limit94 leftPath : Path 1 left95 rightPath : Path 1 right96 move : ∀ (F' : Finset Limit) (epsilon' : ℝ), 0 < epsilon' →97 ∃ u : unitary Limit,98 ∃ p : Path 1 u,99 (∀ t, ∀ a ∈ protectedPrefix left step,100 ‖(p t : Limit) * a * star (p t : Limit) - a‖ < transportBudget step ∧101 ‖star (p t : Limit) * a * (p t : Limit) - a‖ < transportBudget step) ∧102 ∀ a ∈ F',103 ‖Representation.vectorFunctional rho104 (rho (u : Limit) (rho (left : Limit) xi)) a -105 Representation.vectorFunctional sigma (sigma (right : Limit) eta) a‖ < epsilon'106107/-- A transition records both small corrections and the state estimate at108the left midpoint, before the right correction is applied. -/109structure AlternatingTransition110 {H K : Type*}111 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]112 [Nontrivial H]113 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]114 [Nontrivial K]115 (rho : Representation Limit H) (sigma : Representation Limit K)116 (xi : H) (eta : K) {step : ℕ}117 (s : AlternatingState rho sigma xi eta step) where118 leftCorrection : unitary Limit119 rightCorrection : unitary Limit120 leftCorrectionPath : Path 1 leftCorrection121 rightCorrectionPath : Path 1 rightCorrection122 next : AlternatingState rho sigma xi eta (step + 1)123 next_left : next.left = leftCorrection * s.left124 next_right : next.right = rightCorrection * s.right125 left_small : ∀ t, ∀ a ∈ protectedPrefix s.left step,126 ‖( leftCorrectionPath t : Limit) * a * star (leftCorrectionPath t : Limit) - a‖ <127 transportBudget step ∧128 ‖star (leftCorrectionPath t : Limit) * a * (leftCorrectionPath t : Limit) - a‖ <129 transportBudget step130 right_small : ∀ t, ∀ a ∈ protectedPrefix s.right step,131 ‖( rightCorrectionPath t : Limit) * a * star (rightCorrectionPath t : Limit) - a‖ <132 transportBudget step ∧133 ‖star (rightCorrectionPath t : Limit) * a * (rightCorrectionPath t : Limit) - a‖ <134 transportBudget step135 state_small : ∀ j, j ≤ step →136 ‖Representation.vectorFunctional rho137 (rho (next.left : Limit) xi) ((innerAt s.right).symm (transportDense j)) -138 Representation.vectorFunctional sigma139 (sigma (s.right : Limit) eta) ((innerAt s.right).symm (transportDense j))‖ <140 transportBudget step141142set_option maxHeartbeats 1600000 in143theorem nonempty_transition144 {H K : Type*}145 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]146 [Nontrivial H]147 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]148 [Nontrivial K]149 (rho : Representation Limit H) (hrho : StarAlgHom.IsIrreducible rho)150 (sigma : Representation Limit K) (hsigma : StarAlgHom.IsIrreducible sigma)151 (xi : H) (eta : K) (hxi : ‖xi‖ = 1) (heta : ‖eta‖ = 1)152 {step : ℕ} (s : AlternatingState rho sigma xi eta step) :153 Nonempty (AlternatingTransition rho sigma xi eta s) := by154 classical155 have hleftUnit : ‖rho (s.left : Limit) xi‖ = 1 := by156 rw [(rho (s.left : Limit)).norm_map_of_mem_unitary157 (Unitary.map_mem rho s.left.property), hxi]158 have hrightUnit : ‖sigma (s.right : Limit) eta‖ = 1 := by159 rw [(sigma (s.right : Limit)).norm_map_of_mem_unitary160 (Unitary.map_mem sigma s.right.property), heta]161 obtain ⟨nb, db, hdb, hB⟩ :=162 exists_stageTests_crossRepresentation_path_approx sigma hsigma163 (protectedPrefix s.right step) (transportBudget_pos step)164 let requestLeft : Finset Limit :=165 stageTests nb ∪ (densePrefix step).image (innerAt s.right).symm166 have hmin : 0 < min db (transportBudget step) := lt_min hdb (transportBudget_pos step)167 obtain ⟨u, pu, husmall, huapprox⟩ := s.move requestLeft _ hmin168 let left' : unitary Limit := u * s.left169 let leftSegment : Path s.left left' :=170 { toFun := fun t => pu t * s.left171 continuous_toFun := by fun_prop172 source' := by rw [pu.source]; simp173 target' := by rw [pu.target] }174 let leftPath' : Path 1 left' := s.leftPath.trans leftSegment175 have hleft'Unit : ‖rho (left' : Limit) xi‖ = 1 := by176 rw [(rho (left' : Limit)).norm_map_of_mem_unitary177 (Unitary.map_mem rho left'.property), hxi]178 obtain ⟨na, da, hda, hA⟩ :=179 exists_stageTests_crossRepresentation_path_approx rho hrho180 (protectedPrefix left' (step + 1)) (transportBudget_pos (step + 1))181 have hBclose : ∀ i j : Fin (2 ^ nb),182 ‖Representation.vectorFunctional sigma (sigma (s.right : Limit) eta)183 (limitMatrixUnit nb i j) -184 Representation.vectorFunctional rho (rho (left' : Limit) xi)185 (limitMatrixUnit nb i j)‖ < db := by186 intro i j187 have h := huapprox (limitMatrixUnit nb i j)188 (Finset.mem_union_left _ (mem_stageTests nb i j))189 have hsimp : rho (u : Limit) (rho (s.left : Limit) xi) =190 rho (left' : Limit) xi := by191 change rho (u : Limit) (rho (s.left : Limit) xi) =192 rho ((u : Limit) * (s.left : Limit)) xi193 rw [map_mul, mul_apply_eq_comp]194 rw [hsimp, norm_sub_rev] at h195 exact lt_of_lt_of_le h (min_le_left _ _)196 obtain ⟨v, pv, hvsmall, hvapprox⟩ :=197 hB rho (sigma (s.right : Limit) eta) (rho (left' : Limit) xi)198 hrightUnit hleft'Unit hBclose (stageTests na) da hda199 let right' : unitary Limit := v * s.right200 let rightSegment : Path s.right right' :=201 { toFun := fun t => pv t * s.right202 continuous_toFun := by fun_prop203 source' := by rw [pv.source]; simp204 target' := by rw [pv.target] }205 let rightPath' : Path 1 right' := s.rightPath.trans rightSegment206 have hright'Unit : ‖sigma (right' : Limit) eta‖ = 1 := by207 rw [(sigma (right' : Limit)).norm_map_of_mem_unitary208 (Unitary.map_mem sigma right'.property), heta]209 have hAclose : ∀ i j : Fin (2 ^ na),210 ‖Representation.vectorFunctional rho (rho (left' : Limit) xi)211 (limitMatrixUnit na i j) -212 Representation.vectorFunctional sigma (sigma (right' : Limit) eta)213 (limitMatrixUnit na i j)‖ < da := by214 intro i j215 have h := hvapprox (limitMatrixUnit na i j) (mem_stageTests na i j)216 have hsimp : sigma (v : Limit) (sigma (s.right : Limit) eta) =217 sigma (right' : Limit) eta := by218 change sigma (v : Limit) (sigma (s.right : Limit) eta) =219 sigma ((v : Limit) * (s.right : Limit)) eta220 rw [map_mul, mul_apply_eq_comp]221 rw [hsimp, norm_sub_rev] at h222 exact h223 let next : AlternatingState rho sigma xi eta (step + 1) :=224 { left := left'225 right := right'226 leftPath := leftPath'227 rightPath := rightPath'228 move := hA sigma (rho (left' : Limit) xi) (sigma (right' : Limit) eta)229 hleft'Unit hright'Unit hAclose }230 refine ⟨{231 leftCorrection := u232 rightCorrection := v233 leftCorrectionPath := pu234 rightCorrectionPath := pv235 next := next236 next_left := rfl237 next_right := rfl238 left_small := husmall239 right_small := hvsmall240 state_small := ?_ }⟩241 intro j hj242 have h := huapprox ((innerAt s.right).symm (transportDense j))243 (Finset.mem_union_right _ (Finset.mem_image.mpr244 ⟨transportDense j, mem_densePrefix hj, rfl⟩))245 have hsimp : rho (u : Limit) (rho (s.left : Limit) xi) =246 rho (next.left : Limit) xi := by247 change rho (u : Limit) (rho (s.left : Limit) xi) =248 rho ((u : Limit) * (s.left : Limit)) xi249 rw [map_mul, mul_apply_eq_comp]250 rw [hsimp] at h251 exact lt_of_lt_of_le h (min_le_right _ _)252253set_option maxHeartbeats 1600000 in254theorem nonempty_initialState255 {H K : Type*}256 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]257 [Nontrivial H]258 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]259 [Nontrivial K]260 (rho : Representation Limit H) (hrho : StarAlgHom.IsIrreducible rho)261 (sigma : Representation Limit K) (hsigma : StarAlgHom.IsIrreducible sigma)262 (xi : H) (eta : K) (hxi : ‖xi‖ = 1) (heta : ‖eta‖ = 1) :263 Nonempty (AlternatingState rho sigma xi eta 0) := by264 classical265 obtain ⟨nb, db, hdb, hB⟩ :=266 exists_stageTests_crossRepresentation_path_approx sigma hsigma267 (protectedPrefix 1 0) (transportBudget_pos 0)268 obtain ⟨u, pu, hu⟩ := exists_unitary_crossRepresentation_path_approx269 rho hrho sigma xi eta hxi heta (stageTests nb) hdb270 let left' : unitary Limit := u271 have hleft'Unit : ‖rho (left' : Limit) xi‖ = 1 := by272 rw [(rho (left' : Limit)).norm_map_of_mem_unitary273 (Unitary.map_mem rho left'.property), hxi]274 obtain ⟨na, da, hda, hA⟩ :=275 exists_stageTests_crossRepresentation_path_approx rho hrho276 (protectedPrefix left' 0) (transportBudget_pos 0)277 have hBclose : ∀ i j : Fin (2 ^ nb),278 ‖Representation.vectorFunctional sigma eta (limitMatrixUnit nb i j) -279 Representation.vectorFunctional rho (rho (left' : Limit) xi)280 (limitMatrixUnit nb i j)‖ < db := by281 intro i j282 have h := hu (limitMatrixUnit nb i j) (mem_stageTests nb i j)283 change ‖Representation.vectorFunctional sigma eta (limitMatrixUnit nb i j) -284 Representation.vectorFunctional rho (rho (u : Limit) xi)285 (limitMatrixUnit nb i j)‖ < db286 rw [norm_sub_rev]287 exact h288 obtain ⟨v, pv, _hvsmall, hvapprox⟩ :=289 hB rho eta (rho (left' : Limit) xi) heta hleft'Unit hBclose290 (stageTests na) da hda291 let right' : unitary Limit := v292 have hright'Unit : ‖sigma (right' : Limit) eta‖ = 1 := by293 rw [(sigma (right' : Limit)).norm_map_of_mem_unitary294 (Unitary.map_mem sigma right'.property), heta]295 have hAclose : ∀ i j : Fin (2 ^ na),296 ‖Representation.vectorFunctional rho (rho (left' : Limit) xi)297 (limitMatrixUnit na i j) -298 Representation.vectorFunctional sigma (sigma (right' : Limit) eta)299 (limitMatrixUnit na i j)‖ < da := by300 intro i j301 have h := hvapprox (limitMatrixUnit na i j) (mem_stageTests na i j)302 change ‖Representation.vectorFunctional rho (rho (left' : Limit) xi)303 (limitMatrixUnit na i j) -304 Representation.vectorFunctional sigma (sigma (v : Limit) eta)305 (limitMatrixUnit na i j)‖ < da306 rw [norm_sub_rev]307 exact h308 exact ⟨{309 left := left'310 right := right'311 leftPath := pu312 rightPath := pv313 move := hA sigma (rho (left' : Limit) xi) (sigma (right' : Limit) eta)314 hleft'Unit hright'Unit hAclose }⟩315316noncomputable def initialState317 {H K : Type*}318 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]319 [Nontrivial H]320 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]321 [Nontrivial K]322 (rho : Representation Limit H) (hrho : StarAlgHom.IsIrreducible rho)323 (sigma : Representation Limit K) (hsigma : StarAlgHom.IsIrreducible sigma)324 (xi : H) (eta : K) (hxi : ‖xi‖ = 1) (heta : ‖eta‖ = 1) :325 AlternatingState rho sigma xi eta 0 :=326 Classical.choice (nonempty_initialState rho hrho sigma hsigma xi eta hxi heta)327328noncomputable def chosenTransition329 {H K : Type*}330 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]331 [Nontrivial H]332 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]333 [Nontrivial K]334 (rho : Representation Limit H) (hrho : StarAlgHom.IsIrreducible rho)335 (sigma : Representation Limit K) (hsigma : StarAlgHom.IsIrreducible sigma)336 (xi : H) (eta : K) (hxi : ‖xi‖ = 1) (heta : ‖eta‖ = 1)337 {step : ℕ} (s : AlternatingState rho sigma xi eta step) :338 AlternatingTransition rho sigma xi eta s :=339 Classical.choice (nonempty_transition rho hrho sigma hsigma xi eta hxi heta s)340341noncomputable def alternatingStates342 {H K : Type*}343 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]344 [Nontrivial H]345 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]346 [Nontrivial K]347 (rho : Representation Limit H) (hrho : StarAlgHom.IsIrreducible rho)348 (sigma : Representation Limit K) (hsigma : StarAlgHom.IsIrreducible sigma)349 (xi : H) (eta : K) (hxi : ‖xi‖ = 1) (heta : ‖eta‖ = 1) :350 (n : ℕ) → AlternatingState rho sigma xi eta n351 | 0 => initialState rho hrho sigma hsigma xi eta hxi heta352 | n + 1 => (chosenTransition rho hrho sigma hsigma xi eta hxi heta353 (alternatingStates rho hrho sigma hsigma xi eta hxi heta n)).next354355noncomputable def alternatingTransitions356 {H K : Type*}357 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]358 [Nontrivial H]359 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]360 [Nontrivial K]361 (rho : Representation Limit H) (hrho : StarAlgHom.IsIrreducible rho)362 (sigma : Representation Limit K) (hsigma : StarAlgHom.IsIrreducible sigma)363 (xi : H) (eta : K) (hxi : ‖xi‖ = 1) (heta : ‖eta‖ = 1)364 (n : ℕ) :365 AlternatingTransition rho sigma xi eta366 (alternatingStates rho hrho sigma hsigma xi eta hxi heta n) :=367 chosenTransition rho hrho sigma hsigma xi eta hxi heta368 (alternatingStates rho hrho sigma hsigma xi eta hxi heta n)369370section Sequences371372variable {H K : Type*}373 [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]374 [Nontrivial H]375 [NormedAddCommGroup K] [InnerProductSpace ℂ K] [CompleteSpace K]376 [Nontrivial K]377 (rho : Representation Limit H) (hrho : StarAlgHom.IsIrreducible rho)378 (sigma : Representation Limit K) (hsigma : StarAlgHom.IsIrreducible sigma)379 (xi : H) (eta : K) (hxi : ‖xi‖ = 1) (heta : ‖eta‖ = 1)380381local notation "S" => alternatingStates rho hrho sigma hsigma xi eta hxi heta382local notation "T" => alternatingTransitions rho hrho sigma hsigma xi eta hxi heta383384/-- Integer-time vertices of the left concatenated path. Negative times are385constant, time zero is the unit, and time `n+1` is the `n`th recursion state. -/386noncomputable def leftPathPoints : ℤ → unitary Limit387 | .ofNat 0 => 1388 | .ofNat (n + 1) => (S n).left389 | .negSucc _ => 1390391/-- Integer-time vertices of the right concatenated path. -/392noncomputable def rightPathPoints : ℤ → unitary Limit393 | .ofNat 0 => 1394 | .ofNat (n + 1) => (S n).right395 | .negSucc _ => 1396397/-- A correction path, translated on the right by the previous accumulated398unitary. -/399def translatedCorrectionPath {u w : unitary Limit} (p : Path 1 u) :400 Path w (u * w) :=401 { toFun := fun t => p t * w402 continuous_toFun := by fun_prop403 source' := by rw [p.source]; simp404 target' := by rw [p.target] }405406/-- Unit-interval pieces of the left unbounded path. -/407noncomputable def leftPathSegments :408 (z : ℤ) → Path409 (leftPathPoints rho hrho sigma hsigma xi eta hxi heta z)410 (leftPathPoints rho hrho sigma hsigma xi eta hxi heta (z + 1))411 | .ofNat 0 => (S 0).leftPath412 | .ofNat (n + 1) => by413 let q : Path (S n).left ((T n).leftCorrection * (S n).left) :=414 translatedCorrectionPath (w := (S n).left) (T n).leftCorrectionPath415 exact q.cast (by simp [leftPathPoints]) (by416 simp only [leftPathPoints]417 change (S (n + 1)).left = (T n).leftCorrection * (S n).left418 exact (T n).next_left)419 | .negSucc n => by420 have hz : Int.negSucc n + 1 =421 match n with422 | 0 => (0 : ℤ)423 | k + 1 => Int.negSucc k := by424 cases n <;> simp [Int.negSucc_eq]425 rw [hz]426 cases n <;> exact Path.refl _427428/-- Unit-interval pieces of the right unbounded path. -/429noncomputable def rightPathSegments :430 (z : ℤ) → Path431 (rightPathPoints rho hrho sigma hsigma xi eta hxi heta z)432 (rightPathPoints rho hrho sigma hsigma xi eta hxi heta (z + 1))433 | .ofNat 0 => (S 0).rightPath434 | .ofNat (n + 1) => by435 let q : Path (S n).right ((T n).rightCorrection * (S n).right) :=436 translatedCorrectionPath (w := (S n).right) (T n).rightCorrectionPath437 exact q.cast (by simp [rightPathPoints]) (by438 simp only [rightPathPoints]439 change (S (n + 1)).right = (T n).rightCorrection * (S n).right440 exact (T n).next_right)441 | .negSucc n => by442 have hz : Int.negSucc n + 1 =443 match n with444 | 0 => (0 : ℤ)445 | k + 1 => Int.negSucc k := by446 cases n <;> simp [Int.negSucc_eq]447 rw [hz]448 cases n <;> exact Path.refl _449450/-- The left locally finite concatenation, constant at negative times. -/451noncomputable def leftContinuousPath (t : ℝ) : unitary Limit :=452 MathlibAnnex.Path.infiniteConcat453 (leftPathPoints rho hrho sigma hsigma xi eta hxi heta)454 (leftPathSegments rho hrho sigma hsigma xi eta hxi heta) t455456/-- The right locally finite concatenation, constant at negative times. -/457noncomputable def rightContinuousPath (t : ℝ) : unitary Limit :=458 MathlibAnnex.Path.infiniteConcat459 (rightPathPoints rho hrho sigma hsigma xi eta hxi heta)460 (rightPathSegments rho hrho sigma hsigma xi eta hxi heta) t461462theorem continuous_leftContinuousPath :463 Continuous (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta) :=464 MathlibAnnex.Path.continuous_infiniteConcat _ _465466theorem continuous_rightContinuousPath :467 Continuous (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta) :=468 MathlibAnnex.Path.continuous_infiniteConcat _ _469470theorem leftContinuousPath_zero :471 leftContinuousPath rho hrho sigma hsigma xi eta hxi heta 0 = 1 := by472 rw [leftContinuousPath, MathlibAnnex.Path.infiniteConcat, Int.floor_zero]473 change (S 0).leftPath474 ⟨Int.fract (0 : ℝ), unitInterval.fract_mem (0 : ℝ)⟩ = 1475 rw [show (⟨Int.fract (0 : ℝ), unitInterval.fract_mem (0 : ℝ)⟩ :476 unitInterval) = 0 by ext; norm_num [Int.fract]]477 exact (S 0).leftPath.source478479theorem rightContinuousPath_zero :480 rightContinuousPath rho hrho sigma hsigma xi eta hxi heta 0 = 1 := by481 rw [rightContinuousPath, MathlibAnnex.Path.infiniteConcat, Int.floor_zero]482 change (S 0).rightPath483 ⟨Int.fract (0 : ℝ), unitInterval.fract_mem (0 : ℝ)⟩ = 1484 rw [show (⟨Int.fract (0 : ℝ), unitInterval.fract_mem (0 : ℝ)⟩ :485 unitInterval) = 0 by ext; norm_num [Int.fract]]486 exact (S 0).rightPath.source487488theorem leftContinuousPath_segment (n : ℕ)489 (t : Set.Icc ((n + 1 : ℕ) : ℝ) (n + 2 : ℝ)) :490 leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t =491 (T n).leftCorrectionPath492 ⟨(t : ℝ) - (n + 1), by493 constructor494 · exact sub_nonneg.mpr (by simpa using t.property.1)495 · apply (sub_le_iff_le_add).mpr496 have ht := t.property.2497 linarith⟩ *498 (S n).left := by499 let tz : Set.Icc ((Int.ofNat (n + 1) : ℤ) : ℝ)500 ((Int.ofNat (n + 1) : ℤ) + 1 : ℝ) :=501 ⟨t, by502 constructor503 · simpa using t.property.1504 · have ht := t.property.2505 norm_num at ht ⊢506 linarith⟩507 have h := MathlibAnnex.Path.infiniteConcat_eq_intervalPath508 (leftPathPoints rho hrho sigma hsigma xi eta hxi heta)509 (leftPathSegments rho hrho sigma hsigma xi eta hxi heta)510 (Int.ofNat (n + 1)) tz511 dsimp only [tz] at h512 convert h using 1 <;>513 simp [leftContinuousPath, MathlibAnnex.Path.intervalPath,514 leftPathSegments, translatedCorrectionPath, Path.cast]515 congr 2516517theorem rightContinuousPath_segment (n : ℕ)518 (t : Set.Icc ((n + 1 : ℕ) : ℝ) (n + 2 : ℝ)) :519 rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t =520 (T n).rightCorrectionPath521 ⟨(t : ℝ) - (n + 1), by522 constructor523 · exact sub_nonneg.mpr (by simpa using t.property.1)524 · apply (sub_le_iff_le_add).mpr525 have ht := t.property.2526 linarith⟩ *527 (S n).right := by528 let tz : Set.Icc ((Int.ofNat (n + 1) : ℤ) : ℝ)529 ((Int.ofNat (n + 1) : ℤ) + 1 : ℝ) :=530 ⟨t, by531 constructor532 · simpa using t.property.1533 · have ht := t.property.2534 norm_num at ht ⊢535 linarith⟩536 have h := MathlibAnnex.Path.infiniteConcat_eq_intervalPath537 (rightPathPoints rho hrho sigma hsigma xi eta hxi heta)538 (rightPathSegments rho hrho sigma hsigma xi eta hxi heta)539 (Int.ofNat (n + 1)) tz540 dsimp only [tz] at h541 convert h using 1 <;>542 simp [rightContinuousPath, MathlibAnnex.Path.intervalPath,543 rightPathSegments, translatedCorrectionPath, Path.cast]544 congr 2545546noncomputable def leftAutomorphisms (n : ℕ) : StarAlgEquiv ℂ Limit Limit :=547 innerAt (S n).left548549noncomputable def rightAutomorphisms (n : ℕ) : StarAlgEquiv ℂ Limit Limit :=550 innerAt (S n).right551552theorem leftContinuousPath_forward_dense_segment (n j : ℕ) (hj : j ≤ n)553 (t : Set.Icc ((n + 1 : ℕ) : ℝ) (n + 2 : ℝ)) :554 ‖innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)555 (transportDense j) -556 leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n557 (transportDense j)‖ ≤ transportBudget n := by558 let s : unitInterval :=559 ⟨(t : ℝ) - (n + 1), by560 constructor561 · exact sub_nonneg.mpr (by simpa using t.property.1)562 · apply (sub_le_iff_le_add).mpr563 linarith [t.property.2]⟩564 rw [leftContinuousPath_segment rho hrho sigma hsigma xi eta hxi heta n t]565 have hformula :566 innerAt ((T n).leftCorrectionPath s * (S n).left) (transportDense j) =567 innerAt (S n).left568 (star ((T n).leftCorrectionPath s : Limit) * transportDense j *569 ((T n).leftCorrectionPath s : Limit)) := by570 simp [innerAt, mul_assoc]571 rw [hformula, leftAutomorphisms]572 calc573 _ = ‖star ((T n).leftCorrectionPath s : Limit) * transportDense j *574 ((T n).leftCorrectionPath s : Limit) - transportDense j‖ := by575 have h := (StarAlgEquiv.isometry (innerAt (S n).left)).dist_eq576 (star ((T n).leftCorrectionPath s : Limit) * transportDense j *577 ((T n).leftCorrectionPath s : Limit)) (transportDense j)578 simpa only [dist_eq_norm] using h579 _ ≤ transportBudget n :=580 le_of_lt (((T n).left_small s _ (mem_protectedPrefix hj)).2)581582theorem leftContinuousPath_inverse_dense_segment (n j : ℕ) (hj : j ≤ n)583 (t : Set.Icc ((n + 1 : ℕ) : ℝ) (n + 2 : ℝ)) :584 ‖(innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm585 (transportDense j) -586 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm587 (transportDense j)‖ ≤ transportBudget n := by588 let s : unitInterval :=589 ⟨(t : ℝ) - (n + 1), by590 constructor591 · exact sub_nonneg.mpr (by simpa using t.property.1)592 · apply (sub_le_iff_le_add).mpr593 linarith [t.property.2]⟩594 rw [leftContinuousPath_segment rho hrho sigma hsigma xi eta hxi heta n t]595 have hformula :596 (innerAt ((T n).leftCorrectionPath s * (S n).left)).symm597 (transportDense j) =598 ((T n).leftCorrectionPath s : Limit) *599 (innerAt (S n).left).symm (transportDense j) *600 star ((T n).leftCorrectionPath s : Limit) := by601 rw [innerAt, Unitary.conjStarAlgAut_symm,602 innerAt, Unitary.conjStarAlgAut_symm]603 simp only [Unitary.conjStarAlgAut_apply, star_star]604 change (((T n).leftCorrectionPath s : Limit) * (S n).left) *605 transportDense j *606 star (((T n).leftCorrectionPath s : Limit) * (S n).left) = _607 simp only [star_mul]608 noncomm_ring609 rw [hformula, leftAutomorphisms]610 exact le_of_lt (((T n).left_small s _ (mem_symm_protectedPrefix hj)).1)611612theorem rightContinuousPath_forward_dense_segment (n j : ℕ) (hj : j ≤ n)613 (t : Set.Icc ((n + 1 : ℕ) : ℝ) (n + 2 : ℝ)) :614 ‖innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)615 (transportDense j) -616 rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n617 (transportDense j)‖ ≤ transportBudget n := by618 let s : unitInterval :=619 ⟨(t : ℝ) - (n + 1), by620 constructor621 · exact sub_nonneg.mpr (by simpa using t.property.1)622 · apply (sub_le_iff_le_add).mpr623 linarith [t.property.2]⟩624 rw [rightContinuousPath_segment rho hrho sigma hsigma xi eta hxi heta n t]625 have hformula :626 innerAt ((T n).rightCorrectionPath s * (S n).right) (transportDense j) =627 innerAt (S n).right628 (star ((T n).rightCorrectionPath s : Limit) * transportDense j *629 ((T n).rightCorrectionPath s : Limit)) := by630 simp [innerAt, mul_assoc]631 rw [hformula, rightAutomorphisms]632 calc633 _ = ‖star ((T n).rightCorrectionPath s : Limit) * transportDense j *634 ((T n).rightCorrectionPath s : Limit) - transportDense j‖ := by635 have h := (StarAlgEquiv.isometry (innerAt (S n).right)).dist_eq636 (star ((T n).rightCorrectionPath s : Limit) * transportDense j *637 ((T n).rightCorrectionPath s : Limit)) (transportDense j)638 simpa only [dist_eq_norm] using h639 _ ≤ transportBudget n :=640 le_of_lt (((T n).right_small s _ (mem_protectedPrefix hj)).2)641642theorem rightContinuousPath_inverse_dense_segment (n j : ℕ) (hj : j ≤ n)643 (t : Set.Icc ((n + 1 : ℕ) : ℝ) (n + 2 : ℝ)) :644 ‖(innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm645 (transportDense j) -646 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm647 (transportDense j)‖ ≤ transportBudget n := by648 let s : unitInterval :=649 ⟨(t : ℝ) - (n + 1), by650 constructor651 · exact sub_nonneg.mpr (by simpa using t.property.1)652 · apply (sub_le_iff_le_add).mpr653 linarith [t.property.2]⟩654 rw [rightContinuousPath_segment rho hrho sigma hsigma xi eta hxi heta n t]655 have hformula :656 (innerAt ((T n).rightCorrectionPath s * (S n).right)).symm657 (transportDense j) =658 ((T n).rightCorrectionPath s : Limit) *659 (innerAt (S n).right).symm (transportDense j) *660 star ((T n).rightCorrectionPath s : Limit) := by661 rw [innerAt, Unitary.conjStarAlgAut_symm,662 innerAt, Unitary.conjStarAlgAut_symm]663 simp only [Unitary.conjStarAlgAut_apply, star_star]664 change (((T n).rightCorrectionPath s : Limit) * (S n).right) *665 transportDense j *666 star (((T n).rightCorrectionPath s : Limit) * (S n).right) = _667 simp only [star_mul]668 noncomm_ring669 rw [hformula, rightAutomorphisms]670 exact le_of_lt (((T n).right_small s _ (mem_symm_protectedPrefix hj)).1)671672theorem leftAutomorphisms_step (n j : ℕ) (hj : j ≤ n) :673 ‖leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)674 (transportDense j) -675 leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n676 (transportDense j)‖ ≤ transportBudget n := by677 let t := T n678 have hnext : S (n + 1) = t.next := rfl679 rw [leftAutomorphisms, leftAutomorphisms, hnext, t.next_left]680 have hformula :681 innerAt (t.leftCorrection * (S n).left) (transportDense j) =682 innerAt (S n).left683 (star (t.leftCorrection : Limit) * transportDense j *684 (t.leftCorrection : Limit)) := by685 simp [innerAt, mul_assoc]686 rw [hformula]687 calc688 _ = ‖star (t.leftCorrection : Limit) * transportDense j *689 (t.leftCorrection : Limit) - transportDense j‖ := by690 have h := (StarAlgEquiv.isometry (innerAt (S n).left)).dist_eq691 (star (t.leftCorrection : Limit) * transportDense j *692 (t.leftCorrection : Limit)) (transportDense j)693 simpa only [dist_eq_norm] using h694 _ ≤ transportBudget n := by695 have h := (t.left_small (1 : Set.Icc (0 : ℝ) 1) _696 (mem_protectedPrefix hj)).2697 simpa only [t.leftCorrectionPath.target] using le_of_lt h698699theorem leftAutomorphisms_symm_step (n j : ℕ) (hj : j ≤ n) :700 ‖(leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)).symm701 (transportDense j) -702 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm703 (transportDense j)‖ ≤ transportBudget n := by704 let t := T n705 have hnext : S (n + 1) = t.next := rfl706 rw [leftAutomorphisms, leftAutomorphisms, hnext, t.next_left]707 have hformula :708 (innerAt (t.leftCorrection * (S n).left)).symm (transportDense j) =709 (t.leftCorrection : Limit) *710 (innerAt (S n).left).symm (transportDense j) *711 star (t.leftCorrection : Limit) := by712 rw [innerAt, Unitary.conjStarAlgAut_symm,713 innerAt, Unitary.conjStarAlgAut_symm]714 simp only [Unitary.conjStarAlgAut_apply, star_star]715 change ((t.leftCorrection : Limit) * (S n).left) * transportDense j *716 star ((t.leftCorrection : Limit) * (S n).left) = _717 simp only [star_mul]718 noncomm_ring719 rw [hformula]720 have h := (t.left_small (1 : Set.Icc (0 : ℝ) 1) _721 (mem_symm_protectedPrefix hj)).1722 simpa only [t.leftCorrectionPath.target] using le_of_lt h723724theorem rightAutomorphisms_step (n j : ℕ) (hj : j ≤ n) :725 ‖rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)726 (transportDense j) -727 rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n728 (transportDense j)‖ ≤ transportBudget n := by729 let t := T n730 have hnext : S (n + 1) = t.next := rfl731 rw [rightAutomorphisms, rightAutomorphisms, hnext, t.next_right]732 have hformula :733 innerAt (t.rightCorrection * (S n).right) (transportDense j) =734 innerAt (S n).right735 (star (t.rightCorrection : Limit) * transportDense j *736 (t.rightCorrection : Limit)) := by737 simp [innerAt, mul_assoc]738 rw [hformula]739 calc740 _ = ‖star (t.rightCorrection : Limit) * transportDense j *741 (t.rightCorrection : Limit) - transportDense j‖ := by742 have h := (StarAlgEquiv.isometry (innerAt (S n).right)).dist_eq743 (star (t.rightCorrection : Limit) * transportDense j *744 (t.rightCorrection : Limit)) (transportDense j)745 simpa only [dist_eq_norm] using h746 _ ≤ transportBudget n := by747 have h := (t.right_small (1 : Set.Icc (0 : ℝ) 1) _748 (mem_protectedPrefix hj)).2749 simpa only [t.rightCorrectionPath.target] using le_of_lt h750751theorem rightAutomorphisms_symm_step (n j : ℕ) (hj : j ≤ n) :752 ‖(rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)).symm753 (transportDense j) -754 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm755 (transportDense j)‖ ≤ transportBudget n := by756 let t := T n757 have hnext : S (n + 1) = t.next := rfl758 rw [rightAutomorphisms, rightAutomorphisms, hnext, t.next_right]759 have hformula :760 (innerAt (t.rightCorrection * (S n).right)).symm (transportDense j) =761 (t.rightCorrection : Limit) *762 (innerAt (S n).right).symm (transportDense j) *763 star (t.rightCorrection : Limit) := by764 rw [innerAt, Unitary.conjStarAlgAut_symm,765 innerAt, Unitary.conjStarAlgAut_symm]766 simp only [Unitary.conjStarAlgAut_apply, star_star]767 change ((t.rightCorrection : Limit) * (S n).right) * transportDense j *768 star ((t.rightCorrection : Limit) * (S n).right) = _769 simp only [star_mul]770 noncomm_ring771 rw [hformula]772 have h := (t.right_small (1 : Set.Icc (0 : ℝ) 1) _773 (mem_symm_protectedPrefix hj)).1774 simpa only [t.rightCorrectionPath.target] using le_of_lt h775776theorem leftAutomorphisms_cauchy :777 ∀ a, CauchySeq (fun n =>778 leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n a) :=779 MathlibAnnex.CStarAlgebra.cauchySeq_of_summable_dense_steps780 transportDense denseRange_transportDense781 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta)782 transportBudget summable_transportBudget783 (leftAutomorphisms_step rho hrho sigma hsigma xi eta hxi heta)784785theorem leftAutomorphisms_symm_cauchy :786 ∀ a, CauchySeq (fun n =>787 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm a) :=788 MathlibAnnex.CStarAlgebra.cauchySeq_of_summable_dense_steps789 transportDense denseRange_transportDense790 (fun n => (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm)791 transportBudget summable_transportBudget792 (leftAutomorphisms_symm_step rho hrho sigma hsigma xi eta hxi heta)793794theorem rightAutomorphisms_cauchy :795 ∀ a, CauchySeq (fun n =>796 rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n a) :=797 MathlibAnnex.CStarAlgebra.cauchySeq_of_summable_dense_steps798 transportDense denseRange_transportDense799 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta)800 transportBudget summable_transportBudget801 (rightAutomorphisms_step rho hrho sigma hsigma xi eta hxi heta)802803theorem rightAutomorphisms_symm_cauchy :804 ∀ a, CauchySeq (fun n =>805 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm a) :=806 MathlibAnnex.CStarAlgebra.cauchySeq_of_summable_dense_steps807 transportDense denseRange_transportDense808 (fun n => (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm)809 transportBudget summable_transportBudget810 (rightAutomorphisms_symm_step rho hrho sigma hsigma xi eta hxi heta)811812theorem tendsto_transportBudget_zero :813 Tendsto transportBudget atTop (nhds 0) := by814 change Tendsto (fun n : ℕ => (1 / 2 : ℝ) ^ n) atTop (nhds 0)815 exact tendsto_pow_atTop_nhds_zero_of_lt_one (by norm_num) (by norm_num)816817/-- The two-sided pointwise limit of the accumulated left conjugations. -/818noncomputable def leftLimitAutomorphism : StarAlgEquiv ℂ Limit Limit :=819 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit820 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta)821 (leftAutomorphisms_cauchy rho hrho sigma hsigma xi eta hxi heta)822 (leftAutomorphisms_symm_cauchy rho hrho sigma hsigma xi eta hxi heta)823824/-- The two-sided pointwise limit of the accumulated right conjugations. -/825noncomputable def rightLimitAutomorphism : StarAlgEquiv ℂ Limit Limit :=826 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit827 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta)828 (rightAutomorphisms_cauchy rho hrho sigma hsigma xi eta hxi heta)829 (rightAutomorphisms_symm_cauchy rho hrho sigma hsigma xi eta hxi heta)830831theorem tendsto_leftContinuousPath_forward (a : Limit) :832 Tendsto (fun t : ℝ =>833 innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t) a)834 atTop (nhds (leftLimitAutomorphism rho hrho sigma hsigma xi eta hxi heta a)) := by835 apply MathlibAnnex.Metric.tendsto_atTop_of_isometry_segment_approx836 transportDense denseRange_transportDense837 (fun n a => leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n a)838 (fun t => innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t))839 (fun n => StarAlgEquiv.isometry840 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n))841 (fun t => StarAlgEquiv.isometry842 (innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)))843 transportBudget tendsto_transportBudget_zero844 (fun n j hj t => by845 simpa only [dist_eq_norm] using846 leftContinuousPath_forward_dense_segment847 rho hrho sigma hsigma xi eta hxi heta n j hj t)848 a _849 simpa [leftLimitAutomorphism,850 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit_apply,851 MathlibAnnex.CStarAlgebra.pointwiseLimitHom_apply] using852 MathlibAnnex.CStarAlgebra.tendsto_pointwiseLimit853 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta)854 (leftAutomorphisms_cauchy rho hrho sigma hsigma xi eta hxi heta) a855856theorem tendsto_leftContinuousPath_inverse (a : Limit) :857 Tendsto (fun t : ℝ =>858 (innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm a)859 atTop (nhds ((leftLimitAutomorphism860 rho hrho sigma hsigma xi eta hxi heta).symm a)) := by861 apply MathlibAnnex.Metric.tendsto_atTop_of_isometry_segment_approx862 transportDense denseRange_transportDense863 (fun n a =>864 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm a)865 (fun t => (innerAt866 (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm)867 (fun n => StarAlgEquiv.isometry868 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm)869 (fun t => StarAlgEquiv.isometry870 (innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm)871 transportBudget tendsto_transportBudget_zero872 (fun n j hj t => by873 simpa only [dist_eq_norm] using874 leftContinuousPath_inverse_dense_segment875 rho hrho sigma hsigma xi eta hxi heta n j hj t)876 a _877 rw [leftLimitAutomorphism,878 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit_symm_apply]879 exact MathlibAnnex.CStarAlgebra.tendsto_pointwiseLimit880 (fun n => (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm)881 (leftAutomorphisms_symm_cauchy rho hrho sigma hsigma xi eta hxi heta) a882883theorem tendsto_rightContinuousPath_forward (a : Limit) :884 Tendsto (fun t : ℝ =>885 innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t) a)886 atTop (nhds (rightLimitAutomorphism rho hrho sigma hsigma xi eta hxi heta a)) := by887 apply MathlibAnnex.Metric.tendsto_atTop_of_isometry_segment_approx888 transportDense denseRange_transportDense889 (fun n a => rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n a)890 (fun t => innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t))891 (fun n => StarAlgEquiv.isometry892 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n))893 (fun t => StarAlgEquiv.isometry894 (innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)))895 transportBudget tendsto_transportBudget_zero896 (fun n j hj t => by897 simpa only [dist_eq_norm] using898 rightContinuousPath_forward_dense_segment899 rho hrho sigma hsigma xi eta hxi heta n j hj t)900 a _901 simpa [rightLimitAutomorphism,902 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit_apply,903 MathlibAnnex.CStarAlgebra.pointwiseLimitHom_apply] using904 MathlibAnnex.CStarAlgebra.tendsto_pointwiseLimit905 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta)906 (rightAutomorphisms_cauchy rho hrho sigma hsigma xi eta hxi heta) a907908theorem tendsto_rightContinuousPath_inverse (a : Limit) :909 Tendsto (fun t : ℝ =>910 (innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm a)911 atTop (nhds ((rightLimitAutomorphism912 rho hrho sigma hsigma xi eta hxi heta).symm a)) := by913 apply MathlibAnnex.Metric.tendsto_atTop_of_isometry_segment_approx914 transportDense denseRange_transportDense915 (fun n a =>916 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm a)917 (fun t => (innerAt918 (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm)919 (fun n => StarAlgEquiv.isometry920 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm)921 (fun t => StarAlgEquiv.isometry922 (innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm)923 transportBudget tendsto_transportBudget_zero924 (fun n j hj t => by925 simpa only [dist_eq_norm] using926 rightContinuousPath_inverse_dense_segment927 rho hrho sigma hsigma xi eta hxi heta n j hj t)928 a _929 rw [rightLimitAutomorphism,930 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit_symm_apply]931 exact MathlibAnnex.CStarAlgebra.tendsto_pointwiseLimit932 (fun n => (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm)933 (rightAutomorphisms_symm_cauchy rho hrho sigma hsigma xi eta hxi heta) a934935noncomputable def outputUnitary (n : ℕ) : unitary Limit :=936 star (S (n + 1)).left * (S n).right937938noncomputable def outputAutomorphisms (n : ℕ) : StarAlgEquiv ℂ Limit Limit :=939 Unitary.conjStarAlgAut ℂ Limit940 (outputUnitary rho hrho sigma hsigma xi eta hxi heta n)941942theorem outputAutomorphisms_eq (n : ℕ) :943 outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta n =944 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm.trans945 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)) := by946 ext a947 simp [outputAutomorphisms, outputUnitary, rightAutomorphisms,948 leftAutomorphisms, innerAt, mul_assoc]949950theorem leftAutomorphisms_succ_cauchy :951 ∀ a, CauchySeq (fun n =>952 leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1) a) := by953 intro a954 exact (cauchySeq_shift 1).2955 (leftAutomorphisms_cauchy rho hrho sigma hsigma xi eta hxi heta a)956957theorem leftAutomorphisms_succ_symm_cauchy :958 ∀ a, CauchySeq (fun n =>959 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)).symm a) := by960 intro a961 exact (cauchySeq_shift 1).2962 (leftAutomorphisms_symm_cauchy rho hrho sigma hsigma xi eta hxi heta a)963964theorem outputAutomorphisms_cauchy :965 ∀ a, CauchySeq (fun n =>966 outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta n a) := by967 intro a968 have h := MathlibAnnex.CStarAlgebra.cauchySeq_trans_of_isometry969 (fun n => leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1))970 (fun n => (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm)971 (leftAutomorphisms_succ_cauchy rho hrho sigma hsigma xi eta hxi heta)972 (rightAutomorphisms_symm_cauchy rho hrho sigma hsigma xi eta hxi heta) a973 simpa only [outputAutomorphisms_eq] using h974975theorem outputAutomorphisms_symm_cauchy :976 ∀ a, CauchySeq (fun n =>977 (outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm a) := by978 intro a979 have h := MathlibAnnex.CStarAlgebra.cauchySeq_trans_of_isometry980 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta)981 (fun n =>982 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)).symm)983 (rightAutomorphisms_cauchy rho hrho sigma hsigma xi eta hxi heta)984 (leftAutomorphisms_succ_symm_cauchy rho hrho sigma hsigma xi eta hxi heta) a985 have heq : ∀ n,986 (outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm =987 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)).symm.trans988 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n) := by989 intro n990 rw [outputAutomorphisms_eq]991 rfl992 simpa only [heq] using h993994theorem outputAutomorphisms_state_dense (n j : ℕ) (hj : j ≤ n) :995 ‖Representation.vectorFunctional rho xi996 (outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta n997 (transportDense j)) -998 Representation.vectorFunctional sigma eta (transportDense j)‖ <999 transportBudget n := by1000 let t := T n1001 have hnext : S (n + 1) = t.next := rfl1002 have h := t.state_small j hj1003 rw [← hnext] at h1004 rw [Representation.vectorFunctional_map_apply,1005 Representation.vectorFunctional_map_apply] at h1006 have h' :1007 ‖Representation.vectorFunctional rho xi1008 (innerAt (S (n + 1)).left1009 ((innerAt (S n).right).symm (transportDense j))) -1010 Representation.vectorFunctional sigma eta1011 (innerAt (S n).right1012 ((innerAt (S n).right).symm (transportDense j)))‖ <1013 transportBudget n := by1014 simpa [innerAt] using h1015 have hleft :1016 innerAt (S (n + 1)).left1017 ((innerAt (S n).right).symm (transportDense j)) =1018 outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta n1019 (transportDense j) := by1020 rw [outputAutomorphisms_eq]1021 rfl1022 rw [hleft, (innerAt (S n).right).apply_symm_apply] at h'1023 exact h'10241025theorem tendsto_outputAutomorphisms_state :1026 ∀ a, Tendsto (fun n => Representation.vectorFunctional rho xi1027 (outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta n a))1028 atTop (nhds (Representation.vectorFunctional sigma eta a)) := by1029 apply MathlibAnnex.CStarAlgebra.tendsto_functional_of_dense_prefix1030 transportDense denseRange_transportDense1031 (outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta)1032 (Representation.vectorFunctional rho xi)1033 (Representation.vectorFunctional sigma eta)1034 (Representation.norm_vectorFunctional_apply_le rho hxi)1035 (Representation.norm_vectorFunctional_apply_le sigma heta)1036 transportBudget tendsto_transportBudget_zero1037 exact outputAutomorphisms_state_dense rho hrho sigma hsigma xi eta hxi heta10381039/-- The common limit written using equal-time left and right limits. -/1040noncomputable def asymptoticAutomorphism : StarAlgEquiv ℂ Limit Limit :=1041 (rightLimitAutomorphism rho hrho sigma hsigma xi eta hxi heta).symm.trans1042 (leftLimitAutomorphism rho hrho sigma hsigma xi eta hxi heta)10431044/-- The norm-continuous implementing unitary path. -/1045noncomputable def implementingUnitary (t : ℝ) : unitary Limit :=1046 star (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t) *1047 rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t10481049noncomputable def implementingAutomorphism (t : ℝ) : StarAlgEquiv ℂ Limit Limit :=1050 Unitary.conjStarAlgAut ℂ Limit1051 (implementingUnitary rho hrho sigma hsigma xi eta hxi heta t)10521053theorem continuous_implementingUnitary :1054 Continuous (implementingUnitary rho hrho sigma hsigma xi eta hxi heta) := by1055 unfold implementingUnitary1056 change Continuous (fun t =>1057 (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)⁻¹ *1058 rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)1059 exact (continuous_leftContinuousPath1060 rho hrho sigma hsigma xi eta hxi heta).inv.mul1061 (continuous_rightContinuousPath rho hrho sigma hsigma xi eta hxi heta)10621063theorem implementingUnitary_zero :1064 implementingUnitary rho hrho sigma hsigma xi eta hxi heta 0 = 1 := by1065 simp [implementingUnitary,1066 leftContinuousPath_zero rho hrho sigma hsigma xi eta hxi heta,1067 rightContinuousPath_zero rho hrho sigma hsigma xi eta hxi heta]10681069theorem implementingAutomorphism_eq (t : ℝ) :1070 implementingAutomorphism rho hrho sigma hsigma xi eta hxi heta t =1071 (innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm.trans1072 (innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)) := by1073 ext a1074 simp [implementingAutomorphism, implementingUnitary, innerAt, mul_assoc]10751076theorem implementingAutomorphism_symm_eq (t : ℝ) :1077 (implementingAutomorphism rho hrho sigma hsigma xi eta hxi heta t).symm =1078 (innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm.trans1079 (innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)) := by1080 rw [implementingAutomorphism_eq]1081 rfl10821083theorem tendsto_outputAutomorphisms_asymptoticAutomorphism (a : Limit) :1084 Tendsto (fun n => outputAutomorphisms1085 rho hrho sigma hsigma xi eta hxi heta n a)1086 atTop (nhds (asymptoticAutomorphism1087 rho hrho sigma hsigma xi eta hxi heta a)) := by1088 have hright : Tendsto (fun n =>1089 (rightAutomorphisms rho hrho sigma hsigma xi eta hxi heta n).symm a)1090 atTop (nhds ((rightLimitAutomorphism1091 rho hrho sigma hsigma xi eta hxi heta).symm a)) := by1092 rw [rightLimitAutomorphism,1093 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit_symm_apply]1094 exact MathlibAnnex.CStarAlgebra.tendsto_pointwiseLimit1095 (fun n => (rightAutomorphisms1096 rho hrho sigma hsigma xi eta hxi heta n).symm)1097 (rightAutomorphisms_symm_cauchy1098 rho hrho sigma hsigma xi eta hxi heta) a1099 have hleft (b : Limit) : Tendsto (fun n =>1100 leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1) b)1101 atTop (nhds (leftLimitAutomorphism1102 rho hrho sigma hsigma xi eta hxi heta b)) := by1103 apply (tendsto_add_atTop_iff_nat1104 (f := fun n => leftAutomorphisms1105 rho hrho sigma hsigma xi eta hxi heta n b) 1).21106 simpa [leftLimitAutomorphism,1107 MathlibAnnex.CStarAlgebra.twoSidedPointwiseLimit_apply,1108 MathlibAnnex.CStarAlgebra.pointwiseLimitHom_apply] using1109 MathlibAnnex.CStarAlgebra.tendsto_pointwiseLimit1110 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta)1111 (leftAutomorphisms_cauchy1112 rho hrho sigma hsigma xi eta hxi heta) b1113 have hcomp := MathlibAnnex.Metric.tendsto_comp_of_isometry1114 (fun n => leftAutomorphisms1115 rho hrho sigma hsigma xi eta hxi heta (n + 1))1116 (fun n => (rightAutomorphisms1117 rho hrho sigma hsigma xi eta hxi heta n).symm a)1118 (fun n => StarAlgEquiv.isometry1119 (leftAutomorphisms rho hrho sigma hsigma xi eta hxi heta (n + 1)))1120 hright (hleft ((rightLimitAutomorphism1121 rho hrho sigma hsigma xi eta hxi heta).symm a))1122 simpa [outputAutomorphisms_eq, asymptoticAutomorphism] using hcomp11231124theorem tendsto_implementingAutomorphism (a : Limit) :1125 Tendsto (fun t : ℝ =>1126 implementingAutomorphism rho hrho sigma hsigma xi eta hxi heta t a)1127 atTop (nhds (asymptoticAutomorphism1128 rho hrho sigma hsigma xi eta hxi heta a)) := by1129 have hcomp := MathlibAnnex.Metric.tendsto_comp_of_isometry1130 (fun t => innerAt1131 (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t))1132 (fun t => (innerAt1133 (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm a)1134 (fun t => StarAlgEquiv.isometry1135 (innerAt (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)))1136 (tendsto_rightContinuousPath_inverse1137 rho hrho sigma hsigma xi eta hxi heta a)1138 (tendsto_leftContinuousPath_forward rho hrho sigma hsigma xi eta hxi heta1139 ((rightLimitAutomorphism rho hrho sigma hsigma xi eta hxi heta).symm a))1140 simpa [implementingAutomorphism_eq, asymptoticAutomorphism] using hcomp11411142theorem tendsto_implementingAutomorphism_symm (a : Limit) :1143 Tendsto (fun t : ℝ =>1144 (implementingAutomorphism rho hrho sigma hsigma xi eta hxi heta t).symm a)1145 atTop (nhds ((asymptoticAutomorphism1146 rho hrho sigma hsigma xi eta hxi heta).symm a)) := by1147 have hcomp := MathlibAnnex.Metric.tendsto_comp_of_isometry1148 (fun t => innerAt1149 (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t))1150 (fun t => (innerAt1151 (leftContinuousPath rho hrho sigma hsigma xi eta hxi heta t)).symm a)1152 (fun t => StarAlgEquiv.isometry1153 (innerAt (rightContinuousPath rho hrho sigma hsigma xi eta hxi heta t)))1154 (tendsto_leftContinuousPath_inverse1155 rho hrho sigma hsigma xi eta hxi heta a)1156 (tendsto_rightContinuousPath_forward rho hrho sigma hsigma xi eta hxi heta1157 ((leftLimitAutomorphism rho hrho sigma hsigma xi eta hxi heta).symm a))1158 simpa [implementingAutomorphism_symm_eq, asymptoticAutomorphism] using hcomp11591160theorem asymptoticAutomorphism_state (a : Limit) :1161 Representation.vectorFunctional rho xi1162 (asymptoticAutomorphism rho hrho sigma hsigma xi eta hxi heta a) =1163 Representation.vectorFunctional sigma eta a := by1164 apply tendsto_nhds_unique1165 ((Representation.vectorFunctional rho xi).continuous.tendsto _ |>.comp1166 (tendsto_outputAutomorphisms_asymptoticAutomorphism1167 rho hrho sigma hsigma xi eta hxi heta a))1168 exact tendsto_outputAutomorphisms_state1169 rho hrho sigma hsigma xi eta hxi heta a11701171include hrho hsigma hxi heta in1172theorem asymptoticallyInner_vectorFunctional :1173 ∃ alpha : StarAlgEquiv ℂ Limit Limit, ∃ U : ℝ → unitary Limit,1174 Continuous U ∧ U 0 = 1 ∧1175 (∀ a, Representation.vectorFunctional rho xi (alpha a) =1176 Representation.vectorFunctional sigma eta a) ∧1177 (∀ a, Tendsto (fun t => Unitary.conjStarAlgAut ℂ Limit (U t) a)1178 atTop (nhds (alpha a))) ∧1179 ∀ a, Tendsto (fun t =>1180 (Unitary.conjStarAlgAut ℂ Limit (U t)).symm a)1181 atTop (nhds (alpha.symm a)) := by1182 exact ⟨asymptoticAutomorphism rho hrho sigma hsigma xi eta hxi heta,1183 implementingUnitary rho hrho sigma hsigma xi eta hxi heta,1184 continuous_implementingUnitary rho hrho sigma hsigma xi eta hxi heta,1185 implementingUnitary_zero rho hrho sigma hsigma xi eta hxi heta,1186 asymptoticAutomorphism_state rho hrho sigma hsigma xi eta hxi heta,1187 tendsto_implementingAutomorphism rho hrho sigma hsigma xi eta hxi heta,1188 tendsto_implementingAutomorphism_symm rho hrho sigma hsigma xi eta hxi heta⟩11891190include hrho hsigma hxi heta in1191theorem hasInnerIntertwiningSequence_vectorFunctional :1192 HasInnerIntertwiningSequence1193 (Representation.vectorFunctional rho xi)1194 (Representation.vectorFunctional sigma eta) := by1195 refine ⟨outputAutomorphisms rho hrho sigma hsigma xi eta hxi heta,1196 outputAutomorphisms_cauchy rho hrho sigma hsigma xi eta hxi heta,1197 outputAutomorphisms_symm_cauchy rho hrho sigma hsigma xi eta hxi heta,1198 ?_, tendsto_outputAutomorphisms_state rho hrho sigma hsigma xi eta hxi heta⟩1199 intro n1200 exact ⟨outputUnitary rho hrho sigma hsigma xi eta hxi heta n, rfl⟩12011202end Sequences12031204set_option maxHeartbeats 1600000 in1205/-- Every pair of pure CAR states has a genuine two-sided inner1206intertwining sequence. -/1207theorem hasInnerIntertwiningSequence_of_pure1208 (phi psi : Limit →L[ℂ] ℂ)1209 (hphi : MathlibAnnex.CStarAlgebra.IsPureState Limit phi) (hpsi : MathlibAnnex.CStarAlgebra.IsPureState Limit psi) :1210 HasInnerIntertwiningSequence phi psi := by1211 have hphiState : phi ∈ stateSpace Limit := extremePoints_subset hphi1212 let fphi := positiveLinearMapOfMemStateSpace phi hphiState1213 let rho : Representation Limit fphi.GNS := fphi.gnsStarAlgHom1214 let xi : fphi.GNS := fphi.gnsCyclicVector1215 have hxi : ‖xi‖ = 1 := by1216 change ‖stateGNSVector phi hphiState‖ = 11217 exact norm_stateGNSVector phi hphiState1218 letI : Nontrivial fphi.GNS := by1219 apply nontrivial_of_ne xi 01220 intro hzero1221 have hnorm := congrArg norm hzero1222 rw [hxi, norm_zero] at hnorm1223 norm_num at hnorm1224 have hrho : StarAlgHom.IsIrreducible rho := by1225 simpa [rho, fphi] using1226 isIrreducible_pureState_gnsStarAlgHom phi hphiState hphi1227 have hphiVF : Representation.vectorFunctional rho xi = phi := by1228 apply ContinuousLinearMap.ext1229 intro a1230 rw [Representation.vectorFunctional_apply]1231 change inner ℂ (stateGNSVector phi hphiState)1232 ((positiveLinearMapOfMemStateSpace phi hphiState).gnsStarAlgHom a1233 (stateGNSVector phi hphiState)) = phi a1234 exact inner_gnsStarAlgHom_stateGNSVector phi hphiState a1235 have hpsiState : psi ∈ stateSpace Limit := extremePoints_subset hpsi1236 let fpsi := positiveLinearMapOfMemStateSpace psi hpsiState1237 let sigma : Representation Limit fpsi.GNS := fpsi.gnsStarAlgHom1238 let eta : fpsi.GNS := fpsi.gnsCyclicVector1239 have heta : ‖eta‖ = 1 := by1240 change ‖stateGNSVector psi hpsiState‖ = 11241 exact norm_stateGNSVector psi hpsiState1242 letI : Nontrivial fpsi.GNS := by1243 apply nontrivial_of_ne eta 01244 intro hzero1245 have hnorm := congrArg norm hzero1246 rw [heta, norm_zero] at hnorm1247 norm_num at hnorm1248 have hsigma : StarAlgHom.IsIrreducible sigma := by1249 simpa [sigma, fpsi] using1250 isIrreducible_pureState_gnsStarAlgHom psi hpsiState hpsi1251 have hpsiVF : Representation.vectorFunctional sigma eta = psi := by1252 apply ContinuousLinearMap.ext1253 intro a1254 rw [Representation.vectorFunctional_apply]1255 change inner ℂ (stateGNSVector psi hpsiState)1256 ((positiveLinearMapOfMemStateSpace psi hpsiState).gnsStarAlgHom a1257 (stateGNSVector psi hpsiState)) = psi a1258 exact inner_gnsStarAlgHom_stateGNSVector psi hpsiState a1259 rw [← hphiVF, ← hpsiVF]1260 exact hasInnerIntertwiningSequence_vectorFunctional1261 rho hrho sigma hsigma xi eta hxi heta12621263set_option maxHeartbeats 1600000 in1264/-- Every pair of pure CAR states is connected by one norm-continuous1265unitary path whose inner automorphisms, and their actual inverses, converge1266point-norm to the transporting automorphism and its inverse. -/1267theorem asymptoticallyInnerPureStateHomogeneity : AsymptoticallyInnerPureStateHomogeneity := by1268 intro phi psi hphi hpsi1269 have hphiState : phi ∈ stateSpace Limit := extremePoints_subset hphi1270 let fphi := positiveLinearMapOfMemStateSpace phi hphiState1271 let rho : Representation Limit fphi.GNS := fphi.gnsStarAlgHom1272 let xi : fphi.GNS := fphi.gnsCyclicVector1273 have hxi : ‖xi‖ = 1 := by1274 change ‖stateGNSVector phi hphiState‖ = 11275 exact norm_stateGNSVector phi hphiState1276 letI : Nontrivial fphi.GNS := by1277 apply nontrivial_of_ne xi 01278 intro hzero1279 have hnorm := congrArg norm hzero1280 rw [hxi, norm_zero] at hnorm1281 norm_num at hnorm1282 have hrho : StarAlgHom.IsIrreducible rho := by1283 simpa [rho, fphi] using1284 isIrreducible_pureState_gnsStarAlgHom phi hphiState hphi1285 have hphiVF : Representation.vectorFunctional rho xi = phi := by1286 apply ContinuousLinearMap.ext1287 intro a1288 rw [Representation.vectorFunctional_apply]1289 change inner ℂ (stateGNSVector phi hphiState)1290 ((positiveLinearMapOfMemStateSpace phi hphiState).gnsStarAlgHom a1291 (stateGNSVector phi hphiState)) = phi a1292 exact inner_gnsStarAlgHom_stateGNSVector phi hphiState a1293 have hpsiState : psi ∈ stateSpace Limit := extremePoints_subset hpsi1294 let fpsi := positiveLinearMapOfMemStateSpace psi hpsiState1295 let sigma : Representation Limit fpsi.GNS := fpsi.gnsStarAlgHom1296 let eta : fpsi.GNS := fpsi.gnsCyclicVector1297 have heta : ‖eta‖ = 1 := by1298 change ‖stateGNSVector psi hpsiState‖ = 11299 exact norm_stateGNSVector psi hpsiState1300 letI : Nontrivial fpsi.GNS := by1301 apply nontrivial_of_ne eta 01302 intro hzero1303 have hnorm := congrArg norm hzero1304 rw [heta, norm_zero] at hnorm1305 norm_num at hnorm1306 have hsigma : StarAlgHom.IsIrreducible sigma := by1307 simpa [sigma, fpsi] using1308 isIrreducible_pureState_gnsStarAlgHom psi hpsiState hpsi1309 have hpsiVF : Representation.vectorFunctional sigma eta = psi := by1310 apply ContinuousLinearMap.ext1311 intro a1312 rw [Representation.vectorFunctional_apply]1313 change inner ℂ (stateGNSVector psi hpsiState)1314 ((positiveLinearMapOfMemStateSpace psi hpsiState).gnsStarAlgHom a1315 (stateGNSVector psi hpsiState)) = psi a1316 exact inner_gnsStarAlgHom_stateGNSVector psi hpsiState a1317 obtain ⟨alpha, U, hU, hU0, hstate, hforward, hinverse⟩ :=1318 asymptoticallyInner_vectorFunctional1319 rho hrho sigma hsigma xi eta hxi heta1320 refine ⟨alpha, U, hU, hU0, ?_, hforward, hinverse⟩1321 intro a1322 rw [← hphiVF, ← hpsiVF]1323 exact hstate a13241325/-- Regression adapter: forgetting the implementing path recovers the1326previous CAR approximate-inner homogeneity statement. -/1327theorem homogeneity_from_asymptotic : PureStateHomogeneity :=1328 homogeneity_of_asymptoticallyInner asymptoticallyInnerPureStateHomogeneity13291330/-- The CAR homogeneity endpoint, with the intertwining supplier discharged. -/1331theorem homogeneity : PureStateHomogeneity :=1332 homogeneity_of_innerIntertwiningSequences1333 (fun phi psi hphi hpsi =>1334 hasInnerIntertwiningSequence_of_pure phi psi hphi hpsi)13351336end MathlibAnnex.CStarAlgebra.CAR