Architectural Changes & Example Programs #186
-
Hello! @favonia kindly took some time recently to help me understand the project. They suggested that this is a good place to communicate. I was surprised to find that the type theory is no longer "computational" in the sense of NuPRL and RedPRL! I'm sure it will take me some time to understand the problems you encountered there. If there is anything written down about the motivation for that change, that would be helpful. For my own understanding, I will try to write at least a few example programs, and understand the existing ones. Can I suggest that if anyone has an illustrative example in mind that isn't already included, they might briefly describe it here, so I can try writing it? I assume you want to focus on cubical-specific features in the examples. I could also try adding some explanatory commentary to the existing examples to make them a bit more readable, though I'm not confident I'll be able to understand them all without help. Thanks |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 5 replies
-
Hi @outerpassage, thanks for your interest! I will try to be as transparent as possible about the reasons for the different architecture; we had both semantic and syntactic reasons for switching from the PRL architecture:
My experience with PRL-style formalisms is that one expects to use (e.g.) equality reflection to make a very hard problem very easy, but what happens in practice is that you are mostly making a lot of use of equality reflection in order to painstakingly convince the system that These two 'reasons' come together in the following place: PRL systems usually emphasize (and take advantage of) various untyped principles that are true only in computational/realizability-style models, and these untyped principles let you do some pretty cool stuff. But we were surprised to learn that most interesting untyped principles of these kind are not true in the computational/realizability-style model of cubical type theory, hence one could not get much mileage out of them even if one was not interested in mathematical applications. For these reasons, we switched to type-based techniques including normalization-by-evaluation and bidirectional elaboration, a style that has been shown to work very nicely for everything from logical frameworks to very powerful type theories. So what do we retain from the PRL experience? Our implementation is still based on proof-refinement, just like Nuprl/RedPRL, and we use tactics as an organizing principle for our elaborator. On the semantic side, we retain the computational interpretation which we find to be of both philosophical and practical importance; on the syntactic side, we actually have a stronger computational interpretation in the sense of supporting computation with open terms in a way that is sound and complete for judgmental equality, rather than only computation with closed terms. (See the recent result of Carlo and me: http://www.jonmsterling.com/pdfs/cubical-norm.pdf) There is another thing we lost, which is the presence of exact equality pretypes that Nuprl/RedPRL had (meaning, equality types with equality reflection). These are a very important aspect of our current understanding of higher-dimensional type theory, because they enable the solution to certain coherence problems involved in the construction of homotopy-coherent notions such as higher-categories, etc. The downside is that they disrupt automation of typechecking; while some researchers are working to develop better typechecking heuristics in the presence of exact equality types (e.g. the recent work of Bauer & Petkovic), we are taking the view for now that various special cases of equality reflection can be considered that would do what is needed without disrupting the properties of the system like full equality reflection would; in fact, cubical type theory itself and its interval and cofibration machinery can be seen as introducing some special cases of equality reflection in a controlled way, just as the |
Beta Was this translation helpful? Give feedback.
-
Having said all that, it must be understood that the computational formulation is a realization of Brouwer’s conception of truth based on computation. And, as demonstrated amply in NuPRL, there are concepts that only make sense, or are only known to make sense, with respect to the computational meaning, types as specifications. It is true that there are tensions with the cubical apparatus, but then again the computational applications of cubes are relatively thin on the ground. So we shall see how things shake out. For now, there are two views of type theory, a form of algebra, and a form of program specification/verification. Both are interesting and important, and it is clear that the cubical methods are best-suited to the algebraic setup.
Bob
(c) Robert Harper. All Rights Reserved.
…On Mar 18, 2021, 22:23 -0400, River Dillon ***@***.***>, wrote:
Ah, thanks, that's very clear. We can leave the rest of the iceberg for another time.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
Beta Was this translation helpful? Give feedback.
-
I think computational spaces are an interesting topic that is worthy of study in its own right! In the same sense that people study what mathematics looks like under realizability.
…On Fri, Mar 19, 2021, at 7:14 PM, River Dillon wrote:
I'm wondering whether the tensions that @jonsterling
<https://github.com/jonsterling> described are fundamental, in the
sense that they will appear in *any* univalent computational
formulation with HITs. Not that I have any alternate presentations in
mind, but I imagine that the cubical style with syntactic intervals
likely isn't the only possible approach.
It seems to me that the semantic issue (1) is serious if you require
that types be interpreted exactly as traditional spaces, but shouldn't
mean that theorems about "computational spaces" aren't interesting in
their own right. S1 in a computational setting might not be exactly the
circle you're used to, but it's still at least "circle-like" in some
sense.
Forgive me for presumably retreading old ground here.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#186 (reply in thread)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AAANOEJJAFEUSPGS4KG35VDTEPLETANCNFSM4ZLXSGIA>.
|
Beta Was this translation helpful? Give feedback.
Hi @outerpassage, thanks for your interest!
I will try to be as transparent as possible about the reasons for the different architecture; we had both semantic and syntactic reasons for switching from the PRL architecture:
The semantic reason is that PRL-style formalisms tend to have only realizability-style models, but as our research interests have evolved, it has become important for us that theorems proved in one of our tools have useful consequences in ordinary mathematics too, in addition to the computational models. In particular, we wanted it to be possible to use our tools to prove theorems about actual spaces in the traditional sense so that our research can make contact with t…