Skip to content

Commit a8ac211

Browse files
hyperpolymathclaude
andcommitted
fix(EchoAccess): correct ≤a-⊔a-univ constructor RHS where c1 ⊔a c2 = c2
The previous commit's `≤a-⊔a-univ` clauses contained 10 wrong-RHS bugs in the rows where the join reduces to the second summand (`c1 < c2` on the chain). When `c1 ⊔a c2 = c2`, the required witness has type `c2 ≤a c` (i.e. it must equal `p2`), but the buggy clauses returned `p1 : c1 ≤a c` — a different inequality constructor. The parent verifier caught the first failure: EchoAccess.agda:400.58-72: error: [UnequalTerms] decidable != enum of type Access when checking that the expression decidable≤enum has type (decidable ⊔a enum) ≤a enum `_⊔a_` was reducing correctly; the bug was on the right-hand side of the universal-property clauses. Audit by `(c1, c2)` pair with `c1 < c2`: * decidable < enum/feasible/infeasible (3 c values × 3 pairs) * enum < feasible/infeasible (2 c values × 2 pairs) * feasible < infeasible (1 c value × 1 pair) That's exactly 10 clauses, each now corrected to return the appropriate `c2 ≤a c` constructor (equivalent to returning `p2` directly; the explicit-constructor form is kept for consistency with the rest of the file). `≤a-⊔a-{left, right}` and `degrade-access-{comp, compose, via-join}` were re-audited under the same lens; no further bugs found (`≤a-⊔a-left` returns a `c1 ≤a (c1 ⊔a c2)` witness which is always the unique constructor from `c1` to the larger of the two, `≤a-⊔a-right` likewise returns the `c2`-rooted witness, both already correct). BUILD STILL UNVERIFIED LOCALLY — sandbox continues to block `agda` invocations on positional file arguments. Parent verifier please re-run. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f2b88af commit a8ac211

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

proofs/agda/EchoAccess.agda

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -397,28 +397,28 @@ infeasible ⊔a _ = infeasible
397397
≤a-⊔a-univ decidable≤decidable decidable≤decidable = decidable≤decidable
398398
≤a-⊔a-univ decidable≤enum free≤enum = decidable≤enum
399399
≤a-⊔a-univ decidable≤enum decidable≤enum = decidable≤enum
400-
≤a-⊔a-univ decidable≤enum enum≤enum = decidable≤enum
400+
≤a-⊔a-univ decidable≤enum enum≤enum = enum≤enum
401401
≤a-⊔a-univ decidable≤feasible free≤feasible = decidable≤feasible
402402
≤a-⊔a-univ decidable≤feasible decidable≤feasible = decidable≤feasible
403-
≤a-⊔a-univ decidable≤feasible enum≤feasible = decidable≤feasible
404-
≤a-⊔a-univ decidable≤feasible feasible≤feasible = decidable≤feasible
403+
≤a-⊔a-univ decidable≤feasible enum≤feasible = enum≤feasible
404+
≤a-⊔a-univ decidable≤feasible feasible≤feasible = feasible≤feasible
405405
≤a-⊔a-univ decidable≤infeasible free≤infeasible = decidable≤infeasible
406406
≤a-⊔a-univ decidable≤infeasible decidable≤infeasible = decidable≤infeasible
407-
≤a-⊔a-univ decidable≤infeasible enum≤infeasible = decidable≤infeasible
408-
≤a-⊔a-univ decidable≤infeasible feasible≤infeasible = decidable≤infeasible
409-
≤a-⊔a-univ decidable≤infeasible infeasible≤infeasible = decidable≤infeasible
407+
≤a-⊔a-univ decidable≤infeasible enum≤infeasible = enum≤infeasible
408+
≤a-⊔a-univ decidable≤infeasible feasible≤infeasible = feasible≤infeasible
409+
≤a-⊔a-univ decidable≤infeasible infeasible≤infeasible = infeasible≤infeasible
410410
≤a-⊔a-univ enum≤enum free≤enum = enum≤enum
411411
≤a-⊔a-univ enum≤enum decidable≤enum = enum≤enum
412412
≤a-⊔a-univ enum≤enum enum≤enum = enum≤enum
413413
≤a-⊔a-univ enum≤feasible free≤feasible = enum≤feasible
414414
≤a-⊔a-univ enum≤feasible decidable≤feasible = enum≤feasible
415415
≤a-⊔a-univ enum≤feasible enum≤feasible = enum≤feasible
416-
≤a-⊔a-univ enum≤feasible feasible≤feasible = enum≤feasible
416+
≤a-⊔a-univ enum≤feasible feasible≤feasible = feasible≤feasible
417417
≤a-⊔a-univ enum≤infeasible free≤infeasible = enum≤infeasible
418418
≤a-⊔a-univ enum≤infeasible decidable≤infeasible = enum≤infeasible
419419
≤a-⊔a-univ enum≤infeasible enum≤infeasible = enum≤infeasible
420-
≤a-⊔a-univ enum≤infeasible feasible≤infeasible = enum≤infeasible
421-
≤a-⊔a-univ enum≤infeasible infeasible≤infeasible = enum≤infeasible
420+
≤a-⊔a-univ enum≤infeasible feasible≤infeasible = feasible≤infeasible
421+
≤a-⊔a-univ enum≤infeasible infeasible≤infeasible = infeasible≤infeasible
422422
≤a-⊔a-univ feasible≤feasible free≤feasible = feasible≤feasible
423423
≤a-⊔a-univ feasible≤feasible decidable≤feasible = feasible≤feasible
424424
≤a-⊔a-univ feasible≤feasible enum≤feasible = feasible≤feasible
@@ -427,7 +427,7 @@ infeasible ⊔a _ = infeasible
427427
≤a-⊔a-univ feasible≤infeasible decidable≤infeasible = feasible≤infeasible
428428
≤a-⊔a-univ feasible≤infeasible enum≤infeasible = feasible≤infeasible
429429
≤a-⊔a-univ feasible≤infeasible feasible≤infeasible = feasible≤infeasible
430-
≤a-⊔a-univ feasible≤infeasible infeasible≤infeasible = feasible≤infeasible
430+
≤a-⊔a-univ feasible≤infeasible infeasible≤infeasible = infeasible≤infeasible
431431
≤a-⊔a-univ infeasible≤infeasible free≤infeasible = infeasible≤infeasible
432432
≤a-⊔a-univ infeasible≤infeasible decidable≤infeasible = infeasible≤infeasible
433433
≤a-⊔a-univ infeasible≤infeasible enum≤infeasible = infeasible≤infeasible

0 commit comments

Comments
 (0)