Temporal interval algebra for reasoning about time relationships in planning and knowledge representation
Scanned 9/11/2026
Install to Claude Code
npx -y skills add curiositech/windags-skills --skill allen-cacm1983 --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Allen Cacm1983?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/curiositech-allen-cacm1983)More formats (shields.io, HTML) on the badges page.
---
license: Apache-2.0
name: allen-cacm1983
description: Temporal interval algebra for reasoning about time relationships in planning and knowledge representation
category: Research & Academic
tags:
- temporal-reasoning
- interval-algebra
- knowledge-representation
- ai
- planning
---
# SKILL.md: Temporal Interval Reasoning (Allen 1983)
## When to Use This Skill
Load this skill when you encounter:
| Trigger Situation | Why Allen Applies |
|---|---|
| "Does task A finish before task B starts?" | Requires interval relation classification (before, meets, overlaps…) |
| "I don't know exactly when X happened, only that it was during Y" | Disjunctive uncertainty over the 13 relations |
| "If we add this constraint, does the schedule still work?" | Constraint propagation + inconsistency detection |
| "Event A happens daily; event B happens yearly — how do they interact?" | Reference interval hierarchy for scope management |
**Do not use** if you only need to compare two absolute timestamps with no uncertainty — plain arithmetic suffices.
---
## Decision Points
### New Temporal Assertion Added
```
IF assertion conflicts with existing constraints:
→ Detect empty arc label during propagation
→ HALT immediately, report inconsistent interval pair
→ Do NOT continue with inconsistent state
IF assertion is consistent:
→ Run constraint propagation from affected arcs
→ Update labels by intersecting transitivity consequences
→ Continue until no more refinements possible
```
### Handling Temporal Uncertainty
```
IF evidence only supports multiple relations:
→ Maintain full disjunctive label {before, meets, overlaps}
→ Never collapse to single relation without evidence
→ Log when/why constraint set narrows
IF forced to act under uncertainty:
→ Use disjunctive label as-is for planning
→ Tag any assumptions as defeasible
→ Avoid premature commitment
```
### Scoping Temporal Reasoning
```
IF dealing with events at vastly different timescales:
→ Identify reference interval hierarchy (year→month→day)
→ Reason within each cluster separately
→ Create explicit bridge constraints at boundaries
→ Avoid flattening everything into one global graph
IF local reasoning feels sufficient:
→ Verify query scope matches reference interval level
→ Propagate only within relevant cluster
→ Escalate cross-cluster only when dependency detected
```
### State Persistence
```
IF state continues with no explicit end bound:
→ Apply persistence default AND mark as defeasible
→ Any future end-bound assertion overrides default
→ Never treat persistence assumption as hard constraint
IF explicit temporal bound provided:
→ Override any existing persistence defaults
→ Propagate new constraint normally
```
---
## Failure Modes
| Anti-Pattern | Symptom | Diagnosis | Fix |
|---|---|---|---|
| **Point-ification** | Reducing events to timestamps, losing overlap/containment info | Using `time=14:30` instead of `[14:30, 14:45]` intervals | Model every event as interval with start/end, even if duration unknown |
| **Premature Commitment** | Picking single relation when evidence supports multiple | Asserting "before" when you only know "not during" | Maintain full disjunctive label until evidence forces narrowing |
| **Global Propagation Bomb** | O(N²) cost per update, performance degrades with KB size | Running constraint propagation across entire graph for local query | Use reference interval hierarchy to limit propagation scope |
| **Empty Label Denial** | Continuing reasoning after inconsistency detected | Getting nonsense results because conflicting constraints ignored | Treat empty arc label as SUCCESS (inconsistency caught early), halt immediately |
| **Persistence Rigidity** | Cannot override "continues until changed" assumptions | New temporal bounds rejected because they conflict with persistence | Tag all persistence defaults as defeasible, allow override by explicit assertions |
**Detection Rules:**
- If you see timestamps without duration → Point-ification
- If you see single relation chosen arbitrarily → Premature Commitment
- If propagation cost grows with total KB size → Global Propagation Bomb
- If reasoning continues after empty label → Empty Label Denial
- If new temporal facts get rejected → Persistence Rigidity
---
## Worked Examples
### Example 1: Meeting Schedule Conflict Detection
**Scenario:** Adding "Team Review" to calendar that already has "Client Call" and "Engineering Standup"
**Initial State:**
```
Client Call (I₁): [10:00, 11:00]
Engineering Standup (I₂): [11:30, 12:00]
Known: I₁ {before} I₂
```
**New Assertion:** Team Review (I₃): [10:45, 11:15]
**Expert Reasoning Trace:**
1. **Classify new relations:**
- I₃ vs I₁: starts at 10:45, I₁ ends at 11:00 → {overlaps}
- I₃ vs I₂: ends at 11:15, I₂ starts at 11:30 → {before}
2. **Constraint propagation:**
- From I₁ {before} I₂ and I₃ {overlaps} I₁
- Transitivity: overlaps ∘ before = {before, overlaps, meets, starts, during}
- New constraint: I₃ {before, overlaps, meets, starts, during} I₂
- Intersect with I₃ {before} I₂: label becomes {before}
3. **Consistency check:** All labels non-empty → Schedule is feasible but has overlap
**Novice Would Miss:**
- Might not check I₃ overlap with I₁ creates resource conflict
- Might not verify transitivity maintains consistency
- Might not distinguish "feasible ordering" from "no resource conflicts"
**Expert Catches:**
- Overlap detection flagged immediately via relation classification
- Propagation verifies global consistency maintained
- Clear distinction between temporal feasibility and resource availability
### Example 2: Process Phase Dependencies
**Scenario:** Deployment pipeline with uncertain task completion times
**Initial State:**
```
Build Phase (B): duration unknown, must finish before Deploy
Test Phase (T): overlaps with end of Build, duration uncertain
Deploy Phase (D): starts after both B and T complete
```
**Constraint Network:**
```
T {overlaps, finishes} B (Test can finish with or before Build)
B {before, meets} D (Build must complete before Deploy)
T {before, meets} D (Test must complete before Deploy)
```
**New Information:** "Test found critical bug, extending by 2 hours"
**Expert Reasoning:**
1. **Update affects scope:** Test extension pushes T endpoint later
2. **Propagation:** If T {finishes} B originally, now T {overlaps} B (extends past Build end)
3. **Check consistency:** T {overlaps} B still allows B {before, meets} D and T {before, meets} D
4. **Result:** Deployment delayed but pipeline logic intact
**Novice Would Miss:**
- Might assume Test completion doesn't affect Build-Deploy dependency
- Might not propagate Test extension through to Deploy timing
- Might treat "Test extends" as isolated fact rather than constraint network update
**Expert Catches:**
- Recognizes Test-Build relation must be re-evaluated
- Propagates timing implications through full constraint network
- Maintains uncertainty appropriately (Deploy could start immediately after Build OR after extended Test)
---
## Quality Gates
Temporal reasoning task is complete when:
- [ ] All intervals represented with explicit start/end bounds (no point events)
- [ ] Every interval pair has non-empty arc label from the 13-relation vocabulary
- [ ] Constraint propagation run to completion (no pending transitivity updates)
- [ ] All disjunctive labels honestly reflect current evidence (no arbitrary commitments)
- [ ] Reference interval hierarchy established for multi-scale reasoning
- [ ] Persistence defaults tagged as defeasible where applicable
- [ ] Inconsistency detection verified (empty labels caught and reported)
- [ ] Cross-reference scope bridges explicitly defined
- [ ] All temporal assertions traced to evidence source
- [ ] Query scope matches reasoning granularity level
---
## NOT-FOR Boundaries
**Do NOT use Allen's interval algebra for:**
- **Simple timestamp comparison** → Use arithmetic: `if (t1 < t2)`
- **Metric duration calculation** → Use calendar arithmetic: `end_date - start_date`
- **Real-time scheduling optimization** → Use constraint satisfaction with numeric domains
- **Probabilistic temporal inference** → Use temporal probabilistic networks
- **Continuous time dynamics** → Use differential equations
- **High-frequency event streams** → Use stream processing frameworks
**Delegate instead:**
- For metric constraints: Use **constraint-satisfaction-with-numeric-domains**
- For probabilistic temporal reasoning: Use **bayesian-temporal-networks**
- For real-time systems: Use **rate-monotonic-scheduling**
- For continuous dynamics: Use **temporal-logic-model-checking**
- For event stream processing: Use **complex-event-processing**
**Allen excels at:** Qualitative temporal reasoning under uncertainty with incremental knowledge updates and hierarchical scope management.Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!