IntersectMBO / plutus

The Plutus language implementation and tools
Apache License 2.0
1.57k stars 479 forks source link

Add verified compilation certification component #6413

Closed ana-pantilie closed 2 months ago

ana-pantilie commented 3 months ago

Fixes #5941

This PR implements the following:

Notes:

TODO in future PRs:

Try it out

To try this out, try:

cabal exec uplc -- example -s fibonacci | cabal exec uplc -- optimise --certify certificate-fibonacci

where certificate-fibonacci is the name of the .agda file that will be created with the proof object.

~This is currently providing a negative result (the certificate is no), even though force-delay is clearly being applied! But now we have an example on which to start debugging.~ As pointed out by @ramsay-t , the result is correct because it's applying optimisations which currently haven't been specified in the certifier!


Pre-submit checklist:

ana-pantilie commented 3 months ago

ci/eval is failing but I have no idea why, if anyone does please let me know. Nevertheless, this should be ready for review now.

bezirg commented 2 months ago

the uplc/plc/pir executables are no longer supported on Windows because they now depend on the metatheory; is this a problem?

@ana-pantilie Not atm