Closed brianhuffman closed 6 years ago
Turns out it's worse than I thought: The expression doesn't even need to depend on the module type parameter. In the following module, either :prove yes
, yes
, or :check yes
causes a panic that exits the REPL.
module issue where
parameter
type foo : #
yes : Bit
yes = True
Yep, proving in the context of parameterized modules is not implemented at all.
The main issue is that we can't currently represent symbolic types (i.e., all evaluation is expected to result in a concrete type). There's probably a fair bit of work to get this to work.
In the mean time, we should probably issue some more useful message (e.g. "prove is not supported for parameterized modules"), rather than panicking.
I don't think it is worth the effort to make things work in parameterized modules, that do not actually depend on the parameters work, though.
I'll have a go at fixing this.
Now running either
:prove bad
ornope
at the REPL causes a panic: