We present a live coding system that bridges constraint logic programming with data-centric reactivity. Relations are treated as tables. A module is a table (or sheet of tables) grouped by columns. We enable speculative what-if analysis by locally overriding facts.
Facts may be associated values and constraints. Aggregation operators, such as sums, specify a value by folding over unifying substitutions. Constraints propagate among related facts limiting satisfiable domains. When a domain becomes empty, provenance tracking provides conflict maintenance and resolution.
Music by Kimiko Ishizaka http://www.welltemperedclavier.org/.