Max P.L. Haslbeck, Simon Wimmer

June 28, 2021

Armaël Guéneau

Fabian Huch

Github repository with solutions: https://github.com/wimmers/proofground2021-solutions

Send us a pull request with your own!

Submitted by: Simon Wimmer

Originally from a student project, kudos to Alexander Gehrlein

Submitted by: Floris van Doorn

```
lemma group_theory_problem {G H : Type*} [group G] [group H] (f : G →* H)
(h1 : ∀ a b, a * b * a⁻¹ * b⁻¹ ∈ center G) (h2 : ∀ x ∈ center G, f x = 1 → x = 1) :
injective f :=
begin
suffices : ∀ (a : G), f a = 1 → a = 1,
{ rwa [monoid_hom.injective_iff] },
intros a ha,
have : a ∈ center G,
{ intro b,
have : f (a * b * a⁻¹ * b⁻¹) = 1,
{ simp [ha] },
have : a * b * a⁻¹ * b⁻¹ = 1,
{ refine h2 _ (h1 a b) this },
rw [eq_comm],
simpa [mul_inv_eq_iff_eq_mul] using this },
exact h2 a this ha
end
```

No group theory in Coq stdlib :(

Submitted by: Armaël Guéneau

Submitted by: Fabian Huch

From a course @TUM

Submitted by: Simon Wimmer

Thought of it while working on dynamic programming algorithms.

Had to reformulate for Coq to avoid indices and sets.

We are looking for:

- organizers
- problem committee members
- problems