Skip to content

Commit 617bd62

Browse files
committed
refactor: make n≢i : n ≢ toℕ i argument to lower₁ irrelevant
1 parent 0e97e2e commit 617bd62

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

src/Data/Fin/Base.agda

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ open import Relation.Binary.Core using (Rel)
2020
open import Relation.Binary.PropositionalEquality.Core using (_≡_; _≢_; refl; cong)
2121
open import Relation.Binary.Indexed.Heterogeneous.Core using (IRel)
2222
open import Relation.Nullary.Negation.Core using (¬_; contradiction)
23+
open import Relation.Nullary.Recomputable using (¬-recompute)
2324

2425
private
2526
variable
@@ -116,8 +117,11 @@ inject≤ {n = suc _} (suc i) m≤n = suc (inject≤ i (ℕ.s≤s⁻¹ m≤n))
116117

117118
-- lower₁ "i" _ = "i".
118119

119-
lower₁ : (i : Fin (suc n)) n ≢ toℕ i Fin n
120-
lower₁ {zero} zero ne = contradiction refl ne
120+
lower₁-¬0≢0 : {ℓ} {A : Set ℓ} .(00) A
121+
lower₁-¬0≢0 0≢0 = contradiction refl (¬-recompute 0≢0)
122+
123+
lower₁ : (i : Fin (suc n)) .(n ≢ toℕ i) Fin n
124+
lower₁ {zero} zero ne = lower₁-¬0≢0 ne
121125
lower₁ {suc n} zero _ = zero
122126
lower₁ {suc n} (suc i) ne = suc (lower₁ i (ne ∘ cong suc))
123127

src/Data/Fin/Properties.agda

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ open import Relation.Binary.PropositionalEquality.Properties as ≡
4747
open import Relation.Nullary.Decidable as Dec
4848
using (Dec; _because_; yes; no; _×-dec_; _⊎-dec_; map′)
4949
open import Relation.Nullary.Negation.Core using (¬_; contradiction)
50+
open import Relation.Nullary.Recomputable using (¬-recompute)
5051
open import Relation.Nullary.Reflects using (Reflects; invert)
5152
open import Relation.Unary as U
5253
using (U; Pred; Decidable; _⊆_; Satisfiable; Universal)
@@ -506,30 +507,30 @@ inject!-< {suc n} {suc i} (suc k) = s≤s (inject!-< k)
506507
-- lower₁
507508
------------------------------------------------------------------------
508509

509-
toℕ-lower₁ : i (p : n ≢ toℕ i) toℕ (lower₁ i p) ≡ toℕ i
510-
toℕ-lower₁ {ℕ.zero} zero p = contradiction refl p
511-
toℕ-lower₁ {ℕ.suc m} zero p = refl
512-
toℕ-lower₁ {ℕ.suc m} (suc i) p = cong ℕ.suc (toℕ-lower₁ i (p ∘ cong ℕ.suc))
510+
toℕ-lower₁ : i .(p : n ≢ toℕ i) toℕ (lower₁ i p) ≡ toℕ i
511+
toℕ-lower₁ {ℕ.zero} zero 0≢0 = lower₁-¬0≢0 0≢0
512+
toℕ-lower₁ {ℕ.suc m} zero _ = refl
513+
toℕ-lower₁ {ℕ.suc m} (suc i) ne = cong ℕ.suc (toℕ-lower₁ i (ne ∘ cong ℕ.suc))
513514

514-
lower₁-injective : {n≢i : n ≢ toℕ i} {n≢j : n ≢ toℕ j}
515+
lower₁-injective : .{n≢i : n ≢ toℕ i} .{n≢j : n ≢ toℕ j}
515516
lower₁ i n≢i ≡ lower₁ j n≢j i ≡ j
516-
lower₁-injective {zero} {zero} {_} {n≢i} {_} _ = contradiction refl n≢i
517-
lower₁-injective {zero} {_} {zero} {_} {n≢j} _ = contradiction refl n≢j
518-
lower₁-injective {suc n} {zero} {zero} {_} {_} refl = refl
519-
lower₁-injective {suc n} {suc i} {suc j} {n≢i} {n≢j} eq =
517+
lower₁-injective {zero} {zero} {_} {0≢0} {_} _ = lower₁-¬0≢0 0≢0
518+
lower₁-injective {zero} {_} {zero} {_} {0≢0} _ = lower₁-¬0≢0 0≢0
519+
lower₁-injective {suc n} {zero} {zero} {_} {_} _ = refl
520+
lower₁-injective {suc n} {suc i} {suc j} {_} {_} eq =
520521
cong suc (lower₁-injective (suc-injective eq))
521522

