-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHomTerminal.agda
26 lines (23 loc) · 967 Bytes
/
HomTerminal.agda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module HomTerminal where
-- One world is terminal
open import Basics
open import Hom
open import WorldSystemExamples
open WorldSystemExamples.OneWorld
OneWorldTerm : forall QW -> WorldHom QW oneWorld
OneWorldTerm QW = record
{ FW = \_ -> <>
; FQ = \_ -> <>
; pres<< = \_ -> <>
; presTyW = \_ -> <>
; presAct = \_ -> refl
; presSt = refl
; presUnst = \_ -> refl
}
-- We have only proven that oneWorld is _weakly_ terminal
-- (i.e. we don't know that any two parallel homs into it are equal)
-- Note that OneWorldTerm.FW,FQ,pres<<,presTyW are both maps into One
-- and presSt : <> == <>, and presAct,presUnst are functions into Just <> == Just <>
-- and these are equivalent to One
-- Thus oneWorld is "as terminal" as the type One is
-- (e.g. if we have function extensionality then oneWorld is terminal)