Mere decidable embeddings

Content created by Fredrik Bakke.

Created on 2026-01-10.
Last modified on 2026-09-09.

module foundation.mere-decidable-embeddings where
Imports
open import foundation.cantor-schroder-bernstein-decidable-embeddings
open import foundation.decidable-embeddings
open import foundation.decidable-equality
open import foundation.dependent-pair-types
open import foundation.empty-types
open import foundation.fibers-of-maps
open import foundation.function-types
open import foundation.functoriality-propositional-truncation
open import foundation.mere-embeddings
open import foundation.mere-equivalences
open import foundation.projective-types
open import foundation.propositional-truncations
open import foundation.split-surjective-maps
open import foundation.surjective-maps
open import foundation.universe-levels
open import foundation.weak-limited-principle-of-omniscience

open import foundation-core.propositions

open import order-theory.large-preorders

Idea

A type A merely decidably embeds into a type B if there merely exists a decidable embedding of A into B.

Definition

mere-decidable-emb-Prop : {l1 l2 : Level}  UU l1  UU l2  Prop (l1  l2)
mere-decidable-emb-Prop X Y = trunc-Prop (X ↪ᵈ Y)

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

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

Properties

Mere decidable embeddings give mere embeddings

mere-emb-mere-decidable-emb :
  {l1 l2 : Level} {X : UU l1} {Y : UU l2} 
  mere-decidable-emb X Y  mere-emb X Y
mere-emb-mere-decidable-emb = map-trunc-Prop emb-decidable-emb

Types equipped with mere decidable embeddings form a preordering

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

transitive-mere-decidable-emb :
  {l1 l2 l3 : Level} {X : UU l1} {Y : UU l2} {Z : UU l3} 
  mere-decidable-emb Y Z  mere-decidable-emb X Y  mere-decidable-emb X Z
transitive-mere-decidable-emb = map-binary-trunc-Prop comp-decidable-emb

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

Assuming WLPO, then types equipped with mere decidable embeddings form a partial ordering

antisymmetric-mere-decidable-emb :
  {l1 l2 : Level} {X : UU l1} {Y : UU l2}  level-WLPO (l1  l2) 
  mere-decidable-emb X Y  mere-decidable-emb Y X  mere-equiv X Y
antisymmetric-mere-decidable-emb wlpo =
  map-binary-trunc-Prop (Cantor-Schröder-Bernstein-WLPO wlpo)

Empty types merely decidably embed into any type

mere-decidable-emb-is-empty :
  {l1 l2 : Level} {X : UU l1} {Y : UU l2}  is-empty X  mere-decidable-emb X Y
mere-decidable-emb-is-empty H = unit-trunc-Prop (decidable-emb-is-empty H)

Surjections onto projective types from discrete types give reverse mere decidable embeddings

module _
  {l1 l2 : Level} {X : UU l1} {Y : UU l2}
  where

  reverse-mere-decidable-emb-surjection-is-projective :
    has-decidable-equality X 
    is-projective-Level (l1  l2) Y 
    (X  Y)  mere-decidable-emb Y X
  reverse-mere-decidable-emb-surjection-is-projective dX pY (f , F) =
    map-trunc-Prop
      ( reverse-decidable-emb-has-section {f = f} dX 
        section-is-split-surjective f)
      ( pY (fiber f) F)

Recent changes