Zulip Chat Archive

Stream: Is there code for X?

Topic: GL(n) as a manifold


Dominic Steinitz (Mar 30 2025 at 11:52):

These instances did not seem to exist

-- #synth  ChartedSpace (EuclideanSpace ℝ (Fin (n * n))) (GeneralLinearGroup (Fin n) ℝ)
-- #synth IsManifold (𝓡 (n * n)) ⊤ (GeneralLinearGroup (Fin n) ℝ)

There a theorem that says an open subset of a space is already a charted space and manifold:

#check TopologicalSpace.Opens.instChartedSpace

But now I have to show that {A | Matrix.det A ≠ 0} is open in Rn2\mathbb{R}^{n^2}. I'd rather not re-invent any wheels.

Sébastien Gouëzel (Mar 30 2025 at 13:02):

Have you seen docs#Units.instLieGroupModelWithCornersSelf (and the neighboring instances)?

Antoine Chambert-Loir (Mar 30 2025 at 15:21):

On the other hand, Mathlib doesn't seem to have submanifolds yet, and Cartan's theorem would be a stronger result, wouldn't it?

Kevin Buzzard (Mar 30 2025 at 19:48):

Right, we need things like SLn(R)SL_n(\R) as a Lie group, and also E6(R)E_6(\R) etc when these have been defined (eg as Hopf algebras or subgroups of matrix groups)

Dominic Steinitz (Mar 31 2025 at 07:08):

Antoine Chambert-Loir said:

On the other hand, Mathlib doesn't seem to have submanifolds yet, and Cartan's theorem would be a stronger result, wouldn't it?

I am sorry but your reply is a bit too cryptic for me. Are you saying we need submanifolds for GLn(R)GL_n(\mathbb{R}) to be a manifold? Which Cartan and which theorem?

Dominic Steinitz (Mar 31 2025 at 07:09):

Sébastien Gouëzel said:

Have you seen docs#Units.instLieGroupModelWithCornersSelf (and the neighboring instances)?

I have not but will look now.

Dominic Steinitz (Mar 31 2025 at 08:15):

Sébastien Gouëzel said:

Have you seen docs#Units.instLieGroupModelWithCornersSelf (and the neighboring instances)?

The example given is

import Mathlib

open Matrix Set
open scoped Manifold
open SmoothManifoldWithCorners

example {V : Type*} [NormedAddCommGroup V] [NormedSpace  V] [CompleteSpace V] :
  LieGroup 𝓘(, V L[] V)  (V L[] V)ˣ := inferInstance

variable {n : }

#synth Group (Matrix.GeneralLinearGroup (Fin n) )
#synth Group (LinearMap.GeneralLinearGroup  (Fin n  ))

#synth AddGroup (Matrix.GeneralLinearGroup (Fin n) )
#synth AddGroup (LinearMap.GeneralLinearGroup  (Fin n -> ))

but the GeneralLinearGroup is not even an AddGroup.

I am not sure how to proceed. Should I add instances for GeneralLinearGroup? Is this approach better than just saying that GLn(R)GL_n(\mathbb{R}) is open in Rn2\mathbb{R}^{n^2}.

I want GLn(R)GL_n(\mathbb{R}) to be a Lie group to define the fundamental vector field. I'd like a concrete Lie group and its corresponding algebra (which I found on this branch).

Sébastien Gouëzel (Mar 31 2025 at 08:43):

I'm not sure I understand your question. Sure, GeneralLinearGroup is not an AddGroup: what would be the sum of I and -I, say?

Dominic Steinitz (Mar 31 2025 at 08:50):

Sébastien Gouëzel said:

I'm not sure I understand your question. Sure, GeneralLinearGroup is not an AddGroup: what would be the sum of I and -I, say?

Yes but the example given in the reference you pointed me to (thanks for that) required this. Ah I just realised that you meant something else and not that example. Let me think a bit more.

Michael Rothgang (Mar 31 2025 at 12:35):

GeneralLinearGroup is a Group - the group operation is multiplication, not addition.

Michael Rothgang (Mar 31 2025 at 12:37):

About submanifolds: I'm slowly working on them (travelling now and dealing with technology... fun); hopefully I can open a first PR next week.

Michael Rothgang (Mar 31 2025 at 12:37):

That said, you shouldn't need this to talk about GL(n).

Dominic Steinitz (Mar 31 2025 at 13:22):

I have GL(n) is a Lie group so it must be a manifold.

import Mathlib

open Matrix
open scoped Manifold

variable {n : }

noncomputable
instance : NormedRing (Matrix (Fin n) (Fin n) ) := frobeniusNormedRing

noncomputable
instance : NormedAlgebra  (Matrix (Fin n) (Fin n)  ) := frobeniusNormedAlgebra

example : LieGroup 𝓘(, (Matrix (Fin n) (Fin n)  )) n (Matrix (Fin n) (Fin n)  )ˣ :=
  inferInstance

example : (Matrix (Fin n) (Fin n)  )ˣ = GeneralLinearGroup (Fin n)  := rfl

Dominic Steinitz (Mar 31 2025 at 15:12):

But I am still mystified. I was expecting the ModelWithCorners to be 𝓡 (n * n) but there is not even a ChartedSpace instance (the second synth fails).

#synth  ChartedSpace (Matrix (Fin n) (Fin n) ) (GL (Fin n) )

#synth  ChartedSpace (EuclideanSpace  (Fin (n * n))) (GL (Fin n) )

Antoine Chambert-Loir (Apr 01 2025 at 15:24):

Dominic Steinitz said:

Antoine Chambert-Loir said:

On the other hand, Mathlib doesn't seem to have submanifolds yet, and Cartan's theorem would be a stronger result, wouldn't it?

I am sorry but your reply is a bit too cryptic for me. Are you saying we need submanifolds for GLn(R)GL_n(\mathbb{R}) to be a manifold? Which Cartan and which theorem?

Saying that a subspace is a submanifold means that it has local coordinates given by a subset of local coordinates of the ambiant space. A criterion for that is to be definable by cc equations of class C1\mathscr C^1 whose differentials are linearly independent at each point of the subspace. (If one works locally, this is even a necessary condition.)

The theorem of Cartan says that every closed subgroup of a Lie group (for example GL(n,R)GL(n,\mathbf R)) is a submanifold (hence a Lie group).


Last updated: May 02 2025 at 03:31 UTC