lol-calculus-1.20160822: Language/LOL/Calculus/lib/Eq.lol
:load Bool.lol
Eq_Equal
(X:*)
= X -> X -> Bool
Eq_Class
(X:*) (Data:*)
= (equal:Eq_Equal X)
-> Data
Eq_Polytype
(X:*) : *p
= (Data:*) -> Eq_Class X Data -> Data
Eq
(X:*) : *m
= Monotype (Eq_Polytype X)
eq
(X:*)
(equal:Eq_Equal X)
: Eq X
= monotype (Eq_Polytype X)
(λ(Data:*) (eq_class:Eq_Class X Data) -> eq_class equal)
unEq
(X:*) (Data:*)
(eq_class:Eq_Class X Data)
(eq:Eq X)
: Data
= polytype (Eq_Polytype X) eq Data eq_class
Eq_equal
(X:*) (eq:Eq X)
: Eq_Equal X
= unEq X (Eq_Equal X)
(λ(equal:Eq_Equal X) -> equal)
eq