Conversation
That's less flexible, since if we add a new compiler pass, we must update certifier in the same PR. How about allowing each AST in |
|
I added hints in #7575, which you should incorporate into your approach. You may want to wait till my PR is merged. |
That's intentional because the existing structure allows certain problems, like the compiler forgetting to dump a pass, dumping passes incorrectly (e.g. We're basically proving We could alternatively do equality checking on outputs/inputs in the current trace, but it would slow down the certifier unnecessarily. The dumping mechanism is a trusted component, so I think they should be as correct-by-construction as possible.
What about an additional constructor |
Sounds reasonable. |
This simplifies the setup of
VerifiedCompilation.lagdaand will help with future certifier changes.RelationOfandcertifyfunctions it is now clear how passes are mapped to their corresponding translation relations and decision procedures/checkersDecider,Checker,Certifiersynonyms (Deciderwas calledMatchOrCEbefore)Trace Atype, which represents the compiler trace without the duplicate terms (it now uses the output of previous passes as input of the next, seetoTrace). We should probably dump this same structure from the Haskell side.VerifiedCompilation.NotImplemented, a trivial translation relation which can be used as placeholder for unfinished translation relations