diff --git a/research/right-vector-commutative-products/.gitattributes b/research/right-vector-commutative-products/.gitattributes new file mode 100644 index 0000000000..84ccf846c9 --- /dev/null +++ b/research/right-vector-commutative-products/.gitattributes @@ -0,0 +1 @@ +source/* -text -eol diff --git a/research/right-vector-commutative-products/CODE-REVIEW.md b/research/right-vector-commutative-products/CODE-REVIEW.md new file mode 100644 index 0000000000..31a614f2bf --- /dev/null +++ b/research/right-vector-commutative-products/CODE-REVIEW.md @@ -0,0 +1,26 @@ +# Separate static review and root integration check + +A separate OpenAI Codex reviewer inspected the retained source contract, +PROOF.md, engine.py, oracle.py and both core payloads. No concrete correctness +defect was found. It checked the common-row/column unit condition, componentwise +unit choice in the three-factor word, all-finite-field quadratic-extension +argument and the delta-two deduction. The BFS review covered the complete +descriptor domain, sound singular-factor filtering, paid/free distance +certificate, arbitrary-input witness interpreter and independent column ranks. +The oracle's one-factor literal-image classification and projective/two-factor +test were also checked. + +The reviewer flagged that BFS witnesses use execution order while oracle words +use algebraic product order. README now explicitly distinguishes them. Neither +algorithm or frozen core payload was changed for this documentation fix. +It also required that prime-field software evidence remain separate from the +quantified all-finite-field proof. Physical costs and broader algebra targets +remain outside scope. + +The root independently read the proof and implementations, and compared every +one of the 216 cost/delta records between the two actual core payloads. Full +normal/optimized, public-byte, cold and hosted replay records are separate +handoff evidence. Static reviewers did not rerun scientific suites. This is +separate AI review, not independent human acceptance or formal verification. + +The integration review also identified that only the optimized command initially used -W error. The normal manifest command now explicitly uses that flag, and the root reran the normal warning-strict command before sealing. Earlier core/normal outputs remain preserved unchanged. diff --git a/research/right-vector-commutative-products/EXPECTED-BFS.json b/research/right-vector-commutative-products/EXPECTED-BFS.json new file mode 100644 index 0000000000..9664a969a7 --- /dev/null +++ b/research/right-vector-commutative-products/EXPECTED-BFS.json @@ -0,0 +1 @@ +{"borrowed_helper_roles":0,"canonical_target":{"components":[[1,0,0,1],[0,1,1,1],[1,1,1,0]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,14,7],"word_in_execution_order":[[3,3,1,1],[6,0,0,1],[2,2,1,1]]},"checks":{"all_free_edges":1296,"all_paid_edges":4752,"attaining_matrix_words":216,"attaining_word_arbitrary_inputs":13824,"canonical_arbitrary_inputs":64,"delta_endpoints_per_target":6,"free_conjugations":132},"claim_type":"complete_finite_invertible_target_metric","component_encoding":"row-major bit i is matrix entry i; triple order is ring component order","controls":{"dropped_factors":[{"omitted_step":0,"rejected":true},{"omitted_step":1,"rejected":true},{"omitted_step":2,"rejected":true}],"positive_word_accepted":true,"wrong_component":{"rejected":true,"replacement_descriptor":[6,6,1,1],"step":0,"swapped_components":[0,2]},"wrong_free_chart":{"rejected":true,"replacement_free_code":7}},"cost_delta_histogram":[{"cost":0,"count":6,"delta":0},{"cost":1,"count":54,"delta":1},{"cost":2,"count":144,"delta":2},{"cost":3,"count":12,"delta":2}],"distinct_invertible_paid_factors":22,"factor_encoding":"[u0,u1,y0,y1]; u0/u1 are three-bit ring values; y0/y1 are F2","field":"F2","free_codes":[6,7,9,11,13,14],"invertible_paid_descriptors":88,"paid_descriptor_domain":256,"paid_factors":[{"descriptor":[7,7,1,1],"state":[6,6,6]},{"descriptor":[3,3,1,1],"state":[6,6,9]},{"descriptor":[5,5,1,1],"state":[6,9,6]},{"descriptor":[1,1,1,1],"state":[6,9,9]},{"descriptor":[6,6,1,1],"state":[9,6,6]},{"descriptor":[2,2,1,1],"state":[9,6,9]},{"descriptor":[4,4,1,1],"state":[9,9,6]},{"descriptor":[0,0,0,0],"state":[9,9,9]},{"descriptor":[4,0,0,1],"state":[9,9,11]},{"descriptor":[0,4,1,0],"state":[9,9,13]},{"descriptor":[2,0,0,1],"state":[9,11,9]},{"descriptor":[6,0,0,1],"state":[9,11,11]},{"descriptor":[0,2,1,0],"state":[9,13,9]},{"descriptor":[0,6,1,0],"state":[9,13,13]},{"descriptor":[1,0,0,1],"state":[11,9,9]},{"descriptor":[5,0,0,1],"state":[11,9,11]},{"descriptor":[3,0,0,1],"state":[11,11,9]},{"descriptor":[7,0,0,1],"state":[11,11,11]},{"descriptor":[0,1,1,0],"state":[13,9,9]},{"descriptor":[0,5,1,0],"state":[13,9,13]},{"descriptor":[0,3,1,0],"state":[13,13,9]},{"descriptor":[0,7,1,0],"state":[13,13,13]}],"records":[{"components":[[0,1,1,0],[0,1,1,0],[0,1,1,0]],"cost":0,"delta":0,"delta_ranks_in_free_order":[0,1,1,2,2,1],"free_code":6,"state":[6,6,6],"word_in_execution_order":[]},{"components":[[0,1,1,0],[0,1,1,0],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,2,2,2,1],"free_code":6,"state":[6,6,7],"word_in_execution_order":[[4,0,0,1]]},{"components":[[0,1,1,0],[0,1,1,0],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,1,2,2,2],"free_code":6,"state":[6,6,9],"word_in_execution_order":[[4,4,1,1]]},{"components":[[0,1,1,0],[0,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,6,11],"word_in_execution_order":[[4,4,1,1],[4,0,0,1]]},{"components":[[0,1,1,0],[0,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,6,13],"word_in_execution_order":[[4,4,1,1],[0,4,1,0]]},{"components":[[0,1,1,0],[0,1,1,0],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,1,2,2,2,2],"free_code":6,"state":[6,6,14],"word_in_execution_order":[[0,4,1,0]]},{"components":[[0,1,1,0],[1,1,1,0],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,2,2,2,1],"free_code":6,"state":[6,7,6],"word_in_execution_order":[[2,0,0,1]]},{"components":[[0,1,1,0],[1,1,1,0],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,2,2,2,1],"free_code":6,"state":[6,7,7],"word_in_execution_order":[[6,0,0,1]]},{"components":[[0,1,1,0],[1,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,7,9],"word_in_execution_order":[[4,4,1,1],[2,0,0,1]]},{"components":[[0,1,1,0],[1,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,7,11],"word_in_execution_order":[[4,4,1,1],[6,0,0,1]]},{"components":[[0,1,1,0],[1,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,7,13],"word_in_execution_order":[[0,4,1,0],[6,0,0,1]]},{"components":[[0,1,1,0],[1,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,7,14],"word_in_execution_order":[[0,4,1,0],[2,0,0,1]]},{"components":[[0,1,1,0],[1,0,0,1],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,1,2,2,2],"free_code":6,"state":[6,9,6],"word_in_execution_order":[[2,2,1,1]]},{"components":[[0,1,1,0],[1,0,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,9,7],"word_in_execution_order":[[2,2,1,1],[4,0,0,1]]},{"components":[[0,1,1,0],[1,0,0,1],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,1,2,2,2],"free_code":6,"state":[6,9,9],"word_in_execution_order":[[6,6,1,1]]},{"components":[[0,1,1,0],[1,0,0,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,9,11],"word_in_execution_order":[[6,6,1,1],[4,0,0,1]]},{"components":[[0,1,1,0],[1,0,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,9,13],"word_in_execution_order":[[6,6,1,1],[0,4,1,0]]},{"components":[[0,1,1,0],[1,0,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,9,14],"word_in_execution_order":[[2,2,1,1],[0,4,1,0]]},{"components":[[0,1,1,0],[1,1,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,11,6],"word_in_execution_order":[[2,2,1,1],[2,0,0,1]]},{"components":[[0,1,1,0],[1,1,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,11,7],"word_in_execution_order":[[2,2,1,1],[6,0,0,1]]},{"components":[[0,1,1,0],[1,1,0,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,11,9],"word_in_execution_order":[[6,6,1,1],[2,0,0,1]]},{"components":[[0,1,1,0],[1,1,0,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,11,11],"word_in_execution_order":[[6,6,1,1],[6,0,0,1]]},{"components":[[0,1,1,0],[1,1,0,1],[1,0,1,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,11,13],"word_in_execution_order":[[3,3,1,1],[6,0,0,1],[5,5,1,1]]},{"components":[[0,1,1,0],[1,1,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,11,14],"word_in_execution_order":[[2,0,0,1],[0,6,1,0]]},{"components":[[0,1,1,0],[1,0,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,13,6],"word_in_execution_order":[[2,2,1,1],[0,2,1,0]]},{"components":[[0,1,1,0],[1,0,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,13,7],"word_in_execution_order":[[6,0,0,1],[2,2,1,1]]},{"components":[[0,1,1,0],[1,0,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,13,9],"word_in_execution_order":[[6,6,1,1],[0,2,1,0]]},{"components":[[0,1,1,0],[1,0,1,1],[1,1,0,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,13,11],"word_in_execution_order":[[3,3,1,1],[0,6,1,0],[5,5,1,1]]},{"components":[[0,1,1,0],[1,0,1,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,13,13],"word_in_execution_order":[[6,6,1,1],[0,6,1,0]]},{"components":[[0,1,1,0],[1,0,1,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,13,14],"word_in_execution_order":[[2,2,1,1],[0,6,1,0]]},{"components":[[0,1,1,0],[0,1,1,1],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,1,2,2,2,2],"free_code":6,"state":[6,14,6],"word_in_execution_order":[[0,2,1,0]]},{"components":[[0,1,1,0],[0,1,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,14,7],"word_in_execution_order":[[4,0,0,1],[0,2,1,0]]},{"components":[[0,1,1,0],[0,1,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,14,9],"word_in_execution_order":[[4,4,1,1],[0,2,1,0]]},{"components":[[0,1,1,0],[0,1,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,14,11],"word_in_execution_order":[[4,0,0,1],[0,6,1,0]]},{"components":[[0,1,1,0],[0,1,1,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[6,14,13],"word_in_execution_order":[[4,4,1,1],[0,6,1,0]]},{"components":[[0,1,1,0],[0,1,1,1],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,1,2,2,2,2],"free_code":6,"state":[6,14,14],"word_in_execution_order":[[0,6,1,0]]},{"components":[[1,1,1,0],[0,1,1,0],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,2,2,2,1],"free_code":6,"state":[7,6,6],"word_in_execution_order":[[1,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,0],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,2,2,2,1],"free_code":6,"state":[7,6,7],"word_in_execution_order":[[5,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,6,9],"word_in_execution_order":[[4,4,1,1],[1,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,6,11],"word_in_execution_order":[[4,4,1,1],[5,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,6,13],"word_in_execution_order":[[0,4,1,0],[5,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,6,14],"word_in_execution_order":[[0,4,1,0],[1,0,0,1]]},{"components":[[1,1,1,0],[1,1,1,0],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,2,2,2,1],"free_code":6,"state":[7,7,6],"word_in_execution_order":[[3,0,0,1]]},{"components":[[1,1,1,0],[1,1,1,0],[1,1,1,0]],"cost":0,"delta":0,"delta_ranks_in_free_order":[1,2,2,1,1,0],"free_code":7,"state":[7,7,7],"word_in_execution_order":[]},{"components":[[1,1,1,0],[1,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,7,9],"word_in_execution_order":[[4,4,1,1],[3,0,0,1]]},{"components":[[1,1,1,0],[1,1,1,0],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,1,2,1],"free_code":7,"state":[7,7,11],"word_in_execution_order":[[0,4,1,0]]},{"components":[[1,1,1,0],[1,1,1,0],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,2,1,1],"free_code":7,"state":[7,7,13],"word_in_execution_order":[[4,4,1,1]]},{"components":[[1,1,1,0],[1,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,7,14],"word_in_execution_order":[[0,4,1,0],[3,0,0,1]]},{"components":[[1,1,1,0],[1,0,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,9,6],"word_in_execution_order":[[2,2,1,1],[1,0,0,1]]},{"components":[[1,1,1,0],[1,0,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,9,7],"word_in_execution_order":[[2,2,1,1],[5,0,0,1]]},{"components":[[1,1,1,0],[1,0,0,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,9,9],"word_in_execution_order":[[6,6,1,1],[1,0,0,1]]},{"components":[[1,1,1,0],[1,0,0,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,9,11],"word_in_execution_order":[[6,6,1,1],[5,0,0,1]]},{"components":[[1,1,1,0],[1,0,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,9,13],"word_in_execution_order":[[5,0,0,1],[6,6,1,1]]},{"components":[[1,1,1,0],[1,0,0,1],[0,1,1,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,9,14],"word_in_execution_order":[[3,3,1,1],[1,0,0,1],[0,5,1,0]]},{"components":[[1,1,1,0],[1,1,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,11,6],"word_in_execution_order":[[2,2,1,1],[3,0,0,1]]},{"components":[[1,1,1,0],[1,1,0,1],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,1,2,1],"free_code":7,"state":[7,11,7],"word_in_execution_order":[[0,2,1,0]]},{"components":[[1,1,1,0],[1,1,0,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,11,9],"word_in_execution_order":[[6,6,1,1],[3,0,0,1]]},{"components":[[1,1,1,0],[1,1,0,1],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,1,2,1],"free_code":7,"state":[7,11,11],"word_in_execution_order":[[0,6,1,0]]},{"components":[[1,1,1,0],[1,1,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[7,11,13],"word_in_execution_order":[[4,4,1,1],[0,2,1,0]]},{"components":[[1,1,1,0],[1,1,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,11,14],"word_in_execution_order":[[3,0,0,1],[0,6,1,0]]},{"components":[[1,1,1,0],[1,0,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,13,6],"word_in_execution_order":[[0,2,1,0],[3,0,0,1]]},{"components":[[1,1,1,0],[1,0,1,1],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,2,1,1],"free_code":7,"state":[7,13,7],"word_in_execution_order":[[2,2,1,1]]},{"components":[[1,1,1,0],[1,0,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,13,9],"word_in_execution_order":[[3,0,0,1],[6,6,1,1]]},{"components":[[1,1,1,0],[1,0,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[7,13,11],"word_in_execution_order":[[2,2,1,1],[0,4,1,0]]},{"components":[[1,1,1,0],[1,0,1,1],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,2,1,1],"free_code":7,"state":[7,13,13],"word_in_execution_order":[[6,6,1,1]]},{"components":[[1,1,1,0],[1,0,1,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,13,14],"word_in_execution_order":[[0,6,1,0],[3,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,14,6],"word_in_execution_order":[[0,2,1,0],[1,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,14,7],"word_in_execution_order":[[0,2,1,0],[5,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,1],[1,0,0,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,14,9],"word_in_execution_order":[[5,5,1,1],[1,0,0,1],[0,3,1,0]]},{"components":[[1,1,1,0],[0,1,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,14,11],"word_in_execution_order":[[5,0,0,1],[0,6,1,0]]},{"components":[[1,1,1,0],[0,1,1,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,14,13],"word_in_execution_order":[[0,6,1,0],[5,0,0,1]]},{"components":[[1,1,1,0],[0,1,1,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[7,14,14],"word_in_execution_order":[[0,6,1,0],[1,0,0,1]]},{"components":[[1,0,0,1],[0,1,1,0],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,1,2,2,2],"free_code":6,"state":[9,6,6],"word_in_execution_order":[[1,1,1,1]]},{"components":[[1,0,0,1],[0,1,1,0],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,6,7],"word_in_execution_order":[[1,1,1,1],[4,0,0,1]]},{"components":[[1,0,0,1],[0,1,1,0],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,1,2,2,2],"free_code":6,"state":[9,6,9],"word_in_execution_order":[[5,5,1,1]]},{"components":[[1,0,0,1],[0,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,6,11],"word_in_execution_order":[[5,5,1,1],[4,0,0,1]]},{"components":[[1,0,0,1],[0,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,6,13],"word_in_execution_order":[[5,5,1,1],[0,4,1,0]]},{"components":[[1,0,0,1],[0,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,6,14],"word_in_execution_order":[[1,1,1,1],[0,4,1,0]]},{"components":[[1,0,0,1],[1,1,1,0],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,7,6],"word_in_execution_order":[[1,1,1,1],[2,0,0,1]]},{"components":[[1,0,0,1],[1,1,1,0],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,7,7],"word_in_execution_order":[[1,1,1,1],[6,0,0,1]]},{"components":[[1,0,0,1],[1,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,7,9],"word_in_execution_order":[[5,5,1,1],[2,0,0,1]]},{"components":[[1,0,0,1],[1,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,7,11],"word_in_execution_order":[[5,5,1,1],[6,0,0,1]]},{"components":[[1,0,0,1],[1,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,7,13],"word_in_execution_order":[[6,0,0,1],[5,5,1,1]]},{"components":[[1,0,0,1],[1,1,1,0],[0,1,1,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,7,14],"word_in_execution_order":[[3,3,1,1],[2,0,0,1],[0,6,1,0]]},{"components":[[1,0,0,1],[1,0,0,1],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,2,1,2,2,2],"free_code":6,"state":[9,9,6],"word_in_execution_order":[[3,3,1,1]]},{"components":[[1,0,0,1],[1,0,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,9,7],"word_in_execution_order":[[3,3,1,1],[4,0,0,1]]},{"components":[[1,0,0,1],[1,0,0,1],[1,0,0,1]],"cost":0,"delta":0,"delta_ranks_in_free_order":[1,2,0,1,1,2],"free_code":9,"state":[9,9,9],"word_in_execution_order":[]},{"components":[[1,0,0,1],[1,0,0,1],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,1,2,2],"free_code":9,"state":[9,9,11],"word_in_execution_order":[[4,0,0,1]]},{"components":[[1,0,0,1],[1,0,0,1],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,2,1,2],"free_code":9,"state":[9,9,13],"word_in_execution_order":[[0,4,1,0]]},{"components":[[1,0,0,1],[1,0,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,9,14],"word_in_execution_order":[[3,3,1,1],[0,4,1,0]]},{"components":[[1,0,0,1],[1,1,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,11,6],"word_in_execution_order":[[3,3,1,1],[2,0,0,1]]},{"components":[[1,0,0,1],[1,1,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,11,7],"word_in_execution_order":[[3,3,1,1],[6,0,0,1]]},{"components":[[1,0,0,1],[1,1,0,1],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,1,2,2],"free_code":9,"state":[9,11,9],"word_in_execution_order":[[2,0,0,1]]},{"components":[[1,0,0,1],[1,1,0,1],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,1,2,2],"free_code":9,"state":[9,11,11],"word_in_execution_order":[[6,0,0,1]]},{"components":[[1,0,0,1],[1,1,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[9,11,13],"word_in_execution_order":[[5,5,1,1],[0,3,1,0]]},{"components":[[1,0,0,1],[1,1,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,11,14],"word_in_execution_order":[[0,6,1,0],[3,3,1,1]]},{"components":[[1,0,0,1],[1,0,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,13,6],"word_in_execution_order":[[3,3,1,1],[0,2,1,0]]},{"components":[[1,0,0,1],[1,0,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,13,7],"word_in_execution_order":[[6,0,0,1],[3,3,1,1]]},{"components":[[1,0,0,1],[1,0,1,1],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,2,1,2],"free_code":9,"state":[9,13,9],"word_in_execution_order":[[0,2,1,0]]},{"components":[[1,0,0,1],[1,0,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[9,13,11],"word_in_execution_order":[[3,3,1,1],[0,5,1,0]]},{"components":[[1,0,0,1],[1,0,1,1],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,2,1,2],"free_code":9,"state":[9,13,13],"word_in_execution_order":[[0,6,1,0]]},{"components":[[1,0,0,1],[1,0,1,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,13,14],"word_in_execution_order":[[3,3,1,1],[0,6,1,0]]},{"components":[[1,0,0,1],[0,1,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,14,6],"word_in_execution_order":[[1,1,1,1],[0,2,1,0]]},{"components":[[1,0,0,1],[0,1,1,1],[1,1,1,0]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,14,7],"word_in_execution_order":[[3,3,1,1],[6,0,0,1],[2,2,1,1]]},{"components":[[1,0,0,1],[0,1,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,14,9],"word_in_execution_order":[[5,5,1,1],[0,2,1,0]]},{"components":[[1,0,0,1],[0,1,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,14,11],"word_in_execution_order":[[0,6,1,0],[5,5,1,1]]},{"components":[[1,0,0,1],[0,1,1,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,14,13],"word_in_execution_order":[[5,5,1,1],[0,6,1,0]]},{"components":[[1,0,0,1],[0,1,1,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[9,14,14],"word_in_execution_order":[[1,1,1,1],[0,6,1,0]]},{"components":[[1,1,0,1],[0,1,1,0],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,6,6],"word_in_execution_order":[[1,1,1,1],[1,0,0,1]]},{"components":[[1,1,0,1],[0,1,1,0],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,6,7],"word_in_execution_order":[[1,1,1,1],[5,0,0,1]]},{"components":[[1,1,0,1],[0,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,6,9],"word_in_execution_order":[[5,5,1,1],[1,0,0,1]]},{"components":[[1,1,0,1],[0,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,6,11],"word_in_execution_order":[[5,5,1,1],[5,0,0,1]]},{"components":[[1,1,0,1],[0,1,1,0],[1,0,1,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,6,13],"word_in_execution_order":[[3,3,1,1],[5,0,0,1],[6,6,1,1]]},{"components":[[1,1,0,1],[0,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,6,14],"word_in_execution_order":[[1,0,0,1],[0,5,1,0]]},{"components":[[1,1,0,1],[1,1,1,0],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,7,6],"word_in_execution_order":[[1,1,1,1],[3,0,0,1]]},{"components":[[1,1,0,1],[1,1,1,0],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,1,2,1],"free_code":7,"state":[11,7,7],"word_in_execution_order":[[0,1,1,0]]},{"components":[[1,1,0,1],[1,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,7,9],"word_in_execution_order":[[5,5,1,1],[3,0,0,1]]},{"components":[[1,1,0,1],[1,1,1,0],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,1,2,1],"free_code":7,"state":[11,7,11],"word_in_execution_order":[[0,5,1,0]]},{"components":[[1,1,0,1],[1,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,7,13],"word_in_execution_order":[[4,4,1,1],[0,1,1,0]]},{"components":[[1,1,0,1],[1,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,7,14],"word_in_execution_order":[[3,0,0,1],[0,5,1,0]]},{"components":[[1,1,0,1],[1,0,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,9,6],"word_in_execution_order":[[3,3,1,1],[1,0,0,1]]},{"components":[[1,1,0,1],[1,0,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,9,7],"word_in_execution_order":[[3,3,1,1],[5,0,0,1]]},{"components":[[1,1,0,1],[1,0,0,1],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,1,2,2],"free_code":9,"state":[11,9,9],"word_in_execution_order":[[1,0,0,1]]},{"components":[[1,1,0,1],[1,0,0,1],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,1,2,2],"free_code":9,"state":[11,9,11],"word_in_execution_order":[[5,0,0,1]]},{"components":[[1,1,0,1],[1,0,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,9,13],"word_in_execution_order":[[6,6,1,1],[0,3,1,0]]},{"components":[[1,1,0,1],[1,0,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,9,14],"word_in_execution_order":[[0,5,1,0],[3,3,1,1]]},{"components":[[1,1,0,1],[1,1,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,11,6],"word_in_execution_order":[[3,3,1,1],[3,0,0,1]]},{"components":[[1,1,0,1],[1,1,0,1],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,1,2,1],"free_code":7,"state":[11,11,7],"word_in_execution_order":[[0,3,1,0]]},{"components":[[1,1,0,1],[1,1,0,1],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,1,2,2],"free_code":9,"state":[11,11,9],"word_in_execution_order":[[3,0,0,1]]},{"components":[[1,1,0,1],[1,1,0,1],[1,1,0,1]],"cost":0,"delta":0,"delta_ranks_in_free_order":[2,1,1,0,2,1],"free_code":11,"state":[11,11,11],"word_in_execution_order":[]},{"components":[[1,1,0,1],[1,1,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,11,13],"word_in_execution_order":[[4,4,1,1],[0,3,1,0]]},{"components":[[1,1,0,1],[1,1,0,1],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,1,2,2],"free_code":11,"state":[11,11,14],"word_in_execution_order":[[4,4,1,1]]},{"components":[[1,1,0,1],[1,0,1,1],[0,1,1,0]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,13,6],"word_in_execution_order":[[3,3,1,1],[0,2,1,0],[1,0,0,1]]},{"components":[[1,1,0,1],[1,0,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,13,7],"word_in_execution_order":[[2,2,1,1],[0,1,1,0]]},{"components":[[1,1,0,1],[1,0,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,13,9],"word_in_execution_order":[[6,6,1,1],[0,5,1,0]]},{"components":[[1,1,0,1],[1,0,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,13,11],"word_in_execution_order":[[2,2,1,1],[0,5,1,0]]},{"components":[[1,1,0,1],[1,0,1,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,13,13],"word_in_execution_order":[[6,6,1,1],[0,1,1,0]]},{"components":[[1,1,0,1],[1,0,1,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,13,14],"word_in_execution_order":[[0,5,1,0],[6,6,1,1]]},{"components":[[1,1,0,1],[0,1,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,14,6],"word_in_execution_order":[[1,0,0,1],[0,3,1,0]]},{"components":[[1,1,0,1],[0,1,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,14,7],"word_in_execution_order":[[5,0,0,1],[0,3,1,0]]},{"components":[[1,1,0,1],[0,1,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[11,14,9],"word_in_execution_order":[[0,3,1,0],[5,5,1,1]]},{"components":[[1,1,0,1],[0,1,1,1],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,1,2,2],"free_code":11,"state":[11,14,11],"word_in_execution_order":[[2,2,1,1]]},{"components":[[1,1,0,1],[0,1,1,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[11,14,13],"word_in_execution_order":[[0,3,1,0],[6,6,1,1]]},{"components":[[1,1,0,1],[0,1,1,1],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,1,2,2],"free_code":11,"state":[11,14,14],"word_in_execution_order":[[6,6,1,1]]},{"components":[[1,0,1,1],[0,1,1,0],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,6,6],"word_in_execution_order":[[1,1,1,1],[0,1,1,0]]},{"components":[[1,0,1,1],[0,1,1,0],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,6,7],"word_in_execution_order":[[5,0,0,1],[1,1,1,1]]},{"components":[[1,0,1,1],[0,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,6,9],"word_in_execution_order":[[5,5,1,1],[0,1,1,0]]},{"components":[[1,0,1,1],[0,1,1,0],[1,1,0,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,6,11],"word_in_execution_order":[[3,3,1,1],[0,5,1,0],[6,6,1,1]]},{"components":[[1,0,1,1],[0,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,6,13],"word_in_execution_order":[[5,5,1,1],[0,5,1,0]]},{"components":[[1,0,1,1],[0,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,6,14],"word_in_execution_order":[[1,1,1,1],[0,5,1,0]]},{"components":[[1,0,1,1],[1,1,1,0],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,7,6],"word_in_execution_order":[[3,0,0,1],[1,1,1,1]]},{"components":[[1,0,1,1],[1,1,1,0],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,2,1,1],"free_code":7,"state":[13,7,7],"word_in_execution_order":[[1,1,1,1]]},{"components":[[1,0,1,1],[1,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,7,9],"word_in_execution_order":[[3,0,0,1],[5,5,1,1]]},{"components":[[1,0,1,1],[1,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,7,11],"word_in_execution_order":[[1,1,1,1],[0,4,1,0]]},{"components":[[1,0,1,1],[1,1,1,0],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,2,1,1],"free_code":7,"state":[13,7,13],"word_in_execution_order":[[5,5,1,1]]},{"components":[[1,0,1,1],[1,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,7,14],"word_in_execution_order":[[0,5,1,0],[3,0,0,1]]},{"components":[[1,0,1,1],[1,0,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,9,6],"word_in_execution_order":[[3,3,1,1],[0,1,1,0]]},{"components":[[1,0,1,1],[1,0,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,9,7],"word_in_execution_order":[[5,0,0,1],[3,3,1,1]]},{"components":[[1,0,1,1],[1,0,0,1],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,2,1,2],"free_code":9,"state":[13,9,9],"word_in_execution_order":[[0,1,1,0]]},{"components":[[1,0,1,1],[1,0,0,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,9,11],"word_in_execution_order":[[3,3,1,1],[0,6,1,0]]},{"components":[[1,0,1,1],[1,0,0,1],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,2,1,2],"free_code":9,"state":[13,9,13],"word_in_execution_order":[[0,5,1,0]]},{"components":[[1,0,1,1],[1,0,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,9,14],"word_in_execution_order":[[3,3,1,1],[0,5,1,0]]},{"components":[[1,0,1,1],[1,1,0,1],[0,1,1,0]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,11,6],"word_in_execution_order":[[3,3,1,1],[2,0,0,1],[0,1,1,0]]},{"components":[[1,0,1,1],[1,1,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,11,7],"word_in_execution_order":[[1,1,1,1],[0,2,1,0]]},{"components":[[1,0,1,1],[1,1,0,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,11,9],"word_in_execution_order":[[5,5,1,1],[0,6,1,0]]},{"components":[[1,0,1,1],[1,1,0,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,11,11],"word_in_execution_order":[[1,1,1,1],[0,6,1,0]]},{"components":[[1,0,1,1],[1,1,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,11,13],"word_in_execution_order":[[5,5,1,1],[0,2,1,0]]},{"components":[[1,0,1,1],[1,1,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,11,14],"word_in_execution_order":[[0,6,1,0],[5,5,1,1]]},{"components":[[1,0,1,1],[1,0,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,13,6],"word_in_execution_order":[[3,3,1,1],[0,3,1,0]]},{"components":[[1,0,1,1],[1,0,1,1],[1,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,2,2,1,1],"free_code":7,"state":[13,13,7],"word_in_execution_order":[[3,3,1,1]]},{"components":[[1,0,1,1],[1,0,1,1],[1,0,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,2,1,2,1,2],"free_code":9,"state":[13,13,9],"word_in_execution_order":[[0,3,1,0]]},{"components":[[1,0,1,1],[1,0,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,13,11],"word_in_execution_order":[[3,3,1,1],[0,4,1,0]]},{"components":[[1,0,1,1],[1,0,1,1],[1,0,1,1]],"cost":0,"delta":0,"delta_ranks_in_free_order":[2,1,1,2,0,1],"free_code":13,"state":[13,13,13],"word_in_execution_order":[]},{"components":[[1,0,1,1],[1,0,1,1],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,2,1,2],"free_code":13,"state":[13,13,14],"word_in_execution_order":[[4,0,0,1]]},{"components":[[1,0,1,1],[0,1,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,14,6],"word_in_execution_order":[[1,1,1,1],[0,3,1,0]]},{"components":[[1,0,1,1],[0,1,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,14,7],"word_in_execution_order":[[0,3,1,0],[5,0,0,1]]},{"components":[[1,0,1,1],[0,1,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[13,14,9],"word_in_execution_order":[[5,5,1,1],[0,3,1,0]]},{"components":[[1,0,1,1],[0,1,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[13,14,11],"word_in_execution_order":[[0,6,1,0],[3,3,1,1]]},{"components":[[1,0,1,1],[0,1,1,1],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,2,1,2],"free_code":13,"state":[13,14,13],"word_in_execution_order":[[2,0,0,1]]},{"components":[[1,0,1,1],[0,1,1,1],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,2,1,2],"free_code":13,"state":[13,14,14],"word_in_execution_order":[[6,0,0,1]]},{"components":[[0,1,1,1],[0,1,1,0],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,1,2,2,2,2],"free_code":6,"state":[14,6,6],"word_in_execution_order":[[0,1,1,0]]},{"components":[[0,1,1,1],[0,1,1,0],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,6,7],"word_in_execution_order":[[4,0,0,1],[0,1,1,0]]},{"components":[[0,1,1,1],[0,1,1,0],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,6,9],"word_in_execution_order":[[4,4,1,1],[0,1,1,0]]},{"components":[[0,1,1,1],[0,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,6,11],"word_in_execution_order":[[4,0,0,1],[0,5,1,0]]},{"components":[[0,1,1,1],[0,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,6,13],"word_in_execution_order":[[4,4,1,1],[0,5,1,0]]},{"components":[[0,1,1,1],[0,1,1,0],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,1,2,2,2,2],"free_code":6,"state":[14,6,14],"word_in_execution_order":[[0,5,1,0]]},{"components":[[0,1,1,1],[1,1,1,0],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,7,6],"word_in_execution_order":[[2,0,0,1],[0,1,1,0]]},{"components":[[0,1,1,1],[1,1,1,0],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,7,7],"word_in_execution_order":[[6,0,0,1],[0,1,1,0]]},{"components":[[0,1,1,1],[1,1,1,0],[1,0,0,1]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,7,9],"word_in_execution_order":[[5,5,1,1],[3,0,0,1],[1,1,1,1]]},{"components":[[0,1,1,1],[1,1,1,0],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,7,11],"word_in_execution_order":[[6,0,0,1],[0,5,1,0]]},{"components":[[0,1,1,1],[1,1,1,0],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,7,13],"word_in_execution_order":[[0,5,1,0],[6,0,0,1]]},{"components":[[0,1,1,1],[1,1,1,0],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,7,14],"word_in_execution_order":[[2,0,0,1],[0,5,1,0]]},{"components":[[0,1,1,1],[1,0,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,9,6],"word_in_execution_order":[[2,2,1,1],[0,1,1,0]]},{"components":[[0,1,1,1],[1,0,0,1],[1,1,1,0]],"cost":3,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,9,7],"word_in_execution_order":[[3,3,1,1],[5,0,0,1],[1,1,1,1]]},{"components":[[0,1,1,1],[1,0,0,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,9,9],"word_in_execution_order":[[6,6,1,1],[0,1,1,0]]},{"components":[[0,1,1,1],[1,0,0,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,9,11],"word_in_execution_order":[[0,5,1,0],[6,6,1,1]]},{"components":[[0,1,1,1],[1,0,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,9,13],"word_in_execution_order":[[6,6,1,1],[0,5,1,0]]},{"components":[[0,1,1,1],[1,0,0,1],[0,1,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,9,14],"word_in_execution_order":[[2,2,1,1],[0,5,1,0]]},{"components":[[0,1,1,1],[1,1,0,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,11,6],"word_in_execution_order":[[2,0,0,1],[0,3,1,0]]},{"components":[[0,1,1,1],[1,1,0,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,11,7],"word_in_execution_order":[[6,0,0,1],[0,3,1,0]]},{"components":[[0,1,1,1],[1,1,0,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,11,9],"word_in_execution_order":[[0,3,1,0],[6,6,1,1]]},{"components":[[0,1,1,1],[1,1,0,1],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,1,2,2],"free_code":11,"state":[14,11,11],"word_in_execution_order":[[1,1,1,1]]},{"components":[[0,1,1,1],[1,1,0,1],[1,0,1,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[14,11,13],"word_in_execution_order":[[0,3,1,0],[5,5,1,1]]},{"components":[[0,1,1,1],[1,1,0,1],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,1,2,2],"free_code":11,"state":[14,11,14],"word_in_execution_order":[[5,5,1,1]]},{"components":[[0,1,1,1],[1,0,1,1],[0,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,13,6],"word_in_execution_order":[[2,2,1,1],[0,3,1,0]]},{"components":[[0,1,1,1],[1,0,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,13,7],"word_in_execution_order":[[0,3,1,0],[6,0,0,1]]},{"components":[[0,1,1,1],[1,0,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,13,9],"word_in_execution_order":[[6,6,1,1],[0,3,1,0]]},{"components":[[0,1,1,1],[1,0,1,1],[1,1,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":7,"state":[14,13,11],"word_in_execution_order":[[0,5,1,0],[3,3,1,1]]},{"components":[[0,1,1,1],[1,0,1,1],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,2,1,2],"free_code":13,"state":[14,13,13],"word_in_execution_order":[[1,0,0,1]]},{"components":[[0,1,1,1],[1,0,1,1],[0,1,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,2,1,2],"free_code":13,"state":[14,13,14],"word_in_execution_order":[[5,0,0,1]]},{"components":[[0,1,1,1],[0,1,1,1],[0,1,1,0]],"cost":1,"delta":1,"delta_ranks_in_free_order":[1,1,2,2,2,2],"free_code":6,"state":[14,14,6],"word_in_execution_order":[[0,3,1,0]]},{"components":[[0,1,1,1],[0,1,1,1],[1,1,1,0]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,14,7],"word_in_execution_order":[[4,0,0,1],[0,3,1,0]]},{"components":[[0,1,1,1],[0,1,1,1],[1,0,0,1]],"cost":2,"delta":2,"delta_ranks_in_free_order":[2,2,2,2,2,2],"free_code":6,"state":[14,14,9],"word_in_execution_order":[[4,4,1,1],[0,3,1,0]]},{"components":[[0,1,1,1],[0,1,1,1],[1,1,0,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,1,2,2],"free_code":11,"state":[14,14,11],"word_in_execution_order":[[3,3,1,1]]},{"components":[[0,1,1,1],[0,1,1,1],[1,0,1,1]],"cost":1,"delta":1,"delta_ranks_in_free_order":[2,1,2,2,1,2],"free_code":13,"state":[14,14,13],"word_in_execution_order":[[3,0,0,1]]},{"components":[[0,1,1,1],[0,1,1,1],[0,1,1,1]],"cost":0,"delta":0,"delta_ranks_in_free_order":[1,0,2,1,1,2],"free_code":14,"state":[14,14,14],"word_in_execution_order":[]}],"records_sha256":"21d3f5c807147ca0a2062a03afb68f456efbcb7755f805d8bcf7d6ac86320f6c","ring":"F2^3","roles":2,"schema_version":1,"scope":"Formal paid-factor alphabet only; no physical caller, supplier, precision, stock, or kappa claim.","scratch_roles":0,"target_count":216,"word_convention":"apply free_code first, then left-apply listed factors in execution order"} diff --git a/research/right-vector-commutative-products/EXPECTED-ORACLE.json b/research/right-vector-commutative-products/EXPECTED-ORACLE.json new file mode 100644 index 0000000000..80d8671e08 --- /dev/null +++ b/research/right-vector-commutative-products/EXPECTED-ORACLE.json @@ -0,0 +1 @@ +{"canonical": {"components": [[1, 0, 0, 1], [0, 1, 1, 1], [1, 1, 1, 0]], "cost": 3, "delta": 2, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1]], [[1, 0, 0, 1], [1, 0, 1, 1], [1, 0, 0, 1]]], "zero_census": [1, 1, 1, 1, 1, 1, 1, 1, 1]}, "controls": {"componentwise_free_is_changed": true, "composite_moduli_rejected": [4, 6, 9], "drop_component": true, "drop_factor": true, "reverse_factors": true, "singular_outside_premise": true}, "first_column_triples_F3": 512, "prime_witnesses": [{"components": 3, "p": 2, "polynomial": [1, 1, 1], "projective_pairs": 9, "word": [[[1, 0, 0, 1], [1, 0, 1, 1], [1, 0, 0, 1]], [[1, 0, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1]], [[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]]], "zero_components_per_pair": 1}, {"components": 4, "p": 3, "polynomial": [1, 0, 1], "projective_pairs": 16, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 2, 0, 1], [1, 1, 0, 1], [1, 2, 0, 1]], [[1, 0, 0, 1], [2, 0, 1, 1], [2, 0, 2, 1], [1, 0, 1, 1]]], "zero_components_per_pair": 1}, {"components": 6, "p": 5, "polynomial": [2, 0, 1], "projective_pairs": 36, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 3, 0, 1], [1, 1, 0, 1], [1, 4, 0, 1], [1, 2, 0, 1], [1, 3, 0, 2]], [[1, 0, 0, 1], [3, 0, 1, 1], [4, 0, 2, 1], [4, 0, 3, 1], [3, 0, 4, 1], [1, 0, 3, 1]]], "zero_components_per_pair": 1}, {"components": 8, "p": 7, "polynomial": [1, 0, 1], "projective_pairs": 64, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 6, 0, 1], [1, 5, 0, 1], [1, 4, 0, 1], [1, 3, 0, 1], [1, 2, 0, 1], [1, 1, 0, 1], [1, 6, 0, 1]], [[1, 0, 0, 1], [2, 0, 1, 1], [5, 0, 2, 1], [3, 0, 3, 1], [3, 0, 4, 1], [5, 0, 5, 1], [2, 0, 6, 1], [1, 0, 1, 1]]], "zero_components_per_pair": 1}, {"components": 12, "p": 11, "polynomial": [1, 0, 1], "projective_pairs": 144, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 10, 0, 1], [1, 9, 0, 1], [1, 8, 0, 1], [1, 7, 0, 1], [1, 6, 0, 1], [1, 5, 0, 1], [1, 4, 0, 1], [1, 3, 0, 1], [1, 2, 0, 1], [1, 1, 0, 1], [1, 10, 0, 1]], [[1, 0, 0, 1], [2, 0, 1, 1], [5, 0, 2, 1], [10, 0, 3, 1], [6, 0, 4, 1], [4, 0, 5, 1], [4, 0, 6, 1], [6, 0, 7, 1], [10, 0, 8, 1], [5, 0, 9, 1], [2, 0, 10, 1], [1, 0, 1, 1]]], "zero_components_per_pair": 1}, {"components": 14, "p": 13, "polynomial": [2, 0, 1], "projective_pairs": 196, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 11, 0, 1], [1, 9, 0, 1], [1, 7, 0, 1], [1, 5, 0, 1], [1, 3, 0, 1], [1, 1, 0, 1], [1, 12, 0, 1], [1, 10, 0, 1], [1, 8, 0, 1], [1, 6, 0, 1], [1, 4, 0, 1], [1, 2, 0, 1], [1, 11, 0, 2]], [[1, 0, 0, 1], [3, 0, 1, 1], [9, 0, 2, 1], [6, 0, 3, 1], [7, 0, 4, 1], [12, 0, 5, 1], [8, 0, 6, 1], [8, 0, 7, 1], [12, 0, 8, 1], [7, 0, 9, 1], [6, 0, 10, 1], [9, 0, 11, 1], [3, 0, 12, 1], [1, 0, 7, 1]]], "zero_components_per_pair": 1}, {"components": 18, "p": 17, "polynomial": [3, 0, 1], "projective_pairs": 324, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 14, 0, 1], [1, 11, 0, 1], [1, 8, 0, 1], [1, 5, 0, 1], [1, 2, 0, 1], [1, 16, 0, 1], [1, 13, 0, 1], [1, 10, 0, 1], [1, 7, 0, 1], [1, 4, 0, 1], [1, 1, 0, 1], [1, 15, 0, 1], [1, 12, 0, 1], [1, 9, 0, 1], [1, 6, 0, 1], [1, 3, 0, 1], [1, 14, 0, 3]], [[1, 0, 0, 1], [4, 0, 1, 1], [13, 0, 2, 1], [11, 0, 3, 1], [15, 0, 4, 1], [8, 0, 5, 1], [7, 0, 6, 1], [12, 0, 7, 1], [6, 0, 8, 1], [6, 0, 9, 1], [12, 0, 10, 1], [7, 0, 11, 1], [8, 0, 12, 1], [15, 0, 13, 1], [11, 0, 14, 1], [13, 0, 15, 1], [4, 0, 16, 1], [1, 0, 6, 1]]], "zero_components_per_pair": 1}, {"components": 20, "p": 19, "polynomial": [1, 0, 1], "projective_pairs": 400, "word": [[[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], [[1, 0, 0, 1], [1, 18, 0, 1], [1, 17, 0, 1], [1, 16, 0, 1], [1, 15, 0, 1], [1, 14, 0, 1], [1, 13, 0, 1], [1, 12, 0, 1], [1, 11, 0, 1], [1, 10, 0, 1], [1, 9, 0, 1], [1, 8, 0, 1], [1, 7, 0, 1], [1, 6, 0, 1], [1, 5, 0, 1], [1, 4, 0, 1], [1, 3, 0, 1], [1, 2, 0, 1], [1, 1, 0, 1], [1, 18, 0, 1]], [[1, 0, 0, 1], [2, 0, 1, 1], [5, 0, 2, 1], [10, 0, 3, 1], [17, 0, 4, 1], [7, 0, 5, 1], [18, 0, 6, 1], [12, 0, 7, 1], [8, 0, 8, 1], [6, 0, 9, 1], [6, 0, 10, 1], [8, 0, 11, 1], [12, 0, 12, 1], [18, 0, 13, 1], [7, 0, 14, 1], [17, 0, 15, 1], [10, 0, 16, 1], [5, 0, 17, 1], [2, 0, 18, 1], [1, 0, 1, 1]]], "zero_components_per_pair": 1}], "records": [{"components": [[0, 1, 1, 0], [0, 1, 1, 0], [0, 1, 1, 0]], "cost": 0, "delta": 0}, {"components": [[0, 1, 1, 0], [0, 1, 1, 0], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [0, 1, 1, 0], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [0, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [0, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [0, 1, 1, 0], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [0, 1, 1, 1], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [0, 1, 1, 1], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [0, 1, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [0, 1, 1, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [0, 1, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [0, 1, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 0, 1], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [1, 0, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 0, 1], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [1, 0, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 0, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 1, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 1, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 1]], "cost": 3, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 0, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 0, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 0, 1], [1, 0, 1, 1]], "cost": 3, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 0, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 1, 0], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 0], [1, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 0], [1, 1, 1, 0], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [0, 1, 1, 0], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [0, 1, 1, 0], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [0, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [0, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [0, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [0, 1, 1, 0], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [0, 1, 1, 1], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [0, 1, 1, 1], [0, 1, 1, 1]], "cost": 0, "delta": 0}, {"components": [[0, 1, 1, 1], [0, 1, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [0, 1, 1, 1], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [0, 1, 1, 1], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [0, 1, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 0, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 0, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 0, 1], [1, 1, 1, 0]], "cost": 3, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 1, 1], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [1, 0, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 1, 1], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [1, 0, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 0, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 0, 1], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [1, 1, 0, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 0, 1], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[0, 1, 1, 1], [1, 1, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 1, 0], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 1, 0], [1, 0, 0, 1]], "cost": 3, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[0, 1, 1, 1], [1, 1, 1, 0], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 0], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 0], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [0, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 0], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [0, 1, 1, 1], [1, 1, 1, 0]], "cost": 3, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 0, 0, 1], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [1, 0, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1]], "cost": 0, "delta": 0}, {"components": [[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [1, 0, 0, 1], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [1, 0, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 0, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 0, 1, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 0, 1, 1], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [1, 0, 1, 1], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [1, 0, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 0, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 0, 1], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [1, 1, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 0, 1], [1, 1, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 1, 0], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 1, 0], [0, 1, 1, 1]], "cost": 3, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 0, 1], [1, 1, 1, 0], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 0], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 0], [1, 1, 0, 1]], "cost": 3, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 0], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 1], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [0, 1, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 1], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [0, 1, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [0, 1, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 0, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 0, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 0, 0, 1], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [1, 0, 0, 1], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [1, 0, 0, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 0, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 0, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 0, 1, 1], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [1, 0, 1, 1], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [1, 0, 1, 1], [1, 0, 1, 1]], "cost": 0, "delta": 0}, {"components": [[1, 0, 1, 1], [1, 0, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 0, 1, 1], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [1, 1, 0, 1], [0, 1, 1, 0]], "cost": 3, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 0, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 0, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 1, 0], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 1, 0], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 0, 1, 1], [1, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 0, 1, 1], [1, 1, 1, 0], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 0], [1, 0, 1, 1]], "cost": 3, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 0], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [0, 1, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [0, 1, 1, 1], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [0, 1, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 0, 1], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [1, 0, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 1, 1], [0, 1, 1, 0]], "cost": 3, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 1, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 1, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 0, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 1, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 1, 0, 1], [0, 1, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [1, 1, 0, 1], [1, 0, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [1, 1, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1]], "cost": 0, "delta": 0}, {"components": [[1, 1, 0, 1], [1, 1, 0, 1], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [1, 1, 1, 0], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [0, 1, 1, 0], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [0, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 0], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 0], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 0], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [0, 1, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 1], [1, 0, 0, 1]], "cost": 3, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [0, 1, 1, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 0, 1], [0, 1, 1, 1]], "cost": 3, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 0, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 0, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 0, 1], [1, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 1, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 1, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 1, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 1, 1], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 0, 1, 1], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [1, 1, 0, 1], [0, 1, 1, 0]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 1, 0, 1], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 1, 0, 1], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 1, 0, 1], [1, 0, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 1, 0, 1], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [1, 1, 0, 1], [1, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [1, 1, 1, 0], [0, 1, 1, 0]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [1, 1, 1, 0], [0, 1, 1, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 1, 1, 0], [1, 0, 0, 1]], "cost": 2, "delta": 2}, {"components": [[1, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [1, 1, 1, 0], [1, 1, 0, 1]], "cost": 1, "delta": 1}, {"components": [[1, 1, 1, 0], [1, 1, 1, 0], [1, 1, 1, 0]], "cost": 0, "delta": 0}], "upper_word_matrices": 2550} diff --git a/research/right-vector-commutative-products/PACKAGE-REVIEW.json b/research/right-vector-commutative-products/PACKAGE-REVIEW.json new file mode 100644 index 0000000000..6c8accd610 --- /dev/null +++ b/research/right-vector-commutative-products/PACKAGE-REVIEW.json @@ -0,0 +1,22 @@ +{ + "status": "PASS_SEPARATE_PROOF_CODE_INTEGRATION_REVIEW_AND_ROOT_REPLAY", + "reviewed_at": "2026-10-21T10:29:13.178798+00:00", + "file_sha256": { + ".gitattributes": "e33596b6cf4e4ef921155cb5808ca49593cb4cedc766277a833701dbe2e5dae1", + "CODE-REVIEW.md": "75deb8f45a64ba2550ec30a5570ac749b5629d00a0627753c3d668b80dfc95bd", + "EXPECTED-BFS.json": "313192ab25845980122d39e9d91c0901a08748722c18ab23691d64df5bc5e70c", + "EXPECTED-ORACLE.json": "b0eae660ae44d46d445de8b31f40827e03aa2b18eb2057f7e616644c28ea5f78", + "PROOF.md": "b401a15bc3a11e2040cdde9d99d4a5b8ec7b4f92643eac547f21b7c667fbf408", + "README.md": "6222431360182204f502334d1c707eefc39a174d06578ef75c52f37b5873055f", + "SOURCE-PINS.json": "b57337cf7d7d387d9cec638fddaefcedd06e6292a58ecf612cc90e794b08e063", + "SOURCES.json": "a2634e490a808b7d3120559803bd41dbc523f2cc8a734ba6a476e9624353037c", + "TASK.json": "d1bf25963bde13fa7287b495b69907cd2b3c5de1d134d3e584913acfe33db8c4", + "VERIFY.json": "8380496e1c8f003d24cca8e8cd1adfccbc165f2a6792f29e976e9eabad9604ea", + "engine.py": "c60ffb769596d8c93674556bd35087ae42d10e2076ab8a5d6e8d03a9e62a9791", + "oracle.py": "76a6ee7ca38ef938fa328f0f720006375e9d244ff33024aa292aeb567fcf9903", + "source/PROOF.md": "c1065c51c839d11b0d31bccb8d39ebc07a869eb0f29899038518e3090a58c895", + "source/README.md": "e00d4352a98b02c5046d8796ba4ef2afd3c6a78d66b4398d23794ebd8147580d", + "verify.py": "159302875cb4b599b0ac3f4a230a4e208addc235aa0ad220a80d6a39b506b215" + }, + "review_scope": "Independent AI proof/BFS/oracle/static integration; full typed records match, normal and optimized warning-strict root replays; no human/kernel acceptance" +} diff --git a/research/right-vector-commutative-products/PROOF.md b/research/right-vector-commutative-products/PROOF.md new file mode 100644 index 0000000000..f149515c16 --- /dev/null +++ b/research/right-vector-commutative-products/PROOF.md @@ -0,0 +1,306 @@ +# Invertible targets over products of fields in the right-vector model + +## Model, statements, and predecessor + +Let `K` be a field and let `R` be a commutative unital `K`-algebra. We use +exactly the retained source's model at `n = 2`: + +```text +P(u,y) = I + u y^T, u in R^2, y in K^2, +free factors: GL_2(K), usable anywhere in the word, +cost(M): minimum number of paid P factors in a word equal to M, +delta(M) = min_{T in GL_2(K)} dim_K ((M T - I) K^2). +``` + +The `K^2` in the definition of `delta` is the common two-dimensional input +space, not an independently chosen input in each product component. The +embedding of `K` into a product is diagonal. A free matrix and each right +vector `y` must therefore be common to all components. In contrast, the two +entries of `u` are arbitrary elements of `R`, so they may vary by component. + +The predecessor is Nick Petalas's PR #4276, +`research/right-vector-two-factor-criterion`, at source head +`59c7bac0122ef2b80793c30a3d52329db6bdf17d`. Its retained +[PROOF.md](source/PROOF.md), Theorems A and B, supplies the one-factor and +two-factor criteria. Its [README.md](source/README.md) asks whether `delta` +is exact for invertible targets over commutative algebras. We rederive the +needed criteria below to make this argument self-contained. + +For an invertible `M` over `R = K^k`, with `k >= 1` and components +`M_i in GL_2(K)`, we prove: + +1. `cost(M) <= 2` if and only if there are nonzero + `phi in (K^2)^*` and `t in K^2` such that `phi M_i t != 0` for every `i`. +2. Every invertible target over any finite product of fields that are + unital `K`-algebras has an explicit word with at most three paid factors, + using the fixed right-vector sequence `e1, e2, e1`. +3. If `K` is finite of size `q`, every invertible target over `K^k` costs at + most two when `k <= q`. For every `k >= q+1` there is an invertible target + of cost exactly three and `delta = 2`. + +Thus commutativity alone does not make `cost = delta` on invertible targets +in this model. The smallest field-size instance proved here is `F2^3`. +No assertion is made that it is the smallest commutative algebra with this +property among all algebras. + +## 1. Elementary one-factor and two-factor criteria + +Conjugation by a free matrix preserves the paid alphabet: + +```text +S P(u,y) S^{-1} = P(Su, S^{-T}y). +``` + +Moving free factors to the right therefore rewrites a word as a product of +the same number of paid factors followed by one `S in GL_2(K)`. Also, paid +factors with proportional nonzero right vectors merge: + +```text +P(u,y) P(v,c y) = P(u + c v + c u (y^T v), y), c in K. +``` + +This follows by expansion. A zero right vector or zero left vector gives +the identity. + +For later use, `cost(M) <= 1` holds exactly when `delta(M) <= 1`. A word +`M = P(u,y) S` gives `(M S^{-1} - I) K^2` contained in `K u`. +Conversely, if the image of `M T - I` has dimension one, choose a spanning +vector `u` and write its two columns as `y_1 u, y_2 u`, with `y_j in K`. +Then `M T = P(u,y)` and `M = P(u,y) T^{-1}`. If the image has dimension +zero, `M = T^{-1}` is free. This also shows that `delta = 0` exactly when +`cost = 0`, and hence that cost and delta agree whenever cost is at most one. + +We next prove the retained two-factor criterion: + +```text +cost(M) <= 2 +iff some G,H in GL_2(K) give N = G M H with N12 in N11 R. +``` + +For sufficiency, write `N12 = A C`, where `A = N11`, and put +`B = N21`, `D = N22 - B C`. Then + +```text +N = [[A,0],[B,1]] [[1,C],[0,D]] + = P((A-1,B)^T,e1) P((C,D-1)^T,e2). +``` + +Consequently `M = G^{-1} N H^{-1}` has a word with two paid factors and +free factors. This uses the explicit permission to place free maps anywhere. + +For necessity, normalize a word with at most two paid factors to +`M = P(u1,y1) P(u2,y2) S`. If its right vectors are dependent, merge the +factors, handle any identity factors, and pad with an identity paid factor +whose right vector is independent of the remaining nonzero right vector. +For a completely free word, pad with identities in any two independent +directions. Thus we may arrange that `y1,y2` are a basis of `K^2`. +Choose `G in GL_2(K)` with `G^{-T} y_j = e_j` and set +`H = S^{-1} G^{-1}`. Then + +```text +G M H = P(v1,e1) P(v2,e2) + = [[A,0],[B,1]] [[1,C],[0,D]] + = [[A,A C],[B,B C+D]] +``` + +for suitable entries in `R`. Its `(1,2)` entry belongs to `N11 R`, as +required. This argument is the predecessor's criterion, not a new claim +about the alphabet. + +## 2. The common row and column criterion + +First allow `R = F_1 x ... x F_k`, where each `F_i` is a field containing +the given copy of `K`. An element `A = (A_i)` of `R` is a unit exactly when +every `A_i` is nonzero. Also, + +```text +Z in A R iff A_i = 0 implies Z_i = 0 for every i. +``` + +Let `M` be invertible. Its components `M_i` are invertible, and the same is +true of every component of `N = G M H`, for `G,H in GL_2(K)`. +If `N12 in N11 R` and a component `N11_i` were zero, then `N12_i` would +also be zero. That component matrix would have a zero first row, which is +impossible. Thus `N11` is a unit. Conversely, if `N11` is a unit, then +`N12 in N11 R` automatically. + +Write `phi` for the first row of `G` and `t` for the first column of `H`. +They are nonzero and + +```text +N11_i = phi M_i t. +``` + +Every nonzero `K` row extends to a basis of the row space, and every nonzero +`K` column extends to a basis of the column space. Thus every such pair +`phi,t` occurs for some `G,H`. The preceding section now proves + +```text +cost(M) <= 2 iff there exist common nonzero K row phi and K column t + with phi M_i t != 0 for every i. +``` + +In particular this holds for `R = K^k`. Invertibility matters: for a +singular component, a zero first row need not give a contradiction, so the +unit-entry reduction above is not asserted for arbitrary targets. + +## 3. A constructive three-factor word + +Let again `R = F_1 x ... x F_k`, and write an invertible target as + +```text +M = [[a,b],[c,d]]. +``` + +The second column `(b_i,d_i)^T` is nonzero in each field component. Define +an allowed coefficient `r in R` componentwise by + +```text +r_i = 0 if d_i != 0, and r_i = 1 if d_i = 0. +D = d - r b. +``` + +If `d_i != 0`, then `D_i = d_i != 0`. If `d_i = 0`, then `b_i != 0` and +`D_i = -b_i != 0`, including in characteristic two. Therefore `D` is a +unit. Put + +```text +f = D^{-1} (c - r a), +e = a - b f. +``` + +Because `R` is commutative, + +```text +e D = a(d-rb) - b(c-ra) = ad-bc = det(M). +``` + +The determinant of `M` and `D` are units, so `e` is a unit as well. Direct +multiplication gives the promised word: + +```text +M = [[1,0],[r,1]] [[1,b],[0,D]] [[e,0],[f,1]] + = P((0,r)^T,e1) P((b,D-1)^T,e2) P((e-1,f)^T,e1). +``` + +Indeed the right-hand product has entries `e+bf = a`, `b`, +`r(e+bf)+Df = ra+(c-ra) = c`, and `rb+D = d`. +All three factors are invertible, although the paid alphabet does not +require this separately. An identity factor can be omitted, so the result +is a bound of at most three paid factors. No free map is needed for this +construction. The componentwise choice of `r` is placed in a left vector +over `R`; it does not introduce componentwise free maps or right vectors. + +## 4. Finite-field threshold and sharp examples + +Suppose `K` has `q` elements and `R = K^k`. The projective line `P^1(K)` +has `(q^2-1)/(q-1) = q+1` points: its points are the one-dimensional +subspaces of `K^2`, each with `q-1` nonzero vectors. The dual row space has +the same number of projective points. + +Fix any nonzero `t in K^2`. Each `M_i t` is nonzero. Exactly one projective +row `phi` annihilates it, since its annihilator has dimension one. There +are at most `k` forbidden projective rows. If `k <= q`, at least one of the +`q+1` projective rows is not forbidden, and it gives `phi M_i t != 0` for +every component. Section 2 proves `cost(M) <= 2`. + +This also gives `cost(M) = delta(M)` in this range. Section 1 decides the +cases `delta <= 1`. If the cost is two, `delta` cannot be at most one, and +the map defining delta has domain `K^2`, so delta is exactly two. + +To prove sharpness for every finite field, first construct a quadratic +field extension. There are `q^2` monic quadratic polynomials over `K`. +A reducible monic quadratic is determined uniquely by its unordered pair +of roots, allowing a repeated root. There are + +```text +q + q(q-1)/2 = q(q+1)/2 +``` + +such pairs. Thus there are `q(q-1)/2 > 0` irreducible monic quadratics. +Choose one, `h`, and form the field `L = K[X]/(h)`, which has dimension two +over `K`. Fix a `K` basis of `L` and choose a nonzero representative +`alpha_l` of each of its `q+1` one-dimensional `K` subspaces `l`. +Let `A_l in GL_2(K)` be the matrix of multiplication by `alpha_l`. +It is invertible because `alpha_l` is nonzero in a field. + +For a fixed nonzero `t in K^2`, let `beta` be the corresponding nonzero +element of `L`. The vectors `A_l t` correspond to `alpha_l beta`. +Multiplication by `beta` is a `K`-linear bijection, so it permutes the +one-dimensional `K` subspaces of `L`. Hence these `q+1` outputs meet every +projective line exactly once. For every nonzero row `phi`, one of the +outputs therefore lies in the line `ker(phi)`. + +The target with components `(A_l)_l` has no common pair `phi,t` satisfying +Section 2. It costs more than two. Section 3 supplies a word with at most +three factors, so its cost is exactly three. For any `k > q+1`, append +identity components. The original `q+1` components still prevent a common +pair, and the three-factor construction still applies. + +Finally, these examples have `delta = 2`. Delta is at most two because its +defining map has a two-dimensional domain. If delta were at most one, +Section 1 would give a word with at most one paid factor, contradicting +the proved cost of three. This proves the stated threshold with no search +or asymptotic assumption. + +## 5. The explicit F2^3 target + +Take `h(X) = X^2+X+1` over `F2`, with basis `(1,theta)` of its quotient +field, and use the line representatives `1,theta,1+theta`. The target has +components + +```text +M1 = [[1,0],[0,1]], +M2 = [[0,1],[1,1]], +M3 = [[1,1],[1,0]]. +``` + +For each of the three possible nonzero input columns, the outputs are: + +| `t` | `M1 t` | `M2 t` | `M3 t` | +|---|---|---|---| +| `(1,0)^T` | `(1,0)^T` | `(0,1)^T` | `(1,1)^T` | +| `(0,1)^T` | `(0,1)^T` | `(1,1)^T` | `(1,0)^T` | +| `(1,1)^T` | `(1,1)^T` | `(1,0)^T` | `(0,1)^T` | + +Every row of this table contains every nonzero vector, so each nonzero +row `phi` annihilates at least one output. The target therefore costs +more than two. Here is a three-factor word, written entirely in `R=F2^3`: + +```text +zero = (0,0,0), one = (1,1,1), +r = (0,0,1), b = (0,1,1), f = (0,1,0), +M = P((zero,r)^T,e1) P((b,zero)^T,e2) P((zero,f)^T,e1). +``` + +Its first component is the identity. Its second component is +`[[1,1],[0,1]] [[1,0],[1,1]] = M2`, and its third component is +`[[1,0],[1,1]] [[1,1],[0,1]] = M3`. Thus this target has cost exactly three +and delta exactly two. These identities and the three-line table are +mathematical checks, not claims that a computational replay was run here. + +## Scope, credit, and remaining trust + +The model and column bound originate in Wentao Li's #4099, building on +#2513; #4243 supplies the diagonal/free-basis development. The general-target +question and earlier noncommutative failures are from #4265. Nick Petalas's +#4276 supplies the retained criteria and the explicit commutative-product +question. Those contributions retain their credit. The scoped deductions +here are the product-field reduction, constructive three-factor bound, and +sharp finite-field component threshold. Projective-line counting, quadratic +extensions, determinant algebra, and rank-one factor manipulations are +classical facts and are not claimed as new general mathematics. + +This is a proof in the stated formal alphabet. It assumes that arbitrary +left vectors over the whole product algebra are permitted at one paid +factor and that `GL_2(K)` maps are free anywhere. No physical implementation, +component-selection cost, routing, storage, precision, restoration, native +supplier invoice, or recursive multiplication cost has been supplied; +those costs remain UNKNOWN. The argument does not classify singular targets +or general commutative algebras, and does not change selected kappa. + +The proof was prepared with substantial OpenAI Codex assistance, including +separate AI mathematical assessment. It is not independent human acceptance +or formal proof-kernel verification. Finite enumerations, if supplied +elsewhere in this package, remain separate evidence and do not substitute +for the quantified argument above. No source files were changed for it. diff --git a/research/right-vector-commutative-products/README.md b/research/right-vector-commutative-products/README.md new file mode 100644 index 0000000000..fc9889d416 --- /dev/null +++ b/research/right-vector-commutative-products/README.md @@ -0,0 +1,126 @@ +# Commutative products can require a third right-vector factor + +**Scoped proof with a complete small-model certificate. No new kappa.** +This answers Open question 3 of Nick Petalas's +[PR4276](https://github.com/CrocSwap/integer-mult-bounds/pull/4276): +commutativity does not make `cost(M)=delta(M)` for every invertible target. + +The exact source model has two roles, paid factors `I+u y^T` with `u in R^2` +and `y in K^2`, and arbitrary `GL2(K)` maps free anywhere. `K` embeds +diagonally into a product algebra. The free maps and right vectors must be +common to all components; the `R` left coefficients may vary by component. +No scratch or borrowed helper is used. + +## Result + +For an invertible target over `R=K^k`, two paid factors suffice exactly when +some common nonzero base-field row `phi` and column `t` make every +`phi M_i t` nonzero. Every invertible target over a finite product of field +`K`-algebras has an explicit three-factor word, with right vectors +`e1,e2,e1`. If `K` has `q` elements, the component threshold is sharp: + +- `k<=q`: every invertible target has `cost=delta<=2`. +- `k>=q+1`: an invertible target can have `cost=3` and `delta=2`. + +[PROOF.md](PROOF.md) gives the complete quantified argument, including the +quadratic-extension construction for **every finite field**, not just prime +fields. It rederives the predecessor criteria, which retain their credit. +Projective counting, field extensions and determinant algebra are classical; +this is their scoped application to the retained research question. + +The small counterexample is `R=F2^3`, with component matrices + +```text +I = [[1,0],[0,1]], J = [[0,1],[1,1]], J^2 = [[1,1],[1,0]]. +``` + +For each nonzero `t`, these three matrices send `t` to all three nonzero +binary columns. Every nonzero row kills one of them, so all nine common +pivots fail. An explicit attaining word is in the proof. In particular the +predecessor's suggested invertible `F3^3` search cannot refute the claim: +three components are still below its four-component obstruction threshold. +This does not classify singular targets or every commutative algebra. + +## Exact finite evidence + +`engine.py` independently enumerates the literal paid alphabet and computes +the complete invertible `F2^3` metric by BFS. It imports no predecessor code +and uses no projective criterion. All 216 targets are reached using 22 distinct +invertible paid factors. Filtering singular factors is sound for an +invertible endpoint over a product of fields. + +| Paid cost | delta | Targets | +|---:|---:|---:| +| 0 | 0 | 6 | +| 1 | 1 | 54 | +| 2 | 2 | 144 | +| 3 | 2 | 12 | + +The distance certificate checks all 4,752 paid edges and all 1,296 free edges, +132 conjugations, all 216 attaining matrix words and 13,824 arbitrary-input +evaluations. Delta is computed from the literal six-by-two binary column +matrix at all six free endpoints. `EXPECTED-BFS.json` retains every target, +distance, delta endpoint and attaining word. + +The separate `oracle.py` computes the complete same 216 cost/delta records +from projective pivots and common literal-vector images, with no BFS import. +All records agree. It checks sharp witnesses over prime fields +`2,3,5,7,11,13,17,19`, all 512 possible nonzero first-column triples for +`F3^3`, and 2,550 literal three-factor identities over `F2,F3,F5,F7`. +`EXPECTED-ORACLE.json` retains the complete regenerated data. Prime-field +replay corroborates the written all-finite-field theorem; it does not replace +that proof or claim an extension-field software census. + +**Word conventions:** BFS records use execution order: apply the recorded +free map first, then left-apply each paid factor, giving `P_r...P_1 S`. +Oracle `word` arrays use algebraic product order `F1 F2 F3`; a column-vector +execution applies `F3` first. These are separately checked witnesses and must +not be interchanged. The independent review identified this presentation +distinction; it is explicit here without changing either computation. + +Controls detect omitted factors, wrong component and free chart, reversed +products, a dropped obstruction component, treating componentwise free maps +as the common free model, composite moduli incorrectly labelled fields, +singular targets outside the upper theorem, and typed/coverage evidence +corruptions. Explicit checks remain active under optimized Python. + +## Reproduce + +Python 3.12 standard library only: + +```sh +python3.12 -B scripts/research_package.py --package research/right-vector-commutative-products +``` + +Both registered normal and optimized warning-strict commands freshly execute +both implementations, compare **all typed regenerated data** with the +retained artifacts, and compare all 216 cross-engine cost/delta records. +The command prints a compact receipt; the full data remains in the two +EXPECTED files. Source contracts are exact unchanged exports of PR4276 head +`59c7bac0122ef2b80793c30a3d52329db6bdf17d`, retained through input ancestor +`326b25e5da8330cc3a44f84e8dcde0e4ff50c5e0` with Git/SHA256 pins. + +## Open next questions + +1. Specify a product of commutative local algebras and prove the unit/right-ideal + reduction before searching. This could separate shared residue-field charts + from nilpotent effects; the present theorem only classifies field products. +2. Bind one literal native producer/consumer to the stipulated `R`-left-vector + and common-free-map interface, with its complete invoice before construction. + Preparation, routing, control, precision, restoration and stock costs are + **UNKNOWN**. This formal three-factor word supplies none of them. + +`TASK.json` records the changed original card, bounded decision and structured +follow-ups. No native caller, supplier, outer multiplication theorem, +independent human acceptance or formal proof-kernel review is supplied. The +selected frontier is unchanged; maintainer edits are disabled. + +## Credit + +Nick Petalas's PR4276 supplies the exact criteria and open question, following +PR4265 and PR4243. Wentao Li's PR4099 supplies the right-vector alphabet and +column bound, building on PR2513. Their source documents and attribution are +retained unchanged. New work by ToikY with substantial OpenAI Codex assistance: +separate proof author, BFS implementation, projective oracle and static review +contexts. These are AI-assisted checks, not independent human review. New +material Apache-2.0; no merge or selected-frontier change. diff --git a/research/right-vector-commutative-products/SOURCE-PINS.json b/research/right-vector-commutative-products/SOURCE-PINS.json new file mode 100644 index 0000000000..5b753efb0b --- /dev/null +++ b/research/right-vector-commutative-products/SOURCE-PINS.json @@ -0,0 +1,18 @@ +{ + "original_head": "59c7bac0122ef2b80793c30a3d52329db6bdf17d", + "retained_ancestor": "326b25e5da8330cc3a44f84e8dcde0e4ff50c5e0", + "files": [ + { + "path": "source/PROOF.md", + "bytes": 3969, + "sha256": "c1065c51c839d11b0d31bccb8d39ebc07a869eb0f29899038518e3090a58c895", + "git_blob": "71888afa0db63d6d332cbbdc408abf1aa879681c" + }, + { + "path": "source/README.md", + "bytes": 6479, + "sha256": "e00d4352a98b02c5046d8796ba4ef2afd3c6a78d66b4398d23794ebd8147580d", + "git_blob": "8952fc9ae8a6e1144e5a0008141121aee66aec69" + } + ] +} diff --git a/research/right-vector-commutative-products/SOURCES.json b/research/right-vector-commutative-products/SOURCES.json new file mode 100644 index 0000000000..37e265a842 --- /dev/null +++ b/research/right-vector-commutative-products/SOURCES.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96" + }, + { + "path": "docs/research/research-family-status.md", + "usage": "provenance", + "git_blob": "abdd2792e6a5596b3fa6be3dc9db882bd8e3ef89", + "sha256": "0e61c47dfbc6f16e5f64594fcc7d907d4187568e38dddf10d473f0992419c44f" + }, + { + "path": "research/right-vector-commutative-products/source/PROOF.md", + "usage": "input", + "git_blob": "71888afa0db63d6d332cbbdc408abf1aa879681c", + "sha256": "c1065c51c839d11b0d31bccb8d39ebc07a869eb0f29899038518e3090a58c895", + "pin": "head:326b25e5da8330cc3a44f84e8dcde0e4ff50c5e0:research/right-vector-commutative-products/source/PROOF.md" + }, + { + "path": "research/right-vector-commutative-products/source/README.md", + "usage": "input", + "git_blob": "8952fc9ae8a6e1144e5a0008141121aee66aec69", + "sha256": "e00d4352a98b02c5046d8796ba4ef2afd3c6a78d66b4398d23794ebd8147580d", + "pin": "head:326b25e5da8330cc3a44f84e8dcde0e4ff50c5e0:research/right-vector-commutative-products/source/README.md" + } + ] +} diff --git a/research/right-vector-commutative-products/TASK.json b/research/right-vector-commutative-products/TASK.json new file mode 100644 index 0000000000..1088fe8aa2 --- /dev/null +++ b/research/right-vector-commutative-products/TASK.json @@ -0,0 +1,97 @@ +{ + "schema_version": 1, + "task_id": "bit-new-register-model", + "priority_revision": 7, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "original_card": { + "id": "bit-new-register-model", + "question": "Can an explicitly larger or nonabelian register model escape the scoped three-register obstruction?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/bit-three-register-lower-bound/README.md", + "certificates/selected-result.json", + "research/bit-gl3-mixed-targets-length10/README.md", + "docs/research/community-efficient1000-review.md" + ], + "methods": [ + "Construct the smallest exact identity in a newly specified legal operation alphabet.", + "Derive a target-specific relaxation bound for that same explicit alphabet." + ], + "acceptance_gate": "Name the changed hypothesis, all counted roles and a uniform identity; finite column tests alone do not certify it. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read Model section 1 of the three-register bound and identify the exact excluded free operations.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "First compare the alphabet, role count and length with the fully replayed #1974 census and #2027 mixed-root tariff. Identify a changed premise and a legal native implementation; then price one smallest completed instance before searching larger words.", + "bottleneck_link": "A small-width completed saving changes the bit primitive; a finite-address identity alone is insufficient.", + "allowed_variations": [ + "Choose a fixed larger register count or a specified nonabelian operation family." + ], + "scope_change_triggers": [ + "Remaining inside the already-excluded three-register abelian model.", + "Repeating the two-register GL3 census or a covered three-register length without changing a hypothesis; a formal group-algebra word without native conversion is a partial result." + ], + "overlap_terms": [ + "three-register", + "nonabelian", + "group algebra" + ] + }, + "scope_status": "changed", + "actual_scope": "Answer PR4276 OpenQ3 in the formal right-vector model: invertible commutative field products can have cost3 withdelta2; sharp q+1 component threshold, constructive3 upperbound, complete216-target F2^3 metric.", + "scope_change_reason": "Take the named live commutative-algebra handoff after the earlier noncommutative failures, changing the algebra hypothesis rather than another seed or larger same-algebra census.", + "bottleneck_link": "A common free chart across components is an actual constraint even over a commutative algebra; removing noncommutativity does not restore the general cost=delta claim.", + "budget_minutes": 60, + "stop_rule": "One scoped counterexample/threshold proof and bounded exact checks; science stops2026-10-21T10:52:48UTC, final15minutes verification/handoff. No native or large algebra campaign.", + "outcome": "completed", + "evidence": "Self-contained quantified proof; full216-target independent BFS and projective cost/delta cross-check; all4752paid/1296free edges,132conjugations,13824arbitraryinputs;8prime-field sharp witnesses and2550literal upper-word matrices; exactsource pins.", + "author": "ToikY with substantial OpenAI Codex assistance", + "ai_assistance": "Separate proof author, BFS implementation, projective oracle and independent static review contexts. Not independent human or formal-kernel acceptance.", + "open_questions": [ + { + "question": "Does an analogous common-unit-pivot criterion classify invertible targets over products of commutative local algebras?", + "why_it_matters": "This separates shared base-field charts from nilpotent or residue-field effects; general commutativity is already insufficient.", + "first_step": "Specify one product of local algebras and its residue fields, refresh overlap and prove how units/right ideals reduce before any census.", + "blocked_by": "This package proves the sharp equal-field product threshold, not all commutative algebras." + }, + { + "question": "Can a literal native caller realize the allowed R-left coefficients and common free GL2(K) maps at a complete competitive bill?", + "why_it_matters": "The formal query count gives no physical supplier admission.", + "first_step": "Name one producer/consumer and full preparation, routing, control, precision, cleanup and stock ledger before implementation.", + "blocked_by": "All physical costs and supplier/outer obligations remain UNKNOWN; no candidate kappa is derived." + } + ], + "canonical_claim": "https://github.com/CrocSwap/integer-mult-bounds/discussions/4333", + "predecessor_head": "59c7bac0122ef2b80793c30a3d52329db6bdf17d", + "scope_key": "f09e0798647413fe5aac", + "freshness": { + "open_draft_prs": 442, + "live_threads": [ + 1166, + 4333 + ], + "active_discussions_list": true, + "source_handoff": "1166#19085611", + "broader_coverage": "partial; no novelty inferred", + "submission_upstream_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "submission_utc": "2026-10-21T10:29:13.178798+00:00", + "submission_update_ordered_delta": 100, + "source_head_unchanged": true, + "predecessor_claim_reply": "1166#19094593" + }, + "family_decision": "NARROW to one algebraic acceptance-boundary result; no physical construction campaign", + "obligation_ledger": { + "formal_model": "source stipulates arbitrary R-left coefficients and common GL2(K) free maps", + "formal_cost": "proved exact3 on sharp examples; proved<=2 for k<=q; constructive<=3 for fieldproducts", + "finite_metric": "all216invertible F2^3 targets checked independently", + "physical_preparation_routing_control_precision_restoration_stock": "UNKNOWN", + "native_supplier_outer": "not admitted", + "human_kernel": "not claimed" + } +} diff --git a/research/right-vector-commutative-products/VERIFY.json b/research/right-vector-commutative-products/VERIFY.json new file mode 100644 index 0000000000..a5b5b526d9 --- /dev/null +++ b/research/right-vector-commutative-products/VERIFY.json @@ -0,0 +1,37 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/right-vector-commutative-products/source/PROOF.md", + "research/right-vector-commutative-products/source/README.md" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 120, + "checks": "Fresh complete216-target BFS with all paid/free edges and arbitrary-input words; independent projective/explicit-word oracle and full typed payload comparisons." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 120, + "checks": "Same fresh complete metric/cross-engine/corruption controls under optimized warning-strict Python; finite evidence is separate from the quantified written theorem." + } + ] +} diff --git a/research/right-vector-commutative-products/engine.py b/research/right-vector-commutative-products/engine.py new file mode 100644 index 0000000000..5e21c2d145 --- /dev/null +++ b/research/right-vector-commutative-products/engine.py @@ -0,0 +1,306 @@ +#!/usr/bin/env python3 +"""Exact independent paid-factor BFS on GL_2(F_2)^3. + +Credit: Nick Petalas, PRs #4276/#4265/#4243; Wentao Li, PR #4099's +right-vector alphabet/column bound; the retained PR #2513 lineage. This +implementation was prepared by ToikY with substantial OpenAI Codex assistance. +It imports no predecessor verifier and uses no projective pivot criterion. + +Only the invertible target domain is searched. Each component of a word is +a product of square matrices over F_2. Invertibility of the final component +forces every component factor to be invertible, so filtering singular paid +factors cannot remove a word attaining a target in this domain. Free matrices +are constant triples from GL_2(F_2). BFS starts at all six free endpoints; +the certificate checks every paid edge and every zero-cost free edge as well +as every attaining word. Thus the distance certificate also directly covers +free maps anywhere in a word. + +The two original target roles are arbitrary inputs, not borrowed helpers. +No scratch/helper is allocated. All six output bits are checked against the +specified target map; no role is silently treated as disposable or restored. +""" + +from collections import Counter, deque +import hashlib +import json +import sys + + +IDENTITY = 9 +CANONICAL = (9, 14, 7) # I, [[0,1],[1,1]], [[1,1],[1,0]]. + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def entries(code): + """Row-major entries, with entry i represented by bit i.""" + return tuple((code >> index) & 1 for index in range(4)) + + +def pack(values): + return sum((value & 1) << index for index, value in enumerate(values)) + + +def multiply_component(left, right): + a = entries(left) + b = entries(right) + return pack( + sum(a[2 * row + mid] * b[2 * mid + col] for mid in range(2)) % 2 + for row in range(2) + for col in range(2) + ) + + +def invertible(code): + a, b, c, d = entries(code) + return (a * d) ^ (b * c) == 1 + + +def literal_factor(descriptor): + """Descriptor is [u0,u1,y0,y1], u entries are three-bit ring values.""" + u0, u1, y0, y1 = descriptor + require(0 <= u0 < 8 and 0 <= u1 < 8, "ring coefficient outside F2^3") + require(y0 in (0, 1) and y1 in (0, 1), "right vector outside F2^2") + return tuple( + pack((1 ^ (((u0 >> j) & 1) * y0), + ((u0 >> j) & 1) * y1, + ((u1 >> j) & 1) * y0, + 1 ^ (((u1 >> j) & 1) * y1))) + for j in range(3) + ) + + +def factor_catalogue(): + representatives = {} + admitted_descriptors = 0 + for u0 in range(8): + for u1 in range(8): + for y0 in range(2): + for y1 in range(2): + descriptor = (u0, u1, y0, y1) + state = literal_factor(descriptor) + if all(invertible(component) for component in state): + admitted_descriptors += 1 + representatives.setdefault(state, descriptor) + return representatives, admitted_descriptors + + +def apply_free(free_code, roles): + """Direct input interpreter, independent of the matrix product table.""" + a, b, c, d = entries(free_code) + first, second = roles + return ((first if a else 0) ^ (second if b else 0), + (first if c else 0) ^ (second if d else 0)) + + +def apply_paid(descriptor, roles): + u0, u1, y0, y1 = descriptor + first, second = roles + readout = (first if y0 else 0) ^ (second if y1 else 0) + return first ^ (u0 & readout), second ^ (u1 & readout) + + +def apply_target(state, roles): + first, second = roles + out_first = out_second = 0 + for j, code in enumerate(state): + a, b, c, d = entries(code) + x, y = (first >> j) & 1, (second >> j) & 1 + out_first |= ((a * x) ^ (b * y)) << j + out_second |= ((c * x) ^ (d * y)) << j + return out_first, out_second + + +def evaluate_word(free_code, descriptors, roles): + result = apply_free(free_code, roles) + for descriptor in descriptors: + result = apply_paid(descriptor, result) + return result + + +def word_agrees(state, free_code, descriptors): + return all( + evaluate_word(free_code, descriptors, (first, second)) + == apply_target(state, (first, second)) + for first in range(8) + for second in range(8) + ) + + +def delta_by_columns(state, free_codes): + """Rank of the literal six-by-two binary matrix (M T-I)|K^2.""" + ranks = [] + for free in free_codes: + t00, t01, t10, t11 = entries(free) + columns = [0, 0] + for component, code in enumerate(state): + a, b, c, d = entries(code) + # Deliberately do not call multiply_component or use its table. + m00 = (a * t00) ^ (b * t10) ^ 1 + m01 = (a * t01) ^ (b * t11) + m10 = (c * t00) ^ (d * t10) + m11 = (c * t01) ^ (d * t11) ^ 1 + columns[0] |= (m00 << (2 * component)) | (m10 << (2 * component + 1)) + columns[1] |= (m01 << (2 * component)) | (m11 << (2 * component + 1)) + if columns == [0, 0]: + rank = 0 + elif 0 in columns or columns[0] == columns[1]: + rank = 1 + else: + rank = 2 + ranks.append(rank) + return min(ranks), ranks + + +def recover_word(state, predecessors, catalogue): + backwards = [] + while predecessors[state] is not None: + previous, factor = predecessors[state] + backwards.append(catalogue[factor]) + state = previous + return state[0], tuple(reversed(backwards)) + + +def negative_controls(state, free_code, word, free_codes): + require(word_agrees(state, free_code, word), "positive word rejected") + dropped = [] + for omitted in range(len(word)): + damaged = word[:omitted] + word[omitted + 1:] + require(not word_agrees(state, free_code, damaged), "dropped factor undetected") + dropped.append({"omitted_step": omitted, "rejected": True}) + + wrong_component = None + for step, descriptor in enumerate(word): + for first, second in ((0, 1), (0, 2), (1, 2)): + changed = list(descriptor) + for coordinate in (0, 1): + value = changed[coordinate] + if ((value >> first) ^ (value >> second)) & 1: + changed[coordinate] ^= (1 << first) | (1 << second) + if tuple(changed) == descriptor: + continue + candidate = word[:step] + (tuple(changed),) + word[step + 1:] + require(all(invertible(c) for c in literal_factor(changed)), + "component permutation damaged factor admissibility") + if not word_agrees(state, free_code, candidate): + wrong_component = {"step": step, "swapped_components": [first, second], + "replacement_descriptor": changed, "rejected": True} + break + if wrong_component is not None: + break + require(wrong_component is not None, "no discriminating component mutant") + + altered_free = next(code for code in free_codes if code != free_code) + require(not word_agrees(state, altered_free, word), "wrong free chart undetected") + return {"positive_word_accepted": True, "dropped_factors": dropped, + "wrong_component": wrong_component, + "wrong_free_chart": {"replacement_free_code": altered_free, "rejected": True}} + + +def run(): + free_codes = tuple(code for code in range(16) if invertible(code)) + require(len(free_codes) == 6, "GL2(F2) cardinality") + component_table = tuple(tuple(multiply_component(a, b) for b in range(16)) + for a in range(16)) + + def multiply(left, right): + return tuple(component_table[a][b] for a, b in zip(left, right)) + + catalogue, admitted_descriptors = factor_catalogue() + factors = tuple(sorted(catalogue)) + free_states = tuple((code,) * 3 for code in free_codes) + states = tuple((a, b, c) for a in free_codes for b in free_codes for c in free_codes) + state_set = set(states) + require(len(states) == 216, "invertible target domain cardinality") + + distances = {state: 0 for state in free_states} + predecessors = {state: None for state in free_states} + pending = deque(free_states) + while pending: + previous = pending.popleft() + for factor in factors: + state = multiply(factor, previous) + require(state in state_set, "invertible paid transition left target domain") + if state not in distances: + distances[state] = distances[previous] + 1 + predecessors[state] = (previous, factor) + pending.append(state) + require(set(distances) == state_set, "BFS did not cover the entire invertible domain") + + paid_edges = free_edges = conjugations = 0 + for state in states: + require((distances[state] == 0) == (state in free_states), "wrong zero-cost set") + for factor in factors: + require(distances[multiply(factor, state)] <= distances[state] + 1, + "paid-edge distance certificate failed") + paid_edges += 1 + for free in free_states: + require(distances[multiply(free, state)] == distances[state], + "zero-cost free-edge distance certificate failed") + free_edges += 1 + for free in free_states: + inverse = next(other for other in free_states + if multiply(free, other) == (IDENTITY,) * 3) + for factor in factors: + require(multiply(multiply(free, factor), inverse) in catalogue, + "paid alphabet not closed under free conjugation") + conjugations += 1 + + records = [] + for state in states: + free_code, word = recover_word(state, predecessors, catalogue) + require(len(word) == distances[state], "predecessor word length mismatch") + matrix_replay = (free_code,) * 3 + for descriptor in word: + matrix_replay = multiply(literal_factor(descriptor), matrix_replay) + require(matrix_replay == state, "predecessor matrix replay failed") + require(word_agrees(state, free_code, word), "arbitrary-input word replay failed") + delta, ranks = delta_by_columns(state, free_codes) + require(delta <= distances[state], "delta lower bound violated") + records.append({"state": list(state), "components": [list(entries(code)) for code in state], + "cost": distances[state], "delta": delta, + "delta_ranks_in_free_order": ranks, "free_code": free_code, + "word_in_execution_order": [list(d) for d in word]}) + + canonical_record = next(record for record in records if tuple(record["state"]) == CANONICAL) + require(canonical_record["cost"] == 3 and canonical_record["delta"] == 2, + "canonical target is not cost3/delta2") + canonical_word = tuple(tuple(d) for d in canonical_record["word_in_execution_order"]) + controls = negative_controls(CANONICAL, canonical_record["free_code"], + canonical_word, free_codes) + canonical_bytes = json.dumps(records, sort_keys=True, separators=(",", ":")).encode("ascii") + joint_histogram = Counter((row["cost"], row["delta"]) for row in records) + return { + "schema_version": 1, + "claim_type": "complete_finite_invertible_target_metric", + "field": "F2", "ring": "F2^3", "roles": 2, + "scratch_roles": 0, "borrowed_helper_roles": 0, + "component_encoding": "row-major bit i is matrix entry i; triple order is ring component order", + "factor_encoding": "[u0,u1,y0,y1]; u0/u1 are three-bit ring values; y0/y1 are F2", + "word_convention": "apply free_code first, then left-apply listed factors in execution order", + "free_codes": list(free_codes), + "paid_descriptor_domain": 256, + "invertible_paid_descriptors": admitted_descriptors, + "distinct_invertible_paid_factors": len(factors), + "paid_factors": [{"state": list(f), "descriptor": list(catalogue[f])} for f in factors], + "target_count": len(states), + "cost_delta_histogram": [{"cost": cost, "delta": delta, "count": count} + for (cost, delta), count in sorted(joint_histogram.items())], + "records": records, + "records_sha256": hashlib.sha256(canonical_bytes).hexdigest(), + "canonical_target": canonical_record, + "checks": {"all_paid_edges": paid_edges, "all_free_edges": free_edges, + "free_conjugations": conjugations, "attaining_matrix_words": len(records), + "attaining_word_arbitrary_inputs": 64 * len(records), + "canonical_arbitrary_inputs": 64, "delta_endpoints_per_target": len(free_codes)}, + "controls": controls, + "scope": "Formal paid-factor alphabet only; no physical caller, supplier, precision, stock, or kappa claim.", + } + + +if __name__ == "__main__": + require(len(sys.argv) == 1, "engine CLI takes no arguments") + print(json.dumps(run(), sort_keys=True, separators=(",", ":"))) diff --git a/research/right-vector-commutative-products/oracle.py b/research/right-vector-commutative-products/oracle.py new file mode 100644 index 0000000000..bc8f946513 --- /dev/null +++ b/research/right-vector-commutative-products/oracle.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python3 +"""Independent projective/word oracle; no BFS or predecessor code imports. + +ToikY with substantial OpenAI Codex assistance, Apache-2.0. The right-vector +alphabet and predecessor question retain Nick Petalas/Wentao Li's credit. +Finite checks corroborate PROOF.md; they do not prove its quantified claims. +""" +import itertools +import json + + +def require(value, message): + if not value: + raise ValueError(message) + + +def prime(p): + return type(p) is int and p >= 2 and all(p % d for d in range(2, int(p**0.5) + 1)) + + +def multiply(a, b, p): + return ((a[0]*b[0]+a[1]*b[2]) % p, (a[0]*b[1]+a[1]*b[3]) % p, + (a[2]*b[0]+a[3]*b[2]) % p, (a[2]*b[1]+a[3]*b[3]) % p) + + +def determinant(a, p): + return (a[0]*a[3]-a[1]*a[2]) % p + + +def apply(a, t, p): + return ((a[0]*t[0]+a[1]*t[1]) % p, (a[2]*t[0]+a[3]*t[1]) % p) + + +def lines(p): + require(prime(p), "the finite oracle implements prime fields only") + return [(1, x) for x in range(p)] + [(0, 1)] + + +def zero_census(components, p): + return [sum((phi[0]*apply(m, t, p)[0]+phi[1]*apply(m, t, p)[1]) % p == 0 + for m in components) + for phi in lines(p) for t in lines(p)] + + +def triple_word(components, p): + """Common paid rows e1/e2/e1; compare literal products, not receipts.""" + require(prime(p), "prime-field implementation boundary") + word = [[], [], []] + for m in components: + a, b, c, d = m + require(determinant(m, p) != 0, "invertible-target premise") + r = 0 if d else 1 + pivot = (d-r*b) % p + require(pivot != 0, "nonunit third-factor pivot") + f = (c-r*a)*pow(pivot, -1, p) % p + e = determinant(m, p)*pow(pivot, -1, p) % p + factors = [(1, 0, r, 1), (1, b, 0, pivot), (e, 0, f, 1)] + require(multiply(multiply(factors[0], factors[1], p), factors[2], p) == tuple(m), "complete three-factor product") + for stage, factor in zip(word, factors): + stage.append(factor) + for stage, right in zip(word, [(1, 0), (0, 1), (1, 0)]): + for m in stage: + if right == (1, 0): + require(m[1] == 0 and m[3] == 1, "e1 factor shape") + else: + require(m[0] == 1 and m[2] == 0, "e2 factor shape") + return word + + +def product(word, p): + result = [(1, 0, 0, 1)] * len(word[0]) + for stage in word: + result = [multiply(a, b, p) for a, b in zip(result, stage)] + return result + + +def classify(components, p): + if all(m == components[0] for m in components): + return 0, 0 + # A single paid factor leaves a common K input line unchanged after + # the free endpoint. Equality here is literal vector equality. + one = any(len({apply(m, t, p) for m in components}) == 1 for t in lines(p)) + if one: + return 1, 1 + two = 0 in zero_census(components, p) + return (2 if two else 3), 2 + + +def run(): + binary = [m for m in itertools.product(range(2), repeat=4) if determinant(m, 2)] + records = [] + for components in itertools.product(binary, repeat=3): + cost, delta = classify(components, 2) + word = triple_word(components, 2) + require(product(word, 2) == list(components), "full product-field endpoint") + records.append(dict(components=[list(m) for m in components], cost=cost, delta=delta)) + + prime_rows = [] + for p in [2, 3, 5, 7, 11, 13, 17, 19]: + irreducible = [(a, b) for a in range(p) for b in range(p) + if all((x*x+a*x+b) % p for x in range(p))] + require(len(irreducible) == p*(p-1)//2, "quadratic counting argument") + a, b = irreducible[0] + alpha = (0, -b % p, 1, -a % p) + components = [(1, (-t*b) % p, t, (1-t*a) % p) for t in range(p)] + [alpha] + require(all(determinant(m, p) for m in components), "extension representative invertibility") + zeros = zero_census(components, p) + require(set(zeros) == {1}, "one forbidden component at every projective pair") + word = triple_word(components, p) + require(product(word, p) == components, "attaining three-factor witness") + prime_rows.append(dict(p=p,components=p+1,polynomial=[b,a,1],projective_pairs=(p+1)**2,zero_components_per_pair=1,word=[[[*m] for m in stage] for stage in word])) + + # The predecessor's proposed F3^3 test cannot refute the invertible claim: + # check all possible nonzero first-column triples, not sampled matrices. + vectors = [v for v in itertools.product(range(3), repeat=2) if any(v)] + column_triples = 0 + for images in itertools.product(vectors, repeat=3): + require(any(all((phi[0]*v[0]+phi[1]*v[1]) % 3 for v in images) for phi in lines(3)), "F3^3 common-row guarantee") + column_triples += 1 + + upper_cases = 0 + for p in [2, 3, 5, 7]: + for matrix in itertools.product(range(p), repeat=4): + if determinant(matrix, p): + require(product(triple_word([matrix], p), p) == [matrix], "literal upper word") + upper_cases += 1 + + canonical = [(1,0,0,1),(0,1,1,1),(1,1,1,0)] + require(classify(canonical, 2) == (3,2), "canonical obstruction") + require(0 not in zero_census(canonical, 2), "all nine pivots obstructed") + require(classify(canonical[:2], 2)[0] <= 2, "removing a component removes this floor") + word = triple_word(canonical, 2) + require(product(word[:2], 2) != canonical, "dropped paid factor must fail") + require(product(list(reversed(word)), 2) != canonical, "reversed paid word must fail") + require(len(set(canonical)) > 1, "componentwise-free relaxation is outside the common-free model") + for bad in [4,6,9]: + try: + lines(bad) + except ValueError: + pass + else: + raise ValueError("composite-modulus arithmetic was mislabelled a field") + try: + triple_word([(1,0,0,0)],2) + except ValueError: + pass + else: + raise ValueError("singular target admitted outside the stated upper theorem") + return dict(records=records,prime_witnesses=prime_rows,first_column_triples_F3=column_triples,upper_word_matrices=upper_cases,canonical=dict(components=canonical,cost=3,delta=2,zero_census=zero_census(canonical,2),word=word),controls=dict(drop_component=True,drop_factor=True,reverse_factors=True,componentwise_free_is_changed=True,composite_moduli_rejected=[4,6,9],singular_outside_premise=True)) + + +if __name__ == "__main__": + print(json.dumps(run(),sort_keys=True)) diff --git a/research/right-vector-commutative-products/source/PROOF.md b/research/right-vector-commutative-products/source/PROOF.md new file mode 100644 index 0000000000..71888afa0d --- /dev/null +++ b/research/right-vector-commutative-products/source/PROOF.md @@ -0,0 +1,93 @@ +# Proofs + +`K` is a field and `R` an associative unital `K`-algebra with `K` central. A +paid factor is `P(u, y) = I + u y^T` with `u` in `R^n` and `y` in `K^n`; a free +map is any `S` in `GL_n(K)`, used anywhere in a word. `cost(M)` is the least +number of paid factors in a word equal to `M` (infinite if none exists), and + +```text +delta(M) = min over T in GL_n(K) of dim_K (M T - I) K^n. +``` + +Facts used from #4243 and #4099: `cost(M) >= delta(M)`, and every word can be +rewritten as `Q S` with `Q` a product of the same number of paid factors, +because `S P(u, y) S^{-1} = P(S u, S^{-T} y)`. + +## Lemma 1 (merging) + +`P(u, y) P(v, c y) = P(u + c v + c u (y^T v), y)` for `c` in `K`. Expand: +`(I + u y^T)(I + c v y^T) = I + u y^T + c v y^T + c u (y^T v) y^T`, and +`y^T v` is an element of `R`. Also `P(u, 0) = P(0, y) = I`. + +## Theorem A (one factor, every n, every R) + +`cost(M) <= 1` if and only if `delta(M) <= 1`, and then `cost(M) = delta(M)`. + +*Proof.* `cost >= delta` gives one direction. If `delta(M) = 0`, then +`M T = I` and `M = T^{-1}` costs 0. If `delta(M) = 1`, then +`(M T - I) K^n = K w` for some `w` in `R^n`, so `(M T - I) e_j = c_j w` with +`c` in `K^n`, that is `M T = I + w c^T = P(w, c)`, and `M = P(w, c) T^{-1}`. + +## Theorem B (two factors, n = 2, every R) + +`cost(M) <= 2` if and only if some `G, H` in `GL_2(K)` give `N = G M H` with +`N12` in the right ideal `N11 R`. + +*Proof.* (If.) Write `N12 = N11 C` and put `A = N11`, `B = N21`, +`D = N22 - N21 C`. Then + +```text +F1 = P((A - 1, B), e1) = [[A, 0], [B, 1]], +F2 = P((C, D - 1), e2) = [[1, C], [0, D]], +F1 F2 = [[A, A C], [B, B C + D]] = N, +``` + +so `M = (G^{-1} F1 G)(G^{-1} F2 G) G^{-1} H^{-1}`, and each conjugate is a +paid factor. + +(Only if.) Write `M = P(u1, y1) P(u2, y2) S`, padding with `P(0, y) = I`. If +`y1, y2` are dependent, Lemma 1 merges the two factors into one with a nonzero +`y` (or both are `I`); replace the second by `P(0, y2')` with `y2'` +independent. So `y1, y2` is a basis. Choose `G` with `G^{-T} y_i = e_i`. Then +`G M S^{-1} G^{-1} = P(u1', e1) P(u2', e2)`, which is +`[[A, 0], [B, 1]] [[1, C], [0, D]] = [[A, A C], [B, B C + D]]` for some +`A, B, C, D` in `R`. Its `(1, 2)` entry is `A C`, in `A R`. Take +`H = S^{-1} G^{-1}`. + +## Corollary C (matrix algebras) + +Let `R = M_m(K)` and view `M` as a `2m x 2m` matrix. Then `cost(M) <= 2` if +and only if there are nonzero `phi` in `(K^2)^*` and `t` in `K^2` with + +```text +rank (phi ⊗ I_m) M = rank (phi ⊗ I_m) M (t ⊗ I_m). +``` + +*Proof.* In `M_m(K)`, `Z` lies in `A M_m(K)` exactly when the column space of +`Z` lies in that of `A`. Let `phi` be the first row of `G` and `t, s` the +columns of `H`. Then `N11 = (phi ⊗ I) M (t ⊗ I)`, +`N12 = (phi ⊗ I) M (s ⊗ I)`, and since `H` is invertible the column space of +`[N11 N12]` is that of `(phi ⊗ I) M`. So `col N12 ⊆ col N11` is the stated +rank equality. Every nonzero `phi` is a first row and every nonzero `t` a first +column. + +## Theorem D (local algebras, n = 2) + +Let the non-units of `R` form an ideal `J`. Every target `M` with an entry +outside `J` (in particular every invertible `M`) has `cost(M) = delta(M)`. + +*Proof.* Permutation matrices `G, H` move a unit to position `(1, 1)`. Then +`N11 R = R`, so Theorem B gives `cost(M) <= 2`. If `delta(M) <= 1`, Theorem A +gives equality. Otherwise `2 = delta(M) <= cost(M) <= 2`. + +## Corollary E (quotients and F2[S3]) + +If `rho: R -> R'` is a unital `K`-algebra homomorphism, then +`cost_R(M) >= cost_R'(rho(M))`, because `rho` maps paid factors to paid factors +and free maps to free maps. Since `delta(M) <= n` always, every target over +`F2[S3]` whose image under the surjection `rho: F2[S3] -> M_2(F_2)` is one of +the 72 cost-3 targets of #4265 costs at least 3 while `delta <= 2`. `rho` +extends the isomorphism `S3 = GL_2(F_2)` given by the action on the three +nonzero vectors of `F_2^2`; `verify.py` checks that it is a surjective unital +algebra map and lifts a three-factor word to an explicit target of cost +exactly 3. diff --git a/research/right-vector-commutative-products/source/README.md b/research/right-vector-commutative-products/source/README.md new file mode 100644 index 0000000000..8952fc9ae8 --- /dev/null +++ b/research/right-vector-commutative-products/source/README.md @@ -0,0 +1,124 @@ +# Exact two-factor criterion for right-vector targets + +**Scoped proofs with finite certificates. No new κ.** Selected κ stays +`0.001672660197076918`. + +Paid factors are `I + u y^T` with `u` in `R^n` and `y` in `K^n`; free maps are +`GL_n(K)` changes of basis anywhere in a word (#4099, #4243). #4243 proved +`cost(M) >= delta(M) = min_T dim_K (M T - I) K^n` and equality on diagonal +targets. #4265 showed equality fails over `M2(F2)` at `n = 2` (72 targets cost +3 against `delta = 2`) and asked what the exact cost is over noncommutative +algebras, whether the failure lifts to `F2[S3]`, and whether `delta` is exact +over commutative or local algebras. + +## Result + +Proofs are in [PROOF.md](PROOF.md). + +1. **One factor, every `n` and every algebra:** `cost(M) <= 1` exactly when + `delta(M) <= 1`, and then the two are equal. +2. **Two factors at `n = 2`, every algebra:** `cost(M) <= 2` exactly when some + `G, H` in `GL_2(K)` give `N = G M H` with `N12` in the right ideal `N11 R`. + With item 1, this decides `cost(M)` in {0, 1, 2, ≥3} for every target. +3. **Matrix algebras.** Over `R = M_m(K)` the condition reads: some nonzero + `phi`, `t` in `K^2` give + `rank (phi ⊗ I_m) M = rank (phi ⊗ I_m) M (t ⊗ I_m)`. This answers #4265's + question 3 at `n = 2`. +4. **Local algebras.** If the non-units of `R` form an ideal `J`, every target + with an entry outside `J`, in particular every invertible target, costs + exactly `delta(M)`. This answers #4265's question 1 at `n = 2` for local + algebras and invertible targets. It cannot be extended to every target: + over the commutative local algebra `F2[x,y]/(x,y)^2`, 12 targets in + `M_2(J)` are unreachable while `delta <= 2`, for example + `[[x + y, y], [y, x]]`. +5. **`F2[S3]`.** The failure lifts. A unital surjection + `F2[S3] -> M_2(F_2)` maps words to words, so every lift of a #4265 + failure costs at least 3 while `delta <= 2`. `verify.py` builds one target + of cost exactly 3. Over all `2^24` targets at `n = 2`, exactly **120,060** + fail the criterion, so they cost at least 3 against `delta <= 2`. Of these, + 18,432 = 72 · 4^4 are lifts of `M2(F2)` failures. The rest fail because one + pair `(G, H)` must work in both blocks. +6. **A smaller noncommutative failure.** Over the 3-dimensional algebra + `UT2(F2)` of upper triangular matrices, 12 of 4,096 targets cost 3 with + `delta = 2`. + +| Algebra `R` | Targets (n = 2) | Cost histogram 0/1/2/3 | Unreachable | Criterion failures | +|---|---:|---|---:|---:| +| `F2[x,y]/(x,y)^2` (local) | 4,096 | 6 / 549 / 3,529 / 0 | 12 | 12 | +| `F2 x F2` | 256 | 6 / 117 / 133 / 0 | 0 | 0 | +| `F2[C3]` | 4,096 | 6 / 549 / 3,541 / 0 | 0 | 0 | +| `UT2(F2)` | 4,096 | 6 / 549 / 3,529 / 12 | 0 | 12 | +| `M2(F2)` | 65,536 | 6 / 2,277 / 63,181 / 72 | 0 | 72 | +| `F2[S3]` (criterion only) | 16,777,216 | — | — | 120,060 | + +In every exhaustively searched algebra, the criterion holds exactly on the +targets of cost at most 2, and every criterion failure costs 3 or is +unreachable. The 72 `M2(F2)` failures agree with #4265. + +Claim types: items 1–4 and the lift in item 5 are proofs for every algebra in +scope. The counts in the table and items 5–6 are finite certificates. Cost 3 as +an upper bound is only checked by search on the listed algebras; no general +three-factor theorem is claimed. + +## Method + +`verify.py` builds each algebra from a structure table and checks that it is +associative with `K` central. It precomputes right-ideal membership `z ∈ a R` +by `F_p`-rank. Stage `main` computes the exact minimum on every target by +breadth-first search over words `Q S`, computes `delta` over every `T`, and +asserts: the criterion equals `cost <= 2`, Theorem A, the local statement on +`F2[x,y]/(x,y)^2` (non-units checked to form an ideal), the rank form over +`M2(F2)`, and the expected counts. It also checks that `rho` is a surjective +unital algebra map, lifts a three-factor `M2(F2)` word to `F2[S3]`, and +asserts that the lifted target fails the criterion. Stage `s3` evaluates the +criterion on all `2^24` targets over `F2[S3]`. The script writes nothing. + +## Reproduce + +From the repository root: + +```sh +~/git/integer-mult-bounds/.venv/bin/python3.12 -B -W error research/right-vector-two-factor-criterion/verify.py --stage main +~/git/integer-mult-bounds/.venv/bin/python3.12 -B -W error research/right-vector-two-factor-criterion/verify.py --stage s3 +~/git/integer-mult-bounds/.venv/bin/python3.12 -B scripts/research_package.py --package research/right-vector-two-factor-criterion +``` + +Expected final lines: + +```text +PASS_RIGHT_VECTOR_TWO_FACTOR_CRITERION F2[x,y]/(x,y)^2:4096:12 F2xF2:256:0 F2[C3]:4096:0 UT2(F2):4096:12 M2(F2):65536:72 m2_rank_form=ok f2s3_lift=cost3 no_new_kappa +PASS_RIGHT_VECTOR_TWO_FACTOR_S3 targets=16777216 three_or_more=120060 no_new_kappa +``` + +Each stage takes under 40 seconds on one core (CPython 3.12, NumPy 2.5.4, +macOS arm64). The asserts are the checks, so do not run with `-O`. + +## Limits + +This is a formal alphabet. Native frames, hosting, routing, precision and +recursive cost are not priced, and no supplier changes. Theorems B–D are for +`n = 2` only. Whether every reachable target at `n = 2` costs at most 3 is +not proved. The `F2[S3]` count gives cost at least 3; exact costs there are not +searched. Independent human and formal proof-kernel review are unclaimed. + +## Open next questions + +1. **Three factors.** Is every reachable target at `n = 2` reachable with + three factors, over every algebra? Characterise the three-factor set as + Theorem B does for two; with it, the cost at `n = 2` would be exact. +2. **Larger `n`.** With `y_1, ..., y_k` a basis, `k` factors are block column + operations. Write the `n = 3`, `k = 2` condition as a flag of right + ideals and test it by search over `F2[C2]` or `UT2(F2)`. +3. **Commutative non-local algebras.** Is `delta` exact for invertible + targets over every commutative algebra at `n = 2`? A product of local + algebras needs one `(G, H)` that works in every factor. Count criterion + failures over `F3 x F3 x F3` first. + +## Credit + +Produced by Nick Petalas. The alphabet, normal form and lower bound come from +#4243 (`research/right-vector-diagonal-free-basis`); the open questions and the +`M2(F2)` counts come from #4265 (`research/right-vector-general-target`). The +column bound and right-vector alphabet are Wentao Li's +`research/f2-right-vector-diagonal-minimum` (#4099), building on +`research/bit-cyclic-root-barrier` (#2513). Apache-2.0. diff --git a/research/right-vector-commutative-products/verify.py b/research/right-vector-commutative-products/verify.py new file mode 100644 index 0000000000..b575ed4247 --- /dev/null +++ b/research/right-vector-commutative-products/verify.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +"""Fresh full BFS and separate projective/word replay, with exact typed data.""" +import hashlib +import importlib.util +import json +from pathlib import Path +import sys + +HERE = Path(__file__).resolve().parent + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value,sort_keys=True,separators=(",",":"),allow_nan=False) + + +def load(name, file): + spec = importlib.util.spec_from_file_location(name,HERE/file) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return module + + +def compare(actual, expected): + require(canonical(actual) == canonical(expected), "full typed regenerated payload differs") + + +def main(): + pins = json.loads((HERE/"SOURCE-PINS.json").read_text()) + for row in pins["files"]: + raw = (HERE/row["path"]).read_bytes() + require(len(raw)==row["bytes"],"source size") + require(hashlib.sha256(raw).hexdigest()==row["sha256"],"source SHA256") + require(hashlib.sha1(b"blob "+str(len(raw)).encode()+b"\0"+raw).hexdigest()==row["git_blob"],"source Git blob") + bfs = load("paid_bfs","engine.py").run() + oracle = load("projective_oracle","oracle.py").run() + compare(bfs,json.loads((HERE/"EXPECTED-BFS.json").read_text())) + compare(oracle,json.loads((HERE/"EXPECTED-ORACLE.json").read_text())) + key = lambda row: canonical(row["components"]) + bm = {key(row):(row["cost"],row["delta"]) for row in bfs["records"]} + om = {key(row):(row["cost"],row["delta"]) for row in oracle["records"]} + require(len(bm)==len(om)==216 and bm==om,"complete cost/delta cross-engine agreement") + # These mutations exercise evidence scope/type boundaries rather than + # asserting that a checksum alone is a mathematical certificate. + for changed in [dict(bfs,target_count=215),dict(bfs,scratch_roles=False),dict(bfs,records=bfs["records"][:-1])]: + try: + compare(changed,bfs) + except ValueError: + pass + else: + raise ValueError("typed evidence corruption accepted") + payload = dict(status="PASS_RIGHT_VECTOR_COMMUTATIVE_PRODUCTS",targets=216, + cost_delta_histogram=bfs["cost_delta_histogram"], + source_inputs=len(pins["files"]),bfs_checks=bfs["checks"], + bfs_controls=bfs["controls"],oracle_controls=oracle["controls"], + bfs_full_payload_sha256=hashlib.sha256(canonical(bfs).encode()).hexdigest(), + oracle_full_payload_sha256=hashlib.sha256(canonical(oracle).encode()).hexdigest(), + prime_fields=[r["p"] for r in oracle["prime_witnesses"]], + projective_pairs=sum(r["projective_pairs"] for r in oracle["prime_witnesses"]), + first_column_triples_F3=oracle["first_column_triples_F3"], + literal_upper_word_matrices=oracle["upper_word_matrices"], + canonical_cost=3,canonical_delta=2,typed_evidence_controls=3, + finite_scope="complete invertible F2^3 metric plus listed prime-field witnesses; quantified proof is separate", + physical_costs="unknown",new_kappa=None) + print(canonical(payload)) + + +if __name__ == "__main__": + main()