Intro
I'll start out using this blog as a progress tracker, and maybe eventually I'll have the go to write some exposition that may be helpful to others. For now, expect self-indulgent omission of details!
By way of introduction, though, I ought to explain some of what I'm currently doing so that future updates will have some context.
By way of introduction, though, I ought to explain some of what I'm currently doing so that future updates will have some context.
My primary research project is formalizing the metatheory of LF in Twelf (colloquially, "LFinLF," because LF is the underlying representation theory of Twelf). What I am ultimately proving is decidability of typechecking for a dependent type theory; how I am proving it is syntactically, without logical relations, via translation to syntactic canonical forms. Chantal Keller presented essentially the simply-typed case of what I am doing during one of the ICFP workshops this past fall, with two significant departures: for one, her canonical forms presentation was given in spine form (a more focussing-inspired syntactic separation wherein applications consist of a head and a list of arguments that make it fully-applied), and for two, her formalization was in Agda, making the proof methodology quite a bit different (in terms of representing contexts and hypotheticals).
You can think of this proof as having three parts:
1) Metatheory for the canonical forms language. Because standard substitution (of the sort LF would give us for free) doesn't preserve canonical forms, we judgmentally define hereditary substitution, which means actually proving a substitution theorem. I finished this my first year in grad school.
2) Completeness of the translation into canonical forms. Definitionally equivalent things in LF should translate to syntactically identical canonical forms, and analogous judgments should hold of each. I finished this my second year.
3) Soundness of the translation into canonical forms: if two LF terms translate to the same canonical form, then they are definitionally equivalent. This amounts to defining a back-translation -- really just a transliteration -- from canonical forms to LF, and proving that a term will always round-trip (translate, then transliterate) to an equivalent term. This is the proof that has been holding me up for about a year, but we had a breakthrough last month which I hope to post about soon.
Apart from that, I've also been thinking a bit about logic programming with mechanisms for linearity plus contingent reasoning, so a post about that should go on the queue as well.
You can think of this proof as having three parts:
1) Metatheory for the canonical forms language. Because standard substitution (of the sort LF would give us for free) doesn't preserve canonical forms, we judgmentally define hereditary substitution, which means actually proving a substitution theorem. I finished this my first year in grad school.
2) Completeness of the translation into canonical forms. Definitionally equivalent things in LF should translate to syntactically identical canonical forms, and analogous judgments should hold of each. I finished this my second year.
3) Soundness of the translation into canonical forms: if two LF terms translate to the same canonical form, then they are definitionally equivalent. This amounts to defining a back-translation -- really just a transliteration -- from canonical forms to LF, and proving that a term will always round-trip (translate, then transliterate) to an equivalent term. This is the proof that has been holding me up for about a year, but we had a breakthrough last month which I hope to post about soon.
Apart from that, I've also been thinking a bit about logic programming with mechanisms for linearity plus contingent reasoning, so a post about that should go on the queue as well.
Comments
Post a Comment