quox/examples/nat.quox

39 lines
901 B
Plaintext
Raw Normal View History

2023-04-17 15:44:16 -04:00
def dup- : 1. → [ω.] =
2023-04-01 13:16:30 -04:00
λ n ⇒
case1 n return [ω.] of {
zero ⇒ [zero];
succ _, 1.d ⇒
case1 d return [ω.] of { [d] ⇒ [succ d] }
};
2023-04-17 15:44:16 -04:00
def plus : 1. → 1. =
2023-04-01 13:16:30 -04:00
λ m n ⇒
case1 m return of {
zero ⇒ n;
succ _, 1.p ⇒ succ p
};
2023-04-17 15:44:16 -04:00
def times-ω : 1. → ω. =
2023-04-01 13:16:30 -04:00
λ m n ⇒
case1 m return of {
zero ⇒ zero;
succ _, 1.t ⇒ plus n t
};
2023-04-17 15:44:16 -04:00
def times : 1. → 1. =
2023-04-01 13:16:30 -04:00
λ m n ⇒
case1 dup- n return of {
[n] ⇒ times-ω m n
};
2023-04-17 15:44:16 -04:00
def pred : 1. =
2023-04-01 13:16:30 -04:00
λ n ⇒
case1 n return of { zero ⇒ zero; succ n ⇒ n };
def0 pred-succ : ω.(n : ) → pred (succ n) ≡ n : =
λ n ⇒ δ i ⇒ n;
2023-04-17 15:44:16 -04:00
def0 succ-inj : 0.(m : ) → 0.(n : ) →
0.(succ m ≡ succ n : ) → m ≡ n : =
λ m n eq ⇒ δ i ⇒ pred (eq @i);