Earlier quoted context omitted.
The problem mentioned in the Gecode documentation example is different than the one I solve. In their case, they start with a WxH grid with known black square positions, and their model essentially answers the following question: "Given a crossword grid template and word list, does there exist a feasible assignment of words for the template?" I my case, the black square positions are unknown, so the question instead…
Thanks for the link. I think that your version of getting to a reified extensional constraint (your table method) looks like a reasonable way to do it, and probably works quite well for OR-Tools CP-SAT in particular. Another way to do it directly is to embed the control variable in the table, with a full set of all possible tuples for when the control variable is false. This, however, gives a large blow-up of the tab…
PS: I remember meeting you during the poster display at the CP2019 conference at UCONN. We discussed the difficulty of finding solutions for the Nmbr9 game because there were too many propagators. It's a small world!