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.skolem_disjIdx_valid {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) :
Equations
Instances For
    def PreTrigger.skolem_rule_arity_valid {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) :
    Equations
    Instances For
      theorem PreTrigger.skolem_ruleIds_valid_of_strong_equiv {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] {rl : RuleList sig} {trg trg2 : PreTrigger sig} (strong_equiv : trg.strong_equiv trg2) (trg_valid : skolem_ruleIds_valid rl trg) :
      theorem PreTrigger.skolem_disjIdx_valid_of_strong_equiv {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] {rl : RuleList sig} {trg trg2 : PreTrigger sig} (strong_equiv : trg.strong_equiv trg2) (h : skolem_ruleIds_valid rl trg) (trg_valid : skolem_disjIdx_valid rl trg h) :
      theorem PreTrigger.skolem_rule_arity_valid_of_strong_equiv {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] {rl : RuleList sig} {trg trg2 : PreTrigger sig} (strong_equiv : trg.strong_equiv trg2) (h : skolem_ruleIds_valid rl trg) (trg_valid : skolem_rule_arity_valid rl trg h) :
      theorem PreTrigger.skolem_ruleIds_valid_for_functional_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (body_valid : skolem_ruleIds_valid rl trg) (i : Nat) (v : sig.V) :
      theorem PreTrigger.skolem_disjIdx_valid_for_functional_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (body_valid : skolem_disjIdx_valid rl trg trg_ruleIds_valid) (i : Nat) (v : sig.V) :
      theorem PreTrigger.skolem_rule_arity_valid_for_functional_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (body_valid : skolem_rule_arity_valid rl trg trg_ruleIds_valid) (i : Nat) (v : sig.V) :
      theorem PreTrigger.skolem_ruleIds_valid_for_fresh_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (body_valid : skolem_ruleIds_valid rl trg) (i : Nat) (lt : i < trg.rule.head.length) (t : GroundTerm sig) :
      theorem PreTrigger.skolem_disjIdx_valid_for_fresh_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (body_valid : skolem_disjIdx_valid rl trg trg_ruleIds_valid) (i : Nat) (lt : i < trg.rule.head.length) (t : GroundTerm sig) (t_mem : t trg.fresh_terms_for_head_disjunct i lt) :
      theorem PreTrigger.skolem_rule_arity_valid_for_fresh_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (body_valid : skolem_rule_arity_valid rl trg trg_ruleIds_valid) (i : Nat) (lt : i < trg.rule.head.length) (t : GroundTerm sig) (t_mem : t trg.fresh_terms_for_head_disjunct i lt) :
      theorem PreTrigger.skolem_disjIdx_remains_valid_in_head {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (body_valid : skolem_disjIdx_valid rl trg trg_ruleIds_valid) (t : GroundTerm sig) (t_mem : t List.flatMap GeneralizedAtom.terms trg.mapped_head.flatten) :
      theorem PreTrigger.skolem_rule_arity_remains_valid_in_head {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (rl : RuleList sig) (trg : PreTrigger sig) (rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (body_valid : skolem_rule_arity_valid rl trg trg_ruleIds_valid) (t : GroundTerm sig) (t_mem : t List.flatMap GeneralizedAtom.terms trg.mapped_head.flatten) :
      def PreTrigger.backtrackTrigger_for_functional_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] [GetFreshInhabitant sig.C] [Inhabited sig.C] (rl : RuleList sig) (trg : PreTrigger sig) (trg_rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (trg_rule_arity_valid : skolem_rule_arity_valid rl trg trg_ruleIds_valid) (forbidden_constants : List sig.C) (i : Nat) (v : sig.V) :
      Equations
      • One or more equations did not get rendered due to their size.
      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] (rl : RuleList sig) (trg : PreTrigger sig) (trg_rule_mem : trg.rule rl.rules) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (trg_rule_arity_valid : skolem_rule_arity_valid rl trg trg_ruleIds_valid) (forbidden_constants : List sig.C) (i : Nat) (v : sig.V) :
        (backtrackTrigger_for_functional_term rl trg trg_rule_mem trg_ruleIds_valid trg_rule_arity_valid forbidden_constants i v).equiv trg
        def PreTrigger.backtrackFacts {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] [GetFreshInhabitant sig.C] [Inhabited sig.C] (rl : RuleList sig) (trg : PreTrigger sig) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (trg_disjIdx_valid : skolem_disjIdx_valid rl trg trg_ruleIds_valid) (trg_rule_arity_valid : skolem_rule_arity_valid rl trg trg_ruleIds_valid) :
        List (Fact sig) × List sig.C

        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] (rl : RuleList sig) (trg trg2 : PreTrigger sig) (trg_ruleIds_valid : skolem_ruleIds_valid rl trg) (trg_disjIdx_valid : skolem_disjIdx_valid rl trg trg_ruleIds_valid) (trg_rule_arity_valid : skolem_rule_arity_valid rl trg trg_ruleIds_valid) (strong_equiv : trg.strong_equiv trg2) :
          backtrackFacts rl trg trg_ruleIds_valid trg_disjIdx_valid trg_rule_arity_valid = backtrackFacts rl 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.