int(const(true)). 
int(const(false)) :- fail. 
int(and(X,Y)) :- int(X), int(Y). 
int(or(X,Y)) :- int(X) ; nint(X),int(Y). 
int(not(X)) :- nint(X).

nint(const(false)). 
nint(const(true)) :- fail. 
nint(and(X,Y)) :- nint(X) ; int(X),nint(Y). 
nint(or(X,Y)) :- nint(X),nint(Y). 
nint(not(X)) :- int(X). 



% T1 = const(X), T2 = or(T1,T1), T3 = and(T2,T2), T4 = and(T3,T3), int(T4)
