Si G es un grupo y a, b ∈ G, entonces (a * b)⁻¹ = b⁻¹ * a⁻¹
Demostrar que si G es un grupo y a, b ∈ G, entonces
1 |
(a * b)⁻¹ = b⁻¹ * a⁻¹ |
Para ello, completar la siguiente teoría de Lean:
1 2 3 4 5 6 |
import algebra.group variables {G : Type*} [group G] variables a b : G example : (a * b)⁻¹ = b⁻¹ * a⁻¹ := sorry |
Soluciones con Lean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import algebra.group variables {G : Type*} [group G] variables a b : G -- 1ª demostración -- =============== example : (a * b)⁻¹ = b⁻¹ * a⁻¹ := begin apply mul_eq_one_iff_inv_eq.mp, calc a * b * (b⁻¹ * a⁻¹) = ((a * b) * b⁻¹) * a⁻¹ : (mul_assoc _ _ _).symm ... = (a * (b * b⁻¹)) * a⁻¹ : congr_arg (* a⁻¹) (mul_assoc a _ _) ... = (a * 1) * a⁻¹ : congr_arg2 _ (congr_arg _ (mul_inv_self b)) rfl ... = a * a⁻¹ : congr_arg (* a⁻¹) (mul_one a) ... = 1 : mul_inv_self a end -- 2ª demostración -- =============== example : (a * b)⁻¹ = b⁻¹ * a⁻¹ := begin apply mul_eq_one_iff_inv_eq.mp, calc a * b * (b⁻¹ * a⁻¹) = ((a * b) * b⁻¹) * a⁻¹ : by simp only [mul_assoc] ... = (a * (b * b⁻¹)) * a⁻¹ : by simp only [mul_assoc] ... = (a * 1) * a⁻¹ : by simp only [mul_inv_self] ... = a * a⁻¹ : by simp only [mul_one] ... = 1 : by simp only [mul_inv_self] end -- 3ª demostración -- =============== example : (a * b)⁻¹ = b⁻¹ * a⁻¹ := begin apply mul_eq_one_iff_inv_eq.mp, calc a * b * (b⁻¹ * a⁻¹) = ((a * b) * b⁻¹) * a⁻¹ : by simp [mul_assoc] ... = (a * (b * b⁻¹)) * a⁻¹ : by simp ... = (a * 1) * a⁻¹ : by simp ... = a * a⁻¹ : by simp ... = 1 : by simp, end -- 4ª demostración -- =============== example : (a * b)⁻¹ = b⁻¹ * a⁻¹ := -- by library_search mul_inv_rev a b -- 5ª demostración -- =============== example : (a * b)⁻¹ = b⁻¹ * a⁻¹ := by simp |
Se puede interactuar con la prueba anterior en esta sesión con Lean.
Referencias
- J. Avigad, K. Buzzard, R.Y. Lewis y P. Massot. Mathematics in Lean, p. 14.