Basic operations on the integers #
This file contains some basic lemmas about integers.
See note [foundational algebra order theory].
This file should not depend on anything defined in Mathlib (except for notation), so that it can be upstreamed to Batteries easily.
succ and pred #
The following few lemmas are proved in the core implementation of the omega
tactic. We expose
them here with nice user-facing names.
Induction on integers: prove a proposition p i
by proving the base case p 0
,
the upwards induction step p i → p (i + 1)
and the downwards induction step p (-i) → p (-i - 1)
.
It is used as the default induction principle for the induction
tactic.
Inductively define a function on ℤ
by defining it at b
, for the succ
of a number greater
than b
, and the pred
of a number less than b
.
Equations
- z.inductionOn' b H0 Hs Hp = cast ⋯ (match z - b with | Int.ofNat n => Int.inductionOn'.pos b H0 Hs n | Int.negSucc n => Int.inductionOn'.neg b H0 Hp n)
Instances For
The positive case of Int.inductionOn'
.
Equations
- Int.inductionOn'.pos b H0 Hs 0 = cast ⋯ H0
- Int.inductionOn'.pos b H0 Hs n.succ = cast ⋯ (Hs (b + ↑n) ⋯ (Int.inductionOn'.pos b H0 Hs n))
Instances For
The negative case of Int.inductionOn'
.
Equations
- Int.inductionOn'.neg b H0 Hp 0 = Hp b ⋯ H0
- Int.inductionOn'.neg b H0 Hp n.succ = cast ⋯ (Hp (b + Int.negSucc n) ⋯ (Int.inductionOn'.neg b H0 Hp n))
Instances For
Inductively define a function on ℤ
by defining it on ℕ
and extending it from n
to -n
.
Equations
- Int.negInduction nat neg (Int.ofNat n) = nat n
- Int.negInduction nat neg (Int.negSucc n) = neg nat (n + 1)
Instances For
A strong recursor for Int
that specifies explicit values for integers below a threshold,
and is analogous to Nat.strongRec
for integers on or above the threshold.
Equations
- One or more equations did not get rendered due to their size.