# Mere embeddings

```agda
module foundation.mere-embeddings where
```

<details><summary>Imports</summary>

```agda
open import foundation.cantor-schroder-bernstein-escardo
open import foundation.embeddings
open import foundation.law-of-excluded-middle
open import foundation.mere-equivalences
open import foundation.propositional-truncations
open import foundation.universe-levels

open import foundation-core.propositions

open import order-theory.large-preorders
```

</details>

## Definition

```agda
mere-emb-Prop : {l1 l2 : Level}  UU l1  UU l2  Prop (l1  l2)
mere-emb-Prop X Y = trunc-Prop (X  Y)

mere-emb : {l1 l2 : Level}  UU l1  UU l2  UU (l1  l2)
mere-emb X Y = type-Prop (mere-emb-Prop X Y)

is-prop-mere-emb :
  {l1 l2 : Level} (X : UU l1) (Y : UU l2)  is-prop (mere-emb X Y)
is-prop-mere-emb X Y = is-prop-type-Prop (mere-emb-Prop X Y)
```

## Properties

### Types equipped with mere embeddings form a preordering

```agda
refl-mere-emb : {l1 : Level} (X : UU l1)  mere-emb X X
refl-mere-emb X = unit-trunc-Prop id-emb

transitive-mere-emb :
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} {Z : UU l3} 
  mere-emb Y Z  mere-emb X Y  mere-emb X Z
transitive-mere-emb g f =
  apply-universal-property-trunc-Prop g
    ( mere-emb-Prop _ _)
    ( λ g' 
      apply-universal-property-trunc-Prop f
        ( mere-emb-Prop _ _)
        ( λ f'  unit-trunc-Prop (comp-emb g' f')))

mere-emb-Large-Preorder : Large-Preorder lsuc (_⊔_)
type-Large-Preorder mere-emb-Large-Preorder l = UU l
leq-prop-Large-Preorder mere-emb-Large-Preorder = mere-emb-Prop
refl-leq-Large-Preorder mere-emb-Large-Preorder = refl-mere-emb
transitive-leq-Large-Preorder mere-emb-Large-Preorder X Y Z =
  transitive-mere-emb
```

### Assuming excluded middle, if there are mere embeddings between `A` and `B` in both directions, then there is a mere equivalence between them

```agda
antisymmetric-mere-emb :
  {l1 l2 : Level} {X : UU l1} {Y : UU l2} 
  LEM (l1  l2)  mere-emb X Y  mere-emb Y X  mere-equiv X Y
antisymmetric-mere-emb lem f g =
  apply-universal-property-trunc-Prop f
    ( mere-equiv-Prop _ _)
    ( λ f' 
      apply-universal-property-trunc-Prop g
        ( mere-equiv-Prop _ _)
        ( λ g'  unit-trunc-Prop (Cantor-Schröder-Bernstein-Escardó lem f' g')))
```