Decomposition of the bit-swap permutation matrix
DefinitionAntisymmetric two-bit singlet vector#✓fully proved
The unnormalized antisymmetric two-bit vector, in order 00, 01, 10, 11.
TheoremOne-bit swap matrix as identity minus singlet outer product#✓fully proved
The one-bit swap matrix is the identity minus the singlet outer product.
theorem bitSwap_eq_one_sub_vecMulVec :
(Equiv.prodComm Bool Bool).toPEquiv.toMatrix =
(1 : Matrix (Bool × Bool) (Bool × Bool) ℤ) - vecMulVec bitSinglet bitSinglet
def bitSinglet (p : Bool × Bool) : ℤ :=
if p.1 = p.2 then 0 else if p.1 then -1 else 1
MathlibExt/LinearAlgebra/Matrix/BitSwap.lean:39
Uses 1 · Used by 1
DefinitionPiece of an n-bit swap with i antisymmetric factors#✓fully proved
The part of an n-bit swap with exactly i antisymmetric factors.
def bitSwapPiece (n i : ℕ) :
Matrix ((Fin n → Bool) × (Fin n → Bool)) ((Fin n → Bool) × (Fin n → Bool)) ℤ :=
fun p q => ∑ S ∈ powersetCard i (univ : Finset (Fin n)),
(∏ k ∈ S, -(bitSinglet (p.1 k, p.2 k) * bitSinglet (q.1 k, q.2 k))) *
∏ k ∈ Sᶜ, (1 : Matrix (Bool × Bool) (Bool × Bool) ℤ)
(p.1 k, p.2 k) (q.1 k, q.2 k)
def bitSinglet (p : Bool × Bool) : ℤ :=
if p.1 = p.2 then 0 else if p.1 then -1 else 1
MathlibExt/LinearAlgebra/Matrix/BitSwap.lean:39
TheoremBit-swap pieces sum to the swap permutation matrix#✓fully proved
The n + 1 grouped pieces sum to the permutation matrix swapping the two bit strings.
theorem sum_bitSwapPiece (n : ℕ) (p q : (Fin n → Bool) × (Fin n → Bool)) :
∑ i ∈ range (n + 1), bitSwapPiece n i p q =
(Equiv.prodComm (Fin n → Bool) (Fin n → Bool)).toPEquiv.toMatrix p q
def bitSwapPiece (n i : ℕ) :
Matrix ((Fin n → Bool) × (Fin n → Bool)) ((Fin n → Bool) × (Fin n → Bool)) ℤ :=
fun p q => ∑ S ∈ powersetCard i (univ : Finset (Fin n)),
(∏ k ∈ S, -(bitSinglet (p.1 k, p.2 k) * bitSinglet (q.1 k, q.2 k))) *
∏ k ∈ Sᶜ, (1 : Matrix (Bool × Bool) (Bool × Bool) ℤ)
(p.1 k, p.2 k) (q.1 k, q.2 k)
MathlibExt/LinearAlgebra/Matrix/BitSwap.lean:50
TheoremBit-swap pieces vanish beyond the number of bits#✓fully proved
There is no piece containing more antisymmetric factors than bit positions.
theorem bitSwapPiece_eq_zero_of_lt {n i : ℕ} (h : n < i) : bitSwapPiece n i = 0
def bitSwapPiece (n i : ℕ) :
Matrix ((Fin n → Bool) × (Fin n → Bool)) ((Fin n → Bool) × (Fin n → Bool)) ℤ :=
fun p q => ∑ S ∈ powersetCard i (univ : Finset (Fin n)),
(∏ k ∈ S, -(bitSinglet (p.1 k, p.2 k) * bitSinglet (q.1 k, q.2 k))) *
∏ k ∈ Sᶜ, (1 : Matrix (Bool × Bool) (Bool × Bool) ℤ)
(p.1 k, p.2 k) (q.1 k, q.2 k)
MathlibExt/LinearAlgebra/Matrix/BitSwap.lean:50
Uses 2
TheoremBinomial entry bound for bit-swap pieces#✓fully proved
Each entry of the ith piece is bounded by the number of i-subsets of the bit positions.
theorem abs_bitSwapPiece_le_choose (n i : ℕ) (p q : (Fin n → Bool) × (Fin n → Bool)) :
|bitSwapPiece n i p q| ≤ (n.choose i : ℤ)
def bitSwapPiece (n i : ℕ) :
Matrix ((Fin n → Bool) × (Fin n → Bool)) ((Fin n → Bool) × (Fin n → Bool)) ℤ :=
fun p q => ∑ S ∈ powersetCard i (univ : Finset (Fin n)),
(∏ k ∈ S, -(bitSinglet (p.1 k, p.2 k) * bitSinglet (q.1 k, q.2 k))) *
∏ k ∈ Sᶜ, (1 : Matrix (Bool × Bool) (Bool × Bool) ℤ)
(p.1 k, p.2 k) (q.1 k, q.2 k)
MathlibExt/LinearAlgebra/Matrix/BitSwap.lean:50
Uses 2 · Used by 1
TheoremUniform power-of-two entry bound for bit-swap pieces#✓fully proved
The uniform entry bound used in the source: every piece has absolute value at most 2 ^ n.
theorem abs_bitSwapPiece_le_two_pow (n i : ℕ)
(p q : (Fin n → Bool) × (Fin n → Bool)) : |bitSwapPiece n i p q| ≤ 2 ^ n
def bitSwapPiece (n i : ℕ) :
Matrix ((Fin n → Bool) × (Fin n → Bool)) ((Fin n → Bool) × (Fin n → Bool)) ℤ :=
fun p q => ∑ S ∈ powersetCard i (univ : Finset (Fin n)),
(∏ k ∈ S, -(bitSinglet (p.1 k, p.2 k) * bitSinglet (q.1 k, q.2 k))) *
∏ k ∈ Sᶜ, (1 : Matrix (Bool × Bool) (Bool × Bool) ℤ)
(p.1 k, p.2 k) (q.1 k, q.2 k)
MathlibExt/LinearAlgebra/Matrix/BitSwap.lean:50
Uses 2
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.