Skip to content
Snippets Groups Projects
Cycle_Pattern.mp 6.29 KiB
/*┬────────────────────────────────────────────────────────┐
│*│ ┌─[ Title and Authors ]──────────────────────────────┐ │
│*│ │ Model of Cycle Pattern                             │ │
│*│ │  Created by Kristin Giammarco on the 10th of       │ │
│*│ │     March, 2018.                                   │ │
│*│ │  Edited by Keane Reynolds in July, 2021.           │ │
│*│ │  Edited by Pamela Dyer in July and August, 2021.   │ │
│*│ └────────────────────────────────────────────────────┘ │
│*│                                                        │
│*│ ┌─[ Purpose ]────────────────────────────────────────┐ │
│*│ │ To illustrate a cycle as a form of pattern that    │ │
│*│ │ can be modeled in MP, and to show how rule-based   │ │
│*│ │ comments can be added to the traces.               │ │
│*│ └────────────────────────────────────────────────────┘ │
│*│                                                        │
│*│ ┌─[ Description ]────────────────────────────────────┐ │
│*│ │ The model below describes a cycle in terms of a    │ │
│*│ │ series of one or more steps, each step either      │ │
│*│ │ moving the system "forward" or "backward" as the   │ │
│*│ │ process unfolds. "Forward" and "backward" are      │ │
│*│ │ generic terms that may be substituted with         │ │
│*│ │ synonyms such as "up" and "down," "in" and "out",  │ │
│*│ │ "over" and "under", "increase" and "decrease",     │ │
│*│ │ etc., or discinyms (discipline-specific synonyms)  │ │
│*│ │ as they may appear in the preferred domain         │ │
│*│ │ taxonomy.                                          │ │
│*│ │                                                    │ │
│*│ │ IF and SAY statements are used here to add         │ │
│*│ │ commentary to the traces. A user may document the  │ │
│*│ │ "story" told by each trace separately, or use SAY  │ │
│*│ │ statements to incorporate notes about significant  │ │
│*│ │ events or event patterns directly into the event   │ │
│*│ │ traces. Users may reference this model when        │ │
│*│ │ looking to use SAY or IF statements to add notes   │ │
│*│ │ to their traces.                                   │ │
│*│ └────────────────────────────────────────────────────┘ │
│*│                                                        │
│*│ ┌─[ References ]─────────────────────────────────────┐ │
│*│ │ Giammarco, Kristin, and Len Troncale. "Modeling    │ │
│*│ │ Isomorphic Systems Processes Using Monterey        │ │
│*│ │ Phoenix." Systems 6, no. 2 (2018): 18.             │ │
│*│ │ https://doi.org/10.3390/systems6020018             │ │
│*│ │ https://www.mdpi.com/2079-8954/6/2/18              │ │
│*│ └────────────────────────────────────────────────────┘ │
│*│                                                        │
│*│ ┌─[ Search Terms ]───────────────────────────────────┐ │
│*│ │ behavior, cycle pattern; ENSURE condition;         │ │
│*│ │ IF statement; SAY statement; isomorphism           │ │
│*│ └────────────────────────────────────────────────────┘ │
│*│                                                        │
│*│ ┌─[ Instructions ]───────────────────────────────────┐ │
│*│ │ Run for Scopes 2 and 3. (Scope 1 generates zero    │ │
│*│ │ traces because of the ENSURE constraint.)          │ │
│*│ ├─[ Run Statistics ]─────────────────────────────────┤ │
│*│ │ Scope 1: 0 traces in less than 1 sec.              │ │
│*│ │ Scope 2: 40 traces in less than 1 sec.             │ │
│*│ │ Scope 3: 2952 traces in approx. 2.9 sec.           │ │
│*│ └────────────────────────────────────────────────────┘ │
└*┴───────────────────────────────────────────────────────*/

SCHEMA Cycle_ISP_v2

ROOT Cycle:   	(+ Initial_condition 
			  		(+ ( Step_forward | Step_backward ) +)
				   End_condition +);

ENSURE #( Step_forward | Step_backward ) > 1;


                   
/*Check for Positive Reinforcement Template */
IF EXISTS DISJ $a:  Step_forward, $b: Step_forward  
			$a PRECEDES $b THEN 
				SAY("Positive Reinforcement Detected"); FI;

/*Check for Negative Reinforcement Template */
IF EXISTS DISJ $a:  Step_backward, $b: Step_backward  
			$a PRECEDES $b THEN 
				SAY("Negative Reinforcement Detected"); FI;

/*Check for Oscillation Template */
IF EXISTS  $a:  Step_forward, $b: Step_backward  
			$a PRECEDES $b  OR
			$b PRECEDES $a 	THEN 
				SAY("Oscillation Detected"); FI;

/*Note Lifecycle Completion */
COORDINATE $a: End_condition
	DO ADD SAY("Lifecycle Complete") PRECEDES $a; OD;

/*Check for Recycle Template */
IF #Initial_condition > 1 THEN 
				SAY("Recycle Detected"); FI;