1- module Cubical.Data.Nat.Bijections.FinN where
1+ module Cubical.Data.Nat.Bijections.Triangle where
22
33open import Cubical.Foundations.Prelude
44open import Cubical.Foundations.Isomorphism
@@ -9,16 +9,15 @@ open import Cubical.Data.Nat.Order
99open <-Reasoning
1010open import Cubical.Tactics.NatSolver
1111open import Cubical.Data.Nat.Bijections.IncreasingFunction
12- open import Cubical.Data.Nat.MoreOrderProperties
1312
14- Finℕ = Σ[ k ∈ ℕ ] Σ[ i ∈ ℕ ] (i ≤ k)
13+ Triangle⊂ℕ = Σ[ k ∈ ℕ ] Σ[ i ∈ ℕ ] (i ≤ k)
1514
1615triangle : ℕ → ℕ
1716triangle zero = zero
1817triangle (suc n) = n + suc (triangle n)
1918
20- increasingTriangle : isIncreasing triangle
21- increasingTriangle = strengthenIncreasing triangle triangleN<triangleSN where
19+ strictIncTriangle : isStrictlyIncreasing triangle
20+ strictIncTriangle = sucIncreasing→StrictlyIncreasing triangle triangleN<triangleSN where
2221 triangleN<triangleSN : (n : ℕ) → triangle n < triangle (suc n)
2322 triangleN<triangleSN n = n , refl
2423
@@ -28,26 +27,26 @@ private
2827 1+k+tk=tsk : (n : ℕ) → suc (n + triangle n) ≡ triangle (suc n)
2928 1+k+tk=tsk n = 1+k+t=k+t+1 n (triangle n)
3029
31- partitionTriangle = partition triangle refl increasingTriangle
30+ partitionTriangle = partition triangle refl strictIncTriangle
3231
33- Finℕ ≅partitionTriangle : Iso Finℕ partitionTriangle
34- Iso.fun Finℕ ≅partitionTriangle (k , i , i≤k) = k , i , i+tk<tsk where
32+ Triangle⊂ℕ ≅partitionTriangle : Iso Triangle⊂ℕ partitionTriangle
33+ Iso.fun Triangle⊂ℕ ≅partitionTriangle (k , i , i≤k) = k , i , i+tk<tsk where
3534 i+tk<tsk : i + triangle k < triangle (suc k)
3635 i+tk<tsk = i + triangle k <≤⟨ suc-≤-suc (≤-+k {k = triangle k} i≤k) ⟩
3736 k + triangle k <≡⟨ <-suc ⟩ 1+k+tk=tsk k
3837
39- Iso.inv Finℕ ≅partitionTriangle (k , i , i+tk<tsk) = k , i , i≤k where
38+ Iso.inv Triangle⊂ℕ ≅partitionTriangle (k , i , i+tk<tsk) = k , i , i≤k where
4039 i+tk<k+tk+1 : i + triangle k < suc (k + triangle k)
4140 i+tk<k+tk+1 = i + triangle k <≡⟨ i+tk<tsk ⟩ sym (1+k+tk=tsk k)
4241 i+tk≤k+tk : i + triangle k ≤ k + triangle k
4342 i+tk≤k+tk = pred-≤-pred i+tk<k+tk+1
4443 i≤k : i ≤ k
4544 i≤k = ≤-+k-cancel i+tk≤k+tk
46- Iso.rightInv Finℕ ≅partitionTriangle (k , i , _) = ΣPathP (refl , ΣPathPProp (λ _ → isProp≤) refl)
47- Iso.leftInv Finℕ ≅partitionTriangle (k , i , _) = ΣPathP (refl , ΣPathPProp (λ _ → isProp≤) refl)
45+ Iso.rightInv Triangle⊂ℕ ≅partitionTriangle (k , i , _) = ΣPathP (refl , ΣPathPProp (λ _ → isProp≤) refl)
46+ Iso.leftInv Triangle⊂ℕ ≅partitionTriangle (k , i , _) = ΣPathP (refl , ΣPathPProp (λ _ → isProp≤) refl)
4847
4948 partitionTriangle≅ℕ : Iso partitionTriangle ℕ
50- partitionTriangle≅ℕ = partition≅ℕ triangle refl increasingTriangle
49+ partitionTriangle≅ℕ = partition≅ℕ triangle refl strictIncTriangle
5150
52- Finℕ ≅ℕ : Iso Finℕ ℕ
53- Finℕ ≅ℕ = (compIso Finℕ ≅partitionTriangle partitionTriangle≅ℕ)
51+ Triangle⊂ℕ ≅ℕ : Iso Triangle⊂ℕ ℕ
52+ Triangle⊂ℕ ≅ℕ = (compIso Triangle⊂ℕ ≅partitionTriangle partitionTriangle≅ℕ)
0 commit comments