mirror of
https://github.com/Smaug123/agdaproofs
synced 2025-10-11 22:58:40 +00:00
23 lines
1.1 KiB
Agda
23 lines
1.1 KiB
Agda
{-# OPTIONS --warning=error --safe --without-K #-}
|
||
|
||
open import LogicalFormulae
|
||
open import Numbers.Naturals.Definition
|
||
open import Numbers.Naturals.Addition
|
||
open import Numbers.Naturals.Multiplication
|
||
open import Numbers.Naturals.Order
|
||
|
||
module Numbers.Naturals.Exponentiation where
|
||
|
||
_^N_ : ℕ → ℕ → ℕ
|
||
a ^N zero = 1
|
||
a ^N succ b = a *N (a ^N b)
|
||
|
||
exponentiationIncreases : (a b : ℕ) → (a ≡ 0) || (a ≤N a ^N (succ b))
|
||
exponentiationIncreases zero b = inl refl
|
||
exponentiationIncreases (succ a) zero = inr (inr (applyEquality succ (transitivity (additionNIsCommutative 0 a) (multiplicationNIsCommutative 1 a))))
|
||
exponentiationIncreases (succ a) (succ b) with exponentiationIncreases (succ a) b
|
||
exponentiationIncreases (succ a) (succ b) | inr (inl x) = inr (inl (canAddToOneSideOfInequality _ x))
|
||
exponentiationIncreases (succ a) (succ b) | inr (inr x) with productOne x
|
||
exponentiationIncreases (succ 0) (succ b) | inr (inr x) | inr pr rewrite pr = inr (inr refl)
|
||
exponentiationIncreases (succ (succ a)) (succ b) | inr (inr x) | inr pr rewrite pr | productWithOneRight a = inr (inl (le (succ (a +N a *N succ (succ a))) (additionNIsCommutative _ (succ (succ a)))))
|