Epistemic logic for multi-agent perceptual systems — Kripke models, vision sets, public announcement as coordination primitive, and satisfiability-as-reconfiguration applied to agents with limited observability. From Charrier, Ouchet, Schwarzentruber's "Big Brother Logic" demonstration paper (ENS Rennes / IRISA).
Installs into .claude/skills of the current project.
Are you the author of Charrier Et Al Big Brother Logic?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/curiositech-charrier-et-al-big-brother-logic)
---
license: Apache-2.0
name: charrier-et-al-big-brother-logic
description: Epistemic logic for multi-agent perceptual systems — Kripke models, vision sets, public announcement as coordination primitive, and satisfiability-as-reconfiguration applied to agents with limited observability. From Charrier, Ouchet, Schwarzentruber's "Big Brother Logic" demonstration paper (ENS Rennes / IRISA).
category: Research & Academic
tags:
- epistemic-logic
- multi-agent-perception
- kripke-models
- public-announcement
- distributed-knowledge
- model-checking
- satisfiability
---
# SKILL.md — Big Brother Logic: Epistemic Reasoning for Multi-Agent Systems
## DECISION POINTS
### Primary Decision Tree: Responding to Partial Information States
> See `diagrams/01_flowchart_knowledge_state_decision_tree.md` for a full branching chart organized by coordination type (tight vs. loose coupling, observable vs. unobservable observers).
```
Given: Agent state S, Goal G, Available actions A
IF satisfiability_check(S, G) == TRUE
├── IF current_knowledge_sufficient(S, G)
│ └── Execute planned action
├── ELSE IF gather_info_viable(S, A)
│ ├── Identify minimum vision set expansion needed
│ ├── Request targeted information from other agents
│ └── Update Kripke model with new information
│ └── Re-evaluate satisfiability_check(S, G)
└── ELSE
└── Reconfigure agent positions/permissions to satisfy G
ELSE IF satisfiability_check(S, G) == FALSE
├── IF goal_relaxation_acceptable()
│ └── Modify G to achievable subset
└── ELSE
└── Abort and escalate to human operator
ELSE IF satisfiability_check(S, G) == UNKNOWN
├── Attempt distributed reasoning with peer agents
├── IF still UNKNOWN after coordination
│ └── Escalate to centralized knowledge computation
└── ELSE proceed with satisfiability branch above
```
### Coordination Failure Recovery Decision Tree
> See `diagrams/02_sequenceDiagram_knowledge_propagation_public.md` for a step-by-step view of how public announcement and point-to-point messaging produce different epistemic outcomes.
```
When coordination attempt fails between agents A and B:
IF agents had same information but different actions
├── Check for common knowledge gap
│ ├── Was information publicly announced? → Use public broadcast
│ └── Was announcement verified received? → Add confirmation protocol
└── Check for conflicting vision sets → Resolve perceptual boundaries
IF agents had different information
├── Map each agent's vision set
├── Identify which agent has authoritative view
├── Update uninformed agent's Kripke model
└── Re-attempt coordination
IF coordination succeeds but action fails
├── Epistemic goal was wrong, not coordination
└── Revise knowledge requirements for this task type
```
## FAILURE MODES
### 1. "False Knowledge" Anti-Pattern
**Symptom:** Agent claims to "know" something based on incomplete information
**Detection Rule:** If agent acts on belief X but cannot rule out scenarios where ¬X, it has false knowledge
**Fix:** Map agent's vision set; expand perceptual boundaries or add verification step before action
### 2. "Mutual Knowledge Masquerade"
**Symptom:** System assumes coordination after broadcasting message to all agents
**Detection Rule:** If coordination fails despite "shared" information, check if agents know that others received the message
**Fix:** Replace broadcast with public announcement protocol; verify common knowledge establishment (see `references/public-announcement-as-coordination-primitive.md` for the formal mechanism and `references/common-knowledge-coordination-failures.md` for canonical examples including the muddy children puzzle)
### 3. "Epistemic Goal Drift"
**Symptom:** Agents follow procedures correctly but system fails to achieve intended outcome
**Detection Rule:** If tasks complete successfully but higher-level goal fails, procedures were specified without epistemic foundation
**Fix:** Rewrite specifications as "Agent X must know Y before doing Z" instead of procedural steps
### 4. "Centralization Denial"
**Symptom:** System uses central knowledge computation but claims to be "distributed"
**Detection Rule:** If any single point of failure can corrupt all agents' knowledge states
**Fix:** Either accept centralized architecture with honest trade-off documentation, or redesign for true distributed epistemic reasoning (see `references/centralization-vs-distribution-epistemic-tradeoffs.md` for the paper's own frank admission of this compromise)
### 5. "Vision Set Mismatch"
**Symptom:** Agent assigned task requiring information outside its perceptual boundaries
**Detection Rule:** If agent cannot distinguish scenarios relevant to its assigned task
**Fix:** Either expand agent's vision set or reassign task to agent with appropriate perceptual access (see `references/vision-sets-and-perceptual-boundary-design.md`)
## WORKED EXAMPLES
### Example 1: Agent Misconfiguration Recovery
**Scenario:** Three surveillance agents (A1, A2, A3) monitoring area. A2's camera malfunctions, creating coverage gap.
**Initial State:** A1 knows east sector clear, A3 knows west sector clear, A2 reports nothing (due to malfunction)
**Goal:** Verify entire area is secure before allowing human entry
**Decision Process:**
1. satisfiability_check(current_state, "area_secure") → UNKNOWN (A2's sector unverified)
2. gather_info_viable() → FALSE (A2 cannot provide info)
3. Reconfigure: A1 and A3 adjust positions to overlap A2's sector
4. New vision sets: A1 covers east + center, A3 covers west + center
5. satisfiability_check(new_state, "area_secure") → TRUE
6. Execute: Allow human entry
**Expert Insight:** Novice would wait for A2 to recover or manually check the area. Expert recognizes this as satisfiability problem and solves via reconfiguration.
### Example 2: Common Knowledge Coordination
**Scenario:** Financial trading agents must execute synchronized trades across markets
**Initial Attempt:** Central system broadcasts "execute trades at 14:30" to all agents
**Failure:** Some agents execute, others don't, causing market position mismatch
**Epistemic Analysis:**
- Each agent received message (mutual knowledge)
- But agents don't know others received it (no common knowledge)
- Without common knowledge, coordination fails in adversarial environment
> The distinction between distributed knowledge (D{a1,a2}φ) and common knowledge is essential here — see `references/distributed-vs-common-knowledge.md` for the formal treatment.
**Solution:**
1. Replace broadcast with public announcement requiring confirmation
2. Each agent confirms receipt and sees others' confirmations
3. Only proceed when common knowledge of "all agents ready" is established
4. Result: Perfect synchronization achieved
## QUALITY GATES
Task completion requires ALL conditions satisfied:
- [ ] Vision set adequacy: Each agent can distinguish all scenarios relevant to its assigned tasks
- [ ] Common knowledge depth: For coordination-critical information, all agents know that all agents know (verified to required depth)
- [ ] Satisfiability verification: Current epistemic state provably satisfies all knowledge goals before action
- [ ] State monotonicity: New information only expands agent knowledge, never contradicts existing knowledge
- [ ] Failure mode coverage: System behavior defined for all epistemic failure cases (unknown, false knowledge, coordination failure)
- [ ] Centralization trade-off documented: If using centralized computation, failure modes and limitations explicitly stated
- [ ] Communication epistemic effect: Each message's impact on agent Kripke models formally specified
- [ ] Runtime verification active: Epistemic properties checked before irreversible actions (see `references/model-checking-as-runtime-verification.md`)
- [ ] Goal achievability confirmed: All epistemic goals are satisfiable given current system constraints
- [ ] Boundary condition handling: System behavior defined when goals become unsatisfiable
## NOT-FOR BOUNDARIES
**This skill should NOT be used for:**
- Single-agent reasoning tasks → Use standard planning/decision-making frameworks
- Task coordination with complete shared information → Use workflow management systems
- Performance optimization of existing working systems → Use profiling/optimization tools
- Simple message passing between components → Use standard communication patterns
- Systems where "good enough" coordination is acceptable → Use eventual consistency patterns
**Delegate to other skills when:**
- Need real-time performance optimization → [performance-optimization-skill]
- Designing human-AI interaction workflows → [human-ai-collaboration-skill]
- Building fault-tolerant distributed systems → [distributed-systems-resilience-skill]
- Implementing security/access control → [multi-agent-security-skill]
**Use this skill specifically when:**
- Knowledge asymmetry between agents is the core challenge
- Coordination failures occur despite agents having "correct" information
- System must guarantee epistemic properties, not just attempt coordination
- Need formal verification that agents "know enough" before acting
## Bundled Assets
| Subdirectory | INDEX | What's inside |
|---|---|---|
| `diagrams/` | [diagrams/INDEX.md](diagrams/INDEX.md) | Three Mermaid diagrams: knowledge-state decision tree, public-announcement vs. point-to-point sequence, and agent knowledge-state evolution state machine |
| `references/` | [references/INDEX.md](references/INDEX.md) | Fifteen deep-dive reference docs covering Kripke models, vision sets, public announcement, satisfiability-as-reconfiguration, model checking, centralization trade-offs, and two-phase architecture |