# Mere equality
```agda
module foundation.mere-equality where
```
<details><summary>Imports</summary>
```agda
open import foundation.action-on-identifications-functions
open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.functoriality-propositional-truncation
open import foundation.propositional-truncations
open import foundation.reflecting-maps-equivalence-relations
open import foundation.universe-levels
open import foundation-core.equivalence-relations
open import foundation-core.identity-types
open import foundation-core.propositions
open import foundation-core.sets
```
</details>
## Idea
Two elements in a type are said to be merely equal if there is an element of the
propositionally truncated identity type between them.
## Definition
```agda
module _
{l : Level} {A : UU l}
where
mere-eq-Prop : A → A → Prop l
mere-eq-Prop x y = trunc-Prop (x = y)
mere-eq : A → A → UU l
mere-eq x y = type-Prop (mere-eq-Prop x y)
is-prop-mere-eq : (x y : A) → is-prop (mere-eq x y)
is-prop-mere-eq x y = is-prop-type-trunc-Prop
```
## Properties
### Reflexivity
```agda
abstract
refl-mere-eq :
{l : Level} {A : UU l} → is-reflexive (mere-eq {l} {A})
refl-mere-eq _ = unit-trunc-Prop refl
```
### Symmetry
```agda
abstract
symmetric-mere-eq :
{l : Level} {A : UU l} → is-symmetric (mere-eq {l} {A})
symmetric-mere-eq _ _ = map-trunc-Prop inv
```
### Transitivity
```agda
abstract
transitive-mere-eq :
{l : Level} {A : UU l} → is-transitive (mere-eq {l} {A})
transitive-mere-eq x y z p q =
apply-universal-property-trunc-Prop q
( mere-eq-Prop x z)
( λ p' → map-trunc-Prop (p' ∙_) p)
```
### Mere equality is an equivalence relation
```agda
mere-eq-equivalence-relation :
{l1 : Level} (A : UU l1) → equivalence-relation l1 A
pr1 (mere-eq-equivalence-relation A) = mere-eq-Prop
pr1 (pr2 (mere-eq-equivalence-relation A)) = refl-mere-eq
pr1 (pr2 (pr2 (mere-eq-equivalence-relation A))) = symmetric-mere-eq
pr2 (pr2 (pr2 (mere-eq-equivalence-relation A))) = transitive-mere-eq
```
### Any map into a set reflects mere equality
```agda
module _
{l1 l2 : Level} {A : UU l1} (X : Set l2) (f : A → type-Set X)
where
reflects-mere-eq :
reflects-equivalence-relation (mere-eq-equivalence-relation A) f
reflects-mere-eq {x} {y} r =
apply-universal-property-trunc-Prop r
( Id-Prop X (f x) (f y))
( ap f)
reflecting-map-mere-eq :
reflecting-map-equivalence-relation
( mere-eq-equivalence-relation A)
( type-Set X)
pr1 reflecting-map-mere-eq = f
pr2 reflecting-map-mere-eq = reflects-mere-eq
```
### If mere equality maps into the identity type of `A`, then `A` is a set
```agda
is-set-mere-eq-in-id :
{l : Level} {A : UU l} → ((x y : A) → mere-eq x y → x = y) → is-set A
is-set-mere-eq-in-id =
is-set-prop-in-id
( mere-eq)
( is-prop-mere-eq)
( refl-mere-eq)
```