Closed
Description
A type can carry its own set of constraints. Example:
type ordered_pair = (int,int) : lt(*._0, *._1);
Implicitly, after every initialization of a slot s of type ordered_pair, there
should be a "check lt(s._0, s._1);", and after every copy statement there
should be a "prove lt(s._0, s._1)" statement, so that the implied constraints
become enforced at initialization time and preserved during writes.
This doesn't literally require adding statements -- though that's one approach
-- but it needs to mimic the effect one way or another. Currently such
constraints are simply ignored.
Metadata
Metadata
Assignees
Labels
No labels