Chase Termination #
We introduce basic definitions and theorems around chase termination.
A ChaseDerivation terminates if the underlying PossiblyInfiniteList is finite.
Equations
- cd.terminates = cd.branch.finite
Instances For
A TreeDerivation terminates if all of its branches terminate.
Equations
- td.terminates = ∀ (branch : ChaseDerivation obs rules), branch ∈ td.branches → branch.terminates
Instances For
A KnowledgeBase terminates if all of its ChaseTrees terminate.
Equations
- kb.terminates obs = ∀ (ct : ChaseTree obs kb), ct.terminates
Instances For
A RuleSet terminates if all knowledge bases featuring this rule set terminate.
Equations
- rs.terminates obs = ∀ (db : Database sig), { db := db, rules := rs }.terminates obs
Instances For
A ChaseDerivation terminates if and only if there is a maximal node according to the ≼ relation.
A ChaseBranch terminates if and only if its result is Set.finite.
A terminating TreeDerivation only has finitely many branches. We show this using König's Lemma.
A TreeDerivation with finitely many branches only has finitely many fact sets in its result.
A ChaseTree terminates if and only if each fact set in its result is finite.