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

Implement tLazy and tForce in EAst #1058

Merged
merged 2 commits into from Feb 20, 2024
Merged

Implement tLazy and tForce in EAst #1058

merged 2 commits into from Feb 20, 2024

Conversation

mattam82
Copy link
Member

@mattam82 mattam82 commented Feb 20, 2024

This add new term constructors to map to lazy and force in ocaml/malfunction or more naive thunks in other targets.
This is now used in the unverified ECoInductiveToInductive phase. In coq-malfunction we can compile this to ocaml's implementation for an efficient implementation of coinductives and cofixpoints.

As these constructors are not produced by erasure, and we do NOT add evaluation rules for lazy/force, the correctness proofs do not change for the rest of the pipeline. It should just be considered unsafe to use lazy and force.

With no evaluation semantics yet. Use them in ECoInductiveToInductive to allow efficient (unverified) implementation of cofixpoints in target languages.
@mattam82 mattam82 merged commit 9e3e264 into coq-8.17 Feb 20, 2024
10 checks passed
@mattam82 mattam82 deleted the lazy-force branch February 20, 2024 12:50
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.

None yet

1 participant