IntersectMBO / IntersectMBO/plutus
Specify the exact meaning of "pure" in the PIR optimizer
Open
Good first issue
Internal
Plutus IR
status: triaged
- Dominant language
- Haskell
- Stars
- 1.6k
- Forks
- 508
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 22
Description
We have that `PlutusIR.Purity.isPure` and its semantics seems to be underspecified. You can see how it causes confusion [here](https://github.com/input-output-hk/plutus/pull/5093#discussion_r1092117897) for example.
We need to properly specify the semantics of this function and the entire concept of purity. Ideally, even formalize it. Otherwise we may run into a situation where the PIR optimizer changes the behavior of the program potentially introducing a severe bug into the smart contract.
And do we need the same for UPLC?
Contributor guide
Assessment
This issue has not been assessed yet.