12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- module Logic.Relations where
- import Logic.Base
- import Data.Bool
- Rel : Set -> Set1
- Rel A = A -> A -> Set
- Reflexive : {A : Set} -> Rel A -> Set
- Reflexive {A} _R_ = (x : A) -> x R x
- Symmetric : {A : Set} -> Rel A -> Set
- Symmetric {A} _R_ = (x y : A) -> x R y -> y R x
- Transitive : {A : Set} -> Rel A -> Set
- Transitive {A} _R_ = (x y z : A) -> x R y -> y R z -> x R z
- Congruent : {A : Set} -> Rel A -> Set
- Congruent {A} _R_ = (f : A -> A)(x y : A) -> x R y -> f x R f y
- Substitutive : {A : Set} -> Rel A -> Set1
- Substitutive {A} _R_ = (P : A -> Set)(x y : A) -> x R y -> P x -> P y
- module PolyEq (_≡_ : {A : Set} -> Rel A) where
- Antisymmetric : {A : Set} -> Rel A -> Set
- Antisymmetric {A} _R_ = (x y : A) -> x R y -> y R x -> x ≡ y
- module MonoEq {A : Set}(_≡_ : Rel A) where
- Antisymmetric : Rel A -> Set
- Antisymmetric _R_ = (x y : A) -> x R y -> y R x -> x ≡ y
- open Logic.Base
- Total : {A : Set} -> Rel A -> Set
- Total {A} _R_ = (x y : A) -> (x R y) \/ (y R x)
- Decidable : (P : Set) -> Set
- Decidable P = P \/ ¬ P
|