@@ -218,14 +218,28 @@ module _ (From : Setoid a ℓ₁) (To : Setoid b ℓ₂) where
218218 }
219219
220220 open IsLeftInverse isLeftInverse public
221- using (module Eq₁ ; module Eq₂ ; strictlyInverseˡ)
221+ using (module Eq₁ ; module Eq₂ ; strictlyInverseˡ; isSurjection )
222222
223223 equivalence : Equivalence
224224 equivalence = record
225225 { to-cong = to-cong
226226 ; from-cong = from-cong
227227 }
228228
229+ isSplitSurjection : IsSplitSurjection to
230+ isSplitSurjection = record
231+ { from = from
232+ ; isLeftInverse = isLeftInverse
233+ }
234+
235+ surjection : Surjection From To
236+ surjection = record
237+ { to = to
238+ ; cong = to-cong
239+ ; surjective = λ y → from y , inverseˡ
240+ }
241+
242+
229243
230244 record RightInverse : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂) where
231245 field
@@ -346,6 +360,45 @@ module _ (From : Setoid a ℓ₁) (To : Setoid b ℓ₂) where
346360 ; from₂-cong = from₂-cong
347361 }
348362
363+ ------------------------------------------------------------------------
364+ -- Other
365+
366+ -- A left inverse is also known as a “split surjection”.
367+ --
368+ -- As the name implies, a split surjection is a special kind of
369+ -- surjection where the witness generated in the domain in the
370+ -- function for elements `x₁` and `x₂` are equal if `x₁ ≈ x₂` .
371+ --
372+ -- The difference is the `from-cong` law --- generally, the section
373+ -- (called `Surjection.to⁻` or `SplitSurjection.from`) of a surjection
374+ -- need not respect equality, whereas it must in a split surjection.
375+ --
376+ -- The two notions coincide when the equivalence relation on `B` is
377+ -- propositional equality (because all functions respect propositional
378+ -- equality).
379+ --
380+ -- For further background on (split) surjections, one may consult any
381+ -- general mathematical references which work without the principle
382+ -- of choice. For example:
383+ --
384+ -- https://ncatlab.org/nlab/show/split+epimorphism.
385+ --
386+ -- The connection to set-theoretic notions with the same names is
387+ -- justified by the setoid type theory/homotopy type theory
388+ -- observation/definition that (∃x : A. P) = ∥ Σx : A. P ∥ --- i.e.,
389+ -- we can read set-theoretic ∃ as squashed/propositionally truncated Σ.
390+ --
391+ -- We see working with setoids as working in the MLTT model of a setoid
392+ -- type theory, in which ∥ X ∥ is interpreted as the setoid with carrier
393+ -- set X and the equivalence relation that relates all elements.
394+ -- All maps into ∥ X ∥ respect equality, so in the idiomatic definitions
395+ -- here, we drop the corresponding trivial `cong` field completely.
396+
397+ SplitSurjection : Set _
398+ SplitSurjection = LeftInverse
399+
400+ module SplitSurjection (splitSurjection : SplitSurjection) =
401+ LeftInverse splitSurjection
349402
350403------------------------------------------------------------------------
351404-- Bundles specialised for propositional equality
0 commit comments