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

Semantify the proofs of type inversion #48

Merged
merged 3 commits into from
Sep 15, 2023
Merged

Conversation

ppedrot
Copy link
Contributor

@ppedrot ppedrot commented Sep 14, 2023

We move the generation lemma after the fundamental lemma and prove the various type inversions through the latter rather than the former. This makes the development more robust to tweaks to the declarative typing rules.

…sInj.

We do not use it before and both from the point of view of practicality and
theoretical considerations, it is easier to postpone it after the availability
of the fundamental lemma.
We leverage the knowledge that convertibility implies well-typedness instead
of performing syntactic inversions.
apply TypeRefl, id_ty_inj in Hty as [HA HB].
prod_splitter; boundary.
Qed.

Lemma termGen' Γ t A :
Copy link
Member

Choose a reason for hiding this comment

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

I guess you did not want to prove termGen' directly, rename it termGen and grep the whole dev? That would probably be nicer in the long run…

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not sure how to easily prove termGen directly, actually. I'd like to avoid doing an induction on the typing derivation and reason exclusively from the logical relation but I don't see how to do that. But in any case at some point we should indeed perform a renaming (maybe not now).

Copy link
Member

Choose a reason for hiding this comment

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

What I meant is removing the annoying equality case, which is only needed before you have boundaries (which let you show that if Γ |- t : A then Γ |- A ≅A and avoid that case).

@MevenBertrand MevenBertrand merged commit 5bc4a20 into master Sep 15, 2023
2 checks passed
@MevenBertrand MevenBertrand deleted the type-decl-inv-later branch September 15, 2023 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants