--- Título: Si G es un grupo y a ∈ G, entonces aa⁻¹ = 1 Autor: José A. Alonso --- En Lean4, se declara que \(G\) es un grupo mediante la expresión
   variable {G : Type _} [Group G]
Como consecuencia, se tiene los siguientes axiomas
   mul_assoc :    ∀ a b c : G, a * b * c = a * (b * c)
   one_mul :      ∀ a : G, 1 * a = a
   mul_left_inv : ∀ a : G, a⁻¹ * a = 1
Demostrar que si \(G\) es un grupo y \(a \in G\), entonces \[aa⁻¹ = 1\] Para ello, completar la siguiente teoría de Lean4:
import Mathlib.Algebra.Group.Defs

variable {G : Type _} [Group G]
variable (a b : G)

example : a * a⁻¹ = 1 :=
sorry
Demostración en lenguaje natural [mathjax] Por la siguiente cadena de igualdades \begin{align} a·a⁻¹ &= 1·(a·a⁻¹) &&\text{[por producto con uno]} \\ &= (1·a)·a⁻¹ &&\text{[por asociativa]} \\ &= (((a⁻¹)⁻¹·a⁻¹) ·a)·a⁻¹ &&\text{[por producto con inverso]} \\ &= ((a⁻¹)⁻¹·(a⁻¹ ·a))·a⁻¹ &&\text{[por asociativa]} \\ &= ((a⁻¹)⁻¹·1)·a⁻¹ &&\text{[por producto con inverso]} \\ &= (a⁻¹)⁻¹·(1·a⁻¹) &&\text{[por asociativa]} \\ &= (a⁻¹)⁻¹·a⁻¹ &&\text{[por producto con uno]} \\ &= 1 &&\text{[por producto con inverso]} \end{align} Demostraciones con Lean4
import Mathlib.Algebra.Group.Defs

variable {G : Type _} [Group G]
variable (a b : G)

-- 1ª demostración
example : a * a⁻¹ = 1 :=
calc
  a * a⁻¹ = 1 * (a * a⁻¹)                := by rw [one_mul]
        _ = (1 * a) * a⁻¹                := by rw [mul_assoc]
        _ = (((a⁻¹)⁻¹ * a⁻¹)  * a) * a⁻¹ := by rw [mul_left_inv]
        _ = ((a⁻¹)⁻¹ * (a⁻¹  * a)) * a⁻¹ := by rw [← mul_assoc]
        _ = ((a⁻¹)⁻¹ * 1) * a⁻¹          := by rw [mul_left_inv]
        _ = (a⁻¹)⁻¹ * (1 * a⁻¹)          := by rw [mul_assoc]
        _ = (a⁻¹)⁻¹ * a⁻¹                := by rw [one_mul]
        _ = 1                            := by rw [mul_left_inv]

-- 2ª demostración
example : a * a⁻¹ = 1 :=
calc
  a * a⁻¹ = 1 * (a * a⁻¹)                := by simp
        _ = (1 * a) * a⁻¹                := by simp
        _ = (((a⁻¹)⁻¹ * a⁻¹)  * a) * a⁻¹ := by simp
        _ = ((a⁻¹)⁻¹ * (a⁻¹  * a)) * a⁻¹ := by simp
        _ = ((a⁻¹)⁻¹ * 1) * a⁻¹          := by simp
        _ = (a⁻¹)⁻¹ * (1 * a⁻¹)          := by simp
        _ = (a⁻¹)⁻¹ * a⁻¹                := by simp
        _ = 1                            := by simp

-- 3ª demostración
example : a * a⁻¹ = 1 :=
by simp

-- 4ª demostración
example : a * a⁻¹ = 1 :=
by exact mul_inv_self a
Demostraciones interactivas Se puede interactuar con las demostraciones anteriores en Lean 4 Web. Referencias