Leibniz.agda 505 B

1234567891011121314151617181920
  1. module Logic.Leibniz where
  2. -- Leibniz equality
  3. _≡_ : {A : Set} -> A -> A -> Set1
  4. x ≡ y = (P : _ -> Set) -> P x -> P y
  5. ≡-refl : {A : Set}(x : A) -> x ≡ x
  6. ≡-refl x P px = px
  7. ≡-sym : {A : Set}(x y : A) -> x ≡ y -> y ≡ x
  8. ≡-sym x y xy P py = xy (\z -> P z -> P x) (\px -> px) py
  9. ≡-trans : {A : Set}(x y z : A) -> x ≡ y -> y ≡ z -> x ≡ z
  10. ≡-trans x y z xy yz P px = yz P (xy P px)
  11. ≡-subst : {A : Set}(P : A -> Set)(x y : A) -> x ≡ y -> P x -> P y
  12. ≡-subst P _ _ xy = xy P