Updated constructors and the creation of these classes.
With topological ordering, each invariant is only called once for each input variable during each commit/probe.
This can be exploited by removing the storage of values in the invariant and only using the variables committed and current values
Updated constructors and the creation of these classes. With topological ordering, each invariant is only called once for each input variable during each commit/probe. This can be exploited by removing the storage of values in the invariant and only using the variables committed and current values