Skip to content

Commit edd57da

Browse files
committed
piKroneckerUnitary_smul_vec
1 parent 52c77f4 commit edd57da

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

QCLib/Circuit/Hadamard.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ noncomputable def HadamardBasisVector (k : Register n) :=
5454

5555
private theorem HH_aux (y : Fin 2) :
5656
(δ[0] + (-1 : ℂ) ^ (y : ℕ) • δ[1]) = ∑ j : Fin 2, (-1 : ℂ) ^ ((y * j) : ℕ) • δ[j] := by
57-
simp [Pi.smul_def]
58-
57+
simp
58+
#check piKroneckerUnitary_smul_vec
5959
-- TBD: `simp` runs into a loop. Investigate.
6060
theorem HH_apply (k : Register n) : (HH n) • δ[k] = HadamardBasisVector n k := by
6161
simp_rw [HH_def, HadamardBasisVector, basisVector_eq_prod]

QCLib/LinearAlgebra/StdBasis.lean

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,23 +175,23 @@ theorem Matrix.UnitaryGroup.ext_col [DecidableEq ι]
175175
variable [DecidableEq ι]
176176

177177
open Matrix in
178-
theorem Matrix.unitaryGroup.smul_euclidean_vec_def
178+
theorem Matrix.unitaryGroup.EuclideanSpace.smul_def
179179
{α m : Type*} [Fintype m] [DecidableEq m] [CommRing α] [StarRing α]
180180
(U : unitaryGroup m α) (v : EuclideanSpace α m) : U • v = WithLp.toLp 2 (↑U *ᵥ v.ofLp) := by
181181
ext
182182
simp [Submonoid.smul_def]
183183

184184
open Matrix in
185185
@[simp]
186-
theorem Matrix.unitaryGroup.smul_euclidean_vec_coe
186+
theorem Matrix.unitaryGroup.EuclideanSpace.smul_coe
187187
{α m : Type*} [Fintype m] [DecidableEq m] [CommRing α] [StarRing α]
188188
(U : unitaryGroup m α) (v : EuclideanSpace α m) : ((U • v) : m → α) = (↑U *ᵥ v.ofLp) := by
189189
ext
190190
simp [Submonoid.smul_def]
191191

192192
theorem Matrix.UnitaryGroup.ext_smul_basis
193193
{U V : Matrix.unitaryGroup ι ℂ} : (∀ i : ι, (U • δ[i]) = V • δ[i]) → U = V := by
194-
simpa [basisVector_def, Matrix.unitaryGroup.smul_euclidean_vec_def] using ext_col
194+
simpa [basisVector_def, Matrix.unitaryGroup.EuclideanSpace.smul_def] using ext_col
195195

196196
@[simp]
197197
theorem Matrix.UnitaryGroup.diagonal_smul_basisVector
@@ -210,6 +210,15 @@ theorem Matrix.UnitaryGroup.apply_basis {U : Matrix.unitaryGroup ι ℂ} (v : ι
210210
ext
211211
simp [basisVector_def, Pi.single_apply, Submonoid.smul_def]
212212

213+
@[simp]
214+
theorem Matrix.UnitaryGroup.EuclideanSpace.piKroneckerUnitary_smul_vec
215+
(l : ι → Type*) [∀ i, DecidableEq (l i)] [∀ i, Fintype (l i)]
216+
(U : Π i, unitaryGroup (l i) ℂ)
217+
(v : (i : ι) → EuclideanSpace ℂ (l i)) :
218+
(⨂ i, U i) • (⨂ i, v i) = (⨂ i, (U i) • (v i)) := by
219+
ext1
220+
simp
221+
213222
section SMul
214223

215224
section Qubits

0 commit comments

Comments
 (0)