Skip to main content

try_reduce_case_a_recursive_epistemic_program

Function try_reduce_case_a_recursive_epistemic_program 

Source
pub fn try_reduce_case_a_recursive_epistemic_program(
    program: &Program,
) -> Result<Option<Program>>
Expand description

Validate an admissible recursive epistemic program and return its ordinary fixpoint reduction.

This is the recursive counterpart to compile_epistemic_gpu_execution. It first validates the complete authored source, removes only exact tuple-level circular FAEEL support, and classifies the remaining dependency graph. Predecessor and tuple- permutation edges therefore remain part of recursive-path selection. Surviving positive modal literals resolve to ordinary joins and execute through the existing least-fixpoint engine. Exact G91 compatibility cycles return a typed error because callers must execute the upper-bound/frozen-snapshot reduction returned by try_prepare_g91_compatibility_reduction.

Returns Ok(Some(reduced)) for an admitted recursive class, Ok(None) when the program has no dependency cycle (the caller should use the single-pass epistemic path), and a typed error for a recursive shape outside the supported fragment.