Skip to content

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
@mattam82 mattam82 deleted the lazy-force branch February 20, 2024 12:50
mattam82 added a commit that referenced this pull request May 22, 2024
* Add tLazy and tForce constructors

With no evaluation semantics yet. Use them in ECoInductiveToInductive to allow efficient (unverified) implementation of cofixpoints in target languages.

* Install archive file for static linking
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