# mathlibdocumentation

geometry.manifold.algebra.lie_group

# Lie groups

A Lie group is a group that is also a smooth manifold, in which the group operations of multiplication and inversion are smooth maps. Smoothness of the group multiplication means that multiplication is a smooth mapping of the product manifold G × G into G.

Note that, since a manifold here is not second-countable and Hausdorff a Lie group here is not guaranteed to be second-countable (even though it can be proved it is Hausdorff). Note also that Lie groups here are not necessarily finite dimensional.

## Main definitions and statements

• lie_add_group I G : a Lie additive group where G is a manifold on the model with corners I.
• lie_group I G : a Lie multiplicative group where G is a manifold on the model with corners I.
• lie_add_group_morphism I I' G G' : morphism of addittive Lie groups
• lie_group_morphism I I' G G' : morphism of Lie groups
• lie_add_group_core I G : allows to define a Lie additive group without first proving it is a topological additive group.
• lie_group_core I G : allows to define a Lie group without first proving it is a topological group.

• reals_lie_group : real numbers are a Lie group

## Implementation notes

A priori, a Lie group here is a manifold with corners.

The definition of Lie group cannot require I : model_with_corners 𝕜 E E with the same space as the model space and as the model vector space, as one might hope, beause in the product situation, the model space is model_prod E E' and the model vector space is E × E', which are not the same, so the definition does not apply. Hence the definition should be more general, allowing I : model_with_corners 𝕜 E H.

@[class]
structure lie_add_group {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] (I : H) (G : Type u_4) [add_group G] [ G] :
Prop

A Lie (additive) group is a group and a smooth manifold at the same time in which the addition and negation operations are smooth.

Instances
@[instance]
def lie_add_group.to_has_smooth_add {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] (I : H) (G : Type u_4) [add_group G] [ G] [s : G] :

@[instance]
def lie_group.to_has_smooth_mul {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] (I : H) (G : Type u_4) [group G] [ G] [s : G] :

@[class]
structure lie_group {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] (I : H) (G : Type u_4) [group G] [ G] :
Prop

A Lie group is a group and a smooth manifold at the same time in which the multiplication and inverse operations are smooth.

Instances
theorem smooth_pow {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_5} [ G] [group G] [ G] (n : ) :
I (λ (a : G), a ^ n)

theorem smooth_inv {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_5} [ G] [group G] [ G] :
I (λ (x : G), x⁻¹)

theorem smooth_neg {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_5} [ G] [add_group G] [ G] :
I (λ (x : G), -x)

theorem smooth.inv {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_5} [ G] [group G] [ G] {E' : Type u_6} [normed_group E'] [ E'] {H' : Type u_7} {I' : H'} {M : Type u_8} [ M] {f : M → G} (hf : smooth I' I f) :
smooth I' I (λ (x : M), (f x)⁻¹)

theorem smooth.neg {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_5} [ G] [add_group G] [ G] {E' : Type u_6} [normed_group E'] [ E'] {H' : Type u_7} {I' : H'} {M : Type u_8} [ M] {f : M → G} (hf : smooth I' I f) :
smooth I' I (λ (x : M), -f x)

theorem smooth_on.neg {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_5} [ G] [add_group G] [ G] {E' : Type u_6} [normed_group E'] [ E'] {H' : Type u_7} {I' : H'} {M : Type u_8} [ M] {f : M → G} {s : set M} (hf : I f s) :
I (λ (x : M), -f x) s

theorem smooth_on.inv {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_5} [ G] [group G] [ G] {E' : Type u_6} [normed_group E'] [ E'] {H' : Type u_7} {I' : H'} {M : Type u_8} [ M] {f : M → G} {s : set M} (hf : I f s) :
I (λ (x : M), (f x)⁻¹) s

@[instance]
def prod.lie_add_group {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_4} [ G] [add_group G] [ G] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {G' : Type u_7} [ G'] [add_group G'] [ G'] :
lie_add_group (I.prod I') (G × G')

@[instance]
def prod.lie_group {𝕜 : Type u_1} {H : Type u_2} {E : Type u_3} [normed_group E] [ E] {I : H} {G : Type u_4} [ G] [group G] [ G] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {G' : Type u_7} [ G'] [group G'] [ G'] :
lie_group (I.prod I') (G × G')

structure lie_add_group_morphism {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] (I : E) (I' : E') (G : Type u_4) [ G] [add_group G] [ G] (G' : Type u_5) [ G'] [add_group G'] [ G'] :
Type (max u_4 u_5)

structure lie_group_morphism {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] (I : E) (I' : E') (G : Type u_4) [ G] [group G] [ G] (G' : Type u_5) [ G'] [group G'] [ G'] :
Type (max u_4 u_5)
• to_smooth_monoid_morphism : G G'

Morphism of Lie groups.

@[instance]
def lie_group_morphism.has_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] {I : E} {I' : E'} {G : Type u_4} [ G] [group G] [ G] {G' : Type u_5} [ G'] [group G'] [ G'] :
has_one I' G G')

