| |
| |
| |
| |
| |
| |
|
|
| open Real |
| open Complex |
| open List |
|
|
| namespace MeasureConservation |
|
|
| |
| |
| |
|
|
| @[inline] def mirror_dimension : ℕ := 106 |
| @[inline] def branch_dimension : ℕ := 53 |
| @[inline] def bifurcation_order : ℕ := 7 |
| @[inline] def max_entanglement_gates : ℕ := 231 |
|
|
| |
| theorem mirror_split_invariant : |
| mirror_dimension = branch_dimension + branch_dimension := by norm_num |
|
|
| |
| |
| theorem branch_modular_residue : |
| branch_dimension % bifurcation_order = 4 := by norm_num |
| theorem mirror_modular_residue : |
| mirror_dimension % bifurcation_order = 1 := by norm_num |
|
|
| |
| |
| |
|
|
| |
| |
| structure AmplitudeVector (dim : ℕ) where |
| coeffs : Fin dim → ℂ |
| |
| h_normalized : ∑ i : Fin dim, Complex.abs (coeffs i) ^ 2 = 1 |
|
|
| |
| def PreSplitState : Type := AmplitudeVector mirror_dimension |
|
|
| |
| structure PostSplitState where |
| branchA : AmplitudeVector branch_dimension |
| branchB : AmplitudeVector branch_dimension |
|
|
| |
| |
| |
|
|
| |
| |
| def bifurcation_unitary (ψ : PreSplitState) : PostSplitState := |
| let coeffsA : Fin branch_dimension → ℂ := fun i => ψ.coeffs ⟨i.val, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| omega⟩ |
| let coeffsB : Fin branch_dimension → ℂ := fun i => ψ.coeffs ⟨i.val + branch_dimension, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| have h₁ : i.val + branch_dimension < mirror_dimension := by |
| omega |
| omega⟩ |
|
|
| ⟨ |
| ⟨coeffsA, by |
| have h₁ : ∑ i : Fin branch_dimension, Complex.abs (coeffsA i) ^ 2 ≤ 1 := by |
| have h₂ : ∑ i : Fin branch_dimension, Complex.abs (coeffsA i) ^ 2 ≤ |
| ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 := by |
| apply Finset.sum_le_sum_of_subset_of_nonneg |
| · intro i _ |
| simp only [Finset.mem_univ, Finset.mem_univ] at * ⊢ |
| <;> |
| (try omega) <;> |
| (try |
| { |
| have h₃ : i.val < branch_dimension := by omega |
| omega |
| }) |
| · intro _ _ _ |
| positivity |
| have h₃ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = 1 := ψ.h_normalized |
| linarith |
| have h₂ : 0 ≤ ∑ i : Fin branch_dimension, Complex.abs (coeffsA i) ^ 2 := by positivity |
| by_cases h₃ : ∑ i : Fin branch_dimension, Complex.abs (coeffsA i) ^ 2 = 0 |
| · simp_all [h₃] |
| <;> norm_num <;> |
| (try simp_all [Finset.sum_const, Finset.card_fin]) <;> |
| (try ring_nf at * <;> norm_num at * <;> linarith) |
| · have h₄ : 0 < ∑ i : Fin branch_dimension, Complex.abs (coeffsA i) ^ 2 := by |
| contrapose! h₃ |
| linarith |
| field_simp [h₃, Real.sqrt_eq_iff_sq_eq] <;> ring_nf <;> |
| (try simp_all [Finset.sum_const, Finset.card_fin]) <;> |
| (try field_simp [h₃] at * <;> nlinarith [Real.sqrt_nonneg (∑ i : Fin branch_dimension, Complex.abs (coeffsA i) ^ 2), |
| Real.sq_sqrt (by positivity : 0 ≤ (∑ i : Fin branch_dimension, Complex.abs (coeffsA i) ^ 2 : ℝ))]) |
| <;> |
| (try |
| { |
| simp_all [Complex.abs, Complex.normSq, Real.sqrt_eq_iff_sq_eq] |
| <;> ring_nf at * <;> norm_num at * <;> linarith |
| }) |
| ⟩, |
| ⟨coeffsB, by |
| have h₁ : ∑ i : Fin branch_dimension, Complex.abs (coeffsB i) ^ 2 ≤ 1 := by |
| have h₂ : ∑ i : Fin branch_dimension, Complex.abs (coeffsB i) ^ 2 ≤ |
| ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 := by |
| apply Finset.sum_le_sum_of_subset_of_nonneg |
| · intro i _ |
| simp only [Finset.mem_univ, Finset.mem_univ] at * ⊢ |
| <;> |
| (try omega) <;> |
| (try |
| { |
| have h₃ : i.val < branch_dimension := by omega |
| omega |
| }) |
| · intro _ _ _ |
| positivity |
| have h₃ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = 1 := ψ.h_normalized |
| linarith |
| have h₂ : 0 ≤ ∑ i : Fin branch_dimension, Complex.abs (coeffsB i) ^ 2 := by positivity |
| by_cases h₃ : ∑ i : Fin branch_dimension, Complex.abs (coeffsB i) ^ 2 = 0 |
| · simp_all [h₃] <;> norm_num <;> |
| (try simp_all [Finset.sum_const, Finset.card_fin]) <;> |
| (try ring_nf at * <;> norm_num at * <;> linarith) |
| · have h₄ : 0 < ∑ i : Fin branch_dimension, Complex.abs (coeffsB i) ^ 2 := by |
| contrapose! h₃ |
| linarith |
| field_simp [h₃, Real.sqrt_eq_iff_sq_eq] <;> ring_nf <;> |
| (try simp_all [Finset.sum_const, Finset.card_fin]) <;> |
| (try field_simp [h₃] at * <;> nlinarith [Real.sqrt_nonneg (∑ i : Fin branch_dimension, Complex.abs (coeffsB i) ^ 2), |
| Real.sq_sqrt (by positivity : 0 ≤ (∑ i : Fin branch_dimension, Complex.abs (coeffsB i) ^ 2 : ℝ))]) |
| <;> |
| (try |
| { |
| simp_all [Complex.abs, Complex.normSq, Real.sqrt_eq_iff_sq_eq] |
| <;> ring_nf at * <;> norm_num at * <;> linarith |
| }) |
| ⟩ |
| ⟩ |
|
|
| |
| |
| |
|
|
| |
| theorem total_measure_conservation (ψ : PreSplitState) : |
| (∑ i : Fin branch_dimension, Complex.abs (bifurcation_unitary ψ).branchA.coeffs i ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (bifurcation_unitary ψ).branchB.coeffs i ^ 2) = 1 := by |
| have h₁ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = 1 := ψ.h_normalized |
| have h₂ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₃ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₃ : i.val < branch_dimension := Fin.is_lt i |
| have h₄ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2) := by |
| have h₃ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i in Finset.univ, Complex.abs (ψ.coeffs i) ^ 2 := by simp [Finset.sum_const] |
| rw [h₃] |
| have h₄ : (Finset.univ : Finset (Fin mirror_dimension)) = |
| (Finset.Iio ⟨branch_dimension, by norm_num⟩) ∪ (Finset.Ico ⟨branch_dimension, by norm_num⟩ ⟨mirror_dimension, by norm_num⟩) := by |
| apply Finset.ext |
| intro x |
| simp [Fin.ext_iff, Finset.mem_Iio, Finset.mem_Ico] |
| <;> |
| (try omega) <;> |
| (try |
| { |
| by_cases h : x.val < branch_dimension <;> simp_all [h] |
| <;> omega |
| }) |
| rw [h₄] |
| rw [Finset.sum_union] <;> |
| (try |
| { |
| apply Finset.disjoint_left.mpr |
| intro x hx₁ hx₂ |
| simp [Finset.mem_Iio, Finset.mem_Ico, Fin.ext_iff] at hx₁ hx₂ |
| <;> omega |
| }) <;> |
| (try |
| { |
| have h₅ : ∑ i in Finset.Iio (⟨branch_dimension, by norm_num⟩ : Fin mirror_dimension), Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₆ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2 := by |
| apply Finset.sum_bij' (fun (i : Fin branch_dimension) _ => ⟨i.val, by |
| have h₆ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) (fun (i : Fin mirror_dimension) _ => ⟨i.val, by |
| simp [Finset.mem_Iio, Fin.ext_iff] at * |
| <;> omega⟩) |
| <;> simp_all [Finset.mem_Iio, Fin.ext_iff, Fin.val_mk] |
| <;> (try omega) <;> (try aesop) |
| rw [h₅] |
| }) <;> |
| (try |
| { |
| have h₅ : ∑ i in Finset.Ico (⟨branch_dimension, by norm_num⟩ : Fin mirror_dimension) (⟨mirror_dimension, by norm_num⟩ : Fin mirror_dimension), Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₆ : i.val < branch_dimension := Fin.is_lt i |
| have h₇ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2 := by |
| apply Finset.sum_bij' (fun (i : Fin branch_dimension) _ => ⟨i.val + branch_dimension, by |
| have h₆ : i.val < branch_dimension := Fin.is_lt i |
| have h₇ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) (fun (i : Fin mirror_dimension) _ => ⟨i.val - branch_dimension, by |
| simp [Finset.mem_Ico, Fin.ext_iff] at * |
| <;> omega⟩) |
| <;> simp_all [Finset.mem_Ico, Fin.ext_iff, Fin.val_mk] |
| <;> (try omega) <;> (try |
| { |
| have h₆ : i.val < branch_dimension := by omega |
| have h₇ : i.val + branch_dimension < mirror_dimension := by omega |
| omega |
| }) <;> (try aesop) |
| rw [h₅] |
| }) |
| <;> ring_nf |
| <;> simp_all [Finset.sum_const, Finset.card_fin] |
| <;> norm_num |
| <;> linarith |
|
|
| have h₃ : (∑ i : Fin branch_dimension, Complex.abs (bifurcation_unitary ψ).branchA.coeffs i ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (bifurcation_unitary ψ).branchB.coeffs i ^ 2) = 1 := by |
| have h₄ : (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₅ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₅ : i.val < branch_dimension := Fin.is_lt i |
| have h₆ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2) = 1 := by linarith |
| simp_all [bifurcation_unitary] |
| <;> |
| (try ring_nf at * <;> norm_num at * <;> linarith) |
| <;> |
| (try |
| { |
| field_simp [Complex.abs, Complex.normSq, Real.sqrt_eq_iff_sq_eq] at * |
| <;> ring_nf at * |
| <;> norm_num at * |
| <;> nlinarith [Real.sqrt_nonneg 1, Real.sq_sqrt (show 0 ≤ 1 by norm_num)] |
| }) |
|
|
| exact h₃ |
|
|
| |
| theorem branch_orthogonality (ψ : PreSplitState) : |
| (∑ i : Fin branch_dimension, (bifurcation_unitary ψ).branchA.coeffs i * star (bifurcation_unitary ψ).branchB.coeffs i) = 0 := by |
| simp [bifurcation_unitary, Fin.sum_univ_succ] |
| <;> |
| (try norm_num) <;> |
| (try simp_all [Complex.ext_iff, Complex.abs, Complex.normSq, Real.sqrt_eq_iff_sq_eq]) <;> |
| (try ring_nf at *) <;> |
| (try norm_num at *) <;> |
| (try linarith) |
|
|
| |
| theorem no_measure_leakage (ψ : PreSplitState) : |
| (∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2) = |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| have h₁ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2) := by |
| have h₁ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₂ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₂ : i.val < branch_dimension := Fin.is_lt i |
| have h₃ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2) := by |
| have h₂ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i in Finset.univ, Complex.abs (ψ.coeffs i) ^ 2 := by simp [Finset.sum_const] |
| rw [h₂] |
| have h₃ : (Finset.univ : Finset (Fin mirror_dimension)) = |
| (Finset.Iio ⟨branch_dimension, by norm_num⟩) ∪ (Finset.Ico ⟨branch_dimension, by norm_num⟩ ⟨mirror_dimension, by norm_num⟩) := by |
| apply Finset.ext |
| intro x |
| simp [Fin.ext_iff, Finset.mem_Iio, Finset.mem_Ico] |
| <;> |
| (try omega) <;> |
| (try |
| { |
| by_cases h : x.val < branch_dimension <;> simp_all [h] |
| <;> omega |
| }) |
| rw [h₃] |
| rw [Finset.sum_union] <;> |
| (try |
| { |
| apply Finset.disjoint_left.mpr |
| intro x hx₁ hx₂ |
| simp [Finset.mem_Iio, Finset.mem_Ico, Fin.ext_iff] at hx₁ hx₂ |
| <;> omega |
| }) <;> |
| (try |
| { |
| have h₄ : ∑ i in Finset.Iio (⟨branch_dimension, by norm_num⟩ : Fin mirror_dimension), Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₅ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2 := by |
| apply Finset.sum_bij' (fun (i : Fin branch_dimension) _ => ⟨i.val, by |
| have h₅ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) (fun (i : Fin mirror_dimension) _ => ⟨i.val, by |
| simp [Finset.mem_Iio, Fin.ext_iff] at * |
| <;> omega⟩) |
| <;> simp_all [Finset.mem_Iio, Fin.ext_iff, Fin.val_mk] |
| <;> (try omega) <;> (try aesop) |
| rw [h₄] |
| }) <;> |
| (try |
| { |
| have h₄ : ∑ i in Finset.Ico (⟨branch_dimension, by norm_num⟩ : Fin mirror_dimension) (⟨mirror_dimension, by norm_num⟩ : Fin mirror_dimension), Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₅ : i.val < branch_dimension := Fin.is_lt i |
| have h₆ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2 := by |
| apply Finset.sum_bij' (fun (i : Fin branch_dimension) _ => ⟨i.val + branch_dimension, by |
| have h₅ : i.val < branch_dimension := Fin.is_lt i |
| have h₆ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) (fun (i : Fin mirror_dimension) _ => ⟨i.val - branch_dimension, by |
| simp [Finset.mem_Ico, Fin.ext_iff] at * |
| <;> omega⟩) |
| <;> simp_all [Finset.mem_Ico, Fin.ext_iff, Fin.val_mk] |
| <;> (try omega) <;> (try |
| { |
| have h₅ : i.val < branch_dimension := by omega |
| have h₆ : i.val + branch_dimension < mirror_dimension := by omega |
| omega |
| }) <;> (try aesop) |
| rw [h₄] |
| }) |
| <;> ring_nf |
| <;> simp_all [Finset.sum_const, Finset.card_fin] |
| <;> norm_num |
| <;> linarith |
|
|
| linarith |
|
|
| |
| theorem symmetric_partition_uniqueness : |
| ∀ (d₁ d₂ : ℕ), d₁ + d₂ = mirror_dimension → d₁ = d₂ → d₁ = branch_dimension := by |
| intro d₁ d₂ h₁ h₂ |
| have h₃ : d₁ + d₁ = mirror_dimension := by linarith |
| have h₄ : 2 * d₁ = mirror_dimension := by linarith |
| have h₅ : d₁ = mirror_dimension / 2 := by |
| have h₆ : mirror_dimension % 2 = 0 := by norm_num |
| omega |
| rw [h₅] |
| <;> norm_num [mirror_dimension, branch_dimension] |
|
|
| |
| theorem entanglement_gate_bound : |
| max_entanglement_gates = 22 * 21 / 2 := by norm_num |
|
|
| |
| structure BornProbability (ψ : PreSplitState) where |
| pA : ℝ |
| pB : ℝ |
| h_pA : pA = ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2 |
| h_pB : pB = ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| have h₁ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2 |
| h_sum : pA + pB = 1 |
|
|
| theorem born_rule_holds (ψ : PreSplitState) : ∃ (bp : BornProbability ψ), True := by |
| use ⟨ |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2, |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h : i.val < branch_dimension := Fin.is_lt i |
| have h₁ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2, |
| rfl, rfl, by |
| have h₁ : (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₂ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₂ : i.val < branch_dimension := Fin.is_lt i |
| have h₃ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2) = 1 := by |
| have h₂ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = 1 := ψ.h_normalized |
| have h₃ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₄ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2) + |
| (∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₄ : i.val < branch_dimension := Fin.is_lt i |
| have h₅ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2) := by |
| have h₄ : ∑ i : Fin mirror_dimension, Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i in Finset.univ, Complex.abs (ψ.coeffs i) ^ 2 := by simp [Finset.sum_const] |
| rw [h₄] |
| have h₅ : (Finset.univ : Finset (Fin mirror_dimension)) = |
| (Finset.Iio ⟨branch_dimension, by norm_num⟩) ∪ (Finset.Ico ⟨branch_dimension, by norm_num⟩ ⟨mirror_dimension, by norm_num⟩) := by |
| apply Finset.ext |
| intro x |
| simp [Fin.ext_iff, Finset.mem_Iio, Finset.mem_Ico] |
| <;> |
| (try omega) <;> |
| (try |
| { |
| by_cases h : x.val < branch_dimension <;> simp_all [h] |
| <;> omega |
| }) |
| rw [h₅] |
| rw [Finset.sum_union] <;> |
| (try |
| { |
| apply Finset.disjoint_left.mpr |
| intro x hx₁ hx₂ |
| simp [Finset.mem_Iio, Finset.mem_Ico, Fin.ext_iff] at hx₁ hx₂ |
| <;> omega |
| }) <;> |
| (try |
| { |
| have h₆ : ∑ i in Finset.Iio (⟨branch_dimension, by norm_num⟩ : Fin mirror_dimension), Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val, by |
| have h₇ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) ^ 2 := by |
| apply Finset.sum_bij' (fun (i : Fin branch_dimension) _ => ⟨i.val, by |
| have h₇ : i.val < branch_dimension := Fin.is_lt i |
| omega⟩) (fun (i : Fin mirror_dimension) _ => ⟨i.val, by |
| simp [Finset.mem_Iio, Fin.ext_iff] at * |
| <;> omega⟩) |
| <;> simp_all [Finset.mem_Iio, Fin.ext_iff, Fin.val_mk] |
| <;> (try omega) <;> (try aesop) |
| rw [h₆] |
| }) <;> |
| (try |
| { |
| have h₆ : ∑ i in Finset.Ico (⟨branch_dimension, by norm_num⟩ : Fin mirror_dimension) (⟨mirror_dimension, by norm_num⟩ : Fin mirror_dimension), Complex.abs (ψ.coeffs i) ^ 2 = |
| ∑ i : Fin branch_dimension, Complex.abs (ψ.coeffs ⟨i.val + branch_dimension, by |
| have h₇ : i.val < branch_dimension := Fin.is_lt i |
| have h₈ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) ^ 2 := by |
| apply Finset.sum_bij' (fun (i : Fin branch_dimension) _ => ⟨i.val + branch_dimension, by |
| have h₇ : i.val < branch_dimension := Fin.is_lt i |
| have h₈ : i.val + branch_dimension < mirror_dimension := by omega |
| omega⟩) (fun (i : Fin mirror_dimension) _ => ⟨i.val - branch_dimension, by |
| simp [Finset.mem_Ico, Fin.ext_iff] at * |
| <;> omega⟩) |
| <;> simp_all [Finset.mem_Ico, Fin.ext_iff, Fin.val_mk] |
| <;> (try omega) <;> (try |
| { |
| have h₇ : i.val < branch_dimension := by omega |
| have h₈ : i.val + branch_dimension < mirror_dimension := by omega |
| omega |
| }) <;> (try aesop) |
| rw [h₆] |
| }) |
| <;> ring_nf |
| <;> simp_all [Finset.sum_const, Finset.card_fin] |
| <;> norm_num |
| <;> linarith |
| linarith |
| exact h₁ |
| ⟩ |
| trivial |
|
|
| end MeasureConservation |
|
|