# Large binary relations
```agda
module foundation.large-binary-relations where
```
<details><summary>Imports</summary>
```agda
open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.universe-levels
open import foundation-core.cartesian-product-types
open import foundation-core.propositions
```
</details>
## Idea
A
{{#concept "large binary relation" Disambiguation="valued in types" Agda=Large-Relation}}
on a family of types indexed by universe levels `A` is a family of types `R x y`
depending on two variables `x : A l1` and `y : A l2`. In the special case where
each `R x y` is a [proposition](foundation-core.propositions.md), we say that
the relation is valued in propositions. Thus, we take a general relation to mean
a _proof-relevant_ relation.
## Definition
### Large relations valued in types
```agda
module _
{α : Level → Level} (β : Level → Level → Level)
(A : (l : Level) → UU (α l))
where
Large-Relation : UUω
Large-Relation = {l1 l2 : Level} → A l1 → A l2 → UU (β l1 l2)
total-space-Large-Relation : Large-Relation → UUω
total-space-Large-Relation R =
(l1 l2 : Level) → Σ (A l1 × A l2) (λ (a , a') → R a a')
```
### Large relations valued in propositions
```agda
is-prop-Large-Relation :
{α : Level → Level} {β : Level → Level → Level}
(A : (l : Level) → UU (α l)) → Large-Relation β A → UUω
is-prop-Large-Relation A R =
{l1 l2 : Level} (x : A l1) (y : A l2) → is-prop (R x y)
Large-Relation-Prop :
{α : Level → Level} (β : Level → Level → Level)
(A : (l : Level) → UU (α l)) →
UUω
Large-Relation-Prop β A = {l1 l2 : Level} → A l1 → A l2 → Prop (β l1 l2)
module _
{α : Level → Level} {β : Level → Level → Level}
(A : (l : Level) → UU (α l))
(R : Large-Relation-Prop β A)
where
large-relation-Large-Relation-Prop : Large-Relation β A
large-relation-Large-Relation-Prop x y = type-Prop (R x y)
is-prop-large-relation-Large-Relation-Prop :
is-prop-Large-Relation A large-relation-Large-Relation-Prop
is-prop-large-relation-Large-Relation-Prop x y = is-prop-type-Prop (R x y)
total-space-Large-Relation-Prop : UUω
total-space-Large-Relation-Prop =
(l1 l2 : Level) →
Σ (A l1 × A l2) (λ (a , a') → large-relation-Large-Relation-Prop a a')
```
## Small relations from large relations
```agda
module _
{α : Level → Level} {β : Level → Level → Level}
(A : (l : Level) → UU (α l))
where
relation-Large-Relation :
(R : Large-Relation β A) (l : Level) → Relation (β l l) (A l)
relation-Large-Relation R l x y = R x y
relation-prop-Large-Relation-Prop :
(R : Large-Relation-Prop β A) (l : Level) → Relation-Prop (β l l) (A l)
relation-prop-Large-Relation-Prop R l x y = R x y
relation-Large-Relation-Prop :
(R : Large-Relation-Prop β A) (l : Level) → Relation (β l l) (A l)
relation-Large-Relation-Prop R =
relation-Large-Relation (large-relation-Large-Relation-Prop A R)
```
## Specifications of properties of binary relations
```agda
module _
{α : Level → Level} {β : Level → Level → Level}
(A : (l : Level) → UU (α l))
(R : Large-Relation β A)
where
is-reflexive-Large-Relation : UUω
is-reflexive-Large-Relation = {l : Level} (x : A l) → R x x
is-symmetric-Large-Relation : UUω
is-symmetric-Large-Relation =
{l1 l2 : Level} (x : A l1) (y : A l2) → R x y → R y x
is-transitive-Large-Relation : UUω
is-transitive-Large-Relation =
{l1 l2 l3 : Level} (x : A l1) (y : A l2) (z : A l3) → R y z → R x y → R x z
is-antisymmetric-Large-Relation : UUω
is-antisymmetric-Large-Relation =
{l : Level} → is-antisymmetric (relation-Large-Relation A R l)
module _
{α : Level → Level} {β : Level → Level → Level}
(A : (l : Level) → UU (α l))
(R : Large-Relation-Prop β A)
where
is-reflexive-Large-Relation-Prop : UUω
is-reflexive-Large-Relation-Prop =
is-reflexive-Large-Relation A (large-relation-Large-Relation-Prop A R)
is-symmetric-Large-Relation-Prop : UUω
is-symmetric-Large-Relation-Prop =
is-symmetric-Large-Relation A (large-relation-Large-Relation-Prop A R)
is-transitive-Large-Relation-Prop : UUω
is-transitive-Large-Relation-Prop =
is-transitive-Large-Relation A (large-relation-Large-Relation-Prop A R)
is-antisymmetric-Large-Relation-Prop : UUω
is-antisymmetric-Large-Relation-Prop =
is-antisymmetric-Large-Relation A (large-relation-Large-Relation-Prop A R)
```
## See also
- [(Small) binary relations](foundation.binary-relations.md)
- [Large preorders](order-theory.large-preorders.md)
- [Large posets](order-theory.large-posets.md)