Fluent Calculus
Origin. Thielscher developed Fluent Calculus (1999). Evolution of Situation Calculus. States as explicit objects containing fluents. Addresses frame problem via state update axioms. Foundation for FLUX agent programming system.
Models. States as first-class citizens. Situation Calculus: fluents hold in situations. Fluent Calculus: states contain fluent collections. State update: add/remove fluents explicitly. Avoids frame axioms by manipulating state terms.
Formalism.
State terms: States built from fluents using ∘ (composition) and ∅ (empty). state = ∅ | f | state ∘ state
Example: On(a,b) ∘ On(b,c) ∘ OnTable(c)
Holds predicate: Holds(f, s): fluent f is in state s. Defined equationally via state structure.
State update axioms: State(Do(a, s)) = s - Effects⁻(a) + Effects⁺(a) Explicitly computes new state from old.
Example — blocks world: State(Do(Move(x,y,z), s)) = s - On(x,y) + On(x,z) Moving x from y to z: remove On(x,y), add On(x,z).
Foundational axioms:
- ∅ ∘ s = s
- s₁ ∘ s₂ = s₂ ∘ s₁
- (s₁ ∘ s₂) ∘ s₃ = s₁ ∘ (s₂ ∘ s₃)
- Holds(f, s₁ ∘ s₂) ↔ Holds(f, s₁) ∨ Holds(f, s₂)
Regression: Reason backwards from goal to initial state. Efficient for planning.
Symbols.
| Symbol | Unicode | Name | Meaning |
|---|---|---|---|
| ∘ | U+2218 | Composition | State merge |
| ∅ | U+2205 | Empty | Empty state |
| Holds | — | Contains | Fluent in state |
| Do | — | Action | State transition |
| + | — | Add | Insert fluent |
| - | — | Remove | Delete fluent |
| State | — | State term | Current state |
Metatheory. Equational theory decidable. Sound and complete for state reasoning. More efficient than situation calculus for some problems. FLUX: logic programming implementation. Connects to action languages.
Applies to. Agent programming. Robotics. Planning. Game AI. Cognitive architectures. Knowledge representation.
Limitations. State terms can grow large. Quantification over states complex. Less known than Situation Calculus. Concurrency needs extensions. Continuous change not native.
© 2026 Lingenic LLC