Skip to main content

RecursiveEpistemicClass

Enum RecursiveEpistemicClass 

Source
pub enum RecursiveEpistemicClass {
    NonRecursive,
    CaseA,
    CaseB,
}
Expand description

Structural classification of an epistemic program with respect to ordinary (non-modal) recursion.

Recursion through positive/negated body literals normally fails closed in an epistemic program because the single-pass world-view executor cannot iterate a fixpoint. The well-defined sub-fragment “Case A” — recursion lives in the ordinary predicate while every modal atom in a recursion-participating rule is a positive know/possible over an invariant relation (an EDB or a lower non-recursive, non-epistemic stratum) — is admitted instead: the modal atom’s extension is fixed independent of the recursion, so it can be resolved to its gated relation and the reduced ordinary program iterated by the existing recursive/semi-naive engine.

Variants§

§

NonRecursive

The program has no ordinary recursion among epistemic rules; the existing single-pass epistemic world-view executor handles it.

§

CaseA

Case A: ordinary recursion with every recursion-participating modal atom over an invariant relation. Routed to the ordinary recursive engine after a Case-A reduction (see reduce_case_a_epistemic_program_to_ordinary).

§

CaseB

Case B: ordinary recursion where at least one POSITIVE know/possible modal ranges over a NON-invariant relation that CO-EVOLVES with the recursion (the modal target sits in the recursive SCC, or transitively depends on it). The modal truth and the ordinary derivation are a single co-evolving founded least fixpoint: resolving each positive modal to its (now recursive) ordinary atom and iterating the existing semi-naive engine computes the FAEEL founded least fixpoint directly — unfounded self-support is excluded by construction (the least model of a positive program IS its founded model), so no separate foundedness drop is needed. Routed exactly like Case A through reduce_case_a_epistemic_program_to_ordinary and the ordinary recursive engine.

ADMISSION IS POLARITY/MODE-SCOPED (proved in classify_recursive_epistemic_program): a NEGATED modal over a non-invariant target is admitted when the reduced ordinary program is stratified; a genuine negation cycle is delegated to the high-level GPU-backed WFS alternating-fixpoint executor. A possible modal over a co-evolving target is admitted under FAEEL as the founded least fixpoint and under G91 as the compatibility self-support assumption.

Trait Implementations§

Source§

impl Clone for RecursiveEpistemicClass

Source§

fn clone(&self) -> RecursiveEpistemicClass

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RecursiveEpistemicClass

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RecursiveEpistemicClass

Source§

fn eq(&self, other: &RecursiveEpistemicClass) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for RecursiveEpistemicClass

Source§

impl StructuralPartialEq for RecursiveEpistemicClass

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,