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
Three coordinated changes to `Proven.SafeCSV.Proofs`:
1. **DISCHARGE filterTrueIdentity + mapFieldsIdentity** by induction.
- `filterTrueIdentity` (3 lines): the `(x :: xs)` case reduces by
beta-reduction of the constant-True lambda inside the `if`-arm,
then `cong (x ::)` on the recursive call. The OWED comment
claimed the lambda doesn't unfold inside `if`, but empirical
test (`/tmp/charrefl/src/TestCsv.idr`) shows it does.
- `mapFieldsIdentity` (8 lines): add helper `mapIdHelper :
(xs : List a) -> map id xs = xs` (3 lines, induction on `xs`),
then compose at the outer + inner list levels via `trans` /
`cong`. Idris2 0.8.0's `Data.List` doesn't ship `mapId` as a
Refl-reducible lemma, so the helper lives here.
2. **Convert 3 broken `= Refl` proofs to OWED stubs** with an
accurate blocker explanation. The pre-existing
`defaultDelimiterIsComma` / `defaultQuoteIsDoubleQuote` /
`defaultEscapeMatchesQuote` had `= Refl` bodies that DO NOT
type-check on Idris2 0.8.0 — `defaultOptions.delimiter` does not
reduce to `','` even though `defaultOptions = MkCSVOptions ',' '"' '"' "\r\n"`
and `(MkCSVOptions ',' '"' '"' "\r\n").delimiter = ','` is Refl.
The blocker is record-field projection through a `public export`
top-level constant — same family as the SafeFile pre-#136 bug,
but here the LHS is a top-level constant with no argument to
attach a visibility-bumped function to.
Also added 3 *constructor-form* witnesses
(`defaultDelimiterIsCommaCtor` etc.) that DO type-check by Refl.
Callers with flexibility should prefer the `*Ctor` form.
3. **Wire `Proven.SafeCSV.Proofs` into `proven.ipkg`** so CI now
validates the module. Previously the module was orphan — file
existed but wasn't built. That orphan status had concealed the
3 broken-proof errors. With this change, breakage will be caught
at PR time going forward.
Net effect: 2 new DISCHARGES + 3 hidden-broken-proofs converted to
honest OWED + 3 new constructor-form witnesses + CI now validates
the file (was: false-green by omission).
Empirical reduction map ref: `reference_idris2_0_8_0_reduction_map.md`.
Zero `believe_me`/`postulate`/`idris_crash`.
Refs proven#90 (Phase 3 OWED triage), proven#107 (overly-cautious
OWED meta-issue), proven#119 (paths-forward proposal).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments