Documentation

ExistentialRules.ChaseSequence.Termination.BacktrackingOfFacts.PreTrigger

Backtracking Facts for a PreTrigger #

We mainly lift the machinery around PreGroundTerm.backtrackFacts to PreTrigger. The interesting parts are PreTrigger.backtrackFacts and PreTrigger.backtrackFacts_eq_of_strong_equiv.

def PreTrigger.backtrackTrigger_for_functional_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] [GetFreshInhabitant sig.C] [Inhabited sig.C] (trg : PreTrigger sig) (forbidden_constants : List sig.C) (i : Nat) (lt : i < trg.rule.head.length) (v : sig.V) (v_exis : v trg.rule.existential_vars_for_head_disjunct i lt) :
Equations
Instances For
    theorem PreTrigger.backtrackTrigger_for_functional_term_equiv {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] [GetFreshInhabitant sig.C] [Inhabited sig.C] (trg : PreTrigger sig) (forbidden_constants : List sig.C) (i : Nat) (lt : i < trg.rule.head.length) (v : sig.V) (v_exis : v trg.rule.existential_vars_for_head_disjunct i lt) :
    (trg.backtrackTrigger_for_functional_term forbidden_constants i lt v v_exis).equiv trg

    When backtracking a trigger, the "affected" rules are either the rule of the trigger itself or a rule in one of the Skolem terms.

    Equations
    Instances For

      The affected rules of two PreTriggers are the same if they are strongly equivalent, i.e. they have the same rule and the same mapped body.

      When backtracking a trigger, we forbid the following from being used a fresh constants: all constants that occur in the mapped body or constants in affected_rules_for_backtracking.

      Equations
      Instances For

        The backtracking of a PreTrigger consists of its mapped body and the backtrackings of all GroundTerms that occur in its mapped body.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem PreTrigger.backtrackFacts_eq_of_strong_equiv {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] [GetFreshInhabitant sig.C] [Inhabited sig.C] (trg trg2 : PreTrigger sig) (strong_equiv : trg.strong_equiv trg2) :

          The backtracking of two PreTriggers is the same if they are strongly equivalent, i.e. they have the same rule and the same mapped body.