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

Transport-split and preunivalent type families #1013

Merged
merged 30 commits into from
Jan 31, 2024

Conversation

fredrik-bakke
Copy link
Collaborator

@fredrik-bakke fredrik-bakke commented Jan 28, 2024

This is the follow-up PR to #1009.

Summary

  • Transport-split type families are type families B such that equiv-tr B admits fiberwise sections
    • This notion is equivalent to univalent type families by a corollary of the fundamental theorem of identity types
  • Some infrastructure and basic lemmas for univalent type families
  • Preunivalent type families are type families B such that equiv-tr B is a fiberwise embedding
    • 3-for-2 for preunivalent type families using the preunivalence axiom
    • Some other infrastructure
  • Fin is preunivalent

Future work

  • Closure properties for univalent and preunivalent type families

Co-authored-by: Egbert Rijke [email protected]

@fredrik-bakke
Copy link
Collaborator Author

The terminology "equivalence injective type family" is still a bit subobtimal, because it is so close to suggesting the definition of injective type family that I'm not really fond of. So I've been thinking about whether there could be more interesting concepts lurking under here.

The family of maps in equivalence injective type families are converse to the transport maps tr B : (x = y) -> (B x <~> B y). The main example of equivalence injective type families is the family Fin, but for Fin something more holds: this map has a section. So how about abolishing any suggestion of "injective type family" altogether, and call these type families transport-split?

In other words, a type family B would be called transport-split if the map tr B : (x = y) -> (B x <~> B y) has a section for each x y : A. In particular, if a type family is transport split, we have a family of maps (B x <~> B y) -> (x = y) indexed by x y : A, and moreover, this family of maps sends id-equiv (B x) to refl.

Originally posted by @EgbertRijke in #1009 (comment)

What you're saying here seems to suggest that Fin is a univalent type family, i.e. that (n = m) ≃ (Fin n ≃ Fin m), since every transport-split type family is univalent. However, this cannot be true as (n = m) is a proposition while (Fin n ≃ Fin m) is not for n = m > 1. Instead, is-equivalence-injective-Fin is only a retraction of equiv-tr, and not a section.

@EgbertRijke
Copy link
Collaborator

The terminology "equivalence injective type family" is still a bit subobtimal, because it is so close to suggesting the definition of injective type family that I'm not really fond of. So I've been thinking about whether there could be more interesting concepts lurking under here.
The family of maps in equivalence injective type families are converse to the transport maps tr B : (x = y) -> (B x <~> B y). The main example of equivalence injective type families is the family Fin, but for Fin something more holds: this map has a section. So how about abolishing any suggestion of "injective type family" altogether, and call these type families transport-split?
In other words, a type family B would be called transport-split if the map tr B : (x = y) -> (B x <~> B y) has a section for each x y : A. In particular, if a type family is transport split, we have a family of maps (B x <~> B y) -> (x = y) indexed by x y : A, and moreover, this family of maps sends id-equiv (B x) to refl.

Originally posted by @EgbertRijke in #1009 (comment)

What you're saying here seems to suggest that Fin is a univalent type family, i.e. that (n = m) ≃ (Fin n ≃ Fin m), since every transport-split type family is univalent. However, this cannot be true as (n = m) is a proposition while (Fin n ≃ Fin m) is not for n = m > 1. Instead, is-equivalence-injective-Fin is only a retraction of equiv-tr, and not a section.

Oh! fundamental-theorem-id-section worked? I deleted that comment because I made it late at night and thought I was making a mistake. That's nice!

I certainly did not intend to suggest that Fin is a univalent type family.

@fredrik-bakke
Copy link
Collaborator Author

Oh! fundamental-theorem-id-section worked? I deleted that comment because I made it late at night and thought I was making a mistake. That's nice!

Yes :) Luckily you couldn't hide the comment from me

@fredrik-bakke
Copy link
Collaborator Author

Sorry for the accusatory tone of my message. I just wanted to clarify as I was confused for a bit. This begs the question if we should care about type families such that equiv-tr B admits retractions however, which is equivalent to your observation that is-equivalence-injective-Fin refl = id-equiv I believe

@EgbertRijke
Copy link
Collaborator

Sorry for the accusatory tone of my message. I just wanted to clarify as I was confused for a bit. This begs the question if we should care about type families such that equiv-tr B admits retractions however, which is equivalent to your observation that is-equivalence-injective-Fin refl = id-equiv I believe

I see, yes I must have misspoken when I said section/retraction and perhaps I meant the other. I'm glad you were able to sort it out, and the proof that transport-split families are univalent is certainly worthy of being recorded in the library.

@fredrik-bakke
Copy link
Collaborator Author

fredrik-bakke commented Jan 30, 2024

Here's something I think may be possible to prove using preunivalence without using univalence: type-Set is a preunivalent type family.

@fredrik-bakke fredrik-bakke changed the title Transport-split type families Transport-split and preunivalent type families Jan 30, 2024
@fredrik-bakke
Copy link
Collaborator Author

Here's something I think may be possible to prove using preunivalence without using univalence: type-Set is a preunivalent type family.

Okay, that was too easy. I bet it can be done without univalence or preunivalence. Anyway, I'll leave that for another time.

@fredrik-bakke
Copy link
Collaborator Author

fredrik-bakke commented Jan 30, 2024

Alright, I'm opening this PR up for review now. I believe you should have co-authorship over this PR, Egbert, given the ideas you contributed to it. Thank you for that!

@fredrik-bakke fredrik-bakke marked this pull request as ready for review January 30, 2024 18:28
Copy link
Collaborator

@EgbertRijke EgbertRijke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a PR of the highest quality! Thank you Fredrik!

@fredrik-bakke
Copy link
Collaborator Author

Thank you for the generous words! I believe I've resolved all of your comments now.

@EgbertRijke EgbertRijke enabled auto-merge (squash) January 30, 2024 23:50
@EgbertRijke
Copy link
Collaborator

Thank you for including me as a coauthor btw!

@EgbertRijke EgbertRijke merged commit 302154e into UniMath:master Jan 31, 2024
4 checks passed
@fredrik-bakke fredrik-bakke deleted the transport-split branch January 31, 2024 07:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants