Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

logical equivalence between weakfunext and funext #73

Open
emilyriehl opened this issue Sep 28, 2023 · 6 comments
Open

logical equivalence between weakfunext and funext #73

emilyriehl opened this issue Sep 28, 2023 · 6 comments

Comments

@emilyriehl
Copy link
Collaborator

emilyriehl commented Sep 28, 2023

I spoke just now with Matthias Hutzler who plans to work on this issue, which I'll describe here.

In the contractibility file we define WeakFunExt. We should show that FunExt implies WeakFunExt and conversely.

We might consider cutting all the code

"

For future reference we add a variable we can assume.

#assume weakfunext : WeakFunExt

Whenever a definition (implicitly) uses function extensionality, we write
#!rzk uses (weakfunext).

#def call-weakfunext uses (weakfunext)
  ( A : U )
  ( C : A → U)
  ( f : (a : A) → is-contr (C a) )
  : (is-contr ( (a : A) → C a ))
  := weakfunext A C f

"

because we don't actually use the function call-weakfunext. We shouldn't state assumptions of either funext or weakfunext while demonstrating they are logically equivalent. Instead the goal is to fill in a proof of the following

#def weakfunext-funext
   (funext : FunExt)
   : WeakFunExt
   := ???

and conversely.

@MatthiasHu
Copy link
Contributor

Yes, thank you, I am looking at this!

@MatthiasHu
Copy link
Contributor

I just opened a draft pull request (#74). One direction is done so far. :-)

@emilyriehl
Copy link
Collaborator Author

@TashiWalde and I were discussing the naive form of funext

NaiveFunExt : U
NaiveFunExt := (A : U) -> (B : A -> U) -> (f g : (x : A) -> B x) -> (p : (x : A) -> f x = g x) -> (f = g)

I incorrectly claimed that this was weaker than FunExt but I've discovered I was wrong.

Claim: @MatthiasHu's proof that FunExt -> WeakFunExt in fact shows that NaiveFunExt -> WeakFunExt.

So once he's completed the proof that WeakFunExt -> FunExt we should add NaiveFunExt to the repository (in the equivalences file) and prove the cycle of implications!

@MatthiasHu
Copy link
Contributor

Oh, indeed! 😃

@TashiWalde
Copy link
Collaborator

On a tangentially related note, I think that "unique unique choice" is a better name than "weak function extensionality" since it is much more descriptive (and more catchy :) ) . Not sure if its worth changing at this point, just throwing it out there...

@thchatzidiamantis
Copy link
Contributor

thchatzidiamantis commented Jul 22, 2024

I've got a proof of the remaining direction, including the discussion about naive-funext (just copying @MatthiasHu's proof as suggested). Things definitely need to be moved (e.g. NaiveFunExt) and renamed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants