Skip to content

Commit 35b39c4

Browse files
TanebJacquesCarette
authored andcommitted
punchOut preserves ordering (#1913)
1 parent 16c1fba commit 35b39c4

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

CHANGELOG.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,68 @@ Additions to existing modules
391391
```
392392

393393
* In `Data.Fin.Properties`:
394+
the proof that an injection from a type `A` into `Fin n` induces a
395+
decision procedure for `_≡_` on `A` has been generalized to other
396+
equivalences over `A` (i.e. to arbitrary setoids), and renamed from
397+
`eq?` to the more descriptive `inj⇒≟` and `inj⇒decSetoid`.
398+
399+
* Added new proofs in `Data.Fin.Properties`:
400+
```
401+
1↔⊤ : Fin 1 ↔ ⊤
402+
403+
0≢1+n : zero ≢ suc i
404+
405+
↑ˡ-injective : i ↑ˡ n ≡ j ↑ˡ n → i ≡ j
406+
↑ʳ-injective : n ↑ʳ i ≡ n ↑ʳ j → i ≡ j
407+
finTofun-funToFin : funToFin ∘ finToFun ≗ id
408+
funTofin-funToFun : finToFun (funToFin f) ≗ f
409+
^↔→ : Extensionality _ _ → Fin (m ^ n) ↔ (Fin n → Fin m)
410+
411+
toℕ-mono-< : i < j → toℕ i ℕ.< toℕ j
412+
toℕ-mono-≤ : i ≤ j → toℕ i ℕ.≤ toℕ j
413+
toℕ-cancel-≤ : toℕ i ℕ.≤ toℕ j → i ≤ j
414+
toℕ-cancel-< : toℕ i ℕ.< toℕ j → i < j
415+
416+
toℕ-combine : toℕ (combine i j) ≡ k ℕ.* toℕ i ℕ.+ toℕ j
417+
combine-injectiveˡ : combine i j ≡ combine k l → i ≡ k
418+
combine-injectiveʳ : combine i j ≡ combine k l → j ≡ l
419+
combine-injective : combine i j ≡ combine k l → i ≡ k × j ≡ l
420+
combine-surjective : ∀ i → ∃₂ λ j k → combine j k ≡ i
421+
combine-monoˡ-< : i < j → combine i k < combine j l
422+
423+
ℕ-ℕ≡toℕ‿ℕ- : n ℕ-ℕ i ≡ toℕ (n ℕ- i)
424+
425+
punchIn-mono-≤ : ∀ i (j k : Fin n) → j ≤ k → punchIn i j ≤ punchIn i k
426+
punchIn-cancel-≤ : ∀ i (j k : Fin n) → punchIn i j ≤ punchIn i k → j ≤ k
427+
punchOut-mono-≤ : (i≢j : i ≢ j) (i≢k : i ≢ k) → j ≤ k → punchOut i≢j ≤ punchOut i≢k
428+
punchOut-cancel-≤ : (i≢j : i ≢ j) (i≢k : i ≢ k) → punchOut i≢j ≤ punchOut i≢k → j ≤ k
429+
430+
lower₁-injective : lower₁ i n≢i ≡ lower₁ j n≢j → i ≡ j
431+
pinch-injective : suc i ≢ j → suc i ≢ k → pinch i j ≡ pinch i k → j ≡ k
432+
433+
i<1+i : i < suc i
434+
435+
injective⇒≤ : ∀ {f : Fin m → Fin n} → Injective f → m ℕ.≤ n
436+
<⇒notInjective : ∀ {f : Fin m → Fin n} → n ℕ.< m → ¬ (Injective f)
437+
ℕ→Fin-notInjective : ∀ (f : ℕ → Fin n) → ¬ (Injective f)
438+
cantor-schröder-bernstein : ∀ {f : Fin m → Fin n} {g : Fin n → Fin m} → Injective f → Injective g → m ≡ n
439+
440+
cast-is-id : cast eq k ≡ k
441+
subst-is-cast : subst Fin eq k ≡ cast eq k
442+
cast-trans : cast eq₂ (cast eq₁ k) ≡ cast (trans eq₁ eq₂) k
443+
```
444+
445+
* Added new functions in `Data.Integer.Base`:
446+
```
447+
_^_ : ℤ → ℕ → ℤ
448+
449+
+-0-rawGroup : Rawgroup 0ℓ 0ℓ
450+
451+
*-rawMagma : RawMagma 0ℓ 0ℓ
452+
*-1-rawMonoid : RawMonoid 0ℓ 0ℓ
453+
```
454+
455+
* Added new proofs in `Data.Integer.Properties`:
394456
```agda
395457
cast-involutive : .(eq₁ : m ≡ n) .(eq₂ : n ≡ m) → ∀ k → cast eq₁ (cast eq₂ k) ≡ k
396458
inject!-injective : Injective _≡_ _≡_ inject!

src/Data/Fin/Properties.agda

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,16 @@ punchIn-injective (suc i) (suc j) (suc k) ↑j+1≡↑k+1 =
869869
punchInᵢ≢i : i (j : Fin n) punchIn i j ≢ i
870870
punchInᵢ≢i (suc i) (suc j) = punchInᵢ≢i i j ∘ suc-injective
871871

872+
punchIn-mono-≤ : i (j k : Fin n) j ≤ k punchIn i j ≤ punchIn i k
873+
punchIn-mono-≤ zero _ _ j≤k = s≤s j≤k
874+
punchIn-mono-≤ (suc _) zero _ z≤n = z≤n
875+
punchIn-mono-≤ (suc i) (suc j) (suc k) (s≤s j≤k) = s≤s (punchIn-mono-≤ i j k j≤k)
876+
877+
punchIn-cancel-≤ : i (j k : Fin n) punchIn i j ≤ punchIn i k j ≤ k
878+
punchIn-cancel-≤ zero _ _ (s≤s j≤k) = j≤k
879+
punchIn-cancel-≤ (suc _) zero _ z≤n = z≤n
880+
punchIn-cancel-≤ (suc i) (suc j) (suc k) (s≤s ↑j≤↑k) = s≤s (punchIn-cancel-≤ i j k ↑j≤↑k)
881+
872882
------------------------------------------------------------------------
873883
-- punchOut
874884
------------------------------------------------------------------------
@@ -903,6 +913,22 @@ punchOut-injective {suc n} {suc i} {zero} {zero} _ _ _ = refl
903913
punchOut-injective {suc n} {suc i} {suc j} {suc k} i≢j i≢k pⱼ≡pₖ =
904914
cong suc (punchOut-injective (i≢j ∘ cong suc) (i≢k ∘ cong suc) (suc-injective pⱼ≡pₖ))
905915

916+
punchOut-mono-≤ : {i j k : Fin (suc n)} (i≢j : i ≢ j) (i≢k : i ≢ k)
917+
j ≤ k punchOut i≢j ≤ punchOut i≢k
918+
punchOut-mono-≤ {_ } {zero } {zero } {_ } 0≢0 _ z≤n = contradiction refl 0≢0
919+
punchOut-mono-≤ {_ } {zero } {suc _} {suc _} _ _ (s≤s j≤k) = j≤k
920+
punchOut-mono-≤ {suc _} {suc _} {zero } {_ } _ _ z≤n = z≤n
921+
punchOut-mono-≤ {suc _} {suc _} {suc _} {suc _} i≢j i≢k (s≤s j≤k) = s≤s (punchOut-mono-≤ (i≢j ∘ cong suc) (i≢k ∘ cong suc) j≤k)
922+
923+
punchOut-cancel-≤ : {i j k : Fin (suc n)} (i≢j : i ≢ j) (i≢k : i ≢ k)
924+
punchOut i≢j ≤ punchOut i≢k j ≤ k
925+
punchOut-cancel-≤ {_ } {zero } {zero } {_ } 0≢0 _ _ = contradiction refl 0≢0
926+
punchOut-cancel-≤ {_ } {zero } {suc _} {zero } _ 0≢0 _ = contradiction refl 0≢0
927+
punchOut-cancel-≤ {suc _} {zero } {suc _} {suc _} _ _ pⱼ≤pₖ = s≤s pⱼ≤pₖ
928+
punchOut-cancel-≤ {_ } {suc _} {zero } {_ } _ _ _ = z≤n
929+
punchOut-cancel-≤ {suc _} {suc _} {suc _} {zero } _ _ ()
930+
punchOut-cancel-≤ {suc _} {suc _} {suc _} {suc _} i≢j i≢k (s≤s pⱼ≤pₖ) = s≤s (punchOut-cancel-≤ (i≢j ∘ cong suc) (i≢k ∘ cong suc) pⱼ≤pₖ)
931+
906932
punchIn-punchOut : {i j : Fin (suc n)} (i≢j : i ≢ j)
907933
punchIn i (punchOut i≢j) ≡ j
908934
punchIn-punchOut {_} {zero} {zero} 0≢0 = contradiction refl 0≢0

0 commit comments

Comments
 (0)