-
Notifications
You must be signed in to change notification settings - Fork 157
New notion of equivalence: Bijective relations #1252
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
base: master
Are you sure you want to change the base?
Conversation
…ons and functions I also proved `isContr→isSet'` to simplify the proofs of `isPropIsContr`, `isProp→isSet` and `isProp→isSet'`
…an hcomp while you hcomp
|
Now that I gave an explicit construction of |
|
So I tried it and it's not that much better. For |
|
@ecavallo this is ready to merge, please review |
| singlP A a = Σ[ x ∈ A i1 ] PathP A a x | ||
|
|
||
| singlP' : (A : I → Type ℓ) (a : A i1) → Type _ | ||
| singlP' A a = Σ[ x ∈ A i0 ] PathP A x a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we really need all of this duplication of singlP?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I needed contrSinglP' to define isBijectivePathP; I could instead define contrSinglP' by transporting the proof of contrSinglP but I don't think there is a way to do that which computes as nicely?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It can't be defined as singlP (\i -> A (~ i))?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PathP (\i -> A (~ i)) a x is not definitionally identical to PathP A x a. Although they are definitionally isomorphic, if I used isContrRetract to transport contrSinglP along that isomorphism it wouldn't reduce as nicely (because isContrRetract can't rely on retraction being definitional, so it must adjust by the path even though it is reflexivity). I guess another solution could be to have a version of isOfHLevelRespectEquiv for strict iso's, but thay would need either reflection or the 2LTT strict equality (maybe I should add it in another PR? that might actually also actually simplify the proof of isFunctionalCompRel and isCofunctionalCompRel)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why would it need reflection? In cubical-categorical-logic when we need to abstract over a definitional equality we use the inductive Data.Equality type and then only use the construction when it is Eq.refl.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh yeah I didn't think of that! for some reason I had assumed that we would need the 2LTT strict equality, but I forgot that the inductive equality works just as well.
... Does this mean that Cubical.Reflection.StrictEquiv does not actually need reflection either?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The reflection there is still helpful, it's just to allow for an abbreviation of writing an equivalence that is strict without manually invoking strictContrFibers.
IMO, cubically this is a very natural notion of equivalence, because from any path
p : A ≡ Bwe get a bijective relationPathP λ i → P ias a primitive notion of cubical. The inverse of a bijective relation is also very easy to define and it is definitionally involutive;I also prove that this is equivalent to the usual notion of equivalence