Documentation

ExistentialRules.ChaseSequence.Termination.ConstantMappings.ArgumentsForImages

Get StrictConstantMapping Arguments that produce a certain Image #

We define methods for a StrictConstantMapping to obtain the function arguments that produce a given constant, PreGroundTerm, Fact, etc. The possible arguments take into account a list of candidate constants.

def StrictConstantMapping.arguments_for_constant {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (g : StrictConstantMapping sig) (possible_constants : List sig.C) (c : sig.C) :
List sig.C

The arguments for a given constant are simply the constants from the candidate list that map to the target.

Equations
Instances For
    theorem StrictConstantMapping.apply_to_arguments_yields_original_constant {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (g : StrictConstantMapping sig) (possible_constants : List sig.C) (c arg : sig.C) :
    arg ∈ g.arguments_for_constant possible_constants c ↔ arg ∈ possible_constants ∧ g arg = c

    We lift arguments_for_constant to PreGroundTerm considering all possible combinations of arguments.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Equations
      Instances For
        theorem StrictConstantMapping.arguments_for_pre_term.length_arguments_for_pre_term_list {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] {g : StrictConstantMapping sig} {possible_constants : List sig.C} {ts : List (PreGroundTerm sig)} (args : List (PreGroundTerm sig)) :
        args ∈ arguments_for_pre_term_list g possible_constants ts → args.length = ts.length
        theorem StrictConstantMapping.arguments_for_pre_term.mem_arguments_for_pre_term_list {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] {g : StrictConstantMapping sig} {possible_constants : List sig.C} {ts args : List (PreGroundTerm sig)} (length_eq : args.length = ts.length) :
        args ∈ arguments_for_pre_term_list g possible_constants ts ↔ ∀ (i : Nat) (lt : i < ts.length), args[i] ∈ g.arguments_for_pre_term possible_constants ts[i]
        theorem StrictConstantMapping.apply_to_arguments_yields_original_pre_term {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] {g : StrictConstantMapping sig} {possible_constants : List sig.C} {term : CustomBasicDatastructures.FiniteTree (SkolemFS sig) sig.C} {arg : PreGroundTerm sig} :
        arg ∈ g.arguments_for_pre_term possible_constants term ↔ (∀ (c : sig.C), c ∈ CustomBasicDatastructures.FiniteTree.leaves arg → c ∈ possible_constants) ∧ g.toConstantMapping.apply_pre_ground_term arg = term
        def StrictConstantMapping.arguments_for_term_list {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (g : StrictConstantMapping sig) (possible_constants : List sig.C) (ts : List (GroundTerm sig)) :

        We lift arguments_for_pre_term to lists of GroundTerms.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem StrictConstantMapping.apply_to_arguments_yields_original_term_list {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] {g : StrictConstantMapping sig} {possible_constants : List sig.C} {ts args : List (GroundTerm sig)} :
          args ∈ g.arguments_for_term_list possible_constants ts ↔ (∀ (c : sig.C), c ∈ List.flatMap GroundTerm.constants args → c ∈ possible_constants) ∧ List.map (fun (arg : GroundTerm sig) => g.toConstantMapping.apply_ground_term arg) args = ts
          def StrictConstantMapping.arguments_for_fact {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (g : StrictConstantMapping sig) (possible_constants : List sig.C) (f : Fact sig) :
          List (Fact sig)

          We lift arguments_for_term_list to Fact.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem StrictConstantMapping.apply_to_arguments_yields_original_fact {sig : Signature} [DecidableEq sig.P] [DecidableEq sig.C] [DecidableEq sig.V] (g : StrictConstantMapping sig) (possible_constants : List sig.C) (f arg : Fact sig) :
            arg ∈ g.arguments_for_fact possible_constants f ↔ (∀ (c : sig.C), c ∈ arg.constants → c ∈ possible_constants) ∧ g.toConstantMapping.apply_fact arg = f