
Figure 10. ROBDD after restrict(0, x3 , B
After applying restrict (1, x3 , Bf ), f becomes, f [1/x3] = x1.y1 + x2.y3 + y3. The final ROBDD after restrict
(1,x3, Bf ) is shown in Figure 11.

Figure 11. ROBDD after restrict (1, x3 , Bf )
2.3 Exists on ORBDD
A Boolean function can be thought of as putting a constraint on the values of its argument variables. In other words, a Boolean function determines the possible values of the variables for which it is true. Sometimes we need to express relaxation of the constraint on a subset of variables. If we relax the constraint on some variable x of a Boolean function f , then f could be made true by putting x to 0 or to 1.
We write (∃xf ) for the Boolean function f with the constraint on x relaxed and it can be expressed as: ∃xf = f[0/x] + f[1/x] , i.e., there exists x on which the constraint is relaxed.
The exists algorithm can be implemented in terms of the algorithms apply and restrict as
∃xf=apply(+,restrict(0,x,Bf),restrict(1,x,Bf)).
restrict operation on an OBDD gives an OBDD. Similarly, apply operation also gives an OBDD as output. Thus, we obtain an OBDD as output after applying exists operation. We can get a reduced OBDD after applying Reduce operation on the thus obtained OBDD.
Now we illustrate exists algorithm on the OBDD f shown in Figure 8. Applying + over above two calculated restricts (Figure 10 and Figure 11), gives the OBDD for
∃x3f=apply(+,restrict(0,x3,Bf),restrict(1,x3,Bf)).
.
Figure 12. ROBDD after apply(+,restrict(0,x3,Bf),restrict(1,x3,Bf)).and reduction