Mündler, Niels and He, Jingxuan and Wang, Hao and Sen, Koushik and Song, Dawn and Vechev, Martin · 2025
Field Notes
Readings & Marginalia
Resources we keep returning to, and the notes we leave in the margins. Filtered by topic. Sometimes a bit blurry.
Resources
Baez, John C. · 2024
Willard, Brandon T. and Louf, Rémi · 2023
CIA · 1985
Martin-Löf, Per · 1984
Wittgenstein, Ludwig · 1921
Notes
Generalized typing in Aufbau
The main interest of AUFBAU, much like it's inspiration and subset implementation Outlines is generality. As Mündler and his colleagues demonstrated it in their paper, writting constraint gen for a particular language is not that hard, though probably a bit tedious.
The end goal, in our view is to have a strong enough implementation so that we can declare proof-checkers in the aufbau grammar spec. This would be huge. First it would allow us to have constraint proof-search, but in it of itselft, it is also a very powerful semantic statement.
However, we lack a truly general definition of what a constraint is, and since most of our semantic constraints are typing constraint, what is a type ? Every formal system will have its answer, and we could go implementing them one by one, with reduction rules, and all the machinery, but it doesnt feel right.
Our first version used a sort of compormise, where a type language live in parralel with the EBNF defined grammar, but they can unify when needed with pattern matching and sort of substitution rules.
It works, but it's not very satisfying, and this is why we are currently working on new definitions.
The most generalizable definition
First, a type posseses some sort of relation to syntactic elements. It has an input string representation, that might be reducible and non-canonical but that is equivalent to its canonical form. Thanks to the CG-grammar, the parser can trasnform any input string into a syntactic tree.
Is is over this tree form that type chekcing operates, with three atomic operations:
- Shape unification: \(A \to B \equiv \top \to B \equiv A \to ( B )\)
- Ascription: \(x: \tau\)
- Normalization: \((A \to B)A \implies A\)
Shape unfication is generalized and corresponds to hole resolution + the application of some elaboration rules Ascription is just a constraint propagation mecanisms Normalization works with grammar specific normalization rules
TODO
This is a first step towards fully general stuff. Normalizaiton needq a lot of expansion to be abe to support complex type systems. byt the skeleton is good.
The ladder building formal systems
In 6.54 of the Tractatus Wittgenstein writes:
My propositions are elucidatory in this way: he who understands
me finally recognizes them as senseless, when he has climbed out
through them, on them, over them. (He must so to speak throw
away the ladder, after he has climbed up on it.)
This strangely relates to the process of building a formal system. We always have to work with a language that is different from the one we want to talk about. We always have to use a more permissive language as the constructor of the system, and use concepts that have, by all accounts no meaning that interests us the the system we are building. I think this is echoed by model theory, and incompletness theorems, but this aspects deserves more thought.
We always have to use a ladder. Natural language is the most powerful ladder, and we can describe any system in it. In other words, every logical construct relies on a part of mystical in it's justification (in the sense of 6.522). This mustn't be considered a fatality, but rahter kept in mind as part of the process. This approach is core to [USI's formal systems work]{AUF-02}.
Nothing to see.