Skip to content

Commit 2f3d8ef

Browse files
author
Sirui Lu
committed
refactor(peps): split insertion coefficient realizations
1 parent d7742f4 commit 2f3d8ef

6 files changed

Lines changed: 267 additions & 220 deletions

File tree

TNLean.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ import TNLean.PEPS.NormalSquarePEPSBlocking
382382
import TNLean.PEPS.NormalEdgeBlockingMargins
383383
import TNLean.PEPS.IdentityInsertion
384384
import TNLean.PEPS.InsertionRealization
385+
import TNLean.PEPS.InsertionCoefficientRealization
385386
import TNLean.PEPS.InsertionAlgebra
386387
import TNLean.PEPS.LocalGauge
387388
import TNLean.PEPS.TensorFactorScalar

TNLean/PEPS/InsertionAlgebra.lean

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import TNLean.PEPS.EdgeMiddlePhysical
22
import TNLean.PEPS.IdentityInsertion
3-
import TNLean.PEPS.InsertionRealization
3+
import TNLean.PEPS.InsertionCoefficientRealization
44
import Mathlib.Algebra.Algebra.Equiv
55
import Mathlib.LinearAlgebra.Matrix.Reindex
66

@@ -23,7 +23,7 @@ namespace PEPS
2323
variable {V : Type*} [Fintype V] [LinearOrder V]
2424
variable {G : SimpleGraph V} [DecidableRel G.Adj] {d : ℕ}
2525

26-
/-! ### The state-operator bridge
26+
/-! ### State and endpoint-operator comparison
2727
2828
The realization sums appearing in `edgeInsertedCoeff_eq_sum_left_physicalRealization`
2929
and `edgeInsertedCoeff_eq_sum_right_physicalRealization` are rewritten as weighted
@@ -207,8 +207,8 @@ theorem edgeRealizationSum_right_eq_sum_edgeBlockedCoeff (A : Tensor G d) (e : E
207207
rw [Function.update_of_ne (edgeLeft_ne_edgeRight e)]
208208

209209
/-- Equality of PEPS states transfers the left realization sum between the two tensor
210-
families. The bridge rewrites both sides as weighted sums of the edge-blocked
211-
coefficient, and `SameState.edgeBlockedCoeff_eq` matches them termwise.
210+
families. Both sides are weighted sums of the edge-blocked coefficient, and
211+
`SameState.edgeBlockedCoeff_eq` matches them termwise.
212212
213213
Source: arXiv:1804.04964, Section 3, lines 1010--1036 of
214214
`Papers/1804.04964/paper_normal.tex` (the two PEPS represent the same state before
@@ -684,15 +684,15 @@ theorem edgeTransferMatrix_edgeInsertedCoeff (A B : Tensor G d) (e : Edge G)
684684

685685
/-! ### Injectivity of the edge-inserted coefficient and the algebra equivalence
686686
687-
The transfer map carries an algebra structure, but packaging it as an
688-
`AlgEquiv` requires the inserted coefficient to determine the inserted matrix:
687+
The transfer map carries an algebra structure. To obtain an algebra
688+
isomorphism, the inserted coefficient must determine the inserted matrix:
689689
two matrices giving the same edge-inserted coefficient at every physical
690690
configuration are equal (`edgeInsertedCoeff_injective`). This is the
691691
inverse-direction content of the resonate inversion behind
692692
`physical_to_virtual_insertion`. Together with the coefficient identity it
693693
supplies `map_one` (`edgeTransferMatrix_one`), the algebra homomorphism
694694
(`edgeTransferAlgHom`), the two-sided inverse from the symmetric construction
695-
(`edgeTransferAlgHom_comp_self`), and the packaged equivalence
695+
(`edgeTransferAlgHom_comp_self`), and the algebra equivalence
696696
(`edgeTransferAlgEquiv`).
697697
698698
Source: arXiv:1804.04964, Section 3, Lemma inj_isomorph, lines 254--582 of
@@ -947,7 +947,7 @@ Injectivity of the edge-inserted coefficient in the inserted matrix
947947
(`edgeInsertedCoeff_injective`) supplies identity-preservation
948948
(`edgeTransferMatrix_one`); the symmetric construction with the two families
949949
exchanged supplies the two-sided inverse (`edgeTransferAlgHom_comp_self`),
950-
packaging the transfer map as the algebra equivalence `edgeTransferAlgEquiv`. -/
950+
giving the algebra equivalence `edgeTransferAlgEquiv`. -/
951951
theorem isEdgeBlockedInsertionAlgebraIsomorphism
952952
(A B : Tensor G d) (e : Edge G)
953953
(hA : EdgeBlockedThreeSiteInjective (G := G) A e)
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
import TNLean.PEPS.InsertionRealization
2+
3+
/-!
4+
# Coefficient realizations for edge virtual insertions
5+
6+
This file records the coefficient-level consequences of endpoint physical
7+
realization. A physical realization of a virtual matrix insertion at either
8+
endpoint reproduces the full edge-inserted PEPS coefficient. These formulas are
9+
the endpoint \(X \mapsto O_1,O_2\) part used in the edge-blocked insertion
10+
algebra comparison.
11+
12+
Source: arXiv:1804.04964, Section 3, Lemma \(\mathrm{inj\_isomorph}\), lines
13+
254--582 of `Papers/1804.04964/paper_normal.tex`.
14+
-/
15+
16+
namespace TNLean
17+
namespace PEPS
18+
19+
variable {V : Type*} [Fintype V] [LinearOrder V]
20+
variable {G : SimpleGraph V} [DecidableRel G.Adj] {d : ℕ}
21+
22+
/-- The left-endpoint physical realization of a virtual matrix insertion
23+
reproduces the full inserted-edge coefficient.
24+
25+
This is the coefficient-level part of the local \(X \mapsto O_1,O_2\) step in
26+
Lemma \(\mathrm{inj\_isomorph}\) of arXiv:1804.04964, Section 3, in the
27+
left-endpoint orientation. Since the ordinary edge boundary supplies the right
28+
distinguished-edge index, the left endpoint realizes \(M^{\mathsf T}\), so that
29+
the resulting inserted-edge coefficient has matrix coefficient
30+
\(M_{\mathrm{left},\mathrm{right}}\). -/
31+
theorem edgeInsertedCoeff_eq_sum_left_physicalRealization (A : Tensor G d)
32+
(e : Edge G) (σ : V → Fin d)
33+
(M : Matrix (Fin (A.bondDim e)) (Fin (A.bondDim e)) ℂ)
34+
(O₁ : (Fin d → ℂ) →ₗ[ℂ] (Fin d → ℂ))
35+
(hO₁ : ∀ c : LocalVirtualConfig A e.1.1 → ℂ,
36+
O₁ (localTensorMap A e.1.1 c) =
37+
localTensorMap A e.1.1
38+
(localIncidentMatrixOp A (edgeLeftIncident (G := G) e) M.transpose c)) :
39+
edgeInsertedCoeff (G := G) A e σ M =
40+
∑ β : EdgeBoundaryConfig (G := G) A e,
41+
O₁ (A.component e.1.1 (edgeLeftLocalConfig (G := G) A e β)) (σ e.1.1) *
42+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
43+
A.component e.1.2 (edgeRightLocalConfig (G := G) A e β) (σ e.1.2) := by
44+
classical
45+
let φ := edgeBoundaryLeftIndexEquivInsertedBoundaryConfig (G := G) A e
46+
let F : EdgeInsertedBoundaryConfig (G := G) A e → ℂ := fun β =>
47+
A.component e.1.1 (edgeInsertedLeftLocalConfig (G := G) A e β) (σ e.1.1) *
48+
M β.leftEdgeIndex β.rightEdgeIndex *
49+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
50+
A.component e.1.2 (edgeInsertedRightLocalConfig (G := G) A e β) (σ e.1.2)
51+
have hLeft :
52+
∀ β : EdgeBoundaryConfig (G := G) A e,
53+
O₁ (A.component e.1.1 (edgeLeftLocalConfig (G := G) A e β)) (σ e.1.1) =
54+
∑ y : Fin (A.bondDim e),
55+
M y β.edgeIndex *
56+
A.component e.1.1
57+
(edgeInsertedLeftLocalConfig (G := G) A e
58+
{ leftEdgeIndex := y
59+
rightEdgeIndex := β.edgeIndex
60+
leftResidual := β.leftResidual
61+
rightResidual := β.rightResidual })
62+
(σ e.1.1) := by
63+
intro β
64+
have h := congrFun
65+
(hO₁ (Pi.single (edgeLeftLocalConfig (G := G) A e β) (1 : ℂ))) (σ e.1.1)
66+
rw [localTensorMap_apply_single] at h
67+
have hTensor := congrFun
68+
(localTensorMap_localIncidentMatrixOp_single (G := G) A
69+
(edgeLeftIncident (G := G) e) M.transpose β.edgeIndex β.leftResidual) (σ e.1.1)
70+
simpa [edgeLeftLocalConfig, edgeInsertedLeftLocalConfig, Matrix.transpose_apply]
71+
using h.trans hTensor
72+
calc
73+
edgeInsertedCoeff (G := G) A e σ M = ∑ β : EdgeInsertedBoundaryConfig (G := G) A e,
74+
F β := by
75+
rfl
76+
_ = ∑ x : (Σ β : EdgeBoundaryConfig (G := G) A e, Fin (A.bondDim e)),
77+
F (φ x) := by
78+
exact (φ.sum_comp F).symm
79+
_ = ∑ β : EdgeBoundaryConfig (G := G) A e,
80+
∑ y : Fin (A.bondDim e), F (φ ⟨β, y⟩) := by
81+
exact Fintype.sum_sigma' (fun β y => F (φ ⟨β, y⟩))
82+
_ = ∑ β : EdgeBoundaryConfig (G := G) A e,
83+
O₁ (A.component e.1.1 (edgeLeftLocalConfig (G := G) A e β)) (σ e.1.1) *
84+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
85+
A.component e.1.2 (edgeRightLocalConfig (G := G) A e β) (σ e.1.2) := by
86+
refine Finset.sum_congr rfl ?_
87+
intro β _
88+
rw [hLeft β]
89+
simp [F, φ, edgeBoundaryLeftIndexEquivInsertedBoundaryConfig, Finset.mul_sum,
90+
mul_assoc, mul_left_comm, mul_comm]
91+
92+
/-- The right-endpoint physical realization of a virtual matrix insertion
93+
reproduces the full inserted-edge coefficient.
94+
95+
This is the coefficient-level part of the local \(X \mapsto O_1,O_2\) step in
96+
Lemma \(\mathrm{inj\_isomorph}\) of arXiv:1804.04964, Section 3, in the
97+
right-endpoint orientation. The ordinary edge boundary provides the left
98+
distinguished-edge index, while the right physical action supplies the
99+
independent right distinguished-edge index of the inserted-edge coefficient. -/
100+
theorem edgeInsertedCoeff_eq_sum_right_physicalRealization (A : Tensor G d)
101+
(e : Edge G) (σ : V → Fin d)
102+
(M : Matrix (Fin (A.bondDim e)) (Fin (A.bondDim e)) ℂ)
103+
(O₂ : (Fin d → ℂ) →ₗ[ℂ] (Fin d → ℂ))
104+
(hO₂ : ∀ c : LocalVirtualConfig A e.1.2 → ℂ,
105+
O₂ (localTensorMap A e.1.2 c) =
106+
localTensorMap A e.1.2
107+
(localIncidentMatrixOp A (edgeRightIncident (G := G) e) M c)) :
108+
edgeInsertedCoeff (G := G) A e σ M =
109+
∑ β : EdgeBoundaryConfig (G := G) A e,
110+
A.component e.1.1 (edgeLeftLocalConfig (G := G) A e β) (σ e.1.1) *
111+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
112+
O₂ (A.component e.1.2 (edgeRightLocalConfig (G := G) A e β)) (σ e.1.2) := by
113+
classical
114+
let φ := edgeBoundaryRightIndexEquivInsertedBoundaryConfig (G := G) A e
115+
let F : EdgeInsertedBoundaryConfig (G := G) A e → ℂ := fun β =>
116+
A.component e.1.1 (edgeInsertedLeftLocalConfig (G := G) A e β) (σ e.1.1) *
117+
M β.leftEdgeIndex β.rightEdgeIndex *
118+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
119+
A.component e.1.2 (edgeInsertedRightLocalConfig (G := G) A e β) (σ e.1.2)
120+
have hRight :
121+
∀ β : EdgeBoundaryConfig (G := G) A e,
122+
O₂ (A.component e.1.2 (edgeRightLocalConfig (G := G) A e β)) (σ e.1.2) =
123+
∑ y : Fin (A.bondDim e),
124+
M β.edgeIndex y *
125+
A.component e.1.2
126+
(edgeInsertedRightLocalConfig (G := G) A e
127+
{ leftEdgeIndex := β.edgeIndex
128+
rightEdgeIndex := y
129+
leftResidual := β.leftResidual
130+
rightResidual := β.rightResidual })
131+
(σ e.1.2) := by
132+
intro β
133+
have h := congrFun
134+
(hO₂ (Pi.single (edgeRightLocalConfig (G := G) A e β) (1 : ℂ))) (σ e.1.2)
135+
rw [localTensorMap_apply_single] at h
136+
have hTensor := congrFun
137+
(localTensorMap_localIncidentMatrixOp_single (G := G) A
138+
(edgeRightIncident (G := G) e) M β.edgeIndex β.rightResidual) (σ e.1.2)
139+
simpa [edgeRightLocalConfig, edgeInsertedRightLocalConfig] using h.trans hTensor
140+
calc
141+
edgeInsertedCoeff (G := G) A e σ M = ∑ β : EdgeInsertedBoundaryConfig (G := G) A e,
142+
F β := by
143+
rfl
144+
_ = ∑ x : (Σ β : EdgeBoundaryConfig (G := G) A e, Fin (A.bondDim e)),
145+
F (φ x) := by
146+
exact (φ.sum_comp F).symm
147+
_ = ∑ β : EdgeBoundaryConfig (G := G) A e,
148+
∑ y : Fin (A.bondDim e), F (φ ⟨β, y⟩) := by
149+
exact Fintype.sum_sigma' (fun β y => F (φ ⟨β, y⟩))
150+
_ = ∑ β : EdgeBoundaryConfig (G := G) A e,
151+
A.component e.1.1 (edgeLeftLocalConfig (G := G) A e β) (σ e.1.1) *
152+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
153+
O₂ (A.component e.1.2 (edgeRightLocalConfig (G := G) A e β)) (σ e.1.2) := by
154+
refine Finset.sum_congr rfl ?_
155+
intro β _
156+
rw [hRight β]
157+
simp [F, φ, edgeBoundaryRightIndexEquivInsertedBoundaryConfig, Finset.mul_sum,
158+
mul_assoc, mul_left_comm, mul_comm]
159+
160+
/-- Vertex injectivity realizes an inserted edge matrix by physical operators at
161+
the two endpoint tensors.
162+
163+
For an inserted matrix \(M\), the left endpoint realizes \(M^{\mathsf T}\) and
164+
the right endpoint realizes \(M\). Both physical realizations give the same
165+
inserted-edge coefficient after the edge-centered three-site decomposition. -/
166+
theorem edgeInsertedCoeff_endpointPhysicalRealization (A : Tensor G d)
167+
(hA : IsVertexInjective A) (e : Edge G) (σ : V → Fin d)
168+
(M : Matrix (Fin (A.bondDim e)) (Fin (A.bondDim e)) ℂ) :
169+
(∃ O₁ : (Fin d → ℂ) →ₗ[ℂ] (Fin d → ℂ),
170+
(∀ c : LocalVirtualConfig A e.1.1 → ℂ,
171+
O₁ (localTensorMap A e.1.1 c) =
172+
localTensorMap A e.1.1
173+
(localIncidentMatrixOp A (edgeLeftIncident (G := G) e) M.transpose c)) ∧
174+
edgeInsertedCoeff (G := G) A e σ M =
175+
∑ β : EdgeBoundaryConfig (G := G) A e,
176+
O₁ (A.component e.1.1 (edgeLeftLocalConfig (G := G) A e β)) (σ e.1.1) *
177+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
178+
A.component e.1.2 (edgeRightLocalConfig (G := G) A e β) (σ e.1.2)) ∧
179+
(∃ O₂ : (Fin d → ℂ) →ₗ[ℂ] (Fin d → ℂ),
180+
(∀ c : LocalVirtualConfig A e.1.2 → ℂ,
181+
O₂ (localTensorMap A e.1.2 c) =
182+
localTensorMap A e.1.2
183+
(localIncidentMatrixOp A (edgeRightIncident (G := G) e) M c)) ∧
184+
edgeInsertedCoeff (G := G) A e σ M =
185+
∑ β : EdgeBoundaryConfig (G := G) A e,
186+
A.component e.1.1 (edgeLeftLocalConfig (G := G) A e β) (σ e.1.1) *
187+
edgeOpenMiddleWeight (G := G) A e σ β.leftResidual β.rightResidual *
188+
O₂ (A.component e.1.2 (edgeRightLocalConfig (G := G) A e β)) (σ e.1.2)) := by
189+
constructor
190+
· obtain ⟨O₁, hO₁⟩ := localIncidentMatrixOp_physicalRealization
191+
(A := A) hA (edgeLeftIncident (G := G) e) M.transpose
192+
exact ⟨O₁, hO₁, edgeInsertedCoeff_eq_sum_left_physicalRealization
193+
(G := G) A e σ M O₁ hO₁⟩
194+
· obtain ⟨O₂, hO₂⟩ := localIncidentMatrixOp_physicalRealization
195+
(A := A) hA (edgeRightIncident (G := G) e) M
196+
exact ⟨O₂, hO₂, edgeInsertedCoeff_eq_sum_right_physicalRealization
197+
(G := G) A e σ M O₂ hO₂⟩
198+
199+
end PEPS
200+
end TNLean

0 commit comments

Comments
 (0)