Skip to content

Commit 6fc04a4

Browse files
committed
board: D-CMR-1 entry records absorption form 2 and the O(n+m) union; entries index after #1643
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013z2e1YXkm6o6HNrDn5BPWA
1 parent c9167ba commit 6fc04a4

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

‎.claude/board/entries/2026-10-20-d-cmr-1-set-algebra.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@
33
**Status:** TEST-PINNED (in PR, branch `claude/eager-albattani-iufugq`). **Basis:** `ADR-2026-10-20-SIX` §2 (`entries/2026-10-20-six-decisions.md`).
44

55
- **Moved:** relalg's rewrite rules to `lance_graph_contract::set_algebra::normalize`, unchanged except absorption. relalg's `normalize` converts `Rel` ↔ `SetExpr` (`Plane(i)` ↔ `Sym(i)`, `Atom` ↔ `Res`) and delegates. `symbolic`, `run`, lowering and the public API are unchanged. The contract stays dependency-free.
6-
- **Absorption** is matched against flattened sibling sets, removing one child at a time against the children still kept. That closes N17 (`ISS-RELALG-ABSORPTION-AFTER-DE-MORGAN`).
7-
- **`Runs`:** sorted, disjoint, half-open intervals with `∩ ∪ ∖`. `complement(universe)` refuses a set that reaches past the universe.
6+
- **Absorption** is matched against flattened sibling sets, removing one child at a time against the children still kept, in two forms: (1) a member of the dual child is a sibling, or a junction of siblings; (2) a sibling junction's members all occur in the dual child (`x ∨ (x ∧ y)` with `x` itself a conjunction). That closes N17 (`ISS-RELALG-ABSORPTION-AFTER-DE-MORGAN`) for `x` a leaf, an `And` or an `Or`. Form 2 was found by crepe-plan-probe's N17 pin (CI `probe`), which this PR flips to assert the reduction.
7+
- **`Runs`:** sorted, disjoint, half-open intervals with `∩ ∪ ∖`, each one merge pass, O(n + m). `complement(universe)` refuses a set that reaches past the universe.
88
- **Regression:** the 16 pre-existing relalg tests pass unchanged. 3 tests are new: `conversion_round_trips` plus 2 in `tests/absorption_n17.rs`.
99
- **Disable runs** (commands: `cargo test --manifest-path crates/lance-graph-relalg/Cargo.toml --no-fail-fast` and `cargo test -p lance-graph-contract --lib set_algebra`):
1010

1111
| probe | what breaks |
1212
|---|---|
1313
| contract `normalize` returns its input | 10 of 14 `rewrites.rs` tests, and both N17 tests in relalg |
14-
| generalized absorption off | only the N17 tests: one in relalg, two in the contract |
14+
| absorption form 1 off | only the N17 tests: one in relalg, two in the contract |
15+
| absorption form 2 off | only `absorption_of_a_superset_conjunction` |
16+
| `max` dropped in the `union` merge | `runs_obey_the_set_laws_against_bitsets` |
1517
| absorption on a partial cover (`all` → `any`) | the silence twin, and the bitset differential (an unsound rule) |
1618

1719
- **Scope held:** no joins, gathers, positional addressing, recursion, D-MPS-8 or `graph_hop`. Measures (`Count`/`Sum` on `Runs`) are not in this PR.

‎.claude/board/entries/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately
2525
opposite directions; the stranding this convention prevents shows up in
2626
exactly one of them, never both.
2727

28-
396 entries, 2026-08-06 .. 2026-10-20.
28+
397 entries, 2026-08-06 .. 2026-10-20.
2929

3030
| date | entry id | finding | file |
3131
|---|---|---|---|

0 commit comments

Comments
 (0)