Equations
@[instance]
def lie_add_group_morphism.has_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] {I : E} {I' : E'} {G : Type u_4} [ G] [add_group G] [ G] {G' : Type u_5} [ G'] [add_group G'] [ G'] :
has_zero G G')

@[instance]
def lie_group_morphism.inhabited {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] {I : E} {I' : E'} {G : Type u_4} [ G] [group G] [ G] {G' : Type u_5} [ G'] [group G'] [ G'] :
inhabited I' G G')

Equations
@[instance]
def lie_add_group_morphism.inhabited {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] {I : E} {I' : E'} {G : Type u_4} [ G] [add_group G] [ G] {G' : Type u_5} [ G'] [add_group G'] [ G'] :
inhabited G G')

@[instance]
def lie_add_group_morphism.has_coe_to_fun {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] {I : E} {I' : E'} {G : Type u_4} [ G] [add_group G] [ G] {G' : Type u_5} [ G'] [add_group G'] [ G'] :

@[instance]
def lie_group_morphism.has_coe_to_fun {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_3} [normed_group E'] [ E'] {I : E} {I' : E'} {G : Type u_4} [ G] [group G] [ G] {G' : Type u_5} [ G'] [group G'] [ G'] :

Equations
@[nolint]
def lie_add_group_core.to_smooth_manifold_with_corners {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {I : E} {G : Type u_3} [add_group G] [ G] (s : G) :

structure lie_add_group_core {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] (I : E) (G : Type u_3) [add_group G] [ G] :
Prop

Sometimes one might want to define a Lie additive group G without having proved previously that G is a topological additive group. In such case it is possible to use lie_add_group_core that does not require such instance, and then get a Lie group by invoking to_lie_add_group.

@[nolint]
def lie_group_core.to_smooth_manifold_with_corners {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {I : E} {G : Type u_3} [group G] [ G] (s : G) :

structure lie_group_core {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] (I : E) (G : Type u_3) [group G] [ G] :
Prop

Sometimes one might want to define a Lie group G without having proved previously that G is a topological group. In such case it is possible to use lie_group_core that does not require such instance, and then get a Lie group by invoking to_lie_group defined below.

theorem lie_add_group_core.to_topological_add_group {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {I : E} {G : Type u_4} [ G] [add_group G] (c : G) :

theorem lie_group_core.to_topological_group {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {I : E} {G : Type u_4} [ G] [group G] (c : G) :

theorem lie_group_core.to_lie_group {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {I : E} {G : Type u_4} [ G] [group G] (c : G) :
G

theorem lie_add_group_core.to_lie_add_group {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {I : E} {G : Type u_4} [ G] [add_group G] (c : G) :

### Normed spaces are Lie groups

@[instance]
def normed_space_lie_group {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] :
E