Theory Map: Complete Integration Guide
Purpose: Master index connecting all theoretical foundations, showing how concepts relate, when to use each paradigm, and stack-specific implementations.
Complete Theory Catalog
Your Foundation (Existing)
- appendix-algebraic-effects-optics.md - Pure effects & nested state
- appendix-concurrency-time.md - Time semantics & per-aggregate serialization
- appendix-emergence.md - Systems thinking & adaptation
- appendix-frp-general.md (+ variants) - Reactive programming
- appendix-fsm.md - State machine modeling
- appendix-pattern-playbook.md - Practical patterns
- appendix-streams.md - Streaming systems deep dive
New Theoretical Extensions
- appendix-actor-model.md - Message-passing concurrency
- appendix-process-calculi.md - CSP, π-calculus, session types
- appendix-coordination-models.md - Tuple spaces, Petri nets
- appendix-dataflow.md - Kahn networks, SDF, FBP
- appendix-consensus.md - Paxos, Raft, Byzantine consensus
- appendix-consistency-models.md - Linearizability to eventual
- appendix-memory-models.md - Hardware/software memory semantics
- appendix-type-theory.md - Types as specifications
- appendix-formal-verification.md - Proving correctness
- appendix-category-theory.md - Mathematical composition
Concept Dependency Graph
Category Theory (composition laws) │ ┌─────────────────┼─────────────────┐ │ │ │ Type Theory Functors/Monads Adjunctions │ │ │ ├─────────────────┴─────────────────┤ │ │ Dependent Types Free Structures Linear Types Effect Algebras Session Types │ │ │ └─────────────┬─────────────────────┘ │ ┌───────────┼───────────┐ │ │ │ Process Calculi Actor Algebraic (CSP/π-calc) Model Effects │ │ │ └───────────┼───────────┘ │ ┌───────┼───────┐ │ │ │ Dataflow Streams FRP │ │ │ └───────┼───────┘ │ ┌───────────┼───────────┐ │ │ │ Coordination Consensus Consistency (Petri nets) (Paxos) Models │ │ │ └───────────┼───────────┘ │ Memory Models Formal VerificationIntegration Matrix
By Architectural Concern
Correctness & Safety
Type-Level Safety: - Type Theory → dependent/linear/refinement types - Session Types → protocol correctness - Category Theory → composition laws
Runtime Verification: - Formal Verification → TLA+, model checking, proof assistants - Process Calculi → bisimulation, refinement - Petri Nets → reachability, liveness analysis
Testing: - Property-based → algebraic laws - Model-based → FSM coverage - Simulation → deterministic replayConcurrency & Distribution
Message Passing: - Actor Model → isolated state, supervision - Process Calculi → formal semantics - Session Types → protocol types
Shared Memory: - Memory Models → happens-before, acquire-release - Consistency Models → linearizability spectrum - Formal Verification → concurrent correctness proofs
Distributed Coordination: - Consensus → Paxos/Raft for agreement - CRDTs → conflict-free eventual consistency - Coordination Models → tuple spaces, barriersComposability & Abstraction
Functional Composition: - Category Theory → functors, monads, natural transformations - Algebraic Effects → effect composition - Streams → operator algebra
Dataflow Composition: - Kahn Networks → deterministic parallelism - FRP → signal functions, behaviors - Reactive Streams → backpressure compositionDecision Trees
“How Should I Model Concurrency?”
START: What's the primary coordination mechanism?
MESSAGE PASSING├─ Isolated stateful entities? → Actor Model├─ Dynamic reconfiguration? → π-calculus concepts├─ Protocol verification? → Session Types└─ Pipeline/dataflow? → CSP/Channels
SHARED MEMORY├─ Need formal memory semantics? → Memory Models appendix├─ Lock-free data structures? → Progress guarantees (wait-free → lock-free)├─ Distributed shared state? → Consistency Models└─ Proof of correctness? → Separation Logic
COORDINATION PATTERNS├─ Multi-way synchronization? → Join Calculus├─ Workflow modeling? → Petri Nets├─ Decoupled pub-sub? → Tuple Spaces└─ Event-driven? → FRP/Streams
DETERMINISTIC DATAFLOW├─ Static schedule possible? → Synchronous Dataflow├─ Dynamic streaming? → Kahn Process Networks└─ Component-based? → Flow-Based Programming“What Consistency Model Do I Need?”
START: What are the requirements?
STRICT ORDERING REQUIRED├─ Single-object operations? → Linearizability├─ Multi-object transactions? → Strict Serializability└─ Total order across all ops? → Sequential Consistency
CAUSALITY MATTERS├─ See-your-own-writes? → Causal Consistency + session guarantees├─ Related operations ordered? → Causal+ / COPS└─ Collaborative editing? → CRDTs + causal metadata
HIGH AVAILABILITY PRIORITY├─ Can tolerate staleness? → Eventual Consistency├─ Need convergence guarantees? → Strong Eventual (CRDTs)└─ Application-specific resolution? → Last-write-wins + timestamps“Which Verification Technique?”
START: What are you verifying?
FINITE STATE SYSTEM├─ Safety properties (bad states)? → Model Checking (SPIN/TLC)├─ Liveness (progress)? → Model Checking + fairness└─ Protocol conformance? → Session Types / Process calculi
DISTRIBUTED ALGORITHM├─ Consensus/agreement? → TLA+ specification├─ Consistency model? → Formal model + invariants└─ Fault tolerance? → Model checking with failures
FUNCTIONAL CORRECTNESS├─ Pure functions? → Property-based testing├─ Stateful systems? → Hoare Logic / Separation Logic└─ Full proof? → Proof Assistants (Coq/Lean)
PERFORMANCE BOUNDS├─ Time complexity? → Complexity Theory appendix├─ Concurrent progress? → Progress guarantees analysis└─ Resource usage? → Amortized analysisCross-Reference Guide
Actor Model ↔ Other Paradigms
Actor Model + Process Calculi
Actors formalize: π-calculus provides:- Async message passing - Formal semantics- Location transparency - Bisimulation equivalence- Dynamic creation - Scope extrusion rules
Use both when: Need formal verification of actor protocolsActor Model + Session Types
Actors provide: Sessions provide:- Runtime implementation - Compile-time protocol checking- Fault tolerance - Type-safe communication- Distribution - Deadlock freedom
Use both when: Building distributed protocols with correctness guaranteesActor Model + Consensus
Actors provide: Consensus provides:- Per-entity isolation - Cross-entity agreement- Independent state - Consistent views- Message delivery - Total order broadcast
Use both when: Coordinating distributed actors (e.g., cluster membership)Type Theory ↔ Other Paradigms
Dependent Types + Verification
Dependent types: Formal verification:- Specifications in types - Specifications in logic- Compile-time checking - Proof obligations- Constructive proofs - Automated reasoning
Use both when: Want strongest guarantees (e.g., certified compilers)Linear Types + Actors
Linear types: Actors:- Resource tracking - Lifecycle management- Use-once guarantees - Message consumption- Compile-time - Runtime
Use both when: Building systems with resource constraints (files, connections)Session Types + Protocols
Session types: Process calculi:- Protocol as type - Protocol as process- Type checking - Bisimulation checking- Static guarantees - Dynamic semantics
Use both when: Implementing and verifying communication protocolsConsistency Models ↔ Implementations
Linearizability + Actor Model
Challenge: Actors are inherently async/eventualSolution: Add explicit synchronization points- Use ask() for synchronous request-response- Implement consensus for critical operations- Partition by key for per-key linearizabilityCausal Consistency + CRDTs
CRDTs provide: Causality tracking:- Conflict-free merge - Vector clocks- Commutativity - Happens-before- Convergence - Causal ordering
Use both when: Offline-first, collaborative applicationsEventual Consistency + Streams
Streams handle: Eventual consistency:- Time-varying values - Temporary divergence- Propagation delays - Convergence guarantees- Backpressure - Anti-entropy
Use both when: Real-time dashboards, monitoring systemsLanguage-Specific Roadmaps
Rust Journey
FOUNDATION├─ Ownership/Borrowing → Affine Types (Type Theory)├─ Traits → Type Classes (Category Theory)└─ async/await → Effect Systems
CONCURRENCY├─ Channels → CSP (Process Calculi)├─ Actor frameworks → Actor Model + Supervision├─ Atomic operations → Memory Models (Acquire-Release)└─ Lock-free structures → Progress Guarantees
VERIFICATION├─ Type system → Refinement Types (basic)├─ Testing → Property-based (QuickCheck-style)└─ Unsafe code → Formal verification (limited)
PATTERNS├─ Iterators/Streams → FRP, Dataflow├─ Result/Option → Category Theory (Monads)└─ Builder pattern → Free structuresTypeScript Journey
FOUNDATION├─ Type system → Structural types, Generics├─ Promises/async → Effect types, Monads└─ Union types → Sum types (Type Theory)
CONCURRENCY├─ Event loop → Actor-like patterns├─ Worker threads → Message passing├─ RxJS → FRP, Streams, Reactive└─ Channels (libraries) → CSP patterns
VERIFICATION├─ Type guards → Refinement types (limited)├─ Branded types → Session types (partial)└─ Property testing → QuickCheck-style
PATTERNS├─ fp-ts → Category Theory (functors, monads)├─ State machines → FSM, XState└─ Effect-TS → Algebraic effectsPHP Journey
FOUNDATION├─ Types (8.x+) → Basic type safety├─ Enums (8.1+) → Sum types└─ Attributes → Metadata, aspects
CONCURRENCY├─ Laravel Queues → Actor-like job processing├─ Amp/ReactPHP → Async, event-driven├─ Swoole → Long-running processes└─ Message buses → Event sourcing patterns
VERIFICATION├─ PHPStan/Psalm → Static analysis├─ Pest property tests → Property-based testing└─ Integration tests → Behavior verification
PATTERNS├─ Event Sourcing → FSM + Events├─ Pipeline pattern → Dataflow├─ Repository → Ports & adapters└─ Collections → Functor/Monad patterns (limited)Practical Application Patterns
Pattern: Distributed Saga with Actors + Consensus
Problem: Multi-service transaction across actors
Solution Stack:1. Actor Model → Per-service coordinator2. Session Types → Protocol between coordinators3. Consensus → Decide commit/abort4. Algebraic Effects → Pure saga logic
Implementation:- Each service = actor with local state- Saga coordinator = actor orchestrating protocol- Consensus (Raft) for final decision- Effects separate decision from executionPattern: Real-Time Collaboration
Problem: Multiple users editing same document
Solution Stack:1. CRDTs → Conflict-free data structure2. Causal Consistency → Track happens-before3. Streams → Propagate updates4. FRP → UI reactivity
Implementation:- CRDT (text, JSON, etc.) as data model- Vector clocks for causality- WebSocket stream for updates- FRP signals for UI updatesPattern: Type-Safe Microservices
Problem: Inter-service communication correctness
Solution Stack:1. Session Types → Protocol specification2. Process Calculi → Formal semantics3. Code generation → From global types4. Actor Model → Service implementation
Implementation:- Scribble global protocol- Generate stubs for each service- Implement services as actors- Session types ensure correctnessLearning Paths
Path 1: From Imperative to Functional
1. Category Theory basics → Functors, Monads2. Algebraic Effects → Separate effects from logic3. FRP → Reactive, declarative style4. Type Theory → Dependent types for specs5. Formal Verification → Proof of correctnessPath 2: From OOP to Actor-Based
1. Actor Model → Message passing, isolation2. Supervision → Fault tolerance patterns3. Process Calculi → Formal understanding4. Consensus → Distributed coordination5. Consistency Models → Trade-offsPath 3: From Monolith to Distributed
1. Consistency Models → Understand spectrum2. Consensus → Agreement algorithms3. Actor Model → Natural distribution model4. Coordination Models → Decoupled communication5. Formal Verification → Distributed correctnessQuick Reference: When to Use What
Stateful Entities: primary: Actor Model complement: FSM, Session Types verify: TLA+, Model Checking
Pure Transformations: primary: Category Theory (functors) complement: Algebraic Effects verify: Property-based testing
Protocols: primary: Session Types complement: Process Calculi verify: Refinement checking
Streaming Data: primary: Streams, FRP complement: Dataflow models verify: Temporal logic
Distributed State: primary: Consistency Models, CRDTs complement: Consensus verify: TLA+, Formal verification
Workflows: primary: Petri Nets, FSM complement: Coordination Models verify: Reachability analysisFurther Resources
Books
- “Types and Programming Languages” (Pierce) → Type Theory foundation
- “Purely Functional Data Structures” (Okasaki) → Persistent structures
- “Specifying Systems” (Lamport) → TLA+ and distributed systems
- “Category Theory for Programmers” (Milewski) → Categorical thinking
- “The Art of Multiprocessor Programming” (Herlihy & Shavit) → Concurrency
Papers
- Hewitt (1973) - Actor Model
- Hoare (1978) - CSP
- Milner (1992) - π-calculus
- Lamport (1998) - Part-Time Parliament (Paxos)
- Herlihy & Wing (1990) - Linearizability
Tools
- TLA+ Toolbox → Distributed system verification
- SPIN → Protocol verification
- Coq/Lean → Proof assistants
- QuickCheck variants → Property-based testing
- Alloy → Lightweight formal methods
End of Theory Map