MarkovJunior is a probabilistic programming language where programs are combinations of rewrite rules and inference is performed via constraint propagation. MarkovJunior is named after mathematician Andrey Andreyevich Markov, who defined and studied what is now called Markov algorithms. In its basic form, a MarkovJunior program is an ordered list of rewrite rules. For example, MazeBacktracker (animation on the left below) is a list of 2 rewrite rules:
RBB=GGRor "replace red-black-black with green-green-red".
RGG=WWRor "replace red-green-green with white-white-red".
Very cool interactive examples; I don't understand it completely, but it helps in gaining a feel for the system at the very least.