pub enum Ineligible {
SkolemHead(String),
NotProjectable(String),
NotRangeRestricted(String),
ComputeCondition(String),
Flavoured(String),
FlavouredFact,
Equality,
NegatedGroup(String),
DependsOn(String),
RoleGap,
ArityClash,
AbstractionTyping,
}Expand description
Why a relation was NOT admitted for materialisation. Surfaced by
KnowledgeBase::materialization_report — without it a knowledge base cannot tell
whether it actually got the lookup, only that its query is still slow.
Variants§
SkolemHead(String)
A rule concluding it has a Skolem function surviving the event projection — the head invents a term, so saturation may not terminate.
NotProjectable(String)
A rule’s conditions do not partition into per-atom role groups (an event
variable is shared across groups, or appears in an individual position), so the
∃ev projection would change what the rule means.
NotRangeRestricted(String)
A head variable does not occur in a positive body literal, so the rule is not range-restricted and its saturation is not finite.
ComputeCondition(String)
A condition dispatches to the compute backend / arithmetic. Its domain is not enumerable, so its extension is not a finite set to saturate.
Flavoured(String)
A RULE TEMPLATE carries a tense or deontic flavour. Rule firing is
flavour-polymorphic (apply_tense_to_fact); v1 does not reproduce that.
FlavouredFact
A STORED FACT of this relation carries a flavour. Distinct from Flavoured so the
report cannot tell a reader to go looking for a past in a rule when it is in the
data (or vice versa) — different place, different repair.
Equality
The KB has a non-empty du-equivalence, so fact lookup is modulo union-find and
a plain set-membership test would miss equivalent variants.
NegatedGroup(String)
A ~P restrictor group that does not project cleanly.
DependsOn(String)
Admitted on its own merits, but something it depends on was not.
RoleGap
The stored facts skip a role place (rel_x1 present, rel_x2 missing), so there
is no whole surface atom to project.
ArityClash
Stored facts of this relation disagree on how many role places they carry, so there is no single surface arity to probe against.
AbstractionTyping
An abstraction TYPING relation (__abs_<hash> or the event(·) anchor beside it).
The projection eliminates the referent, so these carry no surface extension —
refused rather than omitted so they cannot be mistaken for pure EDB.
Implementations§
Trait Implementations§
Source§impl Clone for Ineligible
impl Clone for Ineligible
Source§fn clone(&self) -> Ineligible
fn clone(&self) -> Ineligible
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more