| name | catcolab-causal-loop |
| description | CatColab Causal Loop Diagrams - systems dynamics modeling with reinforcing (R) and balancing (B) feedback loops, delays, and Lotka-Volterra semantics for strategic analysis. |
| version | 1.0.0 |
CatColab Causal Loop Diagrams: Systems Dynamics
Trit: 0 (ERGODIC - coordinator/mediator)
Color: Yellow (#FFD700)
Overview
Causal Loop Diagrams (CLDs) in CatColab model feedback systems:
- Variables: System quantities that change over time
- Positive links (+): Same-direction influence (increaseโincrease)
- Negative links (-): Opposite-direction influence (increaseโdecrease)
- Loops: Reinforcing (R) or Balancing (B) feedback
CLDs are essential for understanding system behavior, policy analysis, and strategic planning.
Mathematical Foundation
A causal loop diagram is a signed directed graph with loop classification:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CAUSAL LOOP DIAGRAM โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Variables: โ
โ Population, Resources, Pollution, Quality โ
โ โ
โ Positive Links (+): โ
โ Population โโ(+)โโโบ Pollution โ
โ Resources โโ(+)โโโบ Quality โ
โ โ
โ Negative Links (-): โ
โ Pollution โโ(-)โโโบ Quality โ
โ Quality โโ(-)โโโบ Population (emigration) โ
โ โ
โ Loops: โ
โ R1: PopulationโBirthsโPopulation (reinforcing) โ
โ B1: PopulationโResourcesโQualityโPop (balancing) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Loop Classification
Reinforcing Loop (R): Even number of negative links
- Exponential growth or collapse
- "Snowball effect" or "vicious/virtuous cycle"
Balancing Loop (B): Odd number of negative links
- Goal-seeking behavior
- Homeostasis, equilibrium
REINFORCING (R): BALANCING (B):
A โโ(+)โโโบ B A โโ(+)โโโบ B
โฒ โ โฒ โ
โ โ โ โ
โโโ(+)โโโโโโ โโโ(-)โโโโโโ
(exponential) (equilibrium)
Double Theory
pub fn th_causal_loop() -> DiscreteDblTheory {
let mut cat = FpCategory::new();
cat.add_ob_generator(name("Variable"));
cat.add_mor_generator(name("Positive"), name("Variable"), name("Variable"));
cat.add_mor_generator(name("Negative"), name("Variable"), name("Variable"));
cat.add_mor_generator(name("Delay"), name("Variable"), name("Variable"));
cat.add_mor_generator(name("Indeterminate"), name("Variable"), name("Variable"));
cat.into()
}
CatColab Implementation
Variable Declaration
{
"type": "ObDecl",
"name": "MarketShare",
"theory_type": "Variable",
"description": "company's percentage of total market"
}
Positive Link
{
"type": "MorDecl",
"name": "growth_effect",
"dom": "MarketShare",
"cod": "Revenue",
"theory_type": "Positive",
"description": "higher market share increases revenue"
}
Negative Link
{
"type": "MorDecl",
"name": "saturation_effect",
"dom": "MarketShare",
"cod": "GrowthRate",
"theory_type": "Negative",
"description": "higher share reduces growth potential"
}
Delay (CatColab 0.2)
{
"type": "MorDecl",
"name": "investment_lag",
"dom": "RnD_Spending",
"cod": "ProductQuality",
"theory_type": "Delay",
"delay_time": 12,
"description": "R&D takes time to improve products"
}
Lotka-Volterra Semantics
CatColab generates Lotka-Volterra ODEs from causal loops:
For variables X, Y with positive link XโY:
dY/dt = ฮฑยทXยทY
For negative link XโY:
dY/dt = -ฮฒยทXยทY
General form:
dXแตข/dt = Xแตข ยท ฮฃโฑผ aแตขโฑผยทXโฑผ
Practical Examples
Example 1: Adoption Dynamics
Word of Mouth
โ (+)
Users โโโโโโโโโบ Adoption Rate
โฒ โ
โ โ
โโโโโ(+)โโโโโโโโโโโ
R1: Viral Growth
Adoption Rate โโ(+)โโโบ Users
โ
โโโ(-)โโโบ Potential Users
โ
B1: Market Saturation
Example 2: Thermostat (Balancing)
Desired Temp โโ(+)โโโบ Gap
โฒ โ
โ โ
โ (+)
โ โผ
Actual Temp โโโ(+)โโ Heating
โ
โโโ(-)โโโบ Gap
B1: Temperature Control
Example 3: Arms Race (Reinforcing)
Country A Arms โโ(+)โโโบ Country A Threat Perception
โฒ โ
โ (+)
โ โผ
Country B Arms โโโ(+)โโ Country B Arms Spending
โ
โโโ(+)โโโบ Country A Threat Perception
R1: Escalation Spiral
Analysis Capabilities
- Loop identification: Automatic detection of R and B loops
- Dominant loop analysis: Which loops drive behavior
- Policy leverage points: Where interventions are most effective
- Scenario simulation: Lotka-Volterra dynamics
GF(3) Triads
catcolab-regulatory-networks (-1) โ catcolab-causal-loop (0) โ catcolab-stock-flow (+1) = 0 โ
open-games (-1) โ catcolab-causal-loop (0) โ dynamical-system-functor (+1) = 0 โ
Commands
just catcolab-new causal-loop "market-dynamics"
just catcolab-analyze market-dynamics --loops
just catcolab-simulate market-dynamics --lotka-volterra
just catcolab-export market-dynamics --format=mdl
References
- Sterman (2000) "Business Dynamics: Systems Thinking and Modeling"
- Meadows (2008) "Thinking in Systems"
- CatColab Causal Loop Help
Skill Name: catcolab-causal-loop
Type: Systems Dynamics / Feedback Analysis
Trit: 0 (ERGODIC)
GF(3): Conserved via triadic composition