If A and B are classes with a @proposition annotation, then we may want to be able to write a constraint like...
e = Encoding()
@proposition
class A:
pass
@proposition
class B:
pass
b = B()
e.add_constraint(~A | b)
Interpretation would be that every instance of A is substituted in for a new version of this constraint at compile time.
Probably needs some advanced handling of the operator overloading (so that the class is considered an nnf.Var object, and a regular nnf constraint is built no matter what the arguments are).
Note that this is a far more advanced version of #87
If
AandBare classes with a@propositionannotation, then we may want to be able to write a constraint like...Interpretation would be that every instance of
Ais substituted in for a new version of this constraint at compile time.Probably needs some advanced handling of the operator overloading (so that the class is considered an
nnf.Varobject, and a regularnnfconstraint is built no matter what the arguments are).Note that this is a far more advanced version of #87