This page describe mappings for property patterns in Inca. For other information about the patterns click on the pattern links.
Information about the entire pattern system is available at the Specification Patterns Home Page.
Where more than one Inca query is given for a particular pattern/scope pair, all of the given queries must be checked to verify the requirement.
P is false:
Globally | (defquery "global_absence_of_p" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("P")) ))) |
Before R | (defquery "absence_of_p_before_r" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("R") :require '("P")) ))) |
After Q | (defquery "absence_of_p_after_q" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :ends-with '("P")) ))) |
Between Q and R | (defquery "absence_of_p_between_q_and_r" "nofair" (omega-star-less (sequence (interval :initial t :opent t :ends-with '("Q")) (interval :ends-with '("R") :require '("P")) ))) |
After Q until R | (defquery "absence_of_p_after_q_until_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("P") :forbid '("R")) ))) |
P becomes true:
Globally | (defquery "global_existence_of_p" "nofair" (omega-star-less (sequence (interval :intitial t :forbid '("P")) (interval :perpetual t :forbid '("P")) ))) |
Before R | (defquery "existence_of_p_before_r" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("R") :forbid '("P")) ))) |
After Q | (defquery "existence_of_p_after_q" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :forbid '("P")) (interval :perpetual t :forbid '("P")) ))) |
Between Q and R | (defquery "existence_of_p_between_q_and_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("R") :forbid '("P")) ))) |
After Q until R | (defquery "existence_of_p_after_q_until_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("R") :forbid '("P")) ))) (defquery "existence_of_p_after_q_until_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :forbid '("P")) (interval :perpetual t :forbid '("P")) ))) |
In these mappings we illustrate one instance of the bounded existence pattern, where the bound is at most k designated events.
P occurs at most k times:
Globally |
(defquery "p_occurs_at_most_k_times_globally" "nofair" (omega-star-less (sequence (interval :initial :constraints '((> "P" k))) ))) |
Before R |
(defquery "p_occurs_at_most_k_times_before_r" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("R") :constraints '((> "P" k))) ))) |
After Q |
(defquery "p_occurs_at_most_k_times_after_q" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :constraints '((> "P" k))) ))) |
Between Q and R |
(defquery "p_occurs_at_most_k_times_between_q_and_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("R") :constraints '((> "P" k))) ))) |
After Q until R |
(defquery "p_occurs_at_most_k_times_after_q_until_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval ::constraints '((> "P" k)) :forbid '("R")) ))) |
Specifying universality in an event-based formalism requires the identification of complementary events. The positive event, P, is defined such that after an occurrence of P states have the property. The negative event, N, is defined such that after an ocurrence of N states fail to have the property. Then we define universality throughout a scope as having seen a P prior to the beginning of the scope with no N until after the close of the scope.
Our assumption is that the initial state of the system has the desired property.
The property holds:
Globally | (defquery "property_holds_globally" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("N")) ))) |
Before R | (defquery "property_holds_before_r" "nofair" (omega-star-less (sequence (interval :initial t: :ends-with '("R") :require '("N")) ))) |
After Q | (defquery "property_holds_after_q-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q") :forbid '("N")) (interval :ends-with '("N")) ))) (defquery "property_holds_after_q-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :ends-with '("Q") :forbid '("N")) (interval :ends-with '("N")) ))) |
Between Q and R | (defquery "property_holds_between_q_and_r-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q") :forbid '("N")) (interval :ends-with '("R") :require '("N")) ))) (defquery "property_holds_between_q_and_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :ends-with '("Q") :forbid '("N")) (interval :ends-with '("R") :require '("N")) ))) |
After Q until R | (defquery "property_holds_after_q_until_r-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q") :forbid '("N")) (interval :ends-with '("R")) ))) (defquery "property_holds_after_q_until_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :ends-with '("Q") :forbid '("N")) (interval :ends-with '("N")) ))) |
S precedes P:
Globally | (defquery "s_precedes_p_globally" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("P") :forbid '("S")) ))) |
Before R | (defquery "s_precedes_p_before_r" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("P") :forbid '("S" "R")) (interval :ends-with '("R")) ))) |
After Q |
(defquery "s_precedes_p_after_q" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :ends-with '("P") :forbid '("S")) ))) |
Between Q and R | (defquery "s_precedes_p_between_q_and_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("P") :forbid '("S" "R")) (interval :ends-with '("R")) ))) |
After Q until R | (defquery "s_precedes_p_after_q_until_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("P") :forbid '("S" "R")) ))) |
S responds to P:
Globally | (defquery "s_responds_to_p_globally" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :forbid '("S")) (interval :perpetual t :forbid '("S")) ))) |
Before R | (defquery "s_responds_to_p_before_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) |
After Q | (defquery "s_responds_to_p_after_q" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :open t :ends-with '("P")) (interval :forbid '("S")) (interval :perpetual t :forbid '("S")) ))) |
Between Q and R | (defquery "s_responds_to_p_between_q_and_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) |
After Q until R | (defquery "s_responds_to_p_after_q_until_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) (defquery "s_responds_to_p_after_q_until_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :forbid '("S" "R")) (interval :perpetual t :forbid '("S" "R")) ))) |
This illustrates the 2 cause-1 effect precedence chain.
S, T precedes P:
Globally |
(defquery "s-t_precedes_p_globally-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("P") :forbid '("S")) ))) (defquery "s-t_precedes_p_globally-2" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("S") :forbid '("P")) (interval :ends-with '("P") :forbid '("T")) ))) |
Before R |
(defquery "s-t_precedes_p_before_r-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("P") :forbid '("S" "R")) (interval :ends-with '("R")) ))) (defquery "s-t_precedes_p_before_r-2" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("S") :forbid '("P" "R")) (interval :ends-with '("R") :require '("T")) ))) |
After Q |
(defquery "s-t_precedes_p_after_q-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :ends-with '("P") :forbid '("S")) ))) (defquery "s-t_precedes_p_after_q-2" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :ends-with '("S") :forbid '("P")) (interval :ends-with '("P") :forbid '("T")) ))) |
Between Q and R |
(defquery "s-t_precedes_p_between_q_and_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("P") :forbid '("S" "R")) (interval :ends-with '("R")) ))) (defquery "s-t_precedes_p_between_q_and_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("S") :forbid '("P" "R")) (interval :ends-with '("P") :forbid '("T" "R")) (interval :ends-with '("R")) ))) |
After Q until R |
(defquery "s-t_precedes_p_after_q_until_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("P") :forbid '("S" "R")) ))) (defquery "s-t_precedes_p_after_q_until_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("S") :forbid '("P" "R")) (interval :ends-with '("P") :forbid '("T" "R")) ))) |
This illustrates the 1 cause-2 effect precedence chain.
P precedes (S, T):
Globally |
(defquery "p_precedes_s-t-globally" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("T") :forbid '("P") :require '("S")) ))) |
Before R |
(defquery "p_precedes_s-t_before_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("S") :forbid '("P" "R")) (interval :ends-with '("R") :require '("T")) ))) |
After Q |
(defquery "p_precedes_s-t_after_q" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :ends-with '("S") :forbid '("P")) (interval :ends-with '("T")) ))) |
Between Q and R |
(defquery "p_precedes_s-t_between_q_and_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("S") :forbid '("P" "R")) (interval :ends-with '("R") :require '("T")) ))) |
After Q until R |
(defquery "p_precedes_s-t_after_q_until_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :ends-with '("S") :forbid '("P" "R")) (interval :ends-with '("T") :forbid '("R")) ))) |
This illustrates the 2 stimulus-1 response chain.
P responds to S,T:
Globally |
(defquery "p_responds_to_s-t-globally" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("S")) (interval :ends-with '("T")) (interval :forbid '("P")) (interval :perpetual t :forbid '("P")) ))) |
Before R |
(defquery "p_responds_to_s-t_before_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :forbid '("R")) (interval :ends-with '("R") :forbid '("P")) ))) |
After Q |
(defquery "p_responds_to_s-t_after_q" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :open t :ends-with '("S")) (interval :ends-with '("T")) (interval :forbid '("P")) (interval :perpetual t :forbid '("P")) ))) |
Between Q and R |
(defquery "p_responds_to_s-t_between_q_and_r" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :forbid '("R")) (interval :ends-with '("R") :forbid '("P")) ))) |
After Q until R |
(defquery "p_responds_to_s-t_after_q_until_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :forbid '("R")) (interval :ends-with '("R") :forbid '("P")) ))) (defquery "p_responds_to_s-t_after_q_until_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :forbid '("R")) (interval :forbid '("P" "R")) (interval :perpetual t :forbid '("P" "R")) ))) |
This illustrates the 1 stimulus-2 response chain.
S,T responds to P:
Globally |
(defquery "s-t_responds_to_p_globally-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :forbid '("S")) (interval :perpetual t :forbid '("S")) ))) (defquery "s-t_responds_to_p_globally-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :ends-with '("S")) (interval :forbid '("T")) (interval :perpetual t :forbid '("T")) ))) |
Before R |
(defquery "s-t_responds_to_p_before_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) (defquery "s-t_responds_to_p_before_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("R") :forbid '("T")) ))) |
After Q |
(defquery "s-t_responds_to_p_after_q-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :open t :ends-with '("P")) (interval :forbid '("S")) (interval :perpetual t :forbid '("S")) ))) (defquery "s-t_responds_to_p_after_q-2" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :open t :ends-with '("P")) (interval :ends-with '("S")) (interval :forbid '("T")) (interval :perpetual t :forbid '("T")) ))) |
Between Q and R |
(defquery "s-t_responds_to_p_between_q_and_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) (defquery "s-t_responds_to_p_between_q_and_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("R") :forbid '("T")) ))) |
After Q until R |
(defquery "s-t_responds_to_p_after_q_until_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) (defquery "s-t_responds_to_p_after_q_until_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("R") :forbid '("T")) ))) (defquery "s-t_responds_to_p_after_q_until_r-3" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :forbid '("S" "R")) (interval :perpetual t :forbid '("S" "R")) ))) (defquery "s-t_responds_to_p_after_q_until_r-4" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :forbid '("T" "R")) (interval :perpetual t :forbid '("T" "R")) ))) |
This is the 1-2 response chain constrained by a single event.
S,T without Z responds to P:
Globally |
(defquery "s-t_without_z_responds_to_p_globally-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :forbid '("S")) (interval :perpetual t :forbid '("S")) ))) (defquery "s-t_without_z_responds_to_p_globally-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :ends-with '("S")) (interval :forbid '("T")) (interval :perpetual t :forbid '("T")) ))) (defquery "s-t_without_z_responds_to_p_globally-3" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P")) (interval :ends-with '("S")) (interval :ends-with '("T") :require '("Z")) ))) |
Before R |
(defquery "s-t_without_z_responds_to_p_before_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) (defquery "s-t_without_z-responds_to_p_before_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("R") :forbid '("T")) ))) (defquery "s-t_without_z-responds_to_p_before_r-3" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :forbid '("R") :require '("Z")) (interval :ends-with '("R")) ))) |
After Q |
(defquery "s-t_without_z-responds_to_p_after_q-1" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :open t :ends-with '("P")) (interval :forbid '("S")) (interval :perpetual t :forbid '("S")) ))) (defquery "s-t_without_z-responds_to_p_after_q-2" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :open t :ends-with '("P")) (interval :ends-with '("S")) (interval :forbid '("T")) (interval :perpetual t :forbid '("T")) ))) (defquery "s-t_without_z-responds_to_p_after_q-3" "nofair" (omega-star-less (sequence (interval :initial t :ends-with '("Q")) (interval :open t :ends-with '("P")) (interval :ends-with '("S")) (interval :ends-with '("T") :require '("Z")) ))) |
Between Q and R |
(defquery "s-t_without_z-responds_to_p_between_q_and_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) (defquery "s-t_without_z-responds_to_p_between_q_and_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("R") :forbid '("T")) ))) (defquery "s-t_without_z-responds_to_p_between_q_and_r-3" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :require '("Z")) (interval :ends-with '("R")) ))) |
After Q until R |
(defquery "s-t_without_z-responds_to_p_after_q_until_r-1" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("R") :forbid '("S")) ))) (defquery "s-t_without_z-responds_to_p_after_q_until_r-2" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("R") :forbid '("T")) ))) (defquery "s-t_without_z-responds_to_p_after_q_until_r-3" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :require '("Z")) (interval :ends-with '("R")) ))) (defquery "s-t_without_z-responds_to_p_after_q_until_r-4" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :forbid '("S" "R")) (interval :perpetual t :forbid '("S" "R")) ))) (defquery "s-t_without_z-responds_to_p_after_q_until_r-5" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :forbid '("T" "R")) (interval :perpetual t :forbid '("T" "R")) ))) (defquery "s-t_without_z-responds_to_p_after_q_until_r-6" "nofair" (omega-star-less (sequence (interval :initial t :open t :ends-with '("Q")) (interval :open t :ends-with '("P") :forbid '("R")) (interval :ends-with '("S") :forbid '("R")) (interval :ends-with '("T") :require '("Z")) ))) |