-- Definition of variables vars pt kt ot jt pc kc oc jc px kx ox jx ps ks os js; -- Drinking constraints a := (pt | pc) & (kc | kx) & (!ox) & (jc | js); -- Everybody drinks something b := (pt | pc | px | ps) & (kt | kc | kx | ks) & (ot | oc | ox | os) & (jt | jc | jx | js); -- Every bottle of beer is consumed by exactly one person t := (pt & !kt & !ot & !jt) | (!pt & kt & !ot & !jt) | (!pt & !kt & ot & !jt) | (!pt & !kt & !ot & jt); c := (pc & !kc & !oc & !jc) | (!pc & kc & !oc & !jc) | (!pc & !kc & oc & !jc) | (!pc & !kc & !oc & jc); x := (px & !kx & !ox & !jx) | (!px & kx & !ox & !jx) | (!px & !kx & ox & !jx) | (!px & !kx & !ox & jx); s := (ps & !ks & !os & !js) | (!ps & ks & !os & !js) | (!ps & !ks & os & !js) | (!ps & !ks & !os & js); -- All constraints together schedule := a & b & t & c & x & s; show schedule;