Unitary elements of a star monoid #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines unitary R
, where R
is a star monoid, as the submonoid made of the elements
that satisfy star U * U = 1
and U * star U = 1
, and these form a group.
This includes, for instance, unitary operators on Hilbert spaces.
See also matrix.unitary_group
for specializations to unitary (matrix n n R)
.
Tags #
unitary
In a *-monoid, unitary R
is the submonoid consisting of all the elements U
of
R
such that star U * U = 1
and U * star U = 1
.
Equations
theorem
unitary.mem_iff
{R : Type u_1}
[monoid R]
[star_semigroup R]
{U : R} :
U ∈ unitary R ↔ has_star.star U * U = 1 ∧ U * has_star.star U = 1
@[simp]
theorem
unitary.star_mul_self_of_mem
{R : Type u_1}
[monoid R]
[star_semigroup R]
{U : R}
(hU : U ∈ unitary R) :
has_star.star U * U = 1
@[simp]
theorem
unitary.mul_star_self_of_mem
{R : Type u_1}
[monoid R]
[star_semigroup R]
{U : R}
(hU : U ∈ unitary R) :
U * has_star.star U = 1
theorem
unitary.star_mem
{R : Type u_1}
[monoid R]
[star_semigroup R]
{U : R}
(hU : U ∈ unitary R) :
has_star.star U ∈ unitary R
@[simp]
@[protected, instance]
Equations
- unitary.has_star = {star := λ (U : ↥(unitary R)), ⟨has_star.star ↑U, _⟩}
@[simp, norm_cast]
theorem
unitary.coe_star
{R : Type u_1}
[monoid R]
[star_semigroup R]
{U : ↥(unitary R)} :
↑(has_star.star U) = has_star.star ↑U
theorem
unitary.coe_star_mul_self
{R : Type u_1}
[monoid R]
[star_semigroup R]
(U : ↥(unitary R)) :
has_star.star ↑U * ↑U = 1
theorem
unitary.coe_mul_star_self
{R : Type u_1}
[monoid R]
[star_semigroup R]
(U : ↥(unitary R)) :
↑U * has_star.star ↑U = 1
@[simp]
theorem
unitary.star_mul_self
{R : Type u_1}
[monoid R]
[star_semigroup R]
(U : ↥(unitary R)) :
has_star.star U * U = 1
@[simp]
theorem
unitary.mul_star_self
{R : Type u_1}
[monoid R]
[star_semigroup R]
(U : ↥(unitary R)) :
U * has_star.star U = 1
@[protected, instance]
Equations
- unitary.group = {mul := monoid.mul (unitary R).to_monoid, mul_assoc := _, one := monoid.one (unitary R).to_monoid, one_mul := _, mul_one := _, npow := monoid.npow (unitary R).to_monoid, npow_zero' := _, npow_succ' := _, inv := has_star.star unitary.has_star, div := div_inv_monoid.div._default monoid.mul unitary.group._proof_6 monoid.one unitary.group._proof_7 unitary.group._proof_8 monoid.npow unitary.group._proof_9 unitary.group._proof_10 has_star.star, div_eq_mul_inv := _, zpow := div_inv_monoid.zpow._default monoid.mul unitary.group._proof_12 monoid.one unitary.group._proof_13 unitary.group._proof_14 monoid.npow unitary.group._proof_15 unitary.group._proof_16 has_star.star, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _}
@[protected, instance]
Equations
- unitary.has_involutive_star = {to_has_star := unitary.has_star _inst_2, star_involutive := _}
@[protected, instance]
Equations
- unitary.star_semigroup = {to_has_involutive_star := unitary.has_involutive_star _inst_2, star_mul := _}
@[protected, instance]
Equations
- unitary.inhabited = {default := 1}
theorem
unitary.star_eq_inv
{R : Type u_1}
[monoid R]
[star_semigroup R]
(U : ↥(unitary R)) :
has_star.star U = U⁻¹
@[simp]
theorem
unitary.coe_to_units_apply
{R : Type u_1}
[monoid R]
[star_semigroup R]
(x : ↥(unitary R)) :
↑(⇑unitary.to_units x) = ↑x
@[simp]
theorem
unitary.coe_inv_to_units_apply
{R : Type u_1}
[monoid R]
[star_semigroup R]
(x : ↥(unitary R)) :
@[protected, instance]
Equations
- unitary.comm_group = {mul := group.mul unitary.group, mul_assoc := _, one := group.one unitary.group, one_mul := _, mul_one := _, npow := group.npow unitary.group, npow_zero' := _, npow_succ' := _, inv := group.inv unitary.group, div := group.div unitary.group, div_eq_mul_inv := _, zpow := group.zpow unitary.group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _}
@[norm_cast]
@[norm_cast]
theorem
unitary.coe_div
{R : Type u_1}
[group_with_zero R]
[star_semigroup R]
(U₁ U₂ : ↥(unitary R)) :
@[norm_cast]
theorem
unitary.coe_zpow
{R : Type u_1}
[group_with_zero R]
[star_semigroup R]
(U : ↥(unitary R))
(z : ℤ) :
@[protected, instance]
Equations
- unitary.has_distrib_neg = function.injective.has_distrib_neg coe unitary.has_distrib_neg._proof_1 unitary.coe_neg unitary.has_distrib_neg._proof_2