Adding a New Reduction#

TODO. Sorry, this page is still in development. An example reduction can be seen here.

In general a reduction will subclass the Reduction base class and implement the method reduce_property(self, phi: Expression) -> Iterator[Property], which takes in a property expression and returns an iterator of Property objects. A reduction will likely also require a custom Property type which must implement validate_counter_example(self, cex: Any) -> Tuple[bool, Optional[str]].