diff --git a/CHANGELOG.md b/CHANGELOG.md index c8c5364464..905e469c2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -518,6 +518,10 @@ Deprecated modules Relation.Binary.Properties.MeetSemilattice.agda ↦ Relation.Binary.Lattice.Properties.MeetSemilattice.agda ``` +### Deprecation of `Data.Nat.Properties.Core` + +* The module `Data.Nat.Properties.Core` has been deprecated, and its one entry moved to `Data.Nat.Properties` + Deprecated names ---------------- @@ -1003,6 +1007,8 @@ Other minor changes combine-surjective : ∀ x → ∃₂ λ y z → combine y z ≡ x lower₁-injective : lower₁ i n≢i ≡ lower₁ j n≢j → i ≡ j + + i<1+i : i < suc i ``` * Added new functions in `Data.Integer.Base`: @@ -1065,6 +1071,16 @@ Other minor changes ∷ʳ-++ : xs ∷ʳ a ++ ys ≡ xs ++ a ∷ ys ``` +* Added new patterns and definitions to `Data.Nat.Base`: + ```agda + pattern z_ private acc-map : ∀ {x : Fin n} → Acc ℕ._<_ (n ∸ toℕ x) → Acc _>_ x - acc-map {n} (acc rs) = acc (λ y y>x → - acc-map (rs (n ∸ toℕ y) (ℕ.∸-monoʳ-< y>x (toℕ≤n y)))) + acc-map {n} (acc rs) = acc λ y y>x → + acc-map (rs (n ∸ toℕ y) (ℕ.∸-monoʳ-< y>x (toℕ≤n y))) >-wellFounded : WellFounded {A = Fin n} _>_ >-wellFounded {n} x = acc-map (ℕ.<-wellFounded (n ∸ toℕ x)) @@ -69,7 +69,7 @@ private induct {i} (acc rec) with n ℕ.≟ toℕ i ... | yes n≡i = subst P (toℕ-injective (trans (toℕ-fromℕ n) n≡i)) Pₙ ... | no n≢i = subst P (inject₁-lower₁ i n≢i) (Pᵢ₊₁⇒Pᵢ _ Pᵢ₊₁) - where Pᵢ₊₁ = induct (rec _ (s≤s (ℕ.≤-reflexive (sym (toℕ-lower₁ i n≢i))))) + where Pᵢ₊₁ = induct (rec _ (ℕ.≤-reflexive (cong suc (sym (toℕ-lower₁ i n≢i))))) ------------------------------------------------------------------------ -- Induction over _≺_ diff --git a/src/Data/Fin/Properties.agda b/src/Data/Fin/Properties.agda index fed4a2ae61..4d80c7bcab 100644 --- a/src/Data/Fin/Properties.agda +++ b/src/Data/Fin/Properties.agda @@ -17,7 +17,7 @@ open import Data.Bool.Base using (Bool; true; false; not; _∧_; _∨_) open import Data.Empty using (⊥; ⊥-elim) open import Data.Fin.Base open import Data.Fin.Patterns -open import Data.Nat.Base as ℕ using (ℕ; zero; suc; s≤s; z≤n; _∸_; _^_) +open import Data.Nat.Base as ℕ using (ℕ; zero; suc; s≤s; z≤n; z (λ()) (λ()) (s≤s z≤n) +<-cmp zero zero = tri≈ (λ()) refl (λ()) +<-cmp zero (suc j) = tri< z (λ()) (λ()) z i≮j i≢j j (i≮j ∘ ℕₚ.≤-pred) (i≢j ∘ suc-injective) (s≤s j i≮j i≢j j (i≮j ∘ ℕₚ.≤-pred) (i≢j ∘ suc-injective) (s-nonZero : ∀ {n} → n > 0 → NonZero n ->-nonZero (s≤s 0-nonZero z-nonZero⁻¹ : ∀ n → .{{NonZero n}} → n > 0 ->-nonZero⁻¹ (suc n) = s≤s z≤n +>-nonZero⁻¹ (suc n) = z : _≰_ ⇒ _>_ ≰⇒> {zero} z≰n = contradiction z≤n z≰n -≰⇒> {suc m} {zero} _ = s≤s z≤n -≰⇒> {suc m} {suc n} m≰n = s≤s (≰⇒> (m≰n ∘ s≤s)) +≰⇒> {suc m} {zero} _ = z {suc m} {suc n} m≰n = s (m≰n ∘ s≤s)) ≰⇒≥ : _≰_ ⇒ _≥_ ≰⇒≥ = <⇒≤ ∘ ≰⇒> ≮⇒≥ : _≮_ ⇒ _≥_ ≮⇒≥ {_} {zero} _ = z≤n -≮⇒≥ {zero} {suc j} 1≮j+1 = contradiction (s≤s z≤n) 1≮j+1 -≮⇒≥ {suc i} {suc j} i+1≮j+1 = s≤s (≮⇒≥ (i+1≮j+1 ∘ s≤s)) +≮⇒≥ {zero} {suc j} 1≮j+1 = contradiction z?_ = flip _ 0 → m < m + n m0 = n>0 -m0 = s≤s (m0) +m0 = s0) m 0 → m < n + m m0 rewrite +-comm n m = m0 m+n≮n : ∀ m n → m + n ≮ n m+n≮n zero n = n≮n n -m+n≮n (suc m) (suc n) (s≤s m+n′?_ _≤′?_ : Decidable _≤′_ @@ -2075,9 +2120,9 @@ module _ {p} {P : Pred ℕ p} (P? : U.Decidable P) where ... | no ¬Pv | no ¬Pn