lean2/tests/lean/run/nat_bug3.lean
Leonardo de Moura 8743394627 refactor(kernel/inductive): replace recursor name, use '.rec' instead of '_rec'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 15:04:57 -07:00

22 lines
696 B
Text

import logic
open num eq_ops
inductive nat : Type :=
zero : nat,
succ : nat → nat
abbreviation plus (x y : nat) : nat
:= nat.rec x (λn r, succ r) y
definition to_nat [coercion] [inline] (n : num) : nat
:= num.num.rec zero (λn, num.pos_num.rec (succ zero) (λn r, plus r (plus r (succ zero))) (λn r, plus r r) n) n
definition add (x y : nat) : nat
:= plus x y
variable le : nat → nat → Prop
infixl `+`:65 := add
infix `≤`:50 := le
axiom add_one (n:nat) : n + (succ zero) = succ n
axiom add_le_right_inv {n m k : nat} (H : n + k ≤ m + k) : n ≤ m
theorem succ_le_cancel {n m : nat} (H : succ n ≤ succ m) : n ≤ m
:= add_le_right_inv (add_one m⁻¹ ▸ add_one n⁻¹ ▸ H)