JoelSjogren

Duality.agda

Jul 14th, 2018
455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Duality (X : Set)
  2.               (_~_ : (x0 x1 : X) -> Set)
  3.               (sym : {x0 x1 : X} -> x0 ~ x1 -> x1 ~ x0) where
  4.  
  5.   Object : Set1
  6.   Object = X -> Set
  7.  
  8.   Dual : Object -> Object
  9.   Dual A x0 = {x1 : X} -> A x1 -> x0 ~ x1
  10.  
  11.   _<=_ : Object -> Object -> Set
  12.   A0 <= A1 = {x : X} -> A0 x -> A1 x
  13.  
  14.   contra : {A0 A1 : Object} -> A0 <= A1 -> Dual A1 <= Dual A0
  15.   contra i f x = f (i x)
  16.  
  17.   inject : {A : Object} -> A <= Dual (Dual A)
  18.   inject x f = sym (f x)
  19.  
  20.   cancel : {A : Object} -> Dual (Dual (Dual A)) <= Dual A
  21.   cancel = contra inject
Advertisement