My first attempt looked like this: Make 26 terms for whether or not each person had soup, call the set
ate_soup. Constrain the terms with
window(ate_soup, 7, 7). That means 26 C 8 clauses will be generated, or a whopping 1.5 million clauses for just that one little aspect of a puzzle.