@startuml
!include options.plantuml
class asdi::Collection
hide "asdi::Collection" members
class asdi::Program
hide "asdi::Program" members
interface asdi::ProgramCore
hide "asdi::ProgramCore" members
interface asdi::idb::RuleSet
hide "asdi::idb::RuleSet" members
class asdi::idb::eval::StratifiedEvaluator
hide "asdi::idb::eval::StratifiedEvaluator" members
namespace asdi::idb::eval::strata {
class SubProgram
class PrecedenceGraph
class PrecedenceNode {
negative: bool
extensional: bool
}
class StratifiedProgram
PrecedenceGraph *-down-> "*" PrecedenceNode
PrecedenceNode o-> "source" asdi::edb::Predicate
PrecedenceNode o-> "target" asdi::edb::Predicate
StratifiedProgram ..|> "<SubProgram>" asdi::Collection
StratifiedProgram *-> "*" SubProgram
StratifiedProgram <.left. asdi::idb::eval::StratifiedEvaluator
StratifiedProgram ..> PrecedenceGraph
SubProgram o-> asdi::Program
SubProgram *-> "strata" asdi::idb::RuleSet
SubProgram ..|> asdi::ProgramCore
}
@enduml