Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Duality (X : Set)
- (_~_ : (x0 x1 : X) -> Set)
- (sym : {x0 x1 : X} -> x0 ~ x1 -> x1 ~ x0) where
- Object : Set1
- Object = X -> Set
- Dual : Object -> Object
- Dual A x0 = {x1 : X} -> A x1 -> x0 ~ x1
- _<=_ : Object -> Object -> Set
- A0 <= A1 = {x : X} -> A0 x -> A1 x
- contra : {A0 A1 : Object} -> A0 <= A1 -> Dual A1 <= Dual A0
- contra i f x = f (i x)
- inject : {A : Object} -> A <= Dual (Dual A)
- inject x f = sym (f x)
- cancel : {A : Object} -> Dual (Dual (Dual A)) <= Dual A
- cancel = contra inject
Advertisement