asdi 0.2.5

Another Simplistic Datalog Implementation (in Rust)
Documentation
@startuml

!include ../model/options.plantuml

class asdi::edb::Predicate #white
hide "asdi::edb::Predicate" members

class asdi::Program #white
hide "asdi::Program" members

namespace asdi::idb::eval {
    class PrecedenceGraph {
        from(program: &Program) : Self
        == paths ==
        edges() : Iterator<PrecedenceNode>
        sources() : HashSet<Predicate>
        targets() : HashSet<Predicate>
        directly_reachable_from(source: &Predicate) : HashSet<Predicate>
        reachable_from(source: &Predicate) : HashSet<Predicate>
        == predicates ==
        is_level_zero(source: &Predicate) : bool
        is_recursive() : bool
        is_positive() : bool
        is_semi_positive() : bool
        is_stratifiable() : bool
    }

    class PrecedenceNode {
        source() : Predicate
        target() : Predicate
        == predicates ==
        is_negative_target() : bool
        is_extensional_target() : bool
    }

    PrecedenceGraph *-> "*" PrecedenceNode
    PrecedenceGraph ..> asdi::edb::Predicate
    PrecedenceGraph ..> asdi::Program

    PrecedenceNode ..> asdi::edb::Predicate
}

@enduml