1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- ------------------------------------------------------------------------
- -- Equivalence relations
- ------------------------------------------------------------------------
- module Eq where
- infix 4 _≡_
- ------------------------------------------------------------------------
- -- Definition
- record Equiv {a : Set} (_≈_ : a -> a -> Set) : Set where
- field
- refl : forall x -> x ≈ x
- sym : forall {x y} -> x ≈ y -> y ≈ x
- _`trans`_ : forall {x y z} -> x ≈ y -> y ≈ z -> x ≈ z
- ------------------------------------------------------------------------
- -- Propositional equality
- data _≡_ {a : Set} (x : a) : a -> Set where
- refl : x ≡ x
- subst : forall {a x y} ->
- (P : a -> Set) -> x ≡ y -> P x -> P y
- subst _ refl p = p
- cong : forall {a b x y} ->
- (f : a -> b) -> x ≡ y -> f x ≡ f y
- cong _ refl = refl
- Equiv-≡ : forall {a} -> Equiv {a} _≡_
- Equiv-≡ {a} =
- record { refl = \_ -> refl
- ; sym = sym
- ; _`trans`_ = _`trans`_
- }
- where
- sym : {x y : a} -> x ≡ y -> y ≡ x
- sym refl = refl
- _`trans`_ : {x y z : a} -> x ≡ y -> y ≡ z -> x ≡ z
- refl `trans` refl = refl
|