@@ -1387,6 +1387,108 @@ theorem isTwoBlockInjective_complementTwoBlock (A : Tensor G d)
13871387 rw [IsTwoBlockInjective, hequiv]
13881388 exact hInj.comp _ (Equiv.punitProd _).injective
13891389
1390+ /-! ### Two-block coefficient identity
1391+
1392+ The two-block inserted coefficient of the vertex/complement split equals an
1393+ edge-inserted coefficient of the full PEPS. This is the first translation step of
1394+ `gaugeConsistency`: it turns the abstract two-injective comparison into a
1395+ statement about `edgeInsertedCoeff`, which the post-absorption insertion identity
1396+ controls.
1397+
1398+ Source: arXiv:1804.04964, Section 3, lines 1205--1210 of
1399+ `Papers/1804.04964/paper_normal.tex`: the comparison after Lemma
1400+ inj_equal_tensors_2 inserts a matrix on a v-star bond and reads off the
1401+ edge-centred contraction. -/
1402+
1403+ /-- Glue the physical index at `v` and a complement physical configuration into a
1404+ global physical configuration on all vertices. -/
1405+ def assembleσ (v : V) (σ₁ : Fin d)
1406+ (τ : VertexComplementPhysicalConfig (V := V) (d := d) v) : V → Fin d :=
1407+ fun w => if h : w = v then σ₁ else τ ⟨w, h⟩
1408+
1409+ omit [Fintype V] in
1410+ @[simp] theorem assembleσ_self (v : V) (σ₁ : Fin d)
1411+ (τ : VertexComplementPhysicalConfig (V := V) (d := d) v) :
1412+ assembleσ (V := V) (d := d) v σ₁ τ v = σ₁ := by
1413+ simp [assembleσ]
1414+
1415+ omit [Fintype V] in
1416+ theorem assembleσ_of_ne (v : V) (σ₁ : Fin d)
1417+ (τ : VertexComplementPhysicalConfig (V := V) (d := d) v) {w : V} (h : w ≠ v) :
1418+ assembleσ (V := V) (d := d) v σ₁ τ w = τ ⟨w, h⟩ := by
1419+ simp [assembleσ, h]
1420+
1421+ open scoped Classical in
1422+ /-- The vertex/complement two-block inserted coefficient, with the abstract
1423+ shared-bond sums of `twoBlockInsertedCoeff` rewritten over the local virtual
1424+ configuration `Fintype` instance.
1425+
1426+ `twoBlockInsertedCoeff` sums over `SharedBondConfig` using `Pi.instFintype`;
1427+ this lemma transports both sums to `LocalVirtualConfig A v` so the downstream
1428+ fiberwise collapse over the global virtual configuration is instance-aligned. -/
1429+ theorem twoBlockInsertedCoeff_vertex_complement (A : Tensor G d) (v : V)
1430+ (ie : IncidentEdge G v) (M : Matrix (Fin (A.bondDim ie.1 )) (Fin (A.bondDim ie.1 )) ℂ)
1431+ (σ₁ : Fin d) (τ : VertexComplementPhysicalConfig (V := V) (d := d) v) :
1432+ twoBlockInsertedCoeff (Bond := IncidentEdge G v)
1433+ (bondDim := fun ie => Fin (A.bondDim ie.1 ))
1434+ (vertexTwoBlock (G := G) A v) (complementTwoBlock (G := G) A v)
1435+ ie M PUnit.unit PUnit.unit σ₁ τ =
1436+ ∑ μ : LocalVirtualConfig A v, ∑ ν : LocalVirtualConfig A v,
1437+ (if SameAwayFromBond ie μ ν then M (μ ie) (ν ie) else 0 ) *
1438+ A.component v μ σ₁ * vertexComplementWeight (G := G) A v ν τ := by
1439+ rw [twoBlockInsertedCoeff]
1440+ simp only [vertexTwoBlock_apply, complementTwoBlock_apply]
1441+ refine Finset.sum_congr (by ext x; simp) (fun μ _ => ?_)
1442+ refine Finset.sum_congr (by ext x; simp) (fun ν _ => rfl)
1443+
1444+ open scoped Classical in
1445+ /-- The vertex/complement two-block inserted coefficient as a sum over global
1446+ virtual configurations.
1447+
1448+ The complement weight is a fibered sum over global virtual configurations whose
1449+ v-star equals the second block boundary; collapsing that fiber identifies the
1450+ second block configuration `ν` with `vertexStarLabel ζ` and leaves a sum over
1451+ the global configuration `ζ` and the v-star configuration `μ` of the first
1452+ block.
1453+
1454+ Source: arXiv:1804.04964, Section 3, lines 1205--1210 of
1455+ `Papers/1804.04964/paper_normal.tex`. -/
1456+ theorem twoBlock_lhs_global (A : Tensor G d) (v : V) (ie : IncidentEdge G v)
1457+ (M : Matrix (Fin (A.bondDim ie.1 )) (Fin (A.bondDim ie.1 )) ℂ)
1458+ (σ₁ : Fin d) (τ : VertexComplementPhysicalConfig (V := V) (d := d) v) :
1459+ twoBlockInsertedCoeff (Bond := IncidentEdge G v)
1460+ (bondDim := fun ie => Fin (A.bondDim ie.1 ))
1461+ (vertexTwoBlock (G := G) A v) (complementTwoBlock (G := G) A v)
1462+ ie M PUnit.unit PUnit.unit σ₁ τ =
1463+ ∑ ζ : VirtualConfig A,
1464+ ∑ μ : LocalVirtualConfig A v,
1465+ (if SameAwayFromBond ie μ (vertexStarLabel (G := G) A v ζ) then
1466+ M (μ ie) (ζ ie.1 ) else 0 ) *
1467+ A.component v μ σ₁ *
1468+ ∏ w : {w : V // w ≠ v}, A.component w.1 (fun ie => ζ ie.1 ) (τ w) := by
1469+ rw [twoBlockInsertedCoeff_vertex_complement]
1470+ -- Move the second-block boundary `ν` outermost.
1471+ rw [Finset.sum_comm]
1472+ -- Expand the complement weight as a fibered sum over global configurations and
1473+ -- distribute it into each summand.
1474+ simp only [vertexComplementWeight, Finset.mul_sum]
1475+ -- Un-fiber the right-hand global sum over the v-star label.
1476+ conv_rhs =>
1477+ rw [← Finset.sum_fiberwise Finset.univ
1478+ (fun ζ : VirtualConfig A => vertexStarLabel (G := G) A v ζ)
1479+ (fun ζ => ∑ μ : LocalVirtualConfig A v,
1480+ (if SameAwayFromBond ie μ (vertexStarLabel (G := G) A v ζ) then
1481+ M (μ ie) (ζ ie.1 ) else 0 ) * A.component v μ σ₁ *
1482+ ∏ w : {w : V // w ≠ v}, A.component w.1 (fun ie => ζ ie.1 ) (τ w))]
1483+ -- Both sides now sum over `ν` and the fiber `ζ`; reconcile the summands,
1484+ -- replacing `ν` by `vertexStarLabel ζ` on the fiber.
1485+ refine Finset.sum_congr rfl fun ν _ => ?_
1486+ rw [Finset.sum_comm]
1487+ refine Finset.sum_congr rfl fun ζ hζ => ?_
1488+ rw [Finset.mem_filter] at hζ
1489+ refine Finset.sum_congr rfl fun μ _ => ?_
1490+ rw [← hζ.2 , vertexStarLabel_apply]
1491+
13901492/-! ### Vertex injectivity of the absorbed tensor family -/
13911493
13921494/-- Recombining a linearly independent family by an invertible matrix preserves
0 commit comments