Conversation
| , debug :: w ::: Bool <?> "Print verbose SMT output (default: False)" | ||
| } | ||
|
|
||
| | Lean { file :: w ::: Maybe String <?> "Path to file" |
There was a problem hiding this comment.
Indentation seems weird here (also in the Rocq case, but it wont let me do a suggestion)
| | Lean { file :: w ::: Maybe String <?> "Path to file" | |
| | Lean { file :: w ::: Maybe String <?> "Path to file" |
| , debug :: w ::: Bool <?> "Print verbose SMT output (default: False)" | ||
| } | ||
|
|
||
| | Lean { file :: w ::: Maybe String <?> "Path to file" |
There was a problem hiding this comment.
As a general remark for future work: we can consider factoring out commonalities in the interface for Rocq and Lean (e.g., have the specific prover be an option to a more general command).
tests/lean/amm/amm.act
Outdated
| @@ -0,0 +1,265 @@ | |||
| contract Amm | |||
There was a problem hiding this comment.
Perhaps we could use a symbolic link to the AMM so that it automatically stays up-to-date when we change it?
zoep
left a comment
There was a problem hiding this comment.
Very nice work! Just some minor remarks.
|
Looks good. There were some hypothesis that were left-over from before the factorization that was merged for Rocq, and their removal did not carry over. I also added some basic functionality to test the generated Lean files for compilation using |
lefterislazar
left a comment
There was a problem hiding this comment.
Everything looks good
|
Thanks for cleaning up the code Lefteris! |
This PR creates a backend for Lean theorem prover, similar to the Rocq backend.
It uses the same structure of the backend as
Rocq.hs, but adapted to Lean syntax inLean.hsThe summary of the main changes:
src/Act/Lean.hsthat generates the state transition system in Leanlib/Actlib.leanthat generates the act library for Lean, and it's accompanyinglakefile.tomltests/lean: the spec had to be changed from Rocq test case, becausetois a reserved word in Leandoc/src/lean.md