srdatalog.ir.hir.semi_naive¶
HIR Pass 3: Semi-Naive Variant Generation.
Populates base_variants / recursive_variants on each HirStratum.
For each stratum:
Non-recursive: one HirRuleVariant per rule (base, delta_idx=-1).
Recursive: for each rule, one DELTA variant per body clause whose relation is an SCC member. The variant pins
delta_idxto that clause index and setsclause_versions[idx] = DELTA(others FULL).
Mirrors generateVariants in src/srdatalog/hir/semi_naive.nim.
Negations are NOT delta candidates (only positive occurrences of SCC members get incrementalized).
Module Contents¶
Classes¶
Pipeline wrapper. Runs right after stratify (order=100) so downstream HIR transforms that care about variants can assume they exist. |
Functions¶
Indices of positive body clauses (Atoms) whose relation is in scc_members. |
|
Populate base_variants and recursive_variants per stratum. Mutates and returns the same HirProgram. |
API¶
- class srdatalog.ir.hir.semi_naive.SemiNaiveVariantPass[source]¶
Pipeline wrapper. Runs right after stratify (order=100) so downstream HIR transforms that care about variants can assume they exist.
- info¶
‘PassInfo(…)’
- srdatalog.ir.hir.semi_naive.create_base_variant(rule: srdatalog.dsl.Rule) srdatalog.ir.hir.types.HirRuleVariant[source]¶
- srdatalog.ir.hir.semi_naive.create_delta_variant(rule: srdatalog.dsl.Rule, delta_idx: int) srdatalog.ir.hir.types.HirRuleVariant[source]¶
- srdatalog.ir.hir.semi_naive.find_scc_clause_indices(rule: srdatalog.dsl.Rule, scc_members: set[str]) list[int][source]¶
Indices of positive body clauses (Atoms) whose relation is in scc_members.
- srdatalog.ir.hir.semi_naive.generate_variants(hir: srdatalog.ir.hir.types.HirProgram) srdatalog.ir.hir.types.HirProgram[source]¶
Populate base_variants and recursive_variants per stratum. Mutates and returns the same HirProgram.