Skip to content

Commit 4250d1a

Browse files
feat(GroupTheory/FreeGroup/Basic): surjection between types induces surjection between free groups on those types (leanprover-community#34624)
feat(GroupTheory/FreeGroup/Basic): adds the theorem that if `α` and `β` are arbitrary types and there is a surjection between them, then the induced FreeGroup.map is also surjective. This is a dependency of a larger PR to formalize finitely presented groups leanprover-community#34236.
1 parent 4a0fab5 commit 4250d1a

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

Mathlib/GroupTheory/FreeGroup/Basic.lean

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public import Mathlib.Algebra.Group.Pi.Basic
99
public import Mathlib.Algebra.Group.Subgroup.Ker
1010
public import Mathlib.Data.List.Chain
1111
public import Mathlib.Algebra.Group.Int.Defs
12-
public import Mathlib.Algebra.BigOperators.Group.List.Defs
12+
public import Mathlib.Algebra.BigOperators.Group.List.Basic
1313
public import Mathlib.Algebra.Group.Nat.Defs
1414

1515
/-!
@@ -782,8 +782,19 @@ theorem map.unique (g : FreeGroup α →* FreeGroup β)
782782
FreeGroup.map f (FreeGroup.of x * FreeGroup.mk t) by simp [g.map_mul, hg, ih])
783783

784784
@[to_additive]
785-
theorem map_eq_lift : map f x = lift (of ∘ f) x :=
786-
Eq.symm <| map.unique _ fun x => by simp
785+
theorem map_eq_lift : map f = lift (of ∘ f) := by
786+
ext; simp
787+
788+
@[to_additive]
789+
theorem range_map : (map f).range = Subgroup.closure (of '' Set.range f) := by
790+
rw [map_eq_lift, range_lift_eq_closure, Set.range_comp]
791+
792+
/-- If `α` and `β` are arbitrary types and there is a surjection between them,
793+
then the induced map on their free groups is also surjective. -/
794+
@[to_additive /-- If `α` and `β` are arbitrary types and there is a surjection between them,
795+
then the induced map on their additive free groups is also surjective. -/]
796+
theorem map_surjective (hf : Function.Surjective f) : Function.Surjective (map f) := by
797+
rw [← MonoidHom.range_eq_top, range_map, hf.range_eq, Set.image_univ, closure_range_of]
787798

788799
/-- Equivalent types give rise to multiplicatively equivalent free groups.
789800

0 commit comments

Comments
 (0)