The two alternatives examined are: real model space (RM) and failure model space (FM). The former uses native backtracking to always reach a real model. Every time a label is chosen from a list of labels corresponding to matching to unified clauses, a backtrack point is created. Upon failure, the remaining of the labels are tried. (Probabilistictly chosen among the untried ones). The latter does not create such backtrack points. In the event of a failure, the entire call should fail. This is caught by the top level, and the special model `__failure' is outputed. The MCMC will always chose not to jump in this case.
In passing lets note that non-probabilistic predicates need to be (near) deterministic for this to work. To allow more flexibility a special token can be generated instead of failure. This is similar to EM software, but it means that the transformed SLP clauses have to be aware of this special token.
We have tested RM and FM by sampling (
) independent samples
from the prior described in CICLOPS04 ([Angelopoulos CussensAngelopoulos Cussens2004]),
and by running
iterations of
the MCMC with a constant likelihood. An extra argument has been added to
which should be set to `rm' or 'fm'.