diff --git a/CHANGELOG.md b/CHANGELOG.md index 357ba8b967..178fd47498 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -138,6 +138,17 @@ Additions to existing modules ≟-≡ : (eq : i ≡ j) → (i ≟ j) ≡ yes eq ≟-≡-refl : (i : Fin n) → (i ≟ i) ≡ yes refl ≟-≢ : (i≢j : i ≢ j) → (i ≟ j) ≡ no i≢j + inject-< : inject j < i + + record Least⟨_⟩ (P : Pred (Fin n) p) : Set p where + constructor least + field + witness : Fin n + example : P witness + minimal : ∀ {j} → .(j < witness) → ¬ P j + + search-least⟨_⟩ : Decidable P → Π[ ∁ P ] ⊎ Least⟨ P ⟩ + search-least⟨¬_⟩ : Decidable P → Π[ P ] ⊎ Least⟨ ∁ P ⟩ ``` * In `Data.Nat.ListAction.Properties` diff --git a/src/Data/Fin/Properties.agda b/src/Data/Fin/Properties.agda index eb5164b3fa..8a85252b67 100644 --- a/src/Data/Fin/Properties.agda +++ b/src/Data/Fin/Properties.agda @@ -48,13 +48,13 @@ open import Relation.Binary.PropositionalEquality.Properties as ≡ open import Relation.Binary.PropositionalEquality as ≡ using (≡-≟-identity; ≢-≟-identity) open import Relation.Nullary.Decidable as Dec - using (Dec; _because_; yes; no; _×-dec_; _⊎-dec_; map′) + using (Dec; _because_; yes; no; _×-dec_; _⊎-dec_; map′; decidable-stable) open import Relation.Nullary.Negation.Core using (¬_; contradiction; contradiction′) open import Relation.Nullary.Reflects using (invert) open import Relation.Unary as U - using (U; Pred; Decidable; _⊆_; Satisfiable; Universal) -open import Relation.Unary.Properties using (U?) + using (U; Pred; Decidable; _⊆_; ∁; Satisfiable; Universal) +open import Relation.Unary.Properties using (U?; ∁?) private variable @@ -471,6 +471,10 @@ toℕ-inject : ∀ {i : Fin n} (j : Fin′ i) → toℕ (inject j) ≡ toℕ j toℕ-inject {i = suc i} zero = refl toℕ-inject {i = suc i} (suc j) = cong suc (toℕ-inject j) +inject-< : ∀ {i : Fin n} (j : Fin′ i) → inject j < i +inject-< {i = suc i} zero = z