@@ -218,14 +218,28 @@ module _ (From : Setoid a ℓ₁) (To : Setoid b ℓ₂) where
218
218
}
219
219
220
220
open IsLeftInverse isLeftInverse public
221
- using (module Eq₁ ; module Eq₂ ; strictlyInverseˡ)
221
+ using (module Eq₁ ; module Eq₂ ; strictlyInverseˡ; isSurjection )
222
222
223
223
equivalence : Equivalence
224
224
equivalence = record
225
225
{ to-cong = to-cong
226
226
; from-cong = from-cong
227
227
}
228
228
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
+
229
243
230
244
record RightInverse : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂) where
231
245
field
@@ -346,6 +360,45 @@ module _ (From : Setoid a ℓ₁) (To : Setoid b ℓ₂) where
346
360
; from₂-cong = from₂-cong
347
361
}
348
362
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
349
402
350
403
------------------------------------------------------------------------
351
404
-- Bundles specialised for propositional equality
0 commit comments