Is the univalence axiom injective?












1















Is the univalence axiom invertible (modulo paths)? Is it possible to prove, using Agda's Cubical library, to prove the following:



open import Cubical.Core.Glue

uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} →
ua f ≡ ua g → equivFun f ≡ equivFun g


I suspect the above should hold, because in example 3.19 of the HoTT book, there is a step in the proof where an equivalence between two equivalences is used to prove the equivalence between their functions:




[...] so f is an
equivalence. Hence, by univalence, f gives rise to a path p : A ≡ A.



If p were equal to refl A, then (again by univalence) f would equal the
identity function of A.











share|improve this question



























    1















    Is the univalence axiom invertible (modulo paths)? Is it possible to prove, using Agda's Cubical library, to prove the following:



    open import Cubical.Core.Glue

    uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} →
    ua f ≡ ua g → equivFun f ≡ equivFun g


    I suspect the above should hold, because in example 3.19 of the HoTT book, there is a step in the proof where an equivalence between two equivalences is used to prove the equivalence between their functions:




    [...] so f is an
    equivalence. Hence, by univalence, f gives rise to a path p : A ≡ A.



    If p were equal to refl A, then (again by univalence) f would equal the
    identity function of A.











    share|improve this question

























      1












      1








      1








      Is the univalence axiom invertible (modulo paths)? Is it possible to prove, using Agda's Cubical library, to prove the following:



      open import Cubical.Core.Glue

      uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} →
      ua f ≡ ua g → equivFun f ≡ equivFun g


      I suspect the above should hold, because in example 3.19 of the HoTT book, there is a step in the proof where an equivalence between two equivalences is used to prove the equivalence between their functions:




      [...] so f is an
      equivalence. Hence, by univalence, f gives rise to a path p : A ≡ A.



      If p were equal to refl A, then (again by univalence) f would equal the
      identity function of A.











      share|improve this question














      Is the univalence axiom invertible (modulo paths)? Is it possible to prove, using Agda's Cubical library, to prove the following:



      open import Cubical.Core.Glue

      uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} →
      ua f ≡ ua g → equivFun f ≡ equivFun g


      I suspect the above should hold, because in example 3.19 of the HoTT book, there is a step in the proof where an equivalence between two equivalences is used to prove the equivalence between their functions:




      [...] so f is an
      equivalence. Hence, by univalence, f gives rise to a path p : A ≡ A.



      If p were equal to refl A, then (again by univalence) f would equal the
      identity function of A.








      agda cubical-type-theory homotopy-type-theory






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 14:27









      CactusCactus

      18.8k848113




      18.8k848113
























          2 Answers
          2






          active

          oldest

          votes


















          1














          Sure, ua is an equivalence, so it's injective. In the HoTT book, the inverse of ua is idtoeqv, so by congruence idtoeqv (ua f) ≡ idtoeqv (ua g) and then by inverses f ≡ g. I'm not familiar with the contents of cubical Agda prelude but this should be provable since it follows directly from the statement of univalence.






          share|improve this answer

































            0














            To put András's answer into code, we can prove injectivity of equivalency functions in general:



            equivInj : ∀ {ℓ₁ ℓ₂} {A : Set ℓ₁} {B : Set ℓ₂} (f : A ≃ B) → 
            ∀ x x′ → equivFun f x ≡ equivFun f x′ → x ≡ x′
            equivInj f x x′ p = cong fst $ begin
            x , refl ≡⟨ sym (equivCtrPath f (equivFun f x) (x , refl)) ⟩
            equivCtr f (equivFun f x) ≡⟨ equivCtrPath f (equivFun f x) (x′ , p) ⟩
            x′ , p ∎


            and then given



            univalence : ∀ {ℓ} {A B : Set ℓ} → (A ≡ B) ≃ (A ≃ B)


            we get



            uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} → ua f ≡ ua g → equivFun f ≡ equivFun g
            uaInj {f = f} {g = g} = cong equivFun ∘ equivInj (invEquiv univalence) f g


            The only problem is, univalence is not readily available in the Cubical library. Hopefully that is getting sorted out shortly.



            UPDATE: In reaction to the above bug ticket, proof of univalence is now available in the Cubical library.






            share|improve this answer

























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53302504%2fis-the-univalence-axiom-injective%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              Sure, ua is an equivalence, so it's injective. In the HoTT book, the inverse of ua is idtoeqv, so by congruence idtoeqv (ua f) ≡ idtoeqv (ua g) and then by inverses f ≡ g. I'm not familiar with the contents of cubical Agda prelude but this should be provable since it follows directly from the statement of univalence.






              share|improve this answer






























                1














                Sure, ua is an equivalence, so it's injective. In the HoTT book, the inverse of ua is idtoeqv, so by congruence idtoeqv (ua f) ≡ idtoeqv (ua g) and then by inverses f ≡ g. I'm not familiar with the contents of cubical Agda prelude but this should be provable since it follows directly from the statement of univalence.






                share|improve this answer




























                  1












                  1








                  1







                  Sure, ua is an equivalence, so it's injective. In the HoTT book, the inverse of ua is idtoeqv, so by congruence idtoeqv (ua f) ≡ idtoeqv (ua g) and then by inverses f ≡ g. I'm not familiar with the contents of cubical Agda prelude but this should be provable since it follows directly from the statement of univalence.






                  share|improve this answer















                  Sure, ua is an equivalence, so it's injective. In the HoTT book, the inverse of ua is idtoeqv, so by congruence idtoeqv (ua f) ≡ idtoeqv (ua g) and then by inverses f ≡ g. I'm not familiar with the contents of cubical Agda prelude but this should be provable since it follows directly from the statement of univalence.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 14 '18 at 15:16

























                  answered Nov 14 '18 at 15:11









                  András KovácsAndrás Kovács

                  25.1k33782




                  25.1k33782

























                      0














                      To put András's answer into code, we can prove injectivity of equivalency functions in general:



                      equivInj : ∀ {ℓ₁ ℓ₂} {A : Set ℓ₁} {B : Set ℓ₂} (f : A ≃ B) → 
                      ∀ x x′ → equivFun f x ≡ equivFun f x′ → x ≡ x′
                      equivInj f x x′ p = cong fst $ begin
                      x , refl ≡⟨ sym (equivCtrPath f (equivFun f x) (x , refl)) ⟩
                      equivCtr f (equivFun f x) ≡⟨ equivCtrPath f (equivFun f x) (x′ , p) ⟩
                      x′ , p ∎


                      and then given



                      univalence : ∀ {ℓ} {A B : Set ℓ} → (A ≡ B) ≃ (A ≃ B)


                      we get



                      uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} → ua f ≡ ua g → equivFun f ≡ equivFun g
                      uaInj {f = f} {g = g} = cong equivFun ∘ equivInj (invEquiv univalence) f g


                      The only problem is, univalence is not readily available in the Cubical library. Hopefully that is getting sorted out shortly.



                      UPDATE: In reaction to the above bug ticket, proof of univalence is now available in the Cubical library.






                      share|improve this answer






























                        0














                        To put András's answer into code, we can prove injectivity of equivalency functions in general:



                        equivInj : ∀ {ℓ₁ ℓ₂} {A : Set ℓ₁} {B : Set ℓ₂} (f : A ≃ B) → 
                        ∀ x x′ → equivFun f x ≡ equivFun f x′ → x ≡ x′
                        equivInj f x x′ p = cong fst $ begin
                        x , refl ≡⟨ sym (equivCtrPath f (equivFun f x) (x , refl)) ⟩
                        equivCtr f (equivFun f x) ≡⟨ equivCtrPath f (equivFun f x) (x′ , p) ⟩
                        x′ , p ∎


                        and then given



                        univalence : ∀ {ℓ} {A B : Set ℓ} → (A ≡ B) ≃ (A ≃ B)


                        we get



                        uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} → ua f ≡ ua g → equivFun f ≡ equivFun g
                        uaInj {f = f} {g = g} = cong equivFun ∘ equivInj (invEquiv univalence) f g


                        The only problem is, univalence is not readily available in the Cubical library. Hopefully that is getting sorted out shortly.



                        UPDATE: In reaction to the above bug ticket, proof of univalence is now available in the Cubical library.






                        share|improve this answer




























                          0












                          0








                          0







                          To put András's answer into code, we can prove injectivity of equivalency functions in general:



                          equivInj : ∀ {ℓ₁ ℓ₂} {A : Set ℓ₁} {B : Set ℓ₂} (f : A ≃ B) → 
                          ∀ x x′ → equivFun f x ≡ equivFun f x′ → x ≡ x′
                          equivInj f x x′ p = cong fst $ begin
                          x , refl ≡⟨ sym (equivCtrPath f (equivFun f x) (x , refl)) ⟩
                          equivCtr f (equivFun f x) ≡⟨ equivCtrPath f (equivFun f x) (x′ , p) ⟩
                          x′ , p ∎


                          and then given



                          univalence : ∀ {ℓ} {A B : Set ℓ} → (A ≡ B) ≃ (A ≃ B)


                          we get



                          uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} → ua f ≡ ua g → equivFun f ≡ equivFun g
                          uaInj {f = f} {g = g} = cong equivFun ∘ equivInj (invEquiv univalence) f g


                          The only problem is, univalence is not readily available in the Cubical library. Hopefully that is getting sorted out shortly.



                          UPDATE: In reaction to the above bug ticket, proof of univalence is now available in the Cubical library.






                          share|improve this answer















                          To put András's answer into code, we can prove injectivity of equivalency functions in general:



                          equivInj : ∀ {ℓ₁ ℓ₂} {A : Set ℓ₁} {B : Set ℓ₂} (f : A ≃ B) → 
                          ∀ x x′ → equivFun f x ≡ equivFun f x′ → x ≡ x′
                          equivInj f x x′ p = cong fst $ begin
                          x , refl ≡⟨ sym (equivCtrPath f (equivFun f x) (x , refl)) ⟩
                          equivCtr f (equivFun f x) ≡⟨ equivCtrPath f (equivFun f x) (x′ , p) ⟩
                          x′ , p ∎


                          and then given



                          univalence : ∀ {ℓ} {A B : Set ℓ} → (A ≡ B) ≃ (A ≃ B)


                          we get



                          uaInj : ∀ {ℓ} {A B : Set ℓ} {f g : A ≃ B} → ua f ≡ ua g → equivFun f ≡ equivFun g
                          uaInj {f = f} {g = g} = cong equivFun ∘ equivInj (invEquiv univalence) f g


                          The only problem is, univalence is not readily available in the Cubical library. Hopefully that is getting sorted out shortly.



                          UPDATE: In reaction to the above bug ticket, proof of univalence is now available in the Cubical library.







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Nov 22 '18 at 6:06

























                          answered Nov 16 '18 at 13:24









                          CactusCactus

                          18.8k848113




                          18.8k848113






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53302504%2fis-the-univalence-axiom-injective%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Xamarin.iOS Cant Deploy on Iphone

                              Glorious Revolution

                              Dulmage-Mendelsohn matrix decomposition in Python