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
docs(proof-needs): record second blocker (all/foldMap reduction wall)
Followup to the Q1-C pilot finding: attempting to close equivTrans on
the same branch revealed a second, independent structural problem.
`all p (x :: rest)` does NOT reduce to `(p x && all p rest)` by Refl
in Idris2 0.8.0. The `all` definition elaborates through
`foldMap @{All}` and even though foldMap's default body is foldr-
based, the elaborator produces a foldl-shaped term that no
straightforward rewrite can directly destructure into the textbook
&&-chain. Empirical witness: `example : all p (x :: rs) = (p x && all
p rs); example = Refl` fails to typecheck.
Consequently the primitive-eq axioms (Blocker 1) UNBLOCK leaf-level
reflexivity (equivRefl) but cannot bridge the foldMap-shaped
reduction wall (Blocker 2). equivTrans / cnoWriteSameContent / the 7
Operations reversibility theorems remain frozen.
Three closure paths for Blocker 2 documented (all owner-decision):
1. Replace equiv with a structural myAll-based definition.
2. Prove allCons : all p (x :: rs) = (p x && all p rs) via foldl
lemmas.
3. Migrate equiv to propositional Data.List.Quantifiers.All.
No source changes; documentation honesty only.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments