Documentation
LeanCourse
.
MIL
.
C05_Elementary_Number_Theory
.
S02_Induction_and_Recursion
Search
Google site search
return to top
source
Imports
Init
LeanCourse.Common
Mathlib.Data.Nat.GCD.Basic
Imported by
LeanCourse
fac
fac_pos
dvd_fac
pow_two_le_fac
sum_id
sum_sqr
MyNat
MyNat
.
add
MyNat
.
mul
MyNat
.
zero_add
MyNat
.
succ_add
MyNat
.
add_comm
MyNat
.
add_assoc
MyNat
.
mul_add
MyNat
.
zero_mul
MyNat
.
succ_mul
MyNat
.
mul_comm
source
def
fac
:
ℕ
→
ℕ
Equations
fac
0
=
1
fac
n
.succ
=
(
n
+
1
)
*
fac
n
source
theorem
fac_pos
(n :
ℕ
)
:
0
<
fac
n
source
theorem
dvd_fac
{i :
ℕ
}
{n :
ℕ
}
(ipos :
0
<
i
)
(ile :
i
≤
n
)
:
i
∣
fac
n
source
theorem
pow_two_le_fac
(n :
ℕ
)
:
2
^
(
n
-
1
)
≤
fac
n
source
theorem
sum_id
(n :
ℕ
)
:
∑
i
∈
Finset.range
(
n
+
1
)
,
i
=
n
*
(
n
+
1
)
/
2
source
theorem
sum_sqr
(n :
ℕ
)
:
∑
i
∈
Finset.range
(
n
+
1
)
,
i
^
2
=
n
*
(
n
+
1
)
*
(
2
*
n
+
1
)
/
6
source
inductive
MyNat
:
Type
zero:
MyNat
succ:
MyNat
→
MyNat
source
def
MyNat
.
add
:
MyNat
→
MyNat
→
MyNat
Equations
x
.add
MyNat.zero
=
x
x
.add
y
.succ
=
(
x
.add
y
)
.succ
source
def
MyNat
.
mul
:
MyNat
→
MyNat
→
MyNat
Equations
x
.mul
MyNat.zero
=
MyNat.zero
x
.mul
y
.succ
=
(
x
.mul
y
)
.add
x
source
theorem
MyNat
.
zero_add
(n :
MyNat
)
:
MyNat.zero
.add
n
=
n
source
theorem
MyNat
.
succ_add
(m :
MyNat
)
(n :
MyNat
)
:
m
.succ
.add
n
=
(
m
.add
n
)
.succ
source
theorem
MyNat
.
add_comm
(m :
MyNat
)
(n :
MyNat
)
:
m
.add
n
=
n
.add
m
source
theorem
MyNat
.
add_assoc
(m :
MyNat
)
(n :
MyNat
)
(k :
MyNat
)
:
(
m
.add
n
)
.add
k
=
m
.add
(
n
.add
k
)
source
theorem
MyNat
.
mul_add
(m :
MyNat
)
(n :
MyNat
)
(k :
MyNat
)
:
m
.mul
(
n
.add
k
)
=
(
m
.mul
n
)
.add
(
m
.mul
k
)
source
theorem
MyNat
.
zero_mul
(n :
MyNat
)
:
MyNat.zero
.mul
n
=
MyNat.zero
source
theorem
MyNat
.
succ_mul
(m :
MyNat
)
(n :
MyNat
)
:
m
.succ
.mul
n
=
(
m
.mul
n
)
.add
n
source
theorem
MyNat
.
mul_comm
(m :
MyNat
)
(n :
MyNat
)
:
m
.mul
n
=
n
.mul
m