Parallel Determinized Chase #
The backbone of the (D/R)MFA computation is chase-like procedure combines all trigger results (for the different disjuncts) into a single fact set, thereby treating disjunctions as conjunctions. This is what we mean by "determinized". Furthermore, all active triggers are applied at once in a single step. This is what we mean by "parallel". The parallelDeterminizedChase will later be passed the MfaObsoletenessConditions to define all the versions MFA/DMFA/RMFA. However, the definitions work with any LaxObsoletenessCondition. As for ChaseBranch and ChaseDerivation, the parallelDeterminizedChase is a more strict version of the parallelDeterminizedDerivation where the former forces the first fact set to be a Database (as part of a KnowledgeBase), while the latter accepts any FactSet.
parallelDeterminizedDerivation #
We start with the more general definition, allowing to start from arbitrary FactSets.
One step of the parallelDeterminizedDerivation adds the results of all active triggers to the previous fact set. The results for all disjuncts are combined in the procees. Activeness of the triggers is with respect to a given LaxObsoletenessCondition.
Equations
Instances For
The parallelDeterminizedDerivation simply iterates the parallelDeterminizedDerivation_step on an initial FactSet using the InfiniteList.iterate function.
Equations
- parallelDeterminizedDerivation rs obs fs = InfiniteList.iterate fs (parallelDeterminizedDerivation_step rs obs)
Instances For
The parallelDeterminizedDerivation_result is the union of all FactSets in the derivation.
Equations
Instances For
The parallelDeterminizedDerivation_head is the starting FactSet.
The head of the tail (i.e. the next element) results from performing one parallelDeterminizedDerivation_step on the starting FactSet.
Performing a parallelDeterminizedDerivation_step on a member again yields a member.
Each suffix of a parallelDeterminizedDerivation is equal to the parallelDeterminizedDerivation that starts on the first element of the suffix.
This recursor allows proving properties of elements (i.e. FactSets with a membership proof) in a parallelDeterminizedDerivation and can be used with the induction tactic.
The starting fact set is a subset of each derivation member,
Each two FactSets in a derivation must subsumes each other in (at least) one of two possible directions.
All predicates that occur in the derivation come from the rules or the starting fact set.
All constants that occur in the derivation come from the rule heads or the starting fact set.
All function symbols that occur in the derivation come from the rule set's skolem functions or the starting fact set.
All predicates in the derivation result come from the rules or the starting fact set.
All constants in the derivation result come from the rule heads or the starting fact set.
All function symbols in the derivation result come from the rule set's skolem functions or the starting fact set.
parallelDeterminizedChase #
A parallelDeterminizedChase fixes a KnowledgeBase and start a parallelDeterminizedDerivation on the knowledge base's database.
Some of the above theorems thereby can be refined. For example, function symbols can now only be skolem functions as the database only has constants as terms.
A parallelDeterminizedChase is a special parallelDeterminizedDerivation starting on a database from a KnowledgeBase.
Equations
- parallelDeterminizedChase kb obs = parallelDeterminizedDerivation kb.rules obs kb.db.toFactSet.val
Instances For
The parallelDeterminizedChase_result is simply the result of the underlying derivation.
Equations
- parallelDeterminizedChase_result kb obs = parallelDeterminizedDerivation_result kb.rules obs kb.db.toFactSet.val
Instances For
All constants in the chase come from the rule heads or the database.
All function symbols in the chase come from the rule set's skolem functions.
All constants in the chase result come from the rule heads or the database.
All function symbols in the chase result come from the rule set's skolem functions.