522523
------------------------------------------------------------------------
523524
-- inject₁ and lower₁
524525

525-
inject₁-lower₁ : (i : Fin (suc n)) (n≢i : n ≢ toℕ i)
526+
inject₁-lower₁ : (i : Fin (suc n)) .(n≢i : n ≢ toℕ i)
526527
inject₁ (lower₁ i n≢i) ≡ i
527-
inject₁-lower₁ {zero} zero 0≢0 = contradiction refl 0≢0
528+
inject₁-lower₁ {zero} zero 0≢0 = lower₁-¬0≢0 0≢0
528529
inject₁-lower₁ {suc n} zero _ = refl
529530
inject₁-lower₁ {suc n} (suc i) n+1≢i+1 =
530531
cong suc (inject₁-lower₁ i (n+1≢i+1 ∘ cong suc))
531532

532-
lower₁-inject₁′ : (i : Fin n) (n≢i : n ≢ toℕ (inject₁ i))
533+
lower₁-inject₁′ : (i : Fin n) .(n≢i : n ≢ toℕ (inject₁ i))
533534
lower₁ (inject₁ i) n≢i ≡ i
534535
lower₁-inject₁′ zero _ = refl
535536
lower₁-inject₁′ (suc i) n+1≢i+1 =
@@ -539,15 +540,15 @@ lower₁-inject₁ : ∀ (i : Fin n) →
539540
lower₁ (inject₁ i) (toℕ-inject₁-≢ i) ≡ i
540541
lower₁-inject₁ i = lower₁-inject₁′ i (toℕ-inject₁-≢ i)
541542

542-
lower₁-irrelevant : (i : Fin (suc n)) (n≢i₁ n≢i₂ : n ≢ toℕ i)
543+
lower₁-irrelevant : (i : Fin (suc n)) .(n≢i₁ n≢i₂ : n ≢ toℕ i)
543544
lower₁ i n≢i₁ ≡ lower₁ i n≢i₂
544-
lower₁-irrelevant {zero} zero 0≢0 _ = contradiction refl 0≢0
545+
lower₁-irrelevant {zero} zero 0≢0 _ = lower₁-¬0≢0 0≢0
545546
lower₁-irrelevant {suc n} zero _ _ = refl
546547
lower₁-irrelevant {suc n} (suc i) _ _ =
547548
cong suc (lower₁-irrelevant i _ _)
548549

549550
inject₁≡⇒lower₁≡ : {i : Fin n} {j : Fin (ℕ.suc n)}
550-
(n≢j : n ≢ toℕ j) inject₁ i ≡ j lower₁ j n≢j ≡ i
551+
.(n≢j : n ≢ toℕ j) inject₁ i ≡ j lower₁ j n≢j ≡ i
551552
inject₁≡⇒lower₁≡ n≢j i≡j = inject₁-injective (trans (inject₁-lower₁ _ n≢j) (sym i≡j))
552553

553554
------------------------------------------------------------------------
@@ -561,6 +562,12 @@ lower-injective {n = suc n} zero zero eq = refl
561562
lower-injective {n = suc n} (suc i) (suc j) eq =
562563
cong suc (lower-injective i j (suc-injective eq))
563564

565+
lower₁≗lower : (i : Fin (suc n)) .(n≢i : n ≢ toℕ i)
566+
lower₁ i n≢i ≡ lower i (ℕ.≤∧≢⇒< (toℕ≤pred[n]′ i) (n≢i ∘ sym))
567+
lower₁≗lower {n = zero} zero 0≢0 = lower₁-¬0≢0 0≢0
568+
lower₁≗lower {n = suc _ } zero _ = refl
569+
lower₁≗lower {n = suc _ } (suc i) ne = cong suc (lower₁≗lower i (ne ∘ cong suc))
570+
564571
------------------------------------------------------------------------
565572
-- inject≤
566573
------------------------------------------------------------------------

0 commit comments

Comments
 (0)