Attempted to prove `readIdent_app` (the key distribution lemma)
but hit a wall on `String.push c ++ xs.asString = s ++ (c :: xs).asString`
which is not definitionally true in Lean 4.30 (String is
UTF-8 ByteArray-backed, not a List Char structure).
Documents two cleaner paths forward:
(a) Refactor `readIdent`/`readStrLit` to accumulate into
`List Char` instead of `String`, decoupling proofs from
String internals.
(b) Import Mathlib's richer String API which provides the
needed structural lemmas.
The committed state:
· Atomic Phase 3 witnesses via decide (5 theorems, kernel-rooted).
· 3 foundation tokenize lemmas (lparen/rparen/space).
· The full Phase 3 universal lemmas documented inline as
open work, with a proof sketch for both paths.
The token-level universal (already proven) plus closed-instance
decide tests cover the round-trip operationally. Adding Phase 3
proper is a focused multi-day refactor.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| Comonad | ||
| Foundation | ||
| Comonad.lean | ||
| Foundation.lean | ||
| Test.lean | ||