Skip to content

Commit ce63519

Browse files
Merge pull request #171 from UniMath/revert-169-AKLV/direct-surjective
Revert "Another proof that reluniv_functor_with_ess_surj issurjective (assuming R is essentially surjective)"
2 parents 5068b0a + 06697bd commit ce63519

File tree

3 files changed

+27
-1162
lines changed

3 files changed

+27
-1162
lines changed

TypeTheory/ALV2/RelUnivTransfer.v

Lines changed: 26 additions & 315 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ Require Import TypeTheory.ALV1.Transport_along_Equivs.
2828
Require Import TypeTheory.ALV2.RelUniv_Cat_Simple.
2929
Require Import TypeTheory.ALV2.RelUniv_Cat.
3030
Require Import UniMath.CategoryTheory.catiso.
31-
Require Import UniMath.CategoryTheory.Equivalences.Core.
3231

3332
Set Automatic Introduction.
3433

@@ -333,293 +332,6 @@ Section RelUniv_Transfer.
333332
- apply reluniv_functor_with_ess_surj_is_faithful, S_faithful.
334333
Defined.
335334

336-
Section Surjective_if_R_split_ess_surj.
337-
Context (R_ses : split_ess_surj R)
338-
(D'_univ : is_univalent D')
339-
(invS : functor D' D)
340-
(eta : iso (C:=[D, D, pr2 D]) (functor_identity D) (S ∙ invS))
341-
(eps : iso (C:=[D', D', pr2 D']) (invS ∙ S) (functor_identity D'))
342-
(S_ff : fully_faithful S).
343-
344-
Let E := ((S,, (invS,, (pr1 eta, pr1 eps)))
345-
,, ((λ d, (pr2 (Constructions.pointwise_iso_from_nat_iso eta d )))
346-
, (λ d', (pr2 (Constructions.pointwise_iso_from_nat_iso eps d')))))
347-
: equivalence_of_precats D D'.
348-
349-
Let AE := adjointificiation E.
350-
Let η' := pr1 (pr121 AE) : nat_trans (functor_identity _) (S ∙ invS).
351-
Let ε' := pr2 (pr121 AE) : nat_trans (invS ∙ S) (functor_identity _).
352-
Let η := functor_iso_from_pointwise_iso
353-
_ _ _ _ _ η' (pr12 (adjointificiation E))
354-
: iso (C:=[D, D, pr2 D]) (functor_identity D) (S ∙ invS).
355-
Let ε := functor_iso_from_pointwise_iso
356-
_ _ _ _ _ ε' (pr22 (adjointificiation E))
357-
: iso (C:=[D', D', pr2 D']) (invS ∙ S) (functor_identity D').
358-
359-
Let ηx := Constructions.pointwise_iso_from_nat_iso (iso_inv_from_iso η).
360-
Let αx := Constructions.pointwise_iso_from_nat_iso (α,,α_is_iso).
361-
362-
Section Helpers.
363-
364-
Context (u' : reluniv_cat J').
365-
366-
Let p' := pr1 u' : mor_total D'.
367-
Let Ũ' := pr21 p' : D'.
368-
Let U' := pr11 p' : D'.
369-
Let pf' := pr2 p' : D' ⟦ Ũ', U' ⟧.
370-
371-
Let U := invS U'.
372-
Let Ũ := invS Ũ'.
373-
Let pf := # invS pf'.
374-
Local Definition p := functor_on_mor_total invS p' : mor_total D.
375-
376-
Context (X : C) (f : D ⟦ J X, U ⟧).
377-
378-
Let X' := R X : C'.
379-
Let f' := inv_from_iso (αx X) ;; # S f ;; pr11 ε U'
380-
: D' ⟦ J' X' , U' ⟧.
381-
Let pb' := pr2 u' X' f' : fpullback J' p' f'.
382-
Let Xf' := pr11 pb'.
383-
384-
Local Definition Xf := pr1 (R_ses Xf') : C.
385-
Let RXf_Xf'_iso := pr2 (R_ses Xf') : iso (R Xf) Xf'.
386-
387-
Let pp' := pr121 pb' : C' ⟦ Xf', X' ⟧.
388-
Local Definition pp : C ⟦ Xf, X ⟧.
389-
Proof.
390-
use (invweq (weq_from_fully_faithful ff_J _ _)).
391-
use (pr11 η _ ;; _ ;; pr1 (inv_from_iso η) _).
392-
use (# invS _).
393-
apply (pr1 α Xf ;; # J' (RXf_Xf'_iso ;; pp') ;; inv_from_iso (αx X)).
394-
Defined.
395-
396-
Let Q' := pr221 pb' : D' ⟦ J' Xf', Ũ' ⟧.
397-
Local Definition Q
398-
:= pr11 η _ ;; # invS (pr1 α Xf ;; # J' RXf_Xf'_iso ;; Q')
399-
: D ⟦ J Xf, invS Ũ' ⟧.
400-
401-
Let pb'_commutes := pr12 pb' : # J' pp' ;; f' = Q' ;; p'.
402-
Let pb'_isPullback := pr22 pb'.
403-
404-
Local Definition pb_commutes_and_is_pullback
405-
: commutes_and_is_pullback f p (# J pp) Q.
406-
Proof.
407-
Check @commutes_and_is_pullback_transfer_iso.
408-
use (@commutes_and_is_pullback_transfer_iso
409-
_ _ _ _ _
410-
_ _ _ _
411-
_ _ _ (J Xf)
412-
f p (# J pp) Q
413-
_ _ _ _
414-
_ _ _ _
415-
(functor_on_square _ _ invS pb'_commutes)
416-
).
417-
- apply identity_iso.
418-
- eapply iso_comp.
419-
apply functor_on_iso, iso_inv_from_iso, αx.
420-
apply ηx.
421-
- apply identity_iso.
422-
- eapply iso_comp. apply functor_on_iso, functor_on_iso.
423-
apply iso_inv_from_iso, RXf_Xf'_iso.
424-
eapply iso_comp. apply functor_on_iso, iso_inv_from_iso, αx.
425-
apply ηx.
426-
- unfold f', iso_comp.
427-
428-
etrans. apply id_right.
429-
etrans. apply functor_comp.
430-
etrans. apply maponpaths_2, functor_comp.
431-
etrans. apply assoc'.
432-
apply pathsinv0.
433-
etrans. apply assoc'.
434-
apply maponpaths.
435-
436-
etrans. apply pathsinv0.
437-
apply (nat_trans_ax (inv_from_iso η)).
438-
apply maponpaths.
439-
440-
apply pathsinv0.
441-
etrans. apply pathsinv0, id_left.
442-
etrans. apply maponpaths_2, pathsinv0.
443-
apply (maponpaths (λ k, pr1 k (invS U'))
444-
(iso_after_iso_inv η)).
445-
446-
etrans. apply assoc'.
447-
etrans. apply maponpaths.
448-
set (AE_tr2 := pr2 (pr221 AE) U'
449-
: pr11 η (invS U') ;; # invS (pr11 ε U')
450-
= identity _).
451-
apply AE_tr2.
452-
apply id_right.
453-
454-
- etrans. apply id_right.
455-
apply pathsinv0, id_left.
456-
457-
- apply pathsinv0.
458-
etrans. apply maponpaths.
459-
apply (homotweqinvweq (weq_from_fully_faithful ff_J _ _)). (* *)
460-
461-
etrans. apply maponpaths, assoc'.
462-
etrans. apply maponpaths, maponpaths, maponpaths_2.
463-
apply (functor_comp invS).
464-
etrans. apply maponpaths, maponpaths, assoc'.
465-
etrans. apply assoc.
466-
etrans. apply assoc.
467-
apply maponpaths_2.
468-
469-
unfold iso_comp, functor_on_iso. simpl.
470-
etrans. apply maponpaths_2, maponpaths_2, maponpaths, maponpaths.
471-
apply id_right.
472-
etrans. apply maponpaths_2, assoc'.
473-
etrans. apply maponpaths_2, maponpaths, assoc'.
474-
etrans. apply maponpaths_2, maponpaths, maponpaths.
475-
apply iso_after_iso_inv.
476-
477-
etrans. apply maponpaths_2, maponpaths, id_right.
478-
etrans. apply maponpaths, functor_comp.
479-
etrans. apply assoc.
480-
etrans. apply maponpaths_2, assoc'.
481-
etrans. apply maponpaths_2, maponpaths.
482-
apply pathsinv0, functor_comp.
483-
etrans. apply maponpaths_2, maponpaths, maponpaths.
484-
apply iso_after_iso_inv.
485-
486-
etrans. apply maponpaths_2, pathsinv0, functor_comp.
487-
etrans. apply pathsinv0, functor_comp.
488-
apply maponpaths.
489-
490-
etrans. apply maponpaths_2, id_right.
491-
etrans. apply pathsinv0, functor_comp.
492-
apply maponpaths.
493-
494-
etrans. apply assoc.
495-
etrans. apply maponpaths_2, iso_after_iso_inv.
496-
apply id_left.
497-
498-
- etrans. apply id_right.
499-
apply pathsinv0.
500-
501-
unfold Q, iso_comp, functor_on_iso. simpl.
502-
503-
etrans. apply maponpaths_2, maponpaths, maponpaths.
504-
apply id_right.
505-
506-
etrans. apply assoc.
507-
etrans. apply maponpaths_2, assoc'.
508-
etrans. apply maponpaths_2, maponpaths, assoc'.
509-
etrans. apply maponpaths_2, maponpaths, maponpaths.
510-
apply iso_after_iso_inv.
511-
512-
etrans. apply maponpaths_2, maponpaths.
513-
apply id_right.
514-
515-
etrans. apply maponpaths, functor_comp.
516-
etrans. apply assoc.
517-
etrans. apply maponpaths_2, assoc'.
518-
etrans. apply maponpaths_2, maponpaths, maponpaths, functor_comp.
519-
etrans. apply maponpaths_2, maponpaths, assoc.
520-
etrans. apply maponpaths_2, maponpaths, maponpaths_2.
521-
apply pathsinv0, functor_comp.
522-
etrans. apply maponpaths_2, maponpaths, maponpaths_2.
523-
apply maponpaths, iso_after_iso_inv.
524-
525-
etrans. apply maponpaths_2, maponpaths.
526-
apply pathsinv0, functor_comp.
527-
etrans. apply maponpaths_2, maponpaths.
528-
apply maponpaths, id_left.
529-
530-
etrans. apply maponpaths_2, pathsinv0, functor_comp.
531-
etrans. apply pathsinv0, functor_comp.
532-
apply maponpaths.
533-
534-
etrans. apply maponpaths_2, pathsinv0, functor_comp.
535-
etrans. apply maponpaths_2, maponpaths, iso_after_iso_inv.
536-
etrans. apply maponpaths_2, functor_id.
537-
apply id_left.
538-
539-
- use (isPullback_image_square _ _ invS).
540-
+ apply homset_property.
541-
+ apply (right_adj_equiv_is_ff _ _ S AE).
542-
+ apply (right_adj_equiv_is_ess_sur _ _ S AE).
543-
+ apply pb'_isPullback.
544-
Defined.
545-
546-
End Helpers.
547-
548-
Definition inv_reluniv_with_ess_surj
549-
: reluniv_cat J' → reluniv_cat J.
550-
Proof.
551-
intros u'.
552-
use tpair.
553-
+ apply (p u').
554-
+ intros X f.
555-
use tpair.
556-
* use tpair.
557-
-- apply (Xf u' X f).
558-
-- use make_dirprod.
559-
++ apply pp.
560-
++ apply Q.
561-
* apply pb_commutes_and_is_pullback.
562-
Defined.
563-
564-
Definition reluniv_functor_with_ess_surj_after_inv_iso
565-
(u' : reluniv_cat J')
566-
: iso u'
567-
(reluniv_functor_with_ess_surj (inv_reluniv_with_ess_surj u')).
568-
Proof.
569-
set (εx := Constructions.pointwise_iso_from_nat_iso ε).
570-
set (εx' := Constructions.pointwise_iso_from_nat_iso
571-
(iso_inv_from_iso ε)).
572-
use z_iso_to_iso.
573-
use make_z_iso.
574-
- use tpair.
575-
+ use make_dirprod.
576-
* cbn. apply (εx' (pr211 u')).
577-
* cbn. apply (εx' (pr111 u')).
578-
+ unfold is_gen_reluniv_mor.
579-
etrans. apply pathsinv0.
580-
apply (nat_trans_ax (pr1 (iso_inv_from_iso ε))).
581-
apply idpath.
582-
- use tpair.
583-
+ use make_dirprod.
584-
* cbn. apply (εx (pr211 u')).
585-
* cbn. apply (εx (pr111 u')).
586-
+ unfold is_gen_reluniv_mor.
587-
etrans. apply pathsinv0.
588-
apply (nat_trans_ax (pr1 ε)).
589-
apply idpath.
590-
- use make_dirprod.
591-
+ use gen_reluniv_mor_eq.
592-
* apply (maponpaths (λ k, pr1 k _) (iso_after_iso_inv ε)).
593-
* apply (maponpaths (λ k, pr1 k _) (iso_after_iso_inv ε)).
594-
+ use gen_reluniv_mor_eq.
595-
* apply (maponpaths (λ k, pr1 k _) (iso_inv_after_iso ε)).
596-
* apply (maponpaths (λ k, pr1 k _) (iso_inv_after_iso ε)).
597-
Defined.
598-
599-
Definition reluniv_functor_with_ess_surj_after_inv_id
600-
(u' : reluniv_cat J')
601-
: u' = reluniv_functor_with_ess_surj (inv_reluniv_with_ess_surj u').
602-
Proof.
603-
use isotoid.
604-
- use reluniv_cat_is_univalent.
605-
+ apply C'_univ.
606-
+ apply ff_J'.
607-
+ apply D'_univ.
608-
- apply reluniv_functor_with_ess_surj_after_inv_iso.
609-
Defined.
610-
611-
Definition reluniv_functor_with_ess_surj_issurjective
612-
: issurjective reluniv_functor_with_ess_surj.
613-
Proof.
614-
intros u'.
615-
use hinhpr.
616-
use tpair.
617-
- apply (inv_reluniv_with_ess_surj u').
618-
- apply pathsinv0, reluniv_functor_with_ess_surj_after_inv_id.
619-
Defined.
620-
621-
End Surjective_if_R_split_ess_surj.
622-
623335
End RelUniv_Transfer_with_ess_surj.
624336

625337
End RelUniv_Transfer.
@@ -829,29 +541,29 @@ Section WeakRelUniv_Transfer.
829541
apply weak_relu_square_commutes.
830542
Defined.
831543

832-
Definition reluniv_functor_with_ess_surj_issurjective_AC
833-
(C'_univ : is_univalent C')
834-
(AC : AxiomOfChoice.AxiomOfChoice)
835-
(obC_isaset : isaset C)
836-
: issurjective (reluniv_functor_with_ess_surj
837-
_ _ _ _ J J'
838-
R S α α_is_iso
839-
S_pb C'_univ ff_J' S_full R_es
840-
).
841-
Proof.
842-
set (W := (weak_from_reluniv_functor J'
843-
,, weak_from_reluniv_functor_is_catiso J' C'_univ ff_J')
844-
: catiso _ _).
845-
use (Core.issurjective_postcomp_with_weq _ (catiso_ob_weq W)).
846-
use (transportf (λ F, issurjective (pr11 F))
847-
(! weak_relu_square_commutes_strictly C'_univ)).
848-
use issurjcomp.
849-
- apply weak_from_reluniv_functor_issurjective.
850-
apply AC.
851-
apply obC_isaset.
852-
- apply issurjectiveweq.
853-
apply (catiso_ob_weq (_,,weak_reluniv_functor_is_catiso)).
854-
Defined.
544+
Definition reluniv_functor_with_ess_surj_issurjective
545+
(C'_univ : is_univalent C')
546+
(AC : AxiomOfChoice.AxiomOfChoice)
547+
(obC_isaset : isaset C)
548+
: issurjective (reluniv_functor_with_ess_surj
549+
_ _ _ _ J J'
550+
R S α α_is_iso
551+
S_pb C'_univ ff_J' S_full R_es
552+
).
553+
Proof.
554+
set (W := (weak_from_reluniv_functor J'
555+
,, weak_from_reluniv_functor_is_catiso J' C'_univ ff_J')
556+
: catiso _ _).
557+
use (Core.issurjective_postcomp_with_weq _ (catiso_ob_weq W)).
558+
use (transportf (λ F, issurjective (pr11 F))
559+
(! weak_relu_square_commutes_strictly C'_univ)).
560+
use issurjcomp.
561+
- apply weak_from_reluniv_functor_issurjective.
562+
apply AC.
563+
apply obC_isaset.
564+
- apply issurjectiveweq.
565+
apply (catiso_ob_weq (_,,weak_reluniv_functor_is_catiso)).
566+
Defined.
855567

856568
End WeakRelUniv_Transfer.
857569

@@ -902,9 +614,10 @@ Section RelUniv_Yo_Rezk.
902614
(obC_isaset : isaset C)
903615
: issurjective transfer_of_RelUnivYoneda_functor.
904616
Proof.
905-
use (reluniv_functor_with_ess_surj_issurjective_AC
617+
use (reluniv_functor_with_ess_surj_issurjective
906618
_ _ _ _ Yo Yo
907619
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
620+
AC obC_isaset
908621
).
909622
- apply is_univalent_preShv.
910623
- apply is_univalent_preShv.
@@ -914,8 +627,6 @@ Section RelUniv_Yo_Rezk.
914627
- apply fully_faithful_implies_full_and_faithful.
915628
apply right_adj_equiv_is_ff.
916629
- apply R_full.
917-
- apply AC.
918-
- apply obC_isaset.
919630
Defined.
920631

921632
Definition transfer_of_WeakRelUnivYoneda_functor
@@ -953,4 +664,4 @@ Section RelUniv_Yo_Rezk.
953664
apply weak_relu_square_commutes_strictly.
954665
Defined.
955666

956-
End RelUniv_Yo_Rezk.
667+
End RelUniv_Yo_Rezk.

0 commit comments

Comments
 (0)