∀ m n : ℕ, Even n → Even (m * n)
Demostrar que los productos de los números naturales por números pares son pares.
Para ello, completar la siguiente teoría de Lean:
1 2 3 4 5 6 7 8 |
import Mathlib.Data.Nat.Basic import Mathlib.Data.Nat.Parity import Mathlib.Tactic open Nat example : ∀ m n : ℕ, Even n → Even (m * n) := by sorry |
Demostración en lenguaje natural
Si \(n\) es par, entonces (por la definición de Even
) existe un \(k\) tal que
\[
\begin{align*}
n = k + k && (1)
\end{align*}
\]
Por tanto,
\[
\begin{align*}
mn &= m(k + k) && (\text{por (1)})\\
&= mk + mk && (\text{por la propiedad distributiva})
\end{align*}
\]
Por consiguiente, \(mn\) es par.
Soluciones con Lean4
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 59 60 61 62 63 64 65 66 67 68 69 |
import Mathlib.Data.Nat.Basic import Mathlib.Data.Nat.Parity import Mathlib.Tactic open Nat -- 1ª demostración example : ∀ m n : ℕ, Even n → Even (m * n) := by rintro m n ⟨k, hk⟩ use m * k rw [hk] ring -- 2ª demostración example : ∀ m n : ℕ, Even n → Even (m * n) := by rintro m n ⟨k, hk⟩ use m * k rw [hk] rw [mul_add] -- 3ª demostración example : ∀ m n : ℕ, Even n → Even (m * n) := by rintro m n ⟨k, hk⟩ use m * k rw [hk, mul_add] -- 4ª demostración example : ∀ m n : Nat, Even n → Even (m * n) := by rintro m n ⟨k, hk⟩; use m * k; rw [hk, mul_add] -- 5ª demostración example : ∀ m n : ℕ, Even n → Even (m * n) := by rintro m n ⟨k, hk⟩ exact ⟨m * k, by rw [hk, mul_add]⟩ -- 6ª demostración example : ∀ m n : Nat, Even n → Even (m * n) := fun m n ⟨k, hk⟩ ↦ ⟨m * k, by rw [hk, mul_add]⟩ -- 7ª demostración example : ∀ m n : ℕ, Even n → Even (m * n) := by rintro m n ⟨k, hk⟩ use m * k rw [hk] exact mul_add m k k -- 8ª demostración example : ∀ m n : ℕ, Even n → Even (m * n) := by intros m n hn unfold Even at * cases hn with | intro k hk => use m * k rw [hk, mul_add] -- 9ª demostración example : ∀ m n : ℕ, Even n → Even (m * n) := by intros m n hn unfold Even at * cases hn with | intro k hk => use m * k calc m * n = m * (k + k) := by exact congrArg (HMul.hMul m) hk _ = m * k + m * k := by exact mul_add m k k -- 10ª demostración example : ∀ m n : Nat, Even n → Even (m * n) := by intros; simp [*, parity_simps] |
Se puede interactuar con las pruebas anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 3.