# Discrete relations
```agda
module foundation.discrete-relations where
```
<details><summary>Imports</summary>
```agda
open import foundation.binary-relations
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.reflexive-relations
open import foundation.torsorial-type-families
open import foundation.universe-levels
open import foundation-core.identity-types
open import foundation-core.propositions
```
</details>
## Idea
A [relation](foundation.binary-relations.md) `R` on `A` is said to be
{{#concept "discrete" Disambiguation="binary relations valued in types" Agda=is-discrete-Relation}}
if, for every element `x : A`, the type family `R x` is
[torsorial](foundation-core.torsorial-type-families.md). In other words, the
[dependent sum](foundation.dependent-pair-types.md) `Σ (y : A), (R x y)` is
[contractible](foundation-core.contractible-types.md) for every `x`. The
{{#concept "standard discrete relation" Disambiguation="binary relations valued in types"}}
on a type `X` is the relation defined by
[identifications](foundation-core.identity-types.md),
```text
R x y := (x = y).
```
## Definitions
### The predicate on relations of being discrete
```agda
module _
{l1 l2 : Level} {A : UU l1} (R : Relation l2 A)
where
is-discrete-prop-Relation : Prop (l1 ⊔ l2)
is-discrete-prop-Relation = Π-Prop A (λ x → is-torsorial-Prop (R x))
is-discrete-Relation : UU (l1 ⊔ l2)
is-discrete-Relation =
type-Prop is-discrete-prop-Relation
is-prop-is-discrete-Relation : is-prop is-discrete-Relation
is-prop-is-discrete-Relation =
is-prop-type-Prop is-discrete-prop-Relation
```
### The predicate on reflexive relations of being discrete
```agda
module _
{l1 l2 : Level} {A : UU l1} (R : Reflexive-Relation l2 A)
where
is-discrete-prop-Reflexive-Relation : Prop (l1 ⊔ l2)
is-discrete-prop-Reflexive-Relation =
is-discrete-prop-Relation (rel-Reflexive-Relation R)
is-discrete-Reflexive-Relation : UU (l1 ⊔ l2)
is-discrete-Reflexive-Relation =
type-Prop is-discrete-prop-Reflexive-Relation
is-prop-is-discrete-Reflexive-Relation :
is-prop is-discrete-Reflexive-Relation
is-prop-is-discrete-Reflexive-Relation =
is-prop-type-Prop is-discrete-prop-Reflexive-Relation
```
### The standard discrete relation on a type
```agda
module _
{l : Level} (A : UU l)
where
is-discrete-Id-Relation : is-discrete-Relation (Id {A = A})
is-discrete-Id-Relation = is-torsorial-Id
```