-
Notifications
You must be signed in to change notification settings - Fork 3
/
Eq.agda
33 lines (23 loc) · 831 Bytes
/
Eq.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
27
28
29
30
31
32
module LibAgda.Eq where
data _==_ {l}{X : Set l}(x : X) : X -> Set l where
refl : x == x
{-# BUILTIN EQUALITY _==_ #-}
{-# BUILTIN REFL refl #-}
subst : forall {k l}{X : Set k}{x y : X} -> x == y ->
(P : X -> Set l) -> P x -> P y
subst refl P p = p
_$=_ : forall {k l}{S : Set k}{T : Set l} ->
(f : S -> T){x y : S} -> x == y -> f x == f y
f $= refl = refl
_=$=_ : forall {k l}{S : Set k}{T : Set l} ->
{f g : S -> T}{x y : S} -> f == g -> x == y -> f x == g y
refl =$= refl = refl
infixl 3 _$=_ _=$=_
sym : forall {l}{X : Set l}{x y : X} -> x == y -> y == x
sym refl = refl
trans : forall {l}{X : Set l}{x y z : X} -> x == y -> y == z -> x == z
trans refl q = q
postulate
ext : forall {k l}{S : Set k}{T : S -> Set l}
{f g : (x : S) -> T x} ->
((x : S) -> f x == g x) -> f == g