Clifford group
import Set_normalizer
import Pauli_group
/--
Clifford group
"The group of unitaries that normalize the Pauli group."
-/
def Clifford := {U : U(dⁿ) | ∀ M ∈ P d n, U M U† ∈ P d n} / U(1)
- “The Clifford gates are then defined as elements in the Clifford group.”
-- Why is clifford group a group?
lemma : U₁, U₂ ∈ cliff → U₁ U₂ ∈ cliff := sorry
-- Not obvious to see that inverse is in the clifford group.
lemma : U ∈ cliff → U† ∈ cliff := sorry
-- use this lemma
lemma : α ≠ β → α' ≠ β' := sorry
-- Cliff is stabilizer of Pauli group
-- Immediate consequence: Cliff is finite group.
lemma : |cliff| < ∞ := sorry
----- Time for some examples.
-- Single qubit first
-- phase gate
def S := (1 0
0 i)
-- Hadamard gate
def H := 1/\sqrt{2} (1 1
1 -1)
-- Why are they clifford? Let them act on Paulis
-- They stabilize the Pauli group:
lemma : S X S† = Y := sorry
lemma : S Y S† = - X := sorry
lemma : S Z S† = Z := sorry
-- Do same for Hadamard
lemma : H X H† = Z := sorry
lemma : H Y H† = - Y := sorry
lemma : H Z H† = X := sorry
-- Implies `H S` operator stabilizes Pauli group.
-
Every finite group is subgroup of Permutation group.
- The Clifford group is a finite group.
-
Single qubit cliff induce permutation on {X, Y, Z} up to phases:
-
S corresponds to permutation between first and second element: S → (1 2).
-
HS correspond to all permutations: HS → (1 2 3).
-
-- If want to find clifford that maps things backwards we can find it.
/-
Geometric interpretation of single qubit cliff
-/
-- Recall Bloch representation
-- ρ = (1 + r . σ)/2
-- U ρ U† = (1 + (Rₙ(θ) r).σ))/2
-- Homomoprhism:
-- U(2) → SO(3)
-- U → Rₙ(θ)
---- Wonderful classification of all finite groups of
def fixes_plane := sorry --
-- rotations around axis commute so subgroup instance
def is_platonic_group G := G ∈ (T, O, I)
theorem [finite_subgroup_of_SO(3) G] :
fixes_plane G ∨ is_platonic_group G := sorry
-- It will turn out that ¬ fixes_plane cliff
lemma : ¬ fixes_plane cliff := sorry
-- The platonic groups
def T := sorry -- Symmetry group of the tetrahedron
def O := sorry -- Symmetry group of the Octahedron
-- Called O not C because there is a duality ... so that the new solid is an octahedron
def I := sorry -- Icoblabla
lemma : O ≅ S₄ :=
begin
-- simple geometric construction
-- set of diagonals of the cube
sorry
end
lemma temp : Cliff_pereserves_hermiticity := sorry
lemma temp : Cliff_permutes_vertices_of_octahedron
-- since it doesn't fix the plane it must be platonic
lemma : is_platonic_group cliff := sorry
-- Specifically it's isomorphic to the O platonic group
theorem : cliff ≅ O := sorry
-- isomorphism between cliff and O
def φ := sorry
lemma : φ(S) = R(π/2) → (1 2 3 4) := sorry
lemma : φ(H) = R(π) → (1 2) := sorry
lemma : surjective φ := sorry
lemma : φ(U₁) = φ(U₂) := sorry
lemma : injective φ := sorry
-- Whatever you can do to octahedron, you can do to the Paulis.
/-
How many gates from {S, H} needed to generate all single qubit clifford operations?
How many times we need to pick gate from this set to get a give cliffor operation?
Answer is 6
Example: Y = i(H S²)² -- Might be slightly off.
-/
Gottesman many have written a paper about generalization to many qudits.
- Possible application: Quantum error-correction;