Combinator Design and Implementation

Internally, the Combinators use custom trace types.

Gen.VectorTraceType
VectorTrace <: Trace

U is the type of the subtrace, R is the return value type for the kernel

source
Gen.update_recurse_mergeFunction
update_recurse_merge(prev_choices::ChoiceMap, choices::ChoiceMap)

Returns choices that are in constraints, merged with all choices in the previous trace that do not have the same address as some choice in the constraints."

source
Gen.update_discardFunction
update_discard(prev_choices::ChoiceMap, choices::ChoiceMap, new_choices::ChoiceMap)

Returns choices from previous trace that:

  1. have an address which does not appear in the new trace.
  2. have an address which does appear in the constraints.
source