Skip to main content

evaluate_fixpoint

Function evaluate_fixpoint 

Source
pub fn evaluate_fixpoint(
    rules: &[Rule],
    base_relations: &RefRelationStore,
    target_predicate: &str,
    order: &dyn VariableOrder,
    config: &FixpointConfig,
) -> Result<RefRelation, FixpointError>
Expand description

Evaluate a recursive set of rules to a fixpoint over a single target predicate.

Every supplied rule must have its head predicate equal to target_predicate. base_relations carries any non-target predicates referenced in rule bodies (e.g. edge for transitive closure, parent for Same Generation). The target predicate must NOT appear in base_relations; it is constructed by the fixpoint and shadowing would be ambiguous.

Returns the converged target relation. Set semantics: rows are sorted lexicographically and deduplicated. Same input → same output. Rule order in the input slice does not affect the result (locked by test).