-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathEjemplo_de_demostracion.lean
85 lines (74 loc) · 2.07 KB
/
Ejemplo_de_demostracion.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
-- ---------------------------------------------------------------------
-- Ejercicio. Demostrar que los productos de los números naturales por
-- números pares son pares.
-- ---------------------------------------------------------------------
import data.nat.parity
import tactic
open nat
-- 1ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
begin
intros m n hn,
unfold even at *,
cases hn with k hk,
use m * k,
calc m * n
= m * (k + k) : congr_arg (has_mul.mul m) hk
... = m * k + m * k : mul_add m k k
end
-- 2ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
begin
intros m n hn,
cases hn with k hk,
use m * k,
calc m * n
= m * (k + k) : congr_arg (has_mul.mul m) hk
... = m * k + m * k : mul_add m k k
end
-- 3ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
begin
rintros m n ⟨k, hk⟩,
use m * k,
calc m * n
= m * (k + k) : congr_arg (has_mul.mul m) hk
... = m * k + m * k : mul_add m k k
end
-- 4ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
begin
rintros m n ⟨k, hk⟩,
use m * k,
rw hk,
exact mul_add m k k,
end
-- 5ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
begin
rintros m n ⟨k, hk⟩,
use m * k,
rw [hk, mul_add]
end
-- 6ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
begin
rintros m n ⟨k, hk⟩,
exact ⟨m * k, by rw [hk, mul_add]⟩
end
-- 7ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
λ m n ⟨k, hk⟩, ⟨m * k, by rw [hk, mul_add]⟩
-- 8ª demostración
example : ∀ m n : ℕ, even n → even (m * n) :=
assume m n ⟨k, (hk : n = k + k)⟩,
have hmn : m * n = m * k + m * k,
by rw [hk, mul_add],
show ∃ l, m * n = l + l,
from ⟨_, hmn⟩
-- Comentarios:
-- 1. Al poner el curso en la línea 1 sobre data.nat.parity y pulsar M-.
-- se abre la teoría correspondiente.
-- 2. Se activa la ventana de objetivos (*Lean Goal*) pulsando C-c C-g
-- 3. Al mover el cursor sobre las pruebas se actualiza la ventana de
-- objetivos.