@@ -56,6 +56,10 @@ infix 4 &&, ||;
5656(&&) True x = x;
5757(&&) False _ = False;
5858
59+not : Bool -> Bool;
60+not True = False;
61+not False = True;
62+
5963infixl 5 ==, /=, ==.;
6064infixl 6 <, <=, >, >=, <., <=., >., >=.;
6165infixl 7 <<, >>;
@@ -92,12 +96,26 @@ instance numInt = NumInstance prim__addInt prim__subInt prim__mulInt;
9296instance numFloat : Num Float;
9397instance numFloat = NumInstance prim__addFloat prim__subFloat prim__mulFloat;
9498
99+data Eq : Set -> Set where
100+ EqInstance : (eq : a -> a -> Bool) ->
101+ (neq : a -> a -> Bool) ->
102+ Eq a;
103+
104+ (==) : Eq a => a -> a -> Bool;
105+ (==) {{EqInstance eq neq}} x y = eq x y;
106+
107+ (/=) : Eq a => a -> a -> Bool;
108+ (/=) {{EqInstance eq neq}} x y = neq x y;
109+
110+instance EqInt : Eq Int;
111+instance EqInt = EqInstance (boolOp prim__eqInt) (\x, y => not (x == y));
112+
113+instance EqFloat : Eq Float;
114+instance EqFloat = EqInstance (boolOp prim__eqFloat)(\x, y => not (x == y));
115+
95116div : Int -> Int -> Int;
96117div = prim__divInt;
97118
98−(==) : Int -> Int -> Bool;
99−(==) = boolOp prim__eqInt;
100−
101119(<) : Int -> Int -> Bool;
102120(<) = boolOp prim__ltInt;
103121
@@ -113,9 +131,6 @@ div = prim__divInt;
113131(/) : Float -> Float -> Float;
114132(/) = prim__divFloat;
115133
116−(==.) : Float -> Float -> Bool;
117−(==.) = boolOp prim__eqFloat;
118−
119134(<.) : Float -> Float -> Bool;
120135(<.) = boolOp prim__ltFloat;
121136