You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
- Adds the per-decoration composition rung to \`EchoChoreo.agda\`:
choreographic-reachability order \`_⊑c_\` (3 constructors),
transitivity, propositionality, \`applyChoreo\`, \`applyChoreo-comp\`,
join \`_⊔c_\` with axioms, factoring-free \`applyChoreo-compose\`, and
\`applyChoreo-via-join\` restatement.
- Closes the five-decoration sweep started by
\`EchoGraded.degrade-compose\` and continued through \`EchoLinear\`,
\`EchoIndexed\`, \`EchoEpistemic\`. The role/choreo case now sits in the
same shape as the rest.
- Pinned in \`Smoke.agda\` (10 new headlines).
- \`docs/echo-types/composition.md\` §6 updated to mark the rung closed.
## Why this design
The Choreo decoration is the role choice (Client/Server). The canonical
lift is \`client-to-server\` via the swap-based map-square. Restricting
the order to one-way \`Client ⊑c Server\` (not the reverse) keeps the
rung non-degenerate — the reverse swap exists but including it would
make \`_⊑c_\` an equivalence and collapse the join.
## Compile-verification
\`\`\`
agda -i proofs/agda proofs/agda/All.agda
agda -i proofs/agda proofs/agda/Smoke.agda
\`\`\`
Both exit 0 under \`--safe --without-K\`. No postulates introduced.
## Test plan
- [ ] \`agda -i proofs/agda proofs/agda/All.agda\` exits 0
- [ ] \`agda -i proofs/agda proofs/agda/Smoke.agda\` exits 0
- [ ] \`grep -n postulate proofs/agda/EchoChoreo.agda\` returns nothing
- [ ] All 10 new \`EchoChoreo\` headlines pin in \`Smoke.agda\`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
0 commit comments