New notion of equivalence: Bijective relations#1252
New notion of equivalence: Bijective relations#1252anshwad10 wants to merge 10 commits intoagda:masterfrom
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.
Do we really need all of this duplication of singlP?
There was a problem hiding this comment.
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.
It can't be defined as singlP (\i -> A (~ i))?
There was a problem hiding this comment.
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.
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.
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.
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