Skip to content

Commit 9f56287

Browse files
committed
move increasing functions and properties to Order
1 parent ab4a573 commit 9f56287

File tree

2 files changed

+45
-20
lines changed

2 files changed

+45
-20
lines changed

Cubical/Data/Nat/MoreOrderProperties.agda

Lines changed: 0 additions & 20 deletions
This file was deleted.

Cubical/Data/Nat/Order.agda

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ suc-< p = pred-≤-pred (≤-suc p)
9696
≤-predℕ {zero} = ≤-refl
9797
≤-predℕ {suc n} = ≤-suc ≤-refl
9898

99+
≤-reflexive : {m n : ℕ} m ≡ n m ≤ n
100+
≤-reflexive p = 0 , p
101+
99102
≤-trans : k ≤ m m ≤ n k ≤ n
100103
≤-trans {k} {m} {n} (i , p) (j , q) = i + j , l2 ∙ (l1 ∙ q)
101104
where
@@ -200,6 +203,15 @@ predℕ-≤-predℕ {suc m} {suc n} ineq = pred-≤-pred ineq
200203
<-+-≤ : m < n k ≤ l m + k < n + l
201204
<-+-≤ p q = <≤-trans (<-+k p) (≤-k+ q)
202205

206+
<-suc : {n : ℕ} n < suc n
207+
<-suc = 0 , refl
208+
209+
<SumLeft : {n k : ℕ} n < n + suc k
210+
<SumLeft {n} {k} = k , +-suc k n ∙ +-comm (suc k) n
211+
212+
<SumRight : {n k : ℕ} n < suc k + n
213+
<SumRight {n} {k} = k , +-suc k n
214+
203215
¬squeeze< : {n m : ℕ} ¬ (n < m) × (m < suc n)
204216
¬squeeze< {n = n} ((zero , p) , t) = ¬m<m (subst (_< suc n) (sym p) t)
205217
¬squeeze< {n = n} ((suc diff1 , p) , q) =
@@ -545,3 +557,36 @@ pattern s<s {m} {n} m<n = s≤s {m} {n} m<n
545557
≤-∸-≥ n (suc l) zero r = ⊥.rec (¬-<-zero r)
546558
≤-∸-≥ zero (suc l) (suc k) r = ≤-refl
547559
≤-∸-≥ (suc n) (suc l) (suc k) r = ≤-∸-≥ n l k (pred-≤-pred r)
560+
561+
-- Some facts about increasing functions
562+
563+
isStrictlyIncreasing : (f : ℕ) Type
564+
isStrictlyIncreasing f = {m n : ℕ} (m < n) f m < f n
565+
566+
isIncreasing : (f : ℕ) Type
567+
isIncreasing f = {m n : ℕ} m ≤ n f m ≤ f n
568+
569+
strictlyIncreasing→Increasing : {f : ℕ} isStrictlyIncreasing f isIncreasing f
570+
strictlyIncreasing→Increasing {f} fInc {m} {n} m≤n = case (≤-split m≤n) of
571+
λ { (inl m<n) <-weaken (fInc m<n)
572+
; (inr m=n) ≤-reflexive (cong f m=n) }
573+
574+
module _ (f : ℕ) (fInc : ((n : ℕ) f n < f (suc n))) where
575+
open <-Reasoning
576+
sucIncreasing→StrictlyIncreasing : isStrictlyIncreasing f
577+
sucIncreasing→StrictlyIncreasing {m = m} {n = n} (k , m+k+1=n) =
578+
sucIncreasing→strictlyIncreasing' m n k m+k+1=n where
579+
580+
sucIncreasing→strictlyIncreasing' :
581+
(m : ℕ) (n : ℕ) (k : ℕ) (k + suc m ≡ n) f m < f n
582+
583+
sucIncreasing→strictlyIncreasing' m _ zero m+1=n =
584+
subst (λ n' f m < f n') m+1=n (fInc m)
585+
586+
sucIncreasing→strictlyIncreasing' m _ (suc k) sk+sm=n =
587+
subst (λ n' f m < f n') sk+sm=n $
588+
f m
589+
<⟨ sucIncreasing→strictlyIncreasing' m (k + suc m) k refl ⟩
590+
f (k + suc m)
591+
<≡⟨ fInc (k + suc m) ⟩
592+
f (suc k + suc m) ∎

0 commit comments

Comments
 (0)