Skip to content

Commit 85056cf

Browse files
committed
restore Finite-Maybe
1 parent d78a397 commit 85056cf

File tree

3 files changed

+17
-23
lines changed

3 files changed

+17
-23
lines changed

src/Data/Fin/Base.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ Fin-absurd i with fin-view i
126126
We can also define an elimination principle for the family
127127
$\operatorname{Fin}(-)$, which applies the view at "every level".
128128

129-
```
129+
```agda
130130
Fin-elim
131131
: ∀ {ℓ} (P : ∀ {n} → Fin n → Type ℓ)
132132
→ (∀ {n} → P {suc n} fzero)

src/Data/Fin/Finite.lagda.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ open import 1Lab.Prelude
44
55
open import Algebra.Group.Homotopy.BAut
66
7+
open import Data.Maybe.Properties
78
open import Data.Set.Coequaliser
89
open import Data.Fin.Properties
910
open import Data.Fin.Closure
1011
open import Data.Fin.Base
1112
open import Data.Nat.Base
13+
open import Data.Maybe
1214
open import Data.Dec
1315
open import Data.Irr
1416
open import Data.Sum
@@ -196,6 +198,7 @@ private variable
196198
instance
197199
Finite-Fin : ∀ {n} → Finite (Fin n)
198200
Finite-⊎ : ⦃ Finite A ⦄ → ⦃ Finite B ⦄ → Finite (A ⊎ B)
201+
Finite-Maybe : ⦃ fa : Finite A ⦄ → Finite (Maybe A)
199202
200203
Finite-Σ
201204
: {P : A → Type ℓ} → ⦃ Finite A ⦄ → ⦃ ∀ {x} → Finite (P x) ⦄ → Finite (Σ A P)
@@ -222,6 +225,10 @@ Finite-⊎ {A = A} {B = B} = fin $ do
222225
beq ← enumeration {T = B}
223226
pure (⊎-ap aeq beq ∙e Finite-coproduct)
224227
228+
Finite-Maybe {A = A} = fin do
229+
an ← enumeration {T = ⊤ ⊎ A}
230+
pure (Maybe-is-sum ∙e an)
231+
225232
Finite-Π {A = A} {P = P} ⦃ afin ⦄ ⦃ pfin ⦄ = ∥-∥-out! do
226233
aeq ← afin .Finite.enumeration
227234
let

src/Data/Maybe/Properties.lagda.md

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -149,28 +149,6 @@ Maybe-reflect-discrete
149149
Maybe-reflect-discrete eq? = Discrete-inj just just-inj eq?
150150
```
151151

152-
## Finiteness
153-
154-
If `A` is finite, then `Maybe A` is also finite.
155-
156-
```agda
157-
-- Finite-Maybe
158-
-- : ⦃ fa : Finite A ⦄
159-
-- → Finite (Maybe A)
160-
-- Finite-Maybe ⦃ fa ⦄ .cardinality = suc (fa .cardinality)
161-
-- Finite-Maybe {A = A} ⦃ fa ⦄ .enumeration =
162-
-- ∥-∥-map (Iso→Equiv ∘ maybe-iso) (fa .enumeration) where
163-
-- maybe-iso : A ≃ Fin (fa .cardinality) → Iso (Maybe A) (Fin (suc (fa .cardinality)))
164-
-- maybe-iso f .fst (just x) = fsuc (Equiv.to f x)
165-
-- maybe-iso f .fst nothing = fzero
166-
-- maybe-iso f .snd .is-iso.inv fzero = nothing
167-
-- maybe-iso f .snd .is-iso.inv (fsuc i) = just (Equiv.from f i)
168-
-- maybe-iso f .snd .is-iso.rinv fzero = refl
169-
-- maybe-iso f .snd .is-iso.rinv (fsuc i) = ap fsuc (Equiv.ε f i)
170-
-- maybe-iso f .snd .is-iso.linv (just x) = ap just (Equiv.η f x)
171-
-- maybe-iso f .snd .is-iso.linv nothing = refl
172-
```
173-
174152
# Misc. properties
175153

176154
If `A` is empty, then a `Maybe A` must be `nothing`{.Agda}.
@@ -230,6 +208,11 @@ map-<|> (just x) y = refl
230208
map-<|> nothing y = refl
231209
```
232210

211+
## Injectivity
212+
213+
We can prove that the `Maybe`{.Agda} type constructor, considered as a
214+
function from a universe to itself, is injective.
215+
233216
```agda
234217
Maybe-injective : Maybe A ≃ Maybe B → A ≃ B
235218
Maybe-injective e = Iso→Equiv (a→b , iso b→a (lemma e) il) where
@@ -267,7 +250,10 @@ Maybe-injective e = Iso→Equiv (a→b , iso b→a (lemma e) il) where
267250
(λ e' → is-right-inverse (maybe-injective e') (maybe-injective (Equiv.inverse e)))
268251
{Equiv.inverse (Equiv.inverse e)} {e}
269252
trivial! p
253+
```
270254

255+
<!--
256+
```agda
271257
Maybe-is-sum : Maybe A ≃ (⊤ ⊎ A)
272258
Maybe-is-sum {A = A} = Iso→Equiv (to , iso from ir il) where
273259
to : Maybe A → ⊤ ⊎ A
@@ -286,3 +272,4 @@ Maybe-is-sum {A = A} = Iso→Equiv (to , iso from ir il) where
286272
il nothing = refl
287273
il (just x) = refl
288274
```
275+
-->

0 commit comments

Comments
 (0)