refactor(library/data/nat/basic): rename pred.zero and pred.succ

This commit is contained in:
Jeremy Avigad 2015-01-06 20:54:15 -05:00 committed by Leonardo de Moura
parent 50f03c5a09
commit 42c328e781
3 changed files with 14 additions and 14 deletions

View file

@ -53,17 +53,17 @@ assume H, no_confusion H
-- add_rewrite succ_ne_zero -- add_rewrite succ_ne_zero
theorem pred.zero : pred 0 = 0 := theorem pred_zero : pred 0 = 0 :=
rfl rfl
theorem pred.succ (n : ) : pred (succ n) = n := theorem pred_succ (n : ) : pred (succ n) = n :=
rfl rfl
theorem eq_zero_or_eq_succ_pred (n : ) : n = 0 n = succ (pred n) := theorem eq_zero_or_eq_succ_pred (n : ) : n = 0 n = succ (pred n) :=
induction_on n induction_on n
(or.inl rfl) (or.inl rfl)
(take m IH, or.inr (take m IH, or.inr
(show succ m = succ (pred (succ m)), from congr_arg succ !pred.succ⁻¹)) (show succ m = succ (pred (succ m)), from congr_arg succ !pred_succ⁻¹))
theorem exists_eq_succ_of_ne_zero {n : } (H : n ≠ 0) : ∃k : , n = succ k := theorem exists_eq_succ_of_ne_zero {n : } (H : n ≠ 0) : ∃k : , n = succ k :=
exists.intro _ (or_resolve_right !eq_zero_or_eq_succ_pred H) exists.intro _ (or_resolve_right !eq_zero_or_eq_succ_pred H)

View file

@ -285,16 +285,16 @@ nat.cases_on n
(assume H : pred 0 ≤ m, !zero_le) (assume H : pred 0 ≤ m, !zero_le)
(take n', (take n',
assume H : pred (succ n') ≤ m, assume H : pred (succ n') ≤ m,
have H1 : n' ≤ m, from pred.succ n' ▸ H, have H1 : n' ≤ m, from pred_succ n' ▸ H,
succ_le_succ H1) succ_le_succ H1)
theorem pred_le_of_le_succ {n m : } : n ≤ succ m → pred n ≤ m := theorem pred_le_of_le_succ {n m : } : n ≤ succ m → pred n ≤ m :=
nat.cases_on n nat.cases_on n
(assume H, !pred.zero⁻¹ ▸ zero_le m) (assume H, !pred_zero⁻¹ ▸ zero_le m)
(take n', (take n',
assume H : succ n' ≤ succ m, assume H : succ n' ≤ succ m,
have H1 : n' ≤ m, from le_of_succ_le_succ H, have H1 : n' ≤ m, from le_of_succ_le_succ H,
!pred.succ⁻¹ ▸ H1) !pred_succ⁻¹ ▸ H1)
theorem succ_le_of_le_pred {n m : } : succ n ≤ m → n ≤ pred m := theorem succ_le_of_le_pred {n m : } : succ n ≤ m → n ≤ pred m :=
nat.cases_on m nat.cases_on m
@ -302,14 +302,14 @@ nat.cases_on m
(take m', (take m',
assume H : succ n ≤ succ m', assume H : succ n ≤ succ m',
have H1 : n ≤ m', from le_of_succ_le_succ H, have H1 : n ≤ m', from le_of_succ_le_succ H,
!pred.succ⁻¹ ▸ H1) !pred_succ⁻¹ ▸ H1)
theorem pred_le_pred_of_le {n m : } : n ≤ m → pred n ≤ pred m := theorem pred_le_pred_of_le {n m : } : n ≤ m → pred n ≤ pred m :=
nat.cases_on n nat.cases_on n
(assume H, pred.zero⁻¹ ▸ zero_le (pred m)) (assume H, pred_zero⁻¹ ▸ zero_le (pred m))
(take n', (take n',
assume H : succ n' ≤ m, assume H : succ n' ≤ m,
!pred.succ⁻¹ ▸ succ_le_of_le_pred H) !pred_succ⁻¹ ▸ succ_le_of_le_pred H)
theorem le_or_eq_succ_of_le_succ {n m : } (H : n ≤ succ m) : n ≤ m n = succ m := theorem le_or_eq_succ_of_le_succ {n m : } (H : n ≤ succ m) : n ≤ m n = succ m :=
or_of_or_of_imp_left (succ_le_or_eq_of_le H) or_of_or_of_imp_left (succ_le_or_eq_of_le H)
@ -317,8 +317,8 @@ or_of_or_of_imp_left (succ_le_or_eq_of_le H)
theorem le_pred_self (n : ) : pred n ≤ n := theorem le_pred_self (n : ) : pred n ≤ n :=
cases_on n cases_on n
(pred.zero⁻¹ ▸ !le.refl) (pred_zero⁻¹ ▸ !le.refl)
(take k : , (!pred.succ)⁻¹ ▸ !self_le_succ) (take k : , (!pred_succ)⁻¹ ▸ !self_le_succ)
theorem succ_pos (n : ) : 0 < succ n := theorem succ_pos (n : ) : 0 < succ n :=
!zero_lt_succ !zero_lt_succ

View file

@ -33,7 +33,7 @@ induction_on n !sub_zero_right
calc calc
0 - succ k = pred (0 - k) : !sub_succ_right 0 - succ k = pred (0 - k) : !sub_succ_right
... = pred 0 : {IH} ... = pred 0 : {IH}
... = 0 : pred.zero) ... = 0 : pred_zero)
theorem sub_succ_succ (n m : ) : succ n - succ m = n - m := theorem sub_succ_succ (n m : ) : succ n - succ m = n - m :=
succ_sub_succ_eq_sub n m succ_sub_succ_eq_sub n m
@ -118,14 +118,14 @@ theorem succ_sub_one (n : ) : succ n - 1 = n :=
theorem mul_pred_left (n m : ) : pred n * m = n * m - m := theorem mul_pred_left (n m : ) : pred n * m = n * m - m :=
induction_on n induction_on n
(calc (calc
pred 0 * m = 0 * m : {pred.zero} pred 0 * m = 0 * m : {pred_zero}
... = 0 : !zero_mul ... = 0 : !zero_mul
... = 0 - m : !sub_zero_left⁻¹ ... = 0 - m : !sub_zero_left⁻¹
... = 0 * m - m : {!zero_mul⁻¹}) ... = 0 * m - m : {!zero_mul⁻¹})
(take k : nat, (take k : nat,
assume IH : pred k * m = k * m - m, assume IH : pred k * m = k * m - m,
calc calc
pred (succ k) * m = k * m : {!pred.succ} pred (succ k) * m = k * m : {!pred_succ}
... = k * m + m - m : !sub_add_left⁻¹ ... = k * m + m - m : !sub_add_left⁻¹
... = succ k * m - m : {!succ_mul⁻¹}) ... = succ k * m - m : {!succ_mul⁻¹})