Remove deferred builtin applications from the specification - #7928
Merged
Conversation
ana-pantilie
approved these changes
Aug 27, 2026
ana-pantilie
left a comment
Contributor
There was a problem hiding this comment.
I think this looks good, but I am not that familiar with the part of the spec that got removed, so I might also have missed something.
Contributor
|
I have wondered before why the sequence of values was there in the spec. So |
basetunnel
approved these changes
Aug 27, 2026
Contributor
Author
Correct. We put them in then took them back out. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes https://github.com/IntersectMBO/plutus-private/issues/1685.
New builtins
caseListandcaseDatawere added to UPLC in this PR in October 2024, but then we decided to extend UPLC'scasecostructor to case on built-in values instead and the builtins were removed again in this PR in July 2025.Correspondingly I added
caseListandcaseDatato the specification in this PR and removed them again in this PR. However, in the first PR I added "deferred applications" (HeadSpine in the implementation) which allowed a builtin to return an object of the form (v|v1,...,vn) (all of the v's values), which would then be evaluated as v applied to v1,..., vn by the CEK machine. When I removedcaseListandcaseDataI left these deferred applications in the specification in case we needed them again later. However I'm now adding the new form of casing to the specification and that needs deferred applications of the form (e|e1, ..., en), where the e's are expressions, not values, and it's just confusing to keep the old deferred applications. I'm removing them in this PR separately from adding the new ones so that we can see what was removed in case we ever need it again.I've added a rendered version of the PDF below. That may not be very helpful though: it's difficult to tell whether removing a bunch of stuff leaves the remainder of the specification in a sensible state (I think it does, but I could have missed something).
plutus-core-specification.pdf