constraints transitiveClosure = literal : S {
forall
a2a1 a2a2 : AddProductToAddProduct
where
a2aOutput(a2a1) = a2aInput(a2a2)
-> exists
a2a : AddProductToAddProduct
where
a2aInput(a2a) = a2aInput(a2a1)
a2aOutput(a2a) = a2aOutput(a2a2)
}
constraints removeAddProductToAddProduct = literal : S {
forall
l2a : LoginToAddProduct
a1 a2 : AddProduct
a2a : AddProductToAddProduct
a2c : AddProductToCheckout
where
l2aOutput(l2a) = a1
a2aInput(a2a) = a1
a2aOutput(a2a) = a2
a2cInput(a2c) = a2
->
exists
l2a : LoginToAddProduct
a : AddProduct
a2c : AddProductToCheckout
where