Skip to content

Commit 05af08c

Browse files
authored
Merge pull request #5 from input-output-hk/javierdiaz72/assoclist-properties
Add properties of `‼` and `⁉` to `AssocList`
2 parents e4f83fa + f60b2e4 commit 05af08c

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/Everything.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ open import Class.Computational
44
open import Class.Hashable
55

66
open import Prelude.AssocList
7+
open import Prelude.AssocList.Properties
78
open import Prelude.Bitmasks
89
open import Prelude.Closures
910
open import Prelude.Functions

src/Prelude/AssocList/Properties.agda

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module Prelude.AssocList.Properties where
2+
3+
open import Class.DecEq
4+
open import Class.Decidable using (¿_¿²)
5+
open import Prelude.Init
6+
open import Prelude.AssocList
7+
open import Prelude.Irrelevance using (·¬⇒¬)
8+
9+
private variable
10+
K V : Type
11+
12+
module _ ⦃ _ : DecEq K ⦄ where
13+
14+
private variable
15+
m : AssocList K V
16+
k : K
17+
v : V
18+
19+
------------------------------------------------------------------------
20+
-- ‼ and ⁉
21+
22+
map-‼ : {ks : List K} (p : k ∈ᵐ map (_, v) ks) map (_, v) ks ‼ p ≡ v
23+
map-‼ {ks = _ ∷ _} First.[ refl ] = refl
24+
map-‼ {ks = _ ∷ _} (_ ∷ p) = map-‼ p
25+
26+
⁉⇒‼ : m ⁉ k ≡ just v Σ[ p ∈ k ∈ᵐ m ] m ‼ p ≡ v
27+
⁉⇒‼ {m = m} {k = k} eq with k ∈ᵐ? m
28+
... | yes First.[ refl ] = First.[ refl ] , M.just-injective eq
29+
... | yes (x ∷ p) = x ∷ p , M.just-injective eq
30+
31+
‼⇒⁉ : (p : k ∈ᵐ m) m ‼ p ≡ v m ⁉ k ≡ just v
32+
‼⇒⁉ {k = k} {m = m} {v = v} p eq with k ∈ᵐ? m | p
33+
... | yes First.[ refl ] | First.[ refl ] = cong just eq
34+
... | yes (≢k ∷ _) | First.[ refl ] = contradiction refl (·¬⇒¬ ≢k)
35+
... | yes First.[ refl ] | ≢k ∷ _ = contradiction refl (·¬⇒¬ ≢k)
36+
... | yes (_ ∷ p) | _ ∷ p′
37+
rewrite ∈ᵐ-irrelevant p p′ = cong just eq
38+
... | no p | q = contradiction q p

0 commit comments

Comments
 (0)