@startuml
!include ../model/options.plantuml
interface asdi::Collection #white
hide "asdi::Collection" members
class asdi::Program #white
hide "asdi::Program" members
class asdi::edb::RelationSet #white
hide "asdi::edb::RelationSet" members
namespace asdi::idb::eval {
interface Evaluator {
inference(program: Program) : Result<RelationSet>
label() -> &str
}
class StratifiedEvaluator #lightgray
class StratifiedProgram {
from(program: &Program) : Result<Self>
}
StratifiedProgram ..|> "<SubProgram>" asdi::Collection
StratifiedProgram .up.> PrecedenceGraph
StratifiedEvaluator ..|> Evaluator
Evaluator ..> asdi::Program
Evaluator ..> asdi::edb::RelationSet
StratifiedEvaluator .down.> StratifiedProgram
}
@enduml