vars(P)={ my(v=List(),x); while(type(P)=="t_POL", x=variable(P); listput(v,x); P=subst(P,x,1) ); Vec(v) }; truthTable(P)={ my(var=vars(P),t,b); for(i=0,2^#var-1, t=eval(P); for(j=1,#var, b=bittest(i,j-1); t=subst(t,var[j],b); print1(b) ); print(!!t) ); }; truthTable("x+y") \\ OR truthTable("x*y") \\ AND