
module Base where

data True : Set where
  T : True

data False : Set where

infix 20 _*_

data _*_ (A : Set)(B : A -> Set) : Set where
 <_,_> : (x : A) -> B x -> A * B

rel : Set -> Set1
rel A = A -> A -> Set

pred : Set -> Set1
pred A = A -> Set

Refl : {A : Set} -> rel A -> Set
Refl {A} R = {x : A} -> R x x

Sym : {A : Set} -> rel A -> Set
Sym {A} R = {x y : A} -> R x y -> R y x

Trans : {A : Set} -> rel A -> Set
Trans {A} R = {x y z : A} -> R x y -> R y z -> R x z

Map : {A : Set} -> rel A -> {B : Set} -> rel B -> pred (A -> B)
Map {A} _R_ _S_ f = {x y : A} -> x R y -> f x S f y

