diff --git a/research/native-involutive-port-transfer/.gitattributes b/research/native-involutive-port-transfer/.gitattributes new file mode 100644 index 0000000000..fa1385d99a --- /dev/null +++ b/research/native-involutive-port-transfer/.gitattributes @@ -0,0 +1 @@ +* -text diff --git a/research/native-involutive-port-transfer/ATTRIBUTION.md b/research/native-involutive-port-transfer/ATTRIBUTION.md new file mode 100644 index 0000000000..2803f11b73 --- /dev/null +++ b/research/native-involutive-port-transfer/ATTRIBUTION.md @@ -0,0 +1,9 @@ +# Predecessor credit and exact overlap + +Rohan Arun’s [PR #1931](https://github.com/CrocSwap/integer-mult-bounds/pull/1931), head d043a01b222365a951853904c001761921bb843b, already constructs an involutive E8 source reflection with eight rank-one target repairs, no additional array, and a source-restored reflection-shear alternative on its older 712-input source. Its changing-chart controller is explicitly unresolved. Ali Romman’s [PR #1862](https://github.com/CrocSwap/integer-mult-bounds/pull/1862), head bb29ea73ad9be9a0c3d53cdcb1d22b2ee9ffe42f, supplies the broader ordered-ring source-code family, the Gram geometry and exact eight-row native repair idea. These mechanisms are predecessors, not discoveries of this session. + +Dugongue’s [PR #4929](https://github.com/CrocSwap/integer-mult-bounds/pull/4929) supplies the autonomous center-free 632-owner offer, its exact matrix A and preserved helper interface. Cinna Davis’s PR #4694 already removes centers in a cache kernel, and PR #4698 supplies helper-coordinate structure and a conditional consumer. The actual native source is Cao Yifan’s canonical round-three joint-helper/native-map word, extending his PR #4610; retain its source attribution and licenses. The current contribution ports the supported involution repair to that changed source and supplies a separate minimal eight-coordinate, division-free dyadic completion of A. Neither the general involution-completion identity nor elementary shear factorization is claimed as broadly novel mathematics. + +The retained native, E8, Clifford, scalar, productive-helper, recursive and outer-compiler lineage includes Cinna Davis’s PR #4470, zxv, Jacob Alan Sussman and the contributors retained by the upstream notices. The selected frontier remains unchanged. PR #4928’s two-FULL separated-control ceiling and the updated PR #4856 shared-port completion scope were read before selecting changed code and ownership routes; no global impossibility is inferred from them. + +Canonical main was refreshed to cef4b52f2a59009865bf8eabde1be3f159063703. Recent PR metadata, specific relevant proofs and the repository overlap cache were inspected. Sparse local coverage and remote search are incomplete; absence of overlap is not an exhaustive novelty guarantee. Source-only DAG/Lean retrieval informed the search but establishes no new kernel-checked theorem here. diff --git a/research/native-involutive-port-transfer/DYADIC-DILATION-INPUTS.json b/research/native-involutive-port-transfer/DYADIC-DILATION-INPUTS.json new file mode 100644 index 0000000000..4c34570090 --- /dev/null +++ b/research/native-involutive-port-transfer/DYADIC-DILATION-INPUTS.json @@ -0,0 +1 @@ +{"R":[["1","0","1","0","0","0","0","1","0","1","1","1","1","0","0","0","0","1","1","1","0","0","1","1","1","1","0","1","0","0","0","1","1","1","1","1","0","0","1","1","1","0","0","0","0","1","0","0","1","1","1","0","0","0","1","1","1","1","0","0","0","1","1","1","0","0","0","0","0","0","1","1","1","0","0","0","1","1","0","1","0","1","0","0","0","1","0","1","0","1","1","1","1","0","1","0","0","0","1","0","1","1","1","1","0","0","0","1","1","1","0","0"],["1","1","1","1","1","1","1","-1","1","-1","-1","-1","0","0","0","0","0","0","0","0","0","0","0","0","0","1","1","1","1","1","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","-1","1","1","1","-1","-1","-1","1","1","1","1","1","1","1","1","1","1","1","1","1","0","0","-1","1","-1","1","1","1","0","1","1","1","1","1","1","-1","1","-1","1","1","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],["1","1","0","0","0","0","1","-1","0","0","0","0","1","1","1","1","1","-1","-1","-1","0","0","0","0","0","0","0","-1","-1","-1","-1","1","0","0","0","0","0","0","-1","-1","-1","1","1","1","1","0","0","0","0","0","0","1","1","1","1","1","1","1","-1","-1","-1","0","0","0","0","0","0","0","0","0","0","0","0","1","1","1","1","-1","1","0","0","-1","1","1","1","0","-1","-1","0","0","0","0","1","-1","0","0","0","0","0","1","1","1","1","-1","1","1","1","0","0","0","0","0"],["1","0","0","1","1","1","0","1","-1","0","0","0","0","1","1","1","-1","0","0","0","0","0","-1","-1","-1","0","-1","-1","0","0","0","0","1","1","1","-1","0","0","0","0","0","-1","-1","-1","-1","-1","0","0","1","1","1","1","1","1","0","0","0","-1","0","0","0","0","0","0","-1","-1","-1","1","1","1","0","0","0","0","0","0","-1","0","1","0","1","-1","0","0","0","1","0","1","1","0","0","0","1","0","0","-1","-1","-1","1","1","0","0","0","0","-1","-1","-1","-1","-1","-1","0","0"],["0","-1","0","-1","0","0","1","0","1","0","-1","-1","1","0","1","1","0","1","0","0","1","1","0","0","-1","0","-1","0","-1","0","0","-1","-1","0","0","-1","1","1","-1","0","0","1","1","0","0","1","1","1","1","0","0","0","-1","-1","0","0","-1","0","1","0","0","0","1","1","0","0","-1","1","0","0","1","1","0","0","0","-1","0","-1","0","0","1","0","1","0","0","-1","-1","0","-1","0","-1","-1","0","1","0","1","0","0","1","0","1","0","0","1","0","-1","-1","1","0","0","1","1"],["0","0","0","0","-1","1","0","0","0","0","1","-1","0","0","-1","1","0","0","1","-1","-1","1","1","-1","0","0","0","0","0","-1","1","0","0","-1","1","0","1","-1","0","-1","1","1","-1","0","0","0","-1","1","0","1","-1","0","1","-1","1","-1","0","0","0","1","-1","0","-1","1","1","-1","0","0","1","-1","1","-1","0","1","-1","0","0","0","0","0","0","0","0","1","-1","0","0","0","0","0","1","-1","0","0","0","0","1","-1","0","0","0","1","-1","0","0","1","-1","0","1","-1","-1","1"],["0","0","1","1","0","0","0","0","1","-1","0","0","1","1","0","0","1","-1","0","0","1","1","-1","-1","0","-1","-1","0","0","-1","-1","-1","0","-1","-1","0","1","1","1","0","0","0","0","1","-1","0","-1","-1","0","1","1","-1","0","0","0","0","1","0","0","1","1","1","0","0","0","0","1","-1","0","0","0","0","1","-1","-1","0","0","-1","1","-1","1","0","0","1","1","0","0","0","-1","-1","0","0","0","0","1","-1","0","0","0","-1","-1","0","0","1","-1","0","0","0","1","1","-1","-1"],["0","-1","-1","0","-1","-1","1","0","0","-1","0","0","0","1","0","0","-1","0","1","1","-1","-1","0","0","1","1","0","0","1","0","0","0","1","0","0","-1","1","1","0","-1","-1","0","0","1","1","1","1","1","-1","0","0","-1","0","0","-1","-1","0","0","-1","0","0","1","0","0","-1","-1","0","0","1","1","0","0","1","0","0","1","0","0","-1","1","0","0","-1","0","0","-1","-1","0","0","-1","0","0","0","1","-1","0","1","1","1","1","0","1","1","0","-1","0","0","-1","0","0","-1","-1"]],"A":[["0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","-1/2","1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0"],["-1/2","0","-1/2","-1/2","-1/2","-1/2","0","1/2","0","0","0","0","0","0","0","0","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","1/2","1/2","0","0","0","0","0","0","0","1/2","1/2","1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","0","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","1/2","0","0","0","0","1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0"],["-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","0","0","0","0","0","-1/2","0","0","0","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","0","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","0","-1/2","1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","0","1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0"],["-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","1/2","0","0","0","-1/2","0","0","0","1/2","0","0","0","0","1/2","1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","0","0","0","-1/2","0","0","1/2","1/2","0","1/2","1/2","1/2","1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2","1/2","0","-1/2","-1/2","0","1/2","1/2","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","0","-1/2","1/2","-1/2","1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","1/2","0","0","0","0","1/2","0","0","0","1/2","0","0","1/2","0","0","1/2","1/2"],["-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","1/2","0","0","0","-1/2","0","0","0","1/2","0","-1/2","0","1/2","0","1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","1/2","0","0","-1/2","0","1/2","0","1/2","1/2","1/2","0","1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","1/2","-1/2","0","-1/2","1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","0","-1/2","1/2","-1/2","1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","1/2","0","0","0","0","1/2","0","0","0","1/2","0","0","1/2","0","-1/2","0"],["-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","1/2","0","0","0","-1/2","0","0","0","1/2","0","-1/2","0","1/2","1/2","0","0","0","0","0","-1/2","0","0","0","-1/2","0","0","1/2","0","0","-1/2","0","1/2","1/2","1/2","1/2","1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","1/2","-1/2","-1/2","0","1/2","1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","0","0","-1/2","1/2","-1/2","1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","1/2","0","0","0","0","1/2","0","0","0","1/2","0","0","1/2","0","-1/2"],["-1/2","0","0","0","0","0","0","1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","-1/2","0","0","0","0","0","0","0","0","0","1/2","-1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","0","0","-1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","0","0","0","0","0","0","-1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0"],["0","1/2","0","0","0","0","1/2","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","1/2","1/2","1/2","1/2","-1/2","0","-1/2","0","-1/2","1/2","1/2","1/2","-1/2","0","-1/2","0","0","0","0","-1/2","0","-1/2","1/2","1/2","1/2","-1/2","0","0","0","0","-1/2","1/2","1/2","1/2","0","0","0","0","0"],["0","0","-1/2","0","0","0","-1/2","1/2","0","1/2","1/2","1/2","-1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","0","0","0","0","0","-1/2","0","0","0","1/2","1/2","1/2","1/2","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","0","1/2","1/2","1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","1/2","0","1/2","-1/2","0","-1/2","-1/2","-1/2","1/2","0","0","1/2","0","0","0","1/2","-1/2","0","-1/2","-1/2","-1/2","0","1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0"],["0","0","0","1/2","0","0","1/2","-1/2","1/2","0","-1/2","-1/2","0","1/2","0","0","0","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","1/2","0","0","-1/2","0","-1/2","-1/2","-1/2","1/2","1/2","0","-1/2","-1/2","0","0","1/2","0","0","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","1/2","1/2","0","-1/2","-1/2","0","0","1/2","0","1/2","1/2","0","0","1/2","0","0","1/2","0","-1/2","0","-1/2","1/2","-1/2","0","1/2","1/2","-1/2","0","0","0","-1/2","0","0","-1/2","1/2","-1/2","0","1/2","1/2","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2"],["0","0","0","0","1/2","0","1/2","-1/2","1/2","-1/2","0","-1/2","0","0","1/2","0","0","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","0","0","0","1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","-1/2","1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","1/2","0","1/2","0","1/2","0","0","1/2","0","0","-1/2","0","-1/2","1/2","-1/2","1/2","0","1/2","-1/2","0","0","0","0","-1/2","0","-1/2","1/2","-1/2","1/2","0","1/2","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2","0"],["0","0","0","0","0","1/2","1/2","-1/2","1/2","-1/2","-1/2","0","0","0","0","1/2","0","0","0","-1/2","0","1/2","0","-1/2","-1/2","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","0","-1/2","-1/2","0","1/2","0","0","0","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","-1/2","1/2","1/2","0","-1/2","-1/2","0","1/2","0","0","1/2","1/2","0","1/2","0","0","1/2","0","0","0","-1/2","0","-1/2","1/2","-1/2","1/2","1/2","0","-1/2","0","0","0","0","0","-1/2","-1/2","1/2","-1/2","1/2","1/2","0","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2"],["-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","0","0","1/2","0","1/2","1/2","1/2","0","0","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","1/2","-1/2","0","-1/2","0","-1/2","-1/2","-1/2","0","1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0"],["-1/2","0","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","-1/2","-1/2","0","1/2","0","0","0","0","1/2","1/2","0","0","1/2","1/2","0","1/2","1/2","0","-1/2","0","0","1/2","-1/2","-1/2","0","1/2","1/2","0","0","-1/2","0","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2","0","1/2","0","0","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","1/2","-1/2","0","-1/2","1/2","0","-1/2","-1/2","0","1/2","0","0","1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","1/2","0","0","1/2","0","0","1/2","1/2"],["-1/2","0","0","0","-1/2","0","-1/2","0","0","0","1/2","0","-1/2","-1/2","0","-1/2","0","0","1/2","0","-1/2","0","1/2","0","1/2","0","1/2","1/2","1/2","0","1/2","0","0","-1/2","0","1/2","0","-1/2","1/2","0","1/2","0","-1/2","0","0","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","0","0","1/2","0","0","-1/2","0","1/2","0","1/2","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","-1/2","0","-1/2","1/2","-1/2","0","-1/2","0","1/2","0","0","0","1/2","0","-1/2","0","0","0","1/2","0","-1/2","-1/2","-1/2","0","-1/2","0","0","1/2","0","0","1/2","0","-1/2","0"],["-1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","0","-1/2","0","1/2","1/2","0","1/2","1/2","1/2","1/2","0","0","0","0","-1/2","1/2","-1/2","0","1/2","1/2","0","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","0","0","0","1/2","0","0","-1/2","0","1/2","1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","0","1/2","-1/2","0","-1/2","1/2","-1/2","-1/2","0","0","1/2","0","0","0","0","1/2","-1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","0","0","1/2","0","-1/2"],["0","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","0","0","-1/2","0","0","0","0","1/2","1/2","1/2","-1/2","-1/2","0","0","0","1/2","0","0","1/2","1/2","1/2","0","1/2","1/2","1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","1/2","1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","-1/2","1/2","-1/2","1/2","0","0","-1/2","-1/2","-1/2","0","0","1/2","1/2","0","0","0","0","1/2","-1/2","0","0","0","1/2","1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0"],["0","1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","0","0","1/2","0","0","1/2","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","0","0","1/2","0","-1/2","0","0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","0","0","1/2","0","-1/2","1/2","-1/2","0","-1/2","0","1/2","1/2","0","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","0","-1/2","0","1/2","1/2","-1/2","0","0","-1/2","-1/2"],["0","1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","0","0","1/2","0","1/2","-1/2","0","-1/2","1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","1/2","-1/2","0","-1/2","1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","1/2","0","1/2","0","-1/2","0","1/2","0"],["0","1/2","0","0","0","1/2","0","-1/2","0","0","0","-1/2","0","0","0","1/2","1/2","-1/2","-1/2","0","0","1/2","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","1/2","1/2","0","1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","1/2","0","0","0","0","-1/2","0","-1/2","-1/2","1/2","0","0","0","-1/2","1/2","-1/2","0","-1/2","1/2","1/2","0","0","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","1/2","1/2","0","0","0","-1/2","0","1/2"],["0","0","-1/2","0","-1/2","0","0","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","1/2","0","1/2","1/2","1/2","0","1/2","0","1/2","1/2","1/2","0","1/2","0","0","-1/2","0","-1/2","0","0","-1/2","0","1/2","0","0","1/2","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","1/2","0","1/2","0","1/2","-1/2","1/2","-1/2","0","-1/2","0","-1/2","0","0","0","1/2","0","1/2","0","0","0","-1/2","0","1/2","0","0","1/2","0","1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0"],["0","0","-1/2","0","0","-1/2","0","0","-1/2","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","1/2","1/2","1/2","1/2","0","1/2","1/2","0","1/2","1/2","1/2","0","0","-1/2","0","0","0","-1/2","-1/2","0","0","1/2","0","1/2","0","-1/2","-1/2","0","0","0","1/2","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","0","0","1/2","1/2","0","1/2","-1/2","1/2","-1/2","0","-1/2","-1/2","0","0","0","0","1/2","0","0","1/2","0","0","-1/2","0","0","1/2","0","1/2","0","0","1/2","-1/2","0","0","1/2","-1/2","-1/2","0","0","-1/2"],["0","0","0","1/2","1/2","0","0","0","0","-1/2","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","0","1/2","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","1/2","0","0","1/2","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","0","-1/2","0","0","-1/2","-1/2","1/2","-1/2","1/2","-1/2","0","0","1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2"],["0","0","0","1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","-1/2","0","0","1/2","0","0","1/2","0","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","1/2","-1/2","1/2","-1/2","0","1/2","0","0","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0"],["0","0","0","0","1/2","1/2","0","0","0","0","-1/2","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","1/2","1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","1/2","0","0","1/2","0","0","0","0","-1/2","-1/2","1/2","0","0","-1/2","0","0","0","0","-1/2","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","1/2","-1/2","1/2","-1/2","1/2","0","0","0","0","0","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","1/2","1/2"],["-1/2","0","0","0","0","0","-1/2","0","0","0","0","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","1/2","1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","-1/2","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0"],["0","-1/2","0","0","0","0","0","1/2","0","0","0","0","1/2","1/2","1/2","1/2","0","0","0","0","1/2","1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","1/2","1/2","0","0","0","0","0","0","-1/2","0","0","0","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","0","1/2","0","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","1/2","0","1/2","-1/2","-1/2","-1/2","1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0"],["0","0","-1/2","0","0","0","0","0","-1/2","0","0","0","0","1/2","1/2","1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","0","0","0","0","1/2","1/2","1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","1/2","0","0","-1/2","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","1/2","-1/2","0","-1/2","-1/2","-1/2","0","1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0"],["0","0","0","-1/2","0","0","0","0","0","1/2","0","0","1/2","0","1/2","1/2","1/2","0","-1/2","-1/2","1/2","1/2","0","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","0","0","0","-1/2","0","0","1/2","1/2","0","0","0","0","0","1/2","0","0","1/2","0","0","1/2","1/2","0","1/2","0","-1/2","-1/2","0","1/2","1/2","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","-1/2","1/2","0","0","0","1/2","0","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","1/2","-1/2","1/2","0","-1/2","-1/2","0","0","1/2","0","0","0","1/2","0","0","1/2","0","0","1/2","1/2"],["0","0","0","0","-1/2","0","0","0","0","0","1/2","0","1/2","1/2","0","1/2","1/2","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","1/2","0","1/2","0","0","-1/2","0","0","1/2","0","0","1/2","0","1/2","0","1/2","1/2","-1/2","0","-1/2","1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","1/2","0","0","0","0","1/2","0","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","-1/2","1/2","-1/2","0","-1/2","0","0","0","1/2","0","0","0","1/2","0","0","1/2","0","-1/2","0"],["0","0","0","0","0","-1/2","0","0","0","0","0","1/2","1/2","1/2","1/2","0","1/2","-1/2","-1/2","0","1/2","0","-1/2","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","0","1/2","0","0","-1/2","0","1/2","1/2","0","0","0","-1/2","0","0","1/2","0","0","1/2","0","1/2","1/2","1/2","-1/2","-1/2","0","1/2","1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","0","-1/2","1/2","0","0","0","0","0","1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","1/2","-1/2","1/2","-1/2","-1/2","0","0","0","0","0","1/2","0","0","0","1/2","0","0","1/2","0","-1/2"],["-1/2","-1/2","0","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","1/2","1/2","0","0","0","0","0","0","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0"],["-1/2","0","0","-1/2","0","0","0","-1/2","1/2","0","-1/2","-1/2","0","-1/2","0","0","1/2","0","-1/2","-1/2","1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","1/2","1/2","0","0","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2","0","1/2","0","0","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","1/2","0","0","1/2","0","0","1/2","1/2"],["-1/2","0","0","0","-1/2","0","0","-1/2","1/2","-1/2","0","-1/2","0","0","-1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","1/2","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","0","0","1/2","0","0","-1/2","0","1/2","0","1/2","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","0","0","1/2","0","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","1/2","0","-1/2","-1/2","-1/2","0","-1/2","0","0","1/2","0","0","1/2","0","-1/2","0"],["-1/2","0","0","0","0","-1/2","0","-1/2","1/2","-1/2","-1/2","0","0","0","0","-1/2","1/2","-1/2","-1/2","0","1/2","0","-1/2","0","0","-1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","1/2","0","0","-1/2","0","1/2","1/2","0","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","0","0","0","1/2","0","0","-1/2","0","1/2","1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","0","0","1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","0","0","1/2","0","-1/2"],["0","-1/2","-1/2","0","0","0","1/2","0","0","-1/2","-1/2","-1/2","0","1/2","1/2","1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","0","0","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","1/2","1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","1/2","-1/2","0","0","0","1/2","1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0"],["0","1/2","0","0","1/2","0","-1/2","0","-1/2","1/2","0","1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","0","1/2","0","0","1/2","0","0","1/2","0","1/2","0","1/2","0","1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","1/2","1/2","0","1/2","1/2","0","1/2","0","-1/2","0","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","1/2","0","1/2","0","-1/2","0","1/2","0"],["0","1/2","0","0","0","1/2","-1/2","0","-1/2","1/2","1/2","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","1/2","0","0","0","1/2","0","0","0","1/2","1/2","0","0","1/2","1/2","-1/2","0","0","0","1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","0","0","-1/2","1/2","1/2","0","1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","1/2","0","0","0","0","-1/2","0","-1/2","-1/2","1/2","0","0","0","1/2","0","0","-1/2","0","0","0","-1/2","1/2","1/2","0","1/2","1/2","1/2","0","0","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","1/2","1/2","0","0","0","-1/2","0","1/2"],["0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","0","0","0","-1/2","0","0","-1/2","0","0","0","-1/2","-1/2","1/2","1/2","0","1/2","0","1/2","1/2","0","-1/2","-1/2","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","1/2","0","0","0","0","-1/2","1/2","1/2","0","0","-1/2","0","0","0","-1/2","1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","1/2","0","0","0","1/2","1/2","0","0","-1/2","1/2","0","0","0","-1/2","-1/2","1/2","1/2"],["0","0","-1/2","0","-1/2","0","1/2","-1/2","0","-1/2","0","-1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","1/2","0","-1/2","0","-1/2","1/2","0","1/2","1/2","0","0","1/2","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","1/2","0","1/2","0","-1/2","0","0","0","-1/2","0","1/2","0","-1/2","-1/2","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","1/2","0","0","1/2","0","1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0"],["0","0","-1/2","0","0","-1/2","1/2","-1/2","0","-1/2","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","0","0","0","-1/2","0","0","-1/2","0","0","0","-1/2","-1/2","0","1/2","-1/2","-1/2","0","0","1/2","1/2","1/2","0","1/2","0","-1/2","-1/2","0","0","0","1/2","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","0","0","1/2","1/2","0","-1/2","0","0","0","-1/2","0","0","1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","1/2","0","1/2","0","0","1/2","-1/2","0","0","1/2","-1/2","-1/2","0","0","-1/2"],["0","0","0","1/2","1/2","0","-1/2","1/2","-1/2","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","0","1/2","0","-1/2","-1/2","0","0","0","0","0","1/2","1/2","0","0","1/2","1/2","0","0","-1/2","0","1/2","1/2","0","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","1/2","0","0","1/2","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","0","-1/2","0","0","-1/2","1/2","0","0","0","0","-1/2","-1/2","0","1/2","1/2","1/2","1/2","0","0","1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2"],["0","0","0","1/2","0","1/2","-1/2","1/2","-1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","-1/2","0","0","-1/2","0","0","0","0","1/2","0","1/2","0","1/2","0","1/2","0","0","-1/2","1/2","0","1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","1/2","0","0","1/2","0","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","1/2","0","0","0","0","-1/2","0","-1/2","1/2","1/2","1/2","1/2","0","1/2","0","0","0","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0"],["0","0","0","0","1/2","1/2","-1/2","1/2","-1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","1/2","0","0","0","0","0","0","-1/2","0","0","0","0","1/2","1/2","0","0","1/2","1/2","0","-1/2","-1/2","0","1/2","1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","1/2","0","0","1/2","0","0","0","0","-1/2","-1/2","1/2","0","0","-1/2","0","0","0","0","-1/2","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","1/2","0","0","0","0","0","-1/2","-1/2","1/2","1/2","1/2","1/2","1/2","0","0","0","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","1/2","1/2"],["0","0","1/2","1/2","1/2","1/2","-1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","0","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","0","0","0","0","0","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","1/2","-1/2","1/2","0","0","0","0","1/2","1/2","1/2","0","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0"],["0","1/2","0","1/2","1/2","1/2","-1/2","0","-1/2","0","0","0","-1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","0","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","1/2","1/2","1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","0","1/2","-1/2","0","-1/2","0","0","0","1/2","1/2","0","1/2","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0"],["0","1/2","1/2","1/2","0","1/2","-1/2","0","0","0","1/2","0","0","0","-1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","0","0","-1/2","0","0","0","-1/2","0","1/2","0","-1/2","1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","1/2","0","0","1/2","0","1/2","0","1/2","0","0","1/2","0","0","-1/2","0","1/2","0","1/2","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","0","1/2","-1/2","0","0","0","1/2","0","1/2","1/2","0","0","0","1/2","0","0","-1/2","1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","1/2","0","0","1/2","0","-1/2","0"],["0","1/2","1/2","1/2","1/2","0","-1/2","0","0","0","0","1/2","0","0","0","-1/2","1/2","-1/2","-1/2","0","1/2","0","-1/2","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","1/2","-1/2","0","1/2","1/2","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","0","0","1/2","0","1/2","1/2","0","0","0","1/2","0","0","-1/2","0","1/2","1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","0","0","1/2","-1/2","0","0","0","0","1/2","1/2","1/2","0","0","0","0","1/2","0","-1/2","1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","0","0","1/2","0","-1/2"],["-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","0","0","1/2","0","1/2","0","1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","1/2","1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","0","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","1/2","1/2","-1/2","0","-1/2","0","0","-1/2","0","1/2","1/2","-1/2","0","0","-1/2","-1/2"],["-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","0","1/2","0","0","1/2","0","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","1/2","0","1/2","-1/2","0","0","-1/2","0","-1/2","1/2","0","1/2","0","-1/2","0","1/2","0"],["-1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","1/2","0","0","0","1/2","0","0","0","1/2","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","1/2","0","0","1/2","0","0","1/2","-1/2","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","1/2","0","0","0","0","-1/2","0","-1/2","-1/2","1/2","0","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","1/2","1/2","0","-1/2","0","0","0","-1/2","-1/2","1/2","1/2","0","0","0","-1/2","0","1/2"],["-1/2","-1/2","0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","1/2","1/2","0","0","0","0","1/2","0","0","1/2","1/2","0","0","-1/2","0","-1/2","-1/2","0","1/2","1/2","1/2","0","0","0","0","1/2","0","1/2","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","1/2","0","0","0","0","1/2","-1/2","0","0","0","0","1/2","-1/2","-1/2","0","0","0","-1/2","0","0","1/2","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","0","-1/2","1/2","0","0","1/2","1/2","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","0","1/2","1/2","-1/2","-1/2"],["-1/2","-1/2","0","-1/2","0","-1/2","0","0","1/2","0","-1/2","0","0","-1/2","0","-1/2","0","1/2","0","1/2","1/2","0","0","1/2","0","0","0","1/2","0","1/2","0","-1/2","-1/2","0","-1/2","0","0","1/2","0","1/2","0","0","1/2","0","0","1/2","1/2","0","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","1/2","0","1/2","0","1/2","0","0","1/2","0","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","1/2","0","-1/2","0","1/2","0","1/2","1/2","0"],["-1/2","-1/2","0","-1/2","-1/2","0","0","0","1/2","0","0","-1/2","0","-1/2","-1/2","0","0","1/2","1/2","0","0","1/2","1/2","0","0","0","0","1/2","0","0","1/2","-1/2","-1/2","-1/2","0","0","1/2","0","0","0","1/2","1/2","0","0","0","1/2","0","1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","0","1/2","1/2","0","0","0","1/2","1/2","0","0","0","0","-1/2","1/2","0","0","0","-1/2","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","-1/2","1/2","0","1/2","1/2","0","0","-1/2","0","0","-1/2","1/2","0","0","-1/2","1/2","1/2","0","0","1/2"],["-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","0","0","1/2","0","-1/2","-1/2","0","0","0","0","0","1/2","1/2","0","-1/2","0","0","-1/2","-1/2","0","1/2","0","0","-1/2","-1/2","0","0","0","0","1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","1/2","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2"],["-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","1/2","0","-1/2","0","0","-1/2","0","0","0","0","1/2","0","1/2","-1/2","0","-1/2","0","-1/2","1/2","0","0","-1/2","0","0","-1/2","0","0","0","0","1/2","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","-1/2","-1/2","1/2","-1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0"],["-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","-1/2","1/2","0","0","0","0","0","0","-1/2","0","0","0","0","1/2","1/2","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","0","0","0","-1/2","0","0","1/2","1/2","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","0","0","-1/2","0","0","0","0","-1/2","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","-1/2","-1/2","1/2","-1/2","1/2","0","0","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","1/2","1/2"],["0","0","0","1/2","1/2","1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","1/2","-1/2","0","0","0","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","0","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","1/2","0","0","0","0","0","0","-1/2","0","0","-1/2","1/2","-1/2","0","0","0","0","1/2","1/2","1/2","0","0","0","-1/2","1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0"],["0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","1/2","1/2","0","1/2","0","0","0","-1/2","0","0","-1/2","-1/2","0","0","1/2","0","0","-1/2","0","-1/2","-1/2","1/2","1/2","0","0","0","0","0","0","-1/2","-1/2","0","0","1/2","1/2","0","0","0","-1/2","0","0","0","1/2","1/2","0","0","1/2","1/2","0","-1/2","-1/2","1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","0","0","0","1/2","0","0","0","1/2","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","0","0","1/2","-1/2","0","-1/2","0","0","0","1/2","0","1/2","1/2","-1/2","0","1/2","1/2","-1/2","0","0","-1/2","-1/2"],["0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","1/2","0","1/2","0","0","1/2","0","0","0","-1/2","0","0","-1/2","0","1/2","0","0","0","-1/2","-1/2","0","-1/2","1/2","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","1/2","0","1/2","0","0","-1/2","0","1/2","0","1/2","0","1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","0","0","1/2","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","1/2","-1/2","0","0","-1/2","0","0","1/2","1/2","0","1/2","-1/2","1/2","0","1/2","0","-1/2","0","1/2","0"],["0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","1/2","1/2","0","0","0","0","1/2","0","0","0","-1/2","-1/2","0","1/2","0","0","0","0","-1/2","-1/2","-1/2","0","1/2","0","0","1/2","0","0","-1/2","-1/2","-1/2","0","1/2","0","0","1/2","0","0","1/2","0","0","-1/2","1/2","1/2","0","1/2","0","0","1/2","-1/2","-1/2","0","0","0","1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","-1/2","1/2","0","0","0","0","0","1/2","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","1/2","-1/2","0","0","0","-1/2","0","1/2","1/2","1/2","0","-1/2","1/2","1/2","0","0","0","-1/2","0","1/2"],["0","1/2","0","0","1/2","1/2","0","-1/2","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","-1/2","0","1/2","0","0","1/2","1/2","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","-1/2","1/2","0","0","0","0","-1/2","-1/2","1/2","0","0","0","-1/2","-1/2","1/2","1/2","0","1/2","0","0","0","0","-1/2","1/2","1/2","0","0","0","0","-1/2","0","-1/2","1/2","0","0","0","1/2","0","1/2","1/2","0","0","-1/2","0","-1/2","1/2","0","0","-1/2","0","0","-1/2","-1/2","-1/2","1/2","0","0","0","-1/2","-1/2","1/2","1/2"],["0","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","0","1/2","0","1/2","0","1/2","0","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","1/2","0","1/2","0","1/2","0","0","-1/2","0","1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","1/2","0","0","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0"],["0","1/2","0","1/2","1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","-1/2","0","0","0","1/2","0","1/2","1/2","0","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","0","-1/2","-1/2","-1/2","0","0","0","1/2","-1/2","0","0","-1/2","0","0","1/2","-1/2","-1/2","0","0","1/2","1/2","0","0","1/2","-1/2","0","0","0","1/2","1/2","0","0","0","-1/2","0","-1/2","0","0","1/2","0","1/2","0","1/2","0","0","1/2","-1/2","0","-1/2","0","0","1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","1/2","-1/2","-1/2","0","0","-1/2"],["0","-1/2","-1/2","0","0","-1/2","0","1/2","-1/2","0","0","1/2","0","1/2","1/2","0","-1/2","0","0","1/2","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","0","1/2","1/2","0","-1/2","0","1/2","0","0","-1/2","-1/2","0","0","0","0","1/2","0","0","0","1/2","0","0","1/2","-1/2","0","0","0","-1/2","-1/2","0","1/2","1/2","0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","1/2","0","0","-1/2","-1/2","0","1/2","1/2","0","0","1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2"],["0","-1/2","-1/2","0","-1/2","0","0","1/2","-1/2","0","1/2","0","0","1/2","0","1/2","-1/2","0","1/2","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","1/2","0","1/2","-1/2","1/2","0","0","-1/2","0","0","-1/2","0","0","0","0","1/2","0","1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","1/2","0","0","-1/2","0","-1/2","1/2","1/2","0","1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0"],["0","-1/2","-1/2","-1/2","0","0","0","1/2","-1/2","1/2","0","0","0","0","1/2","1/2","-1/2","1/2","0","0","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","0","0","0","0","1/2","1/2","-1/2","0","0","-1/2","0","0","0","0","-1/2","0","0","1/2","1/2","1/2","0","0","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","0","1/2","1/2","-1/2","-1/2","0","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","0","0","1/2","0","0","0","-1/2","-1/2","0","-1/2","0","0","0","-1/2","-1/2","1/2","0","0","0","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","1/2","1/2"],["-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","0","0","-1/2","-1/2","1/2","-1/2","0","0","0","0","0","0","1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","1/2","0","0","1/2","0","0","0","0","1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","0","1/2","1/2","-1/2","0","0","1/2","0","0","0","0","1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","0","0","-1/2","1/2","-1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","0","1/2","1/2","0","1/2","1/2","-1/2","-1/2"],["-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","1/2","0","1/2","0","-1/2","0","-1/2","1/2","0","-1/2","0","1/2","0","0","1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","-1/2","1/2","-1/2","0","0","1/2","0","0","1/2","0","0","0","0","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","0","1/2","0","-1/2","0","0","1/2","0","0","1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","0","0","-1/2","1/2","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","1/2","0","1/2","1/2","0","1/2","1/2","0"],["-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","0","1/2","0","0","-1/2","0","1/2","1/2","0","0","-1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","1/2","0","-1/2","0","0","1/2","1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","1/2","0","0","1/2","0","0","-1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","0","0","0","-1/2","1/2","0","0","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","-1/2","1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","0","1/2","1/2","0","1/2","1/2","0","0","1/2"],["-1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","1/2","-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","-1/2","0","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","0","-1/2","-1/2","-1/2","0","0","0","1/2","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","1/2","-1/2","-1/2","0","0","-1/2"],["-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","0","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0"],["-1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","1/2","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","-1/2","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","0","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","1/2","0","0","0","-1/2","-1/2","1/2","1/2"],["-1/2","-1/2","0","0","0","-1/2","-1/2","1/2","0","0","0","1/2","0","0","0","-1/2","0","0","0","1/2","1/2","0","-1/2","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","0","0","-1/2","0","0","1/2","1/2","1/2","0","-1/2","0","0","-1/2","0","0","-1/2","0","0","1/2","-1/2","-1/2","0","-1/2","0","0","0","0","0","1/2","1/2","1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","1/2","-1/2","-1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","1/2","-1/2","-1/2","0","0","0","1/2","0","-1/2"],["-1/2","-1/2","0","0","-1/2","0","-1/2","1/2","0","0","1/2","0","0","0","-1/2","0","0","0","1/2","0","0","1/2","0","-1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","0","0","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","-1/2","0","0","0","-1/2","-1/2","0","-1/2","0","0","1/2","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","1/2","-1/2","0","-1/2","0","1/2","0","-1/2","0"],["-1/2","-1/2","0","-1/2","0","0","-1/2","1/2","0","1/2","0","0","0","-1/2","0","0","0","1/2","0","0","1/2","1/2","0","0","-1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","0","0","0","0","0","0","1/2","1/2","0","0","-1/2","-1/2","0","0","0","1/2","0","0","0","-1/2","-1/2","0","0","-1/2","0","1/2","0","0","0","1/2","1/2","0","0","-1/2","0","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","1/2","0","-1/2","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","0","1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","-1/2","1/2","0","-1/2","-1/2","1/2","0","0","1/2","1/2"],["-1/2","-1/2","-1/2","0","0","0","-1/2","1/2","-1/2","0","0","0","-1/2","0","0","0","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","0","0","0","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0"],["0","0","0","0","0","0","1/2","-1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1/2","-1/2","1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],["-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","1/2","1/2","1/2","1/2","1/2","1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1/2","0","1/2","-1/2","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],["0","1/2","1/2","1/2","1/2","1/2","0","-1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","-1/2","1/2","0","1/2","-1/2","1/2","1/2","1/2","0","1/2","0","0","0","0","0","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0"],["-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","-1/2","1/2","1/2","1/2","0","1/2","0","0","0","0","1/2","0","0","0","1/2","-1/2","-1/2","0","0","0","0","0","0","1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","-1/2","1/2","0","1/2","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","0","-1/2","1/2","1/2","1/2","0","0","0","0","0"],["1/2","1/2","0","1/2","1/2","1/2","1/2","-1/2","0","-1/2","-1/2","-1/2","0","1/2","1/2","1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","0","0","0","0","1/2","1/2","1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","1/2","0","0","0","1/2","1/2","1/2","0","-1/2","1/2","-1/2","1/2","0","1/2","1/2","1/2","0","0","0","1/2","0","0","0","0","0","-1/2","0","0","0","0","1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0"],["-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","1/2","-1/2","0","1/2","1/2","-1/2","0","-1/2","-1/2","-1/2","0","1/2","1/2","-1/2","-1/2","0","0","1/2","0","0","0","1/2","0","0","0","1/2","0","0","0","0","0","1/2","0","0","-1/2","-1/2","0","0","0","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","1/2","-1/2","1/2","-1/2","1/2","0","-1/2","-1/2","0","0","0","0","-1/2","0","0","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2"],["-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","1/2","-1/2","1/2","0","1/2","-1/2","-1/2","0","-1/2","-1/2","1/2","0","1/2","0","-1/2","0","1/2","0","0","0","0","0","1/2","0","0","0","1/2","0","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","1/2","-1/2","1/2","-1/2","1/2","-1/2","0","-1/2","0","0","0","0","0","-1/2","0","0","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2","0"],["-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","1/2","-1/2","1/2","1/2","0","-1/2","-1/2","-1/2","0","-1/2","1/2","1/2","0","-1/2","0","1/2","0","0","0","0","0","0","0","1/2","0","0","0","1/2","0","0","-1/2","0","0","1/2","0","-1/2","-1/2","0","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","1/2","-1/2","1/2","-1/2","1/2","-1/2","-1/2","0","0","0","0","0","0","0","-1/2","0","0","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2"],["-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","-1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],["0","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","0","0","0","0","0","1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","-1/2","0","1/2","0","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","0","0","0","0","0","1/2","1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0"],["-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","0","-1/2","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","-1/2","0","0","0","0","-1/2","1/2","1/2","1/2","0","0","0","0","0"],["-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","1/2","0","0","0","1/2","0","0","0","1/2","0","0","0","1/2","1/2","0","0","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","1/2","1/2","0","0","0","1/2","1/2","1/2","0","1/2","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","0","0","0","1/2","1/2","1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","-1/2","0","0","0","1/2","0","0","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","1/2","0","0","0","0","-1/2","0","0","0","1/2","0","0","0","1/2","1/2","1/2","0","0"],["-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","0","1/2","0","0","0","-1/2","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","1/2","1/2","0","-1/2","-1/2","0","0","1/2","0","0","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2"],["-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","-1/2","0","0","0","1/2","0","0","0","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2","0"],["-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","0","0","0","1/2","0","0","0","-1/2","0","1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","1/2","0","-1/2","-1/2","0","1/2","0","0","0","0","0","1/2","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","0","0","1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2"],["-1/2","0","0","0","0","0","0","-1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","1/2","1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","0","0","0","0","0","-1/2","1/2","0","0","0","0","0","0","1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0"],["0","1/2","0","0","0","0","-1/2","0","-1/2","1/2","1/2","1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","1/2","0","0","0","1/2","-1/2","-1/2","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","1/2","1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","1/2","0","-1/2","0","0","0","0","1/2","0","-1/2","0","0","0","0","1/2","0","1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","1/2","1/2","1/2","0","0","0","0","0"],["0","0","-1/2","0","0","0","1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","0","0","0","1/2","1/2","0","1/2","1/2","1/2","0","0","0","0","-1/2","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","0","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","1/2","1/2","0","0","0","1/2","1/2","1/2","0","0","-1/2","0","0","-1/2","0","0","0","-1/2","0","0","1/2","0","0","0","-1/2","1/2","0","1/2","1/2","1/2","0","1/2","0","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0"],["0","0","0","1/2","0","0","-1/2","1/2","-1/2","0","1/2","1/2","0","1/2","0","0","0","-1/2","0","0","0","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","-1/2","0","1/2","0","0","0","0","0","1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","0","1/2","1/2","0","1/2","1/2","0","0","1/2","0","-1/2","0","0","1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","1/2","0","0","0","-1/2","0","0","1/2","0","0","0","-1/2","0","0","1/2","-1/2","1/2","0","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2"],["0","0","0","0","1/2","0","-1/2","1/2","-1/2","1/2","0","1/2","0","0","1/2","0","0","0","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","-1/2","0","0","1/2","0","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","1/2","0","1/2","1/2","0","1/2","0","1/2","0","0","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","1/2","0","0","0","0","-1/2","0","1/2","0","0","0","0","-1/2","0","1/2","-1/2","1/2","-1/2","0","-1/2","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2","0"],["0","0","0","0","0","1/2","-1/2","1/2","-1/2","1/2","1/2","0","0","0","0","1/2","0","0","0","-1/2","0","1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","0","0","-1/2","0","0","1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","1/2","1/2","0","1/2","1/2","0","1/2","0","0","0","0","0","-1/2","0","0","1/2","0","-1/2","-1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","1/2","0","0","0","0","0","-1/2","1/2","0","0","0","0","0","-1/2","1/2","-1/2","1/2","-1/2","-1/2","0","0","0","0","0","-1/2","0","0","0","-1/2","0","0","-1/2","0","1/2"],["-1/2","1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","1/2","-1/2","-1/2","-1/2","0","0","0","0","0","-1/2","1/2","0","0","0","0","0","-1/2","-1/2","-1/2","1/2","-1/2","-1/2","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","0","0","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","0","0","0","0","0","1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","0"],["-1/2","0","1/2","0","0","0","-1/2","0","1/2","0","0","0","0","-1/2","-1/2","-1/2","1/2","0","0","0","1/2","1/2","0","0","0","-1/2","0","1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","1/2","0","0","1/2","1/2","1/2","0","0","0","-1/2","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","0","1/2","1/2","1/2","0","0","0","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","-1/2","0","1/2","0","0","0","0","1/2","0","-1/2","0","0","0","-1/2","0","1/2","0","0","0","-1/2","0","-1/2","-1/2","-1/2","1/2","0","0","0","1/2","1/2","1/2","0","0"],["-1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","0","0","-1/2","-1/2","0","-1/2","0","0","1/2","0","0","-1/2","0","-1/2","-1/2","0","0","0","1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","1/2","1/2","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","0","0","0","1/2","0","0","-1/2","0","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","-1/2"],["-1/2","0","0","0","1/2","0","-1/2","0","0","0","-1/2","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0","0","0","1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","0","-1/2","0","0","-1/2","0","-1/2","0","-1/2","-1/2","1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","0","0","-1/2","0","0","0","-1/2","0","0","1/2","0","0","0","-1/2","0","-1/2","0","0","0","-1/2","0","-1/2","-1/2","-1/2","0","-1/2","0","0","-1/2","0","0","-1/2","0","1/2","0"],["-1/2","0","0","0","0","1/2","-1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","1/2","0","-1/2","-1/2","-1/2","0","0","0","0","1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","0","0","1/2","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","0","0","-1/2","0","-1/2","-1/2","-1/2","1/2","1/2","0","-1/2","-1/2","0","1/2","0","0","0","0","-1/2","0","-1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","0","0","0","0","-1/2","0","1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","-1/2","0","0","-1/2","0","1/2"],["0","1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","-1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","1/2","-1/2","0","0","0","1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","1/2","-1/2","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","-1/2","-1/2","-1/2","-1/2","-1/2","-1/2","0","0","0","0","0","0","-1/2","-1/2","-1/2","1/2","1/2","1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","0","-1/2","1/2","0","0","0","0","-1/2","-1/2","0","0","0","-1/2","1/2","0","0","0","0","1/2","1/2","1/2","-1/2","-1/2","-1/2","0","0"],["0","-1/2","0","1/2","0","0","0","1/2","0","-1/2","0","0","0","1/2","0","0","-1/2","0","1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","0","1/2","0","0","-1/2","1/2","0","0","-1/2","1/2","1/2","1/2","0","0","-1/2","-1/2","0","-1/2","0","0","0","0","1/2","1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","0","1/2","1/2","1/2","0","0","-1/2","-1/2","0","0","1/2","1/2","0","0","1/2","-1/2","-1/2","0","-1/2","0","0","0","1/2","0","-1/2","0","0","0","0","1/2","0","-1/2","0","0","0","1/2","0","-1/2","0","0","1/2","0","-1/2","0","0","1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2"],["0","-1/2","0","0","1/2","0","0","1/2","0","0","-1/2","0","0","0","1/2","0","-1/2","1/2","0","1/2","1/2","0","-1/2","0","-1/2","0","-1/2","0","0","1/2","0","-1/2","0","1/2","0","-1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","-1/2","0","0","0","1/2","0","0","-1/2","0","0","0","1/2","0","0","-1/2","0","0","1/2","0","0","-1/2","0","1/2","0","0","-1/2","0","1/2","-1/2","0","-1/2","0","-1/2","0","1/2","0"],["0","-1/2","0","0","0","1/2","0","1/2","0","0","0","-1/2","0","0","0","1/2","-1/2","1/2","1/2","0","0","1/2","0","-1/2","-1/2","0","-1/2","0","0","0","1/2","-1/2","0","0","1/2","-1/2","1/2","0","0","0","1/2","0","-1/2","-1/2","-1/2","0","0","1/2","1/2","1/2","0","0","0","-1/2","0","-1/2","-1/2","-1/2","1/2","1/2","0","0","0","1/2","0","-1/2","-1/2","1/2","1/2","0","1/2","0","0","0","-1/2","-1/2","-1/2","0","0","0","1/2","0","0","0","-1/2","0","0","1/2","0","0","0","-1/2","0","1/2","0","0","0","-1/2","1/2","0","0","0","-1/2","1/2","-1/2","-1/2","0","0","0","-1/2","0","1/2"],["0","0","-1/2","1/2","0","0","0","0","-1/2","-1/2","0","0","-1/2","1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","-1/2","0","0","0","-1/2","1/2","0","0","0","1/2","0","0","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","-1/2","0","0","-1/2","0","0","0","1/2","1/2","-1/2","-1/2","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2","0","0","1/2","1/2","-1/2","-1/2","0","0","0","1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","0","0","1/2","-1/2","0","0","0","0","-1/2","-1/2","0","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","0","0","-1/2","-1/2","-1/2","-1/2"],["0","0","-1/2","0","1/2","0","0","0","-1/2","0","-1/2","0","-1/2","0","1/2","0","-1/2","0","-1/2","0","0","-1/2","-1/2","0","-1/2","0","0","-1/2","0","1/2","0","0","0","1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","1/2","0","0","-1/2","0","1/2","0","1/2","-1/2","0","-1/2","-1/2","0","-1/2","0","-1/2","0","-1/2","-1/2","0","-1/2","1/2","0","1/2","-1/2","0","-1/2","0","1/2","0","-1/2","0","0","0","0","-1/2","0","-1/2","0","0","0","0","1/2","0","-1/2","0","0","0","-1/2","0","-1/2","0","0","1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","0","-1/2","1/2","0"],["0","0","-1/2","0","0","1/2","0","0","-1/2","0","0","-1/2","-1/2","0","0","1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","0","0","-1/2","0","0","1/2","0","0","0","1/2","-1/2","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","0","-1/2","0","1/2","0","0","-1/2","1/2","1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","0","-1/2","-1/2","1/2","1/2","0","0","-1/2","-1/2","1/2","0","0","-1/2","0","0","0","0","-1/2","0","0","-1/2","0","0","0","1/2","0","0","-1/2","0","0","-1/2","0","0","-1/2","0","1/2","0","0","-1/2","-1/2","0","0","-1/2","-1/2","-1/2","0","0","1/2"],["0","0","0","1/2","-1/2","0","0","0","0","-1/2","1/2","0","0","1/2","-1/2","0","0","-1/2","1/2","0","-1/2","0","0","-1/2","1/2","0","0","0","1/2","-1/2","0","0","1/2","-1/2","0","0","1/2","0","1/2","-1/2","0","0","-1/2","1/2","0","0","-1/2","0","-1/2","1/2","0","-1/2","1/2","0","0","-1/2","1/2","0","-1/2","1/2","0","1/2","-1/2","0","0","-1/2","1/2","-1/2","1/2","0","0","-1/2","1/2","0","-1/2","1/2","0","0","0","0","0","0","-1/2","1/2","0","0","0","0","0","-1/2","1/2","0","0","0","0","-1/2","1/2","0","0","0","-1/2","1/2","0","0","-1/2","1/2","0","-1/2","1/2","0","0","-1/2"],["0","0","0","1/2","0","-1/2","0","0","0","-1/2","0","1/2","0","1/2","0","-1/2","0","-1/2","0","1/2","0","-1/2","-1/2","0","1/2","0","0","0","1/2","0","-1/2","0","1/2","0","-1/2","0","0","1/2","1/2","0","-1/2","-1/2","0","1/2","0","0","0","-1/2","-1/2","0","1/2","-1/2","0","1/2","-1/2","0","1/2","0","-1/2","0","1/2","1/2","0","-1/2","-1/2","0","1/2","-1/2","0","1/2","-1/2","0","1/2","-1/2","0","1/2","0","0","0","0","0","0","-1/2","0","1/2","0","0","0","0","-1/2","0","1/2","0","0","0","-1/2","0","1/2","0","0","-1/2","0","1/2","0","-1/2","0","1/2","-1/2","0","1/2","-1/2","0"]]} diff --git a/research/native-involutive-port-transfer/DYADIC-DILATION-PROOF.md b/research/native-involutive-port-transfer/DYADIC-DILATION-PROOF.md new file mode 100644 index 0000000000..24e581d872 --- /dev/null +++ b/research/native-involutive-port-transfer/DYADIC-DILATION-PROOF.md @@ -0,0 +1,39 @@ +# Exact dyadic involution completion of the retained native port code + +This is a universal sufficient coefficient theorem with an explicit circuit. It does not assert that the circuit is free between the physical entrance and exit charts of the native multiplier, and it supplies no new κ value. + +Let R be an m×n matrix over a field in which 2 is invertible, with RRᵀ=56I_m. Set + + A = I_n − RᵀR/4, + C = [[A, 3Rᵀ], [−R, 13I_m]]. + +Then C²=I_(n+m). All coefficients are dyadic whenever the entries of R are dyadic. In particular, the inverse is the same circuit, and no division by 13 or 7 is needed. + +Indeed, put G=RᵀR. Then G²=56G, so A²=I_n+3G. Moreover ARᵀ=−13Rᵀ and RA=−13R. Multiplying the four blocks of C² gives I_n, 0, 0, and −3RRᵀ+169I_m=I_m, respectively. This proves the identity for arbitrary inputs, not only zero auxiliary data. + +The completion has the following three-shear implementation. Let + + B=Rᵀ/4, Z=−R, + Sx(B)=[[I_n,B],[0,I_m]], + Sy(Z)=[[I_n,0],[Z,I_m]], + J=diag(I_n,−I_m). + +Then + + C = Sx(B) Sy(Z) Sx(B) J. + +The order of execution is J, Sx(B), Sy(Z), Sx(B). The middle product has upper-right block 2B+BZB=−3Rᵀ and lower-right block I_m+ZB=−13I_m; J changes those two signs. Thus the circuit uses three scalar additions for each nonzero entry of R and m scalar negations. Each operation is a fixed dyadic linear operation. Running the same completed circuit twice restores every input exactly. The same proof holds for arbitrary payloads in any vector space W over the coefficient field: use C⊗Id_W and perform the 1344 scalar ADDs componentwise. The port coefficients remain outside tensor powers. Hence this is a universal common-chart construction at every payload width, not an inference from a finite numerical witness. + +For the frozen native source, n=112 and m=8. The exact input receipt checks RRᵀ=56I_8 and A=I_112−RᵀR/4 against the public code matrix from PR #4929. R has 448 nonzero entries, all ±1, so the circuit uses 1344 scalar ADDs and 8 negations. The portable verifier checks all 120 basis inputs through the literal chronological three-shear program as well as the separate matrix-square identity. + +Over characteristic zero, eight auxiliary coordinates are optimal for an involution whose upper-left block remains this A. For any completion [[A,B],[D,E]] with k auxiliary coordinates, its square identity implies BD=I−A²=−3RᵀR. The latter has rank eight because RRᵀ=56I_8. Hence k≥8, and the construction attains equality. This optimality supports the explicit sufficient construction; it is not a substitute for physical admission. + +Over R or C, the completion has controlled, fixed conditioning. Decompose the first 112 coordinates into ker R and the eight orthogonal modes Rᵀe_i/√56. It is identity on ker R. Each remaining two-dimensional block is [[−13,3√56],[−√56,13]]. Its singular values are 15+4√14 and 15−4√14. Consequently ||C||_2=||C^-1||_2=15+4√14<30 and κ_2(C)=449+120√14<900. The ±1 eigenvalue multiplicities are 112 and 8. These are fixed constants, not growing precision losses or an asymptotic improvement by themselves. + +A version with a common-chart monomial gauge M is immediate: replace R by RM and A by M^-1 A M when M is orthogonal and invertible. The primitive gather/scatter matrices must still be implemented in the actual physical charts; coefficient-level similarity does not make that implementation free. + +Predecessor credit: the retained source word, eight center observations, and its paid profile come from Cao Yifan's PR #4610 and its upstream lineage; the center-free cache kernel was already present in PR #4694; PR #4929 supplies the autonomous coded offer A and its exact rank-eight Gram spectrum. The present delta is the explicit optimal eight-coordinate dyadic involution completion and division-free three-shear implementation. It does not claim novelty for the general block-matrix completion method or elementary shear factorization. The DAG search retrieved elementary-generation and projection entries as source-only, unelaborated precedents; none is represented as a newly checked Lean theorem here. + +Closest prior overlap is explicit. [Rohan Arun's PR #1931](https://github.com/CrocSwap/integer-mult-bounds/pull/1931), head d043a01b222365a951853904c001761921bb843b, already gives an involutive eight-mode source reflection F=I−(K−12P)R and source-restored F-shears, with eight rank-one target repairs and no extra arrays on its older 712-column source. Its proof expressly leaves changing-chart native composition open. [Ali Romman's PR #1862](https://github.com/CrocSwap/integer-mult-bounds/pull/1862), head bb29ea73ad9be9a0c3d53cdcb1d22b2ee9ffe42f, supplies the broader ordered-ring source-code family, order-six specialization, and native-cut eight-row repairs. It already states the same Gram geometry K=Rᵀ/4, RRᵀ=56I. Thus neither involutive E8 source coding nor that Gram identity is new here. Our construction instead keeps A as an unchanged principal block and adds eight auxiliary coefficient coordinates; its three-shear implementation is an additional common-chart interface, not an improvement on either predecessor's native repair price. + +The completion also preserves an explicit indefinite form. With W=diag(I_112,−3I_8), the matrix WC=[[A,3Rᵀ],[3R,−39I_8]] is symmetric. Hence CᵀW=WC, and CᵀWC=W because C²=I. Thus this is an exact dyadic element of the orthogonal group of a form of signature (112,8), although it is not Euclidean orthogonal. Its usual contragredient lift S=diag(C,Cᵀ) is a 240-dimensional symplectic involution: for Ω=[[0,I_120],[−I_120,0]], direct multiplication gives SᵀΩS=Ω using C²=(Cᵀ)²=I. This is the standard block symplectic lift, not a new tensor-isomorphism reduction. The transpose shear program is obtained by reversing the shear factors and transposing their coefficient matrices; two copies cost 2688 scalar ADDs and 16 negations on common-chart coordinates. Physical native admission remains separate. diff --git a/research/native-involutive-port-transfer/INTEGRITY.json b/research/native-involutive-port-transfer/INTEGRITY.json new file mode 100644 index 0000000000..913b25501b --- /dev/null +++ b/research/native-involutive-port-transfer/INTEGRITY.json @@ -0,0 +1,16 @@ +{ + "native_core.py": "178ff80824a012970fc9435f122152da03c7e6bdc3a7de12136fe03e05cf24fe", + "coded_verify.py": "ee9c29012a3163d06f59b6307b4c438805f91b5dec0c9be2408e854c7d929a71", + "clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "SOURCE-WORD.json.gz": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05", + "R.json": "7b33b6dfb494c6eafe6d87a08d6a2c2e0681e56429495b2b27949040f0f63cd1", + "INVOLUTIVE-WORD.json.gz": "ff2999f022e93e05a250160808aa3c32a08041039d7edfb01068c0308f50c138", + "INVOLUTIVE-EXPECTED.json": "d1c48787cce1ae1b24ffaa2148d7c2c28ad0f490251b62b8a3af86d3273f6170", + "DYADIC-DILATION-INPUTS.json": "759acb219e3b5097b10cc69ddbee54040a68f23fba689f0d2a49d1c11e0324b2", + "unit_transfer_variant.py": "619bb9973eac1d0325fc5edc6cd0e83f3cb8c0712ac64c063aed3d3124c7f2a1", + "UNIT-TRANSFER-WORD.json.gz": "6d79cc2d4cdba4ebd0001af565d4f93bcfb7543b0070c78fe2f55a17bea3c22a", + "involution_verify.py": "d3b06148908f419c329f67d33c88809ff3fabc9c5c1d1cfc0ef765963feb53c0", + "verify_dilation.py": "2c081daa7e39578845f042ec7fdfa7af91da23e1e9320c7a2e59a9212a3573bc", + "independent.py": "cdf92ec556096e4bd6da1956822b426215c1916642e3c82ca2383818c7f705f4", + "phase_audit.py": "3d9efe0729e6c81b021584c25b5f762ad0376ba9e2592302d086fc21cfd095b4" +} diff --git a/research/native-involutive-port-transfer/INVOLUTIVE-EXPECTED.json b/research/native-involutive-port-transfer/INVOLUTIVE-EXPECTED.json new file mode 100644 index 0000000000..b422389c0f --- /dev/null +++ b/research/native-involutive-port-transfer/INVOLUTIVE-EXPECTED.json @@ -0,0 +1,20 @@ +{ + "added_rank1_owned_repairs": 8, + "all_arbitrary_rows": 632, + "arbitrary_helpers_preserved": 408, + "final_ABI_unchanged": true, + "involution_exact": true, + "max_prefix_l1": "457", + "new_kappa": null, + "paid": { + "1": 2209, + "2": 412, + "3": 510, + "4": 127, + "5": 40 + }, + "physical_raw_dual_emitted": false, + "source_payload_sha256": "cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd", + "source_predecessor_PR": 1931, + "status": "PASS_ACTUAL632_INVOLUTIVE_FORWARD" +} diff --git a/research/native-involutive-port-transfer/INVOLUTIVE-WORD.json.gz b/research/native-involutive-port-transfer/INVOLUTIVE-WORD.json.gz new file mode 100644 index 0000000000..eac634fb1d Binary files /dev/null and b/research/native-involutive-port-transfer/INVOLUTIVE-WORD.json.gz differ diff --git a/research/native-involutive-port-transfer/LICENSE b/research/native-involutive-port-transfer/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/native-involutive-port-transfer/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/native-involutive-port-transfer/NOTICE b/research/native-involutive-port-transfer/NOTICE new file mode 100644 index 0000000000..304a64959a --- /dev/null +++ b/research/native-involutive-port-transfer/NOTICE @@ -0,0 +1,7 @@ +Cao Yifan / intqwq: authenticated joint-helper/native-map round-three word, canonical research/kappa-round3-warp-20261022, commit 624de9dc66858af0945e5f8a0942488d62280d43; PR4610 lineage. +Cinna Davis: PR4694 center-free/cache kernel and arbitrary-input raw dual, PR4698 cold-helper basis/conditional consumer; PR4440/4441/4447/4470 lineage. +Dugongue: present ground-chart helper pre-compensation and explicit invertible coded offer, with substantial OpenAI Codex assistance. +Retains native, E8, scalar, Clifford, compiler, precision, outer and contributor notices in the cited upstream sources; zxv, Jacob Alan Sussman, DaysSky, Nick Petalas and Ryanson Jonathan retain predecessor credit. +Apache-2.0. No independent human or formal proof-kernel review is claimed. + +Rohan Arun: PR1931 involutive source reflection and source-restored shear; Ali Romman: PR1862 broader source-code/repair family. Current 632-owner port and dyadic completion prepared by Dugongue with substantial OpenAI Codex assistance. Apache-2.0. diff --git a/research/native-involutive-port-transfer/ORIGINS.json b/research/native-involutive-port-transfer/ORIGINS.json new file mode 100644 index 0000000000..14a569d05b --- /dev/null +++ b/research/native-involutive-port-transfer/ORIGINS.json @@ -0,0 +1,10 @@ +{ + "provider_export": { + "clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "coded_verify.py": "ee9c29012a3163d06f59b6307b4c438805f91b5dec0c9be2408e854c7d929a71", + "native_core.py": "178ff80824a012970fc9435f122152da03c7e6bdc3a7de12136fe03e05cf24fe", + "SOURCE-WORD.json.gz": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05" + }, + "source_commit": "cef4b52f2a59009865bf8eabde1be3f159063703", + "scope": "Required exact helper/compiler/source bytes, not a duplicate predecessor package for provenance." +} diff --git a/research/native-involutive-port-transfer/PROOF.md b/research/native-involutive-port-transfer/PROOF.md new file mode 100644 index 0000000000..d0adf358c5 --- /dev/null +++ b/research/native-involutive-port-transfer/PROOF.md @@ -0,0 +1,50 @@ +# An actual involutive transfer on the current 632-field source + +This ports the eight supported line-repair mechanism of PR #1931 to the current Cao Yifan round-three source, through PR #4929's helper-clean center-free word. It proves a forward local producer with its actual paid profile. It does not establish a new κ or a physical raw-dual implementation. + +Let R be the checked 8 × 112 E8 observation matrix, K = Rᵀ/4, and A = I − KR. The verifier binds these matrices to the actual deleted-center error on all 632 independent input fields: E_X = −KR. It checks RK = 14 I. + +Choose the eight ports 0, 7, 20, 23, 86, 93, 108 and 111. Let P equal K on these eight rows and zero elsewhere. The exact check RP = I certifies a supported right inverse. Put U = K − 12P and F = I − UR = A + 12PR. Then RU = 2 I, so + + F² = I − 2UR + U(RU)R = I. + +Both U and R have rank 8 because RU = 2 I. Hence F − I has rank 8, its negative eigenspace has dimension 8 and its positive eigenspace has dimension 104. This is an involution, not a claim of orthogonality or unit condition number. All coefficients are fixed rationals; fixed-word multiplication/division must use the project's admitted scalar tariff. + +## The actual forward word + +First execute the source-bound center-free forward word with the signed ground helper precompensation from PR #4929. Its exact normalized endpoints are X unchanged, Y ← Y + AX, and every arbitrary helper unchanged. Physically, every X exit is the common full frame, whereas Y_i exits at its rank 8 hyperplane F_i. + +For each of the eight selected rows i: + +1. Clear the already owned C0 at the common full frame. +2. Gather C0 = 12 Σ_j (PR)_ij X_j there, using ordinary ADDs between equal frames. +3. Apply the exact full-to-F_i Gaussian transport to C0. Its child rank is 1. +4. Add C0 into Y_i at F_i and clear C0. + +The repair affects only those eight Y fields. Consequently the complete endpoint is X unchanged and Y ← Y + FX; all 408 borrowed helpers retain their arbitrary inputs and original exit charts, all 632 persistent fields retain their original physical ABI, and C0 is zero. No borrowed field is erased or overwritten. + +The complete paid profile is 2,209 rank 1, 412 rank 2, 510 rank 3, 127 rank 4 and 40 rank 5 children. In particular, the eight original rank 8 center children remain absent and eight rank 1 repairs have been added. The full literal word, its frame IDs, repairs and finite-code lowering circuits are retained in INVOLUTIVE-WORD.json.gz. + +The compiler separately constructs each lowering operator as C(F_i) C(FULL)⁻¹ and factors it into two native monomial maps and one rank 1 Gaussian child. Explicit checks compare both the complete Clifford tableau and the exact zero-input state; together these check the operator including its global phase. The kernel identity is fixed on the nine-axis native block and extends by its admitted native tensor interpretation; it is not an empirical numerical comparison. The semantic replay checks every arbitrary persistent input column, not only zero helpers. Sign mutation and omission of the paid lowering are rejected. The replay is not a Lean kernel certificate. + +## Precision and scope + +This is a fixed finite word with fixed coefficients, monomial maps and unitary Gaussian children. In the maximum over fields of the fiber Euclidean norm, each ADD by c has operator norm at most 1 + |c|, COPY and CLEAR have norm at most 1 under their owned-field contracts, and the native unitary maps have norm 1. The product of these finitely many factors bounds every contiguous suffix independently of the fiber width. Thus a standard per-operation rounding allocation uses O(log n) guard precision for n-bit inputs under the source's precision convention. An entrywise norm conversion additionally includes the square root of the fiber volume; its logarithm is linear in the fiber width. The recorded prefix bound 457 is a state bound, not a claimed bound for every rounding suffix. + +The abstract inverse-transpose of the normalized forward shear is X ← X − FᵀY, Y unchanged. Although (Fᵀ)² = I, that fact alone does not supply the correctly typed physical backward word. This release does not claim one. Distinct routed stages have different normalizers, so F² = I does not by itself close a recursive controller. No new κ is claimed. + +## Predecessor credit + +Rohan Arun’s PR #1931, head d043a01b222365a951853904c001761921bb843b, supplies this involutive reflection formula, its supported eight rank 1 repairs and the source-restored forward interface. Ali Romman’s PR #1862 supplies the ordered source-family and native boundary-transfer framework on which it builds; PR #1800 supplies its older source. This release is a checked port to the newer 632-field source, not a first involution construction. + +PR #4929 supplies the current exact helper precompensation, rank 8 source-code extraction and source-bound replay. Cinna Davis's PR #4694 already supplies center removal and the cache-kernel decomposition; PR #4698 supplies its helper basis and local consumer framework. Cao Yifan's canonical research/kappa-round3-warp-20261022 package contains the actual joint helper/native source improvements beyond PR #4610. Retained source notices remain authoritative. Prepared by Dugongue with substantial OpenAI Codex assistance. + +## Source-mutating unit-transfer corollary + +The separate UNIT-TRANSFER-WORD.json.gz appends eight serial source updates I - u_k r_k at the common full X exit frame. Since r_l u_k = 2 delta_lk, the cross terms between distinct updates vanish, and their product is F. Its exact endpoint is X_new = FX, Y_new = Y + X_new. It preserves all 408 independent helpers and the same paid profile; the source mutation is explicit. This is the current-source port of the additional interface already supplied by PR #1931, not a new controller admission. + +## Artifact metadata and check coverage + +The word retains the original source canonical boundary object, including its historical local_profile field. That inherited field is not the price of the changed program. The changed invoice is computed from every literal event and frozen in INVOLUTIVE-EXPECTED.json; downstream users must use that explicit verified invoice. The same distinction applies to the unit-transfer word. + +A separate coefficient audit reconstructs F as eight serial rank-one reflections and checks its indefinite diagonal form. A separate sparse Gaussian-integer interpreter compares all 4,096 repair basis columns, including phases. These checks do not constitute a second independent interpreter for the entire inherited 632-field word or an independent human audit. diff --git a/research/native-involutive-port-transfer/R.json b/research/native-involutive-port-transfer/R.json new file mode 100644 index 0000000000..691598d877 --- /dev/null +++ b/research/native-involutive-port-transfer/R.json @@ -0,0 +1 @@ +[["1", "0", "1", "0", "0", "0", "0", "1", "0", "1", "1", "1", "1", "0", "0", "0", "0", "1", "1", "1", "0", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "1", "1", "1", "1", "0", "0", "1", "1", "1", "0", "0", "0", "0", "1", "0", "0", "1", "1", "1", "0", "0", "0", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1", "0", "0", "0", "1", "1", "0", "1", "0", "1", "0", "0", "0", "1", "0", "1", "0", "1", "1", "1", "1", "0", "1", "0", "0", "0", "1", "0", "1", "1", "1", "1", "0", "0", "0", "1", "1", "1", "0", "0"], ["1", "1", "1", "1", "1", "1", "1", "-1", "1", "-1", "-1", "-1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "-1", "1", "1", "1", "-1", "-1", "-1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "-1", "1", "-1", "1", "1", "1", "0", "1", "1", "1", "1", "1", "1", "-1", "1", "-1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], ["1", "1", "0", "0", "0", "0", "1", "-1", "0", "0", "0", "0", "1", "1", "1", "1", "1", "-1", "-1", "-1", "0", "0", "0", "0", "0", "0", "0", "-1", "-1", "-1", "-1", "1", "0", "0", "0", "0", "0", "0", "-1", "-1", "-1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "1", "-1", "-1", "-1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "-1", "1", "0", "0", "-1", "1", "1", "1", "0", "-1", "-1", "0", "0", "0", "0", "1", "-1", "0", "0", "0", "0", "0", "1", "1", "1", "1", "-1", "1", "1", "1", "0", "0", "0", "0", "0"], ["1", "0", "0", "1", "1", "1", "0", "1", "-1", "0", "0", "0", "0", "1", "1", "1", "-1", "0", "0", "0", "0", "0", "-1", "-1", "-1", "0", "-1", "-1", "0", "0", "0", "0", "1", "1", "1", "-1", "0", "0", "0", "0", "0", "-1", "-1", "-1", "-1", "-1", "0", "0", "1", "1", "1", "1", "1", "1", "0", "0", "0", "-1", "0", "0", "0", "0", "0", "0", "-1", "-1", "-1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "-1", "0", "1", "0", "1", "-1", "0", "0", "0", "1", "0", "1", "1", "0", "0", "0", "1", "0", "0", "-1", "-1", "-1", "1", "1", "0", "0", "0", "0", "-1", "-1", "-1", "-1", "-1", "-1", "0", "0"], ["0", "-1", "0", "-1", "0", "0", "1", "0", "1", "0", "-1", "-1", "1", "0", "1", "1", "0", "1", "0", "0", "1", "1", "0", "0", "-1", "0", "-1", "0", "-1", "0", "0", "-1", "-1", "0", "0", "-1", "1", "1", "-1", "0", "0", "1", "1", "0", "0", "1", "1", "1", "1", "0", "0", "0", "-1", "-1", "0", "0", "-1", "0", "1", "0", "0", "0", "1", "1", "0", "0", "-1", "1", "0", "0", "1", "1", "0", "0", "0", "-1", "0", "-1", "0", "0", "1", "0", "1", "0", "0", "-1", "-1", "0", "-1", "0", "-1", "-1", "0", "1", "0", "1", "0", "0", "1", "0", "1", "0", "0", "1", "0", "-1", "-1", "1", "0", "0", "1", "1"], ["0", "0", "0", "0", "-1", "1", "0", "0", "0", "0", "1", "-1", "0", "0", "-1", "1", "0", "0", "1", "-1", "-1", "1", "1", "-1", "0", "0", "0", "0", "0", "-1", "1", "0", "0", "-1", "1", "0", "1", "-1", "0", "-1", "1", "1", "-1", "0", "0", "0", "-1", "1", "0", "1", "-1", "0", "1", "-1", "1", "-1", "0", "0", "0", "1", "-1", "0", "-1", "1", "1", "-1", "0", "0", "1", "-1", "1", "-1", "0", "1", "-1", "0", "0", "0", "0", "0", "0", "0", "0", "1", "-1", "0", "0", "0", "0", "0", "1", "-1", "0", "0", "0", "0", "1", "-1", "0", "0", "0", "1", "-1", "0", "0", "1", "-1", "0", "1", "-1", "-1", "1"], ["0", "0", "1", "1", "0", "0", "0", "0", "1", "-1", "0", "0", "1", "1", "0", "0", "1", "-1", "0", "0", "1", "1", "-1", "-1", "0", "-1", "-1", "0", "0", "-1", "-1", "-1", "0", "-1", "-1", "0", "1", "1", "1", "0", "0", "0", "0", "1", "-1", "0", "-1", "-1", "0", "1", "1", "-1", "0", "0", "0", "0", "1", "0", "0", "1", "1", "1", "0", "0", "0", "0", "1", "-1", "0", "0", "0", "0", "1", "-1", "-1", "0", "0", "-1", "1", "-1", "1", "0", "0", "1", "1", "0", "0", "0", "-1", "-1", "0", "0", "0", "0", "1", "-1", "0", "0", "0", "-1", "-1", "0", "0", "1", "-1", "0", "0", "0", "1", "1", "-1", "-1"], ["0", "-1", "-1", "0", "-1", "-1", "1", "0", "0", "-1", "0", "0", "0", "1", "0", "0", "-1", "0", "1", "1", "-1", "-1", "0", "0", "1", "1", "0", "0", "1", "0", "0", "0", "1", "0", "0", "-1", "1", "1", "0", "-1", "-1", "0", "0", "1", "1", "1", "1", "1", "-1", "0", "0", "-1", "0", "0", "-1", "-1", "0", "0", "-1", "0", "0", "1", "0", "0", "-1", "-1", "0", "0", "1", "1", "0", "0", "1", "0", "0", "1", "0", "0", "-1", "1", "0", "0", "-1", "0", "0", "-1", "-1", "0", "0", "-1", "0", "0", "0", "1", "-1", "0", "1", "1", "1", "1", "0", "1", "1", "0", "-1", "0", "0", "-1", "0", "0", "-1", "-1"]] \ No newline at end of file diff --git a/research/native-involutive-port-transfer/README.md b/research/native-involutive-port-transfer/README.md new file mode 100644 index 0000000000..7ceaf9f79b --- /dev/null +++ b/research/native-involutive-port-transfer/README.md @@ -0,0 +1,17 @@ +# An involutive port transfer on the current native source + +This package develops the eight-repair source-reflection mechanism of Rohan Arun’s PR #1931 and Ali Romman’s PR #1862 for the current native producer. The prior port matrix A has eigenvalues 1 and -13. A supported rank-eight repair instead produces an exact involution F, avoiding an assumed inverse with denominator 13. The forward word accepts all 632 arbitrary inputs and preserves all 408 helper jobs and the original charts. Its paid profile is {1:2209, 2:412, 3:510, 4:127, 5:40}: eight rank-8 centers are replaced by eight rank-1 repairs. The selected repair ports are [0, 7, 20, 23, 86, 93, 108, 111]. Read [PROOF.md](PROOF.md) for the explicit physical word and checked scope. A physical raw dual is not emitted or claimed. The separately emitted source-mutating variant returns X′ = FX and Y′ = Y + X′ for the same paid profile. + +**No improved κ or complete multiplier is established.** Distinct fresh stages carry different routed codes. Their involutions do not automatically cancel, and a profitable complete caller remains unproved. + +The supplemental coefficient theorem retains A as an unchanged principal block and completes it with eight auxiliary coordinates to an involution C. Its literal three-shear implementation uses 1,344 dyadic ADDs and 8 negations, with no odd denominator. This second construction requires a common chart; no free adapter between the actual native charts is asserted. + +## Reproduce + +Python 3.12 and its standard library suffice. Scientific checks use no Windows paths, Git, GPU or external executable. Run `python3.12 -I -B research/native-involutive-port-transfer/verify.py`, or the repository runner `python3.12 -B scripts/research_package.py --package research/native-involutive-port-transfer`. See VERIFY.json for registered commands and the proofs for their precise scope. + +## Open next questions + +See TASK.json for the specific constructive caller question, first experiment and missing physical admission. Neither a passing local replay nor an optimistic moment invoice establishes a multiplication bound. + +Prepared by Dugongue with substantial OpenAI Codex assistance from the lead and three workers. Apache-2.0; no independent human or Lean kernel review claimed. diff --git a/research/native-involutive-port-transfer/REVIEW.json b/research/native-involutive-port-transfer/REVIEW.json new file mode 100644 index 0000000000..2f53d82d01 --- /dev/null +++ b/research/native-involutive-port-transfer/REVIEW.json @@ -0,0 +1,28 @@ +{ + "status": "AUTHOR_SIDE_THREE_AGENT_REVIEW_COMPLETE", + "scope": "Local forward offer, source-mutating variant, and supplemental coefficient completion; not a complete multiplier or a higher kappa.", + "reviewed_scientific_hashes": { + "involution_verify.py": "d3b06148908f419c329f67d33c88809ff3fabc9c5c1d1cfc0ef765963feb53c0", + "INVOLUTIVE-WORD.json.gz": "ff2999f022e93e05a250160808aa3c32a08041039d7edfb01068c0308f50c138", + "unit_transfer_variant.py": "619bb9973eac1d0325fc5edc6cd0e83f3cb8c0712ac64c063aed3d3124c7f2a1", + "UNIT-TRANSFER-WORD.json.gz": "6d79cc2d4cdba4ebd0001af565d4f93bcfb7543b0070c78fe2f55a17bea3c22a", + "verify_dilation.py": "2c081daa7e39578845f042ec7fdfa7af91da23e1e9320c7a2e59a9212a3573bc", + "DYADIC-DILATION-PROOF.md": "f50f6af325d71b070f4f368f9e69fd7de080322b6dfb395ddd636e231db1813c", + "DYADIC-DILATION-INPUTS.json": "759acb219e3b5097b10cc69ddbee54040a68f23fba689f0d2a49d1c11e0324b2", + "phase_audit.py": "3d9efe0729e6c81b021584c25b5f762ad0376ba9e2592302d086fc21cfd095b4" + }, + "evidence": [ + "632 arbitrary-input rows and 408 helper endpoints in both forward interfaces using retained native replay machinery.", + "All 4096 repair columns through a separate sparse Gaussian-integer evaluator.", + "Separate selected-minor, serial-reflection and indefinite-form coefficient identities.", + "All 120 basis inputs through the literal dyadic completion circuit.", + "Normal and optimized Python registered checks, with semantic mutation controls." + ], + "limits": [ + "No independent reimplementation of the entire inherited source interpreter.", + "No physical raw dual, changing-chart controller, stock or complete outer/precision admission.", + "No human or Lean kernel review; no new kappa." + ], + "remaining_obligations": "A profitable physical consumer must track different routed involutions and source mutation, emit every adapter and complete the moment and outer ledger.", + "credit": "PR1931 and PR1862 supply the repair mechanism; PR4929 and its retained source lineage supply the current 632-owner input." +} diff --git a/research/native-involutive-port-transfer/SOURCE-WORD.json.gz b/research/native-involutive-port-transfer/SOURCE-WORD.json.gz new file mode 100644 index 0000000000..46d929df83 Binary files /dev/null and b/research/native-involutive-port-transfer/SOURCE-WORD.json.gz differ diff --git a/research/native-involutive-port-transfer/SOURCES.json b/research/native-involutive-port-transfer/SOURCES.json new file mode 100644 index 0000000000..18d8c0b2bd --- /dev/null +++ b/research/native-involutive-port-transfer/SOURCES.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "base_commit": "cef4b52f2a59009865bf8eabde1be3f159063703", + "files": [ + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "c35482cd9035843b15a634cc8276a7e1e40e8395", + "sha256": "6fe0a099b89aa2aed796a13c3a21dafc63f3388ebf397464e44e0451893b9375" + }, + { + "path": "research/native-center-free-code/CODE.json", + "usage": "provenance", + "git_blob": "03170f4a31f7a8a3db7228f1cd5a6fdcb32720ae", + "sha256": "8be7f3f073b7981ec91c6af43edff0ac8a89f4824ef6026ae758c287dd6c03d0" + }, + { + "path": "research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "usage": "provenance", + "git_blob": "46d929df83817b85a5387bcdb9745e0627d6366e", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05" + } + ] +} diff --git a/research/native-involutive-port-transfer/TASK.json b/research/native-involutive-port-transfer/TASK.json new file mode 100644 index 0000000000..94a8e6b39b --- /dev/null +++ b/research/native-involutive-port-transfer/TASK.json @@ -0,0 +1,90 @@ +{ + "schema_version": 1, + "task_id": "joint-query-controller", + "priority_revision": 7, + "base_commit": "cef4b52f2a59009865bf8eabde1be3f159063703", + "original_card": { + "id": "joint-query-controller", + "question": "Can the installed QQ16 caller win a complete matched protocol bill, or can a changed demand eliminate actual paid work?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/qq16-caller-install/README.md" + ], + "methods": [ + "Derive the matched whole-caller physical bill for installed and baseline protocols.", + "Change the actual demanded observations and prove a cheaper legal producer/consumer contract." + ], + "acceptance_gate": "Name the changed premise of the fixed F0/B1 observation obstruction. Show exactly which query is recovered, legal native reads and restoration, and a full favorable budget including cover maps, helpers and endpoints. Local inverse identities alone do not close the global controller. 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 #4166 COST.md and ADMISSION.json. An actual caller connection is now proposed. Its native-component profile loses; parent park/restore versus external-call costs remain unresolved. Retain the producer and recovery lineage rather than rebuild it.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "At the actual installed cut, compare matched complete parent park/restore and external input/return protocols at the same bank/packet geometry, including every later root call and service cost. Alternatively pin both bridge observations and derive a genuinely smaller source-compatible demand. Stop if the complete necessary inequality fails or an essential cost is unknown; no larger decoder scan from a local tape-action saving.", + "bottleneck_link": "The native local words exist; retained query information and its physical access are the missing link to a composed recursive interface.", + "allowed_variations": [ + "One paid query, one changed first pair, or one precisely specified affine helper state.", + "A counterexample or lower bound for that exact proposed repair.", + "One unresolved obligation of a newer local decoder, with exact source heads and a distinct claim/domain." + ], + "scope_change_triggers": [ + "Retaining the fixed first pair and ordinary schedule while allowing only homogeneous selected-only control, already excluded by the witness.", + "Treating cover-map counts as zero-cost physical address operations.", + "Recreating the pending complete local decoder or early-record/output-bank coalescing already under investigation without a distinct audit or changed premise.", + "Treating a completed-output defect inequality as a producer-interior, dirty-range or physical-cost certificate.", + "Recreating completed-output recovery or caller wiring already supplied by #4166 without new independent coverage.", + "Dropping retained later root calls or claiming native-profile dominance from the isolated publication saving." + ], + "overlap_terms": [ + "QQ16", + "joint-query", + "changing-chart controller", + "selected observation", + "1969", + "2540", + "early record", + "output-bank retention", + "complete native decoder", + "2965", + "producer defect", + "dirty-helper range", + "F17 consumer", + "4166", + "qq16-caller-install" + ], + "existing_checks": [ + { + "scope": "PR #4166: author-checked installed producer/service/return/bridge connection; native-component comparison loses.", + "evidence": "research/qq16-caller-install/README.md", + "remaining": "Complete matched physical protocol bill, or changed source-compatible demand/circuit; no affordable supplier yet.", + "status": "author-checked", + "source_commit": "0b082d22a0e9a442d264ab0633e35ef26c790630", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "changed", + "actual_scope": "Port the eight-repair involutive transfer construction to the current 632-owner word and provide an optimal eight-coordinate dyadic completion of its prior port code. No improved kappa.", + "scope_change_reason": "The requested complete kappa improvement remains unproved. The retained deliverable contains positive exact constructions, with routed caller admission explicitly open.", + "bottleneck_link": "Replaces the noninvolutive port transfer by an exact involution with eight rank-one repairs; gives a separate division-free coefficient completion for eight auxiliary coordinates.", + "budget_minutes": 60, + "stop_rule": "Discovery cutoff 2026-10-23 02:10 UTC; final quarter reserved for verification and release.", + "outcome": "partial", + "evidence": "Actual arbitrary-input source-word replay plus exact rational coefficient and primitive circuit checks; no Lean or complete multiplication audit.", + "author": "Dugongue", + "ai_assistance": "Dugongue with substantial OpenAI Codex assistance from the lead and three agents. No Jev or Lean proof kernel used.", + "open_questions": [ + { + "question": "Can the changed involutive transfer close a profitable all-width changing-chart controller?", + "why_it_matters": "Only a complete physical caller and complete outer budget establish a higher kappa.", + "first_step": "Emit one concrete controller using the exact new native offer, preserving each independent helper, physical chart and scalar precision obligation.", + "blocked_by": "Codes at different fresh stages do not automatically cancel, and coefficient-level completion does not supply a free native chart adapter." + } + ] +} diff --git a/research/native-involutive-port-transfer/UNIT-TRANSFER-WORD.json.gz b/research/native-involutive-port-transfer/UNIT-TRANSFER-WORD.json.gz new file mode 100644 index 0000000000..6455d3bf39 Binary files /dev/null and b/research/native-involutive-port-transfer/UNIT-TRANSFER-WORD.json.gz differ diff --git a/research/native-involutive-port-transfer/VERIFY.json b/research/native-involutive-port-transfer/VERIFY.json new file mode 100644 index 0000000000..1b0de8d7b1 --- /dev/null +++ b/research/native-involutive-port-transfer/VERIFY.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 120, + "checks": "Frozen source and engine bytes; all 632 arbitrary native inputs and 408 helpers; exact phased rank 1 lowering circuits; source-mutating interface; 120 basis completion checks; separate 112 basis coefficient replay and 4,096 repair columns; semantic rejection controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 120, + "checks": "The same scoped scientific checks under optimized Python, with no assert-based validation." + } + ] +} diff --git a/research/native-involutive-port-transfer/clifford_exact.py b/research/native-involutive-port-transfer/clifford_exact.py new file mode 100644 index 0000000000..166841a037 --- /dev/null +++ b/research/native-involutive-port-transfer/clifford_exact.py @@ -0,0 +1,149 @@ +"""Small exact Gaussian-dyadic Clifford compiler, independent of gx internals. +Paulis use i^p X^x Z^z. State vectors use integer Gaussian numerators / 2^d. +The tableau is supplemented by a literal circuit, so global phases are kept. +""" +from dataclasses import dataclass + +def parity(x):return x.bit_count()&1 +def rank(rows): + p={} + for x in rows: + while x: + b=x.bit_length()-1 + if b not in p:p[b]=x;break + x^=p[b] + return len(p) +def transpose(rows,n):return tuple(sum(((rows[j]>>i)&1)<>j&1);a[j],a[k]=a[k],a[j] + for i in range(n): + if i!=j and a[i]>>j&1:a[i]^=a[j] + assert [r&((1<>n for r in a) +def basis_extend(cols,n): + out=[] + for x in list(cols)+[1<len(out):out.append(x) + assert len(out)==n + return tuple(out) +def nullspace(rows,n): + a=list(rows);p=[];k=0 + for j in range(n): + t=next((i for i in range(k,len(a)) if a[i]>>j&1),None) + if t is None:continue + a[t],a[k]=a[k],a[t] + for i in range(len(a)): + if i!=k and a[i]>>j&1:a[i]^=a[k] + p.append(j);k+=1 + return tuple((1<>j)&1)<>i&1:out=pmul(out,T[i]) + for i in range(n): + if z>>i&1:out=pmul(out,T[n+i]) + return out +def compose(A,B):return tuple(apply(A,p) for p in B) +def inverse(T): + n=len(T)//2;cols=[x|(z<>n;u,v,p=apply(T,(x,z,0));assert (u,v)==identity(n)[j][:2];out.append((x,z,(-p)%4)) + return tuple(out) +def qvalue(Q,alpha,x,n): + return (sum(alpha[i] for i in range(n) if x>>i&1)+2*sum(parity((Q[i]>>(i+1))&(x>>(i+1))) for i in range(n) if x>>i&1))%4 +def mul_i(a,p): + x,y=a;p%=4 + return [(x,y),(-y,x),(-x,-y),(y,-x)][p] +@dataclass +class Op: + n:int + tab:tuple + circuit:list + def then(self,b): + assert self.n==b.n + return Op(self.n,compose(b.tab,self.tab),self.circuit+b.circuit) + def adjoint(self): + circ=[] + for e in reversed(self.circuit): + if e[0]=='P':circ.append(('P',inv(e[1],self.n))) + elif e[0]=='D':circ.append(('D',e[1],tuple((-x)%4 for x in e[2]))) + elif e[0]=='C':circ.append(('C',e[1],-e[2])) + elif e[0]=='phase':circ.append(('phase',(-e[1])%4)) + else:circ.append(e) + return Op(self.n,inverse(self.tab),circ) + def zero_state(self,basis=0): + N=1<>i)&1 for i in range(n)) + assert all(alpha[i]%2==(Q[i]>>i)&1 for i in range(n)) + return Op(n,tuple([(1<>i&1 else 0,1<>i&1 else 0) for i in range(n)]),[('C',q,sgn)]) +def xgate(n,b):return Op(n,tuple([(1<>i)&1)) for i in range(n)]),[('X',b)]) +def fourier(n,axes=None): + out=ident(n) + for i in range(n) if axes is None else axes:out=out.then(cgate(n,1<len(selected):picks.append(j);selected.append(x) + assert len(picks)==r and all(x>>r==0 for x in Bcols) + Br=transpose(selected,r);Bi=inv(Br,r);Dr=transpose([Dcols[j]&((1<=224] + tariff=lambda v:3+abs(v.numerator).bit_length()-1+abs(v.numerator).bit_count()+v.denominator.bit_length()-1 + out={'status':'PASS_CENTER_FREE_CODED_SUPPLIER','source_payload_sha256':V.SOURCE_SHA,'precompensation_ADDs':len(EH),'precompensation_scalar_primitive_allowance':sum(tariff(v)for v in EH),'symmetric_defect_rank':8,'code_spectrum':{'1':104,'-13':8},'code_inverse':'I+E_X/13','condition_number_2':13,'all_632_arbitrary_rows':True,'new_kappa':None,'runs':res} + print(json.dumps(out,sort_keys=True)) +if __name__=='__main__':main() diff --git a/research/native-involutive-port-transfer/independent.py b/research/native-involutive-port-transfer/independent.py new file mode 100644 index 0000000000..1522aad0a8 --- /dev/null +++ b/research/native-involutive-port-transfer/independent.py @@ -0,0 +1,34 @@ +"""Separate exact coefficient audit; does not import the source interpreter.""" +from pathlib import Path +from fractions import Fraction as Q +import gzip,json +HERE=Path(__file__).resolve().parent +S=[0,7,20,23,86,93,108,111] +def need(c,m): + if not c:raise ValueError(m) +def mm(a,b):return [[sum((x*y for x,y in zip(r,c)),Q(0))for c in zip(*b)]for r in a] +def main(): + R=[[Q(x)for x in r]for r in json.loads((HERE/'R.json').read_bytes())] + K=[[R[k][i]/4 for k in range(8)]for i in range(112)] + U=[[(-11 if i in S else 1)*v for v in row]for i,row in enumerate(K)] + need(mm(R,U)==[[Q(2*(i==j))for j in range(8)]for i in range(8)],'Exact commuting reflection sections') + F=[[Q(i==j)-x for j,x in enumerate(row)]for i,row in enumerate(mm(U,R))] + word=json.loads(gzip.decompress((HERE/'INVOLUTIVE-WORD.json.gz').read_bytes())) + need(F==[[Q(x)for x in row]for row in word['F']],'Frozen word coefficient equality') + # Serial independent rank-one updates I-u_k r_k, each an involution. + for j in range(112): + x=[Q(i==j)for i in range(112)] + for k in range(8): + q=sum(a*b for a,b in zip(R[k],x)) + x=[v-U[i][k]*q for i,v in enumerate(x)] + need(x==[F[i][j]for i in range(112)],'All112basis serial reflection replay') + weights=[Q(-1 if i in S else 11)for i in range(112)] + for i in range(112): + for j in range(112): + need(sum(F[k][i]*weights[k]*F[k][j]for k in range(112))==(weights[i]if i==j else 0),'Exact indefinite diagonal isometry') + d=json.loads((HERE/'DYADIC-DILATION-INPUTS.json').read_bytes()) + need(R==[[Q(x)for x in row]for row in d['R']],'Dilation uses same source modes') + A=[[Q(i==j)-v for j,v in enumerate(row)]for i,row in enumerate(mm(K,R))] + need(A==[[Q(x)for x in row]for row in d['A']],'Dilation uses actual prior port code') + print(json.dumps({'status':'PASS_SEPARATE_COEFFICIENT_AUDIT','serial_reflections':8,'basis_inputs':112,'indefinite_metric':'-1 on selected ports,11 elsewhere','scope':'Coefficient identities only, not separate native interpreter or complete kappa.'})) +if __name__=='__main__':main() diff --git a/research/native-involutive-port-transfer/involution_verify.py b/research/native-involutive-port-transfer/involution_verify.py new file mode 100644 index 0000000000..92fc55ca31 --- /dev/null +++ b/research/native-involutive-port-transfer/involution_verify.py @@ -0,0 +1,72 @@ +"""Port PR1931 reflection to the current 632-field source; exact forward word.""" +from pathlib import Path +from fractions import Fraction as Q +from hashlib import sha256 +from collections import Counter +import sys,json,gzip +sys.path.insert(0,str(Path(__file__).resolve().parent)) +import native_core as V, coded_verify as C, clifford_exact as ce +HERE=Path(__file__).resolve().parent +PORTS=[0,7,20,23,86,93,108,111] +R_HASH="7b33b6dfb494c6eafe6d87a08d6a2c2e0681e56429495b2b27949040f0f63cd1" +CE_HASH="2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" +def mm(a,b):return [[sum((a[i][k]*b[k][j]for k in range(len(b))),Q(0))for j in range(len(b[0]))]for i in range(len(a))] +def main(): + b=gzip.decompress((HERE/'SOURCE-WORD.json.gz').read_bytes());V.need(sha256(b).hexdigest()==V.SOURCE_SHA,'Source hash') + V.need(sha256((HERE/'R.json').read_bytes()).hexdigest()==R_HASH,'R source hash') + V.need(sha256((HERE/'clifford_exact.py').read_bytes()).hexdigest()==CE_HASH,'Clifford compiler hash') + a=json.loads(b);R=[[Q(x)for x in row]for row in json.loads((HERE/'R.json').read_text())];E=V.error_kernel(a);EX,A=C.matrices(E) + K=[[R[k][i]/4 for k in range(8)]for i in range(112)] + P=[K[i]if i in PORTS else[Q(0)]*8 for i in range(112)] + I8=[[Q(i==j)for j in range(8)]for i in range(8)] + V.need(mm(R,K)==[[14*x for x in row]for row in I8],'RK14') + V.need(mm(R,P)==I8,'Supported right inverse') + KR=mm(K,R);V.need(EX==[[-x for x in row]for row in KR],'Actual source E8 factor') + PR=mm(P,R);correction=[[12*x for x in row]for row in PR] + U=[[K[i][k]-12*P[i][k]for k in range(8)]for i in range(112)] + UR=mm(U,R);F=[[Q(i==j)-UR[i][j]for j in range(112)]for i in range(112)] + V.need(F==[[A[i][j]+correction[i][j]for j in range(112)]for i in range(112)],'Actual corrected transfer') + V.need(mm(R,U)==[[2*x for x in row]for row in I8],'RU2') + V.need(mm(F,F)==[[Q(i==j)for j in range(112)]for i in range(112)],'Exact involution') + c,p=C.build(a,E,False);p=list(p);added=[];native=[] + for i in PORTS: + fi=c['final'][112+i];V.need(c['final'][:112]==[1]*112,'Common full X exit') + op=ce.canonical_frame(9,c['frames'][1]).adjoint().then(ce.canonical_frame(9,c['frames'][fi])) + cert,compiled=ce.lower_child(op) + V.need(cert['rank']==1,'Owned lowering rank') + V.need(op.tab==compiled.tab and op.zero_state()==compiled.zero_state(),'Exact lowering including global phase') + native.append({'port':i,'from':1,'to':fi,'lowering':cert,'literal_circuit':compiled.circuit}) + added.append(['scalar',['clear',['C',0]],1]) + for j,v in enumerate(correction[i]): + if v:added.append(['scalar',['add',['C',0],['L',j],v.numerator,v.denominator],1]) + added.append(['center',0,1,fi,1]) + added.append(['scalar',['add',['L',112+i],['C',0],1,1],fi]) + added.append(['scalar',['clear',['C',0]],0]) + p+=added + rows,paid,mx=V.replay(c,p,False) + expected=[V.identity(i)for i in range(632)] + for i in range(112): + for j,v in enumerate(F[i]): + if v:V.add(expected[112+i],V.identity(j),v) + V.need(all(rows[i]==expected[i]for i in range(632)),'All632 arbitrary input endpoint rows') + V.need(paid==Counter({1:2209,2:412,3:510,4:127,5:40}),'Complete paid profile') + artifact={'canonical':c,'program':p,'native_repairs':native,'selected_ports':PORTS,'F':[[str(x)for x in row]for row in F]} + artifact=json.loads(json.dumps(artifact)) + out={'status':'PASS_ACTUAL632_INVOLUTIVE_FORWARD','source_payload_sha256':V.SOURCE_SHA,'all_arbitrary_rows':632,'arbitrary_helpers_preserved':408,'added_rank1_owned_repairs':8,'paid':dict(paid),'final_ABI_unchanged':True,'involution_exact':True,'max_prefix_l1':str(mx),'physical_raw_dual_emitted':False,'new_kappa':None,'source_predecessor_PR':1931} + out=json.loads(json.dumps(out)) + if '--emit' in sys.argv: + (HERE/'INVOLUTIVE-WORD.json.gz').write_bytes(gzip.compress(json.dumps(artifact,sort_keys=True,separators=(',',':')).encode(),mtime=0)) + (HERE/'INVOLUTIVE-EXPECTED.json').write_text(json.dumps(out,indent=2,sort_keys=True)+'\n') + else: + V.need((HERE/'INVOLUTIVE-WORD.json.gz').is_file(),'Missing frozen word') + V.need(json.loads(gzip.decompress((HERE/'INVOLUTIVE-WORD.json.gz').read_bytes()))==artifact,'Frozen actual emitted word') + V.need(json.loads((HERE/'INVOLUTIVE-EXPECTED.json').read_text())==out,'Frozen exact receipt') + # Sign mutation remains an arbitrary-input error rather than silently an involution. + bad=[[A[i][j]-correction[i][j]for j in range(112)]for i in range(112)] + V.need(mm(bad,bad)!=[[Q(i==j)for j in range(112)]for i in range(112)],'Repair sign mutation rejected') + badword=[e for e in p if not(e[0]=='center' and e[4]==1)] + try:V.replay(c,badword,False) + except ValueError:pass + else:raise ValueError('Missing physical lowering mutation accepted') + print(json.dumps(out,sort_keys=True)) +if __name__=='__main__':main() diff --git a/research/native-involutive-port-transfer/native_core.py b/research/native-involutive-port-transfer/native_core.py new file mode 100644 index 0000000000..5d8a8f0a63 --- /dev/null +++ b/research/native-involutive-port-transfer/native_core.py @@ -0,0 +1,73 @@ +"""Exact source-bound coded-supplier replay core. Apache-2.0; Codex assistance. +Frozen source: Cao Yifan #4610 and retained Cinna Davis/Dugongue lineage. +""" +from pathlib import Path +from fractions import Fraction as Q +from collections import Counter +from hashlib import sha256 +import gzip,json,copy,importlib.util,sys +HERE=Path(__file__).resolve().parent +SOURCE_SHA='cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd' +def need(c,m): + if not c:raise ValueError(m) +def identity(i):return {(i,()):Q(1)} +def add(dst,src,a): + for k,v in tuple(src.items()): + z=dst.get(k,Q(0))+a*v + if z:dst[k]=z + else:dst.pop(k,None) +def warp(row,op,back): + s=(1 if op>0 else -1)*(abs(op)+(1000000 if back else 0));out={} + for (v,w),a in row.items(): + ww=w[1:]if w and w[0]==-s else(s,)+w;out[v,ww]=out.get((v,ww),Q(0))+a + return {k:a for k,a in out.items()if a} +def expected(i,back): + r=identity(i) + if back and i<112:add(r,identity(i+112),-1) + if not back and 112<=i<224:add(r,identity(i-112),1) + return r + +def replay(c,program,back=False,check_frames=True): + rows={i:identity(i)for i in range(632)};rows[632]={};cur=c['start'][:]+[None];paid=Counter();maxnorm=Q(1) + for e in program: + if e[0]=='scalar': + g,f=e[1:];r=g[1][1]+(632 if g[1][0]=='C'else 0) + if g[0]=='clear':need(r==632,'Borrowed erasure');rows[r]={};cur[r]=f + else: + if check_frames:need(cur[r]==f,'Scalar target frame') + if g[0]in('add','copy'): + v=g[2][1]+(632 if g[2][0]=='C'else 0) + if check_frames:need(cur[v]==f,'Scalar source frame') + if g[0]=='copy':need(r==632,'Borrowed overwrite');rows[r]=rows[v].copy() + else:need(r!=v,'Self add');add(rows[r],rows[v],Q(g[3],g[4])) + elif g[0]=='scale':rows[r]={k:Q(g[2],g[3])*v for k,v in rows[r].items()} + else:raise ValueError('Scalar opcode') + maxnorm=max(maxnorm,sum(map(abs,rows[r].values()),Q(0))) + elif e[0]=='warp': + _,r,op,x,y=e;r=r[1]+(632 if r[0]=='C'else 0) + if check_frames:need(cur[r]==x,'Warp source frame') + rows[r]=warp(rows[r],op,back);cur[r]=y + elif e[0]=='climb': + _,_,r,x,y,k=e + if check_frames:need(cur[r]==x,'Climb source frame') + need(k==len(c['frames'][y])-len(c['frames'][x])and k>0,'Ascending paid rank');cur[r]=y;paid[k]+=1 + elif e[0]=='center': + _,r,x,y,k=e;r+=632 + if check_frames:need(cur[r]==x,'Center source frame') + need(k==abs(len(c['frames'][y])-len(c['frames'][x])),'Center paid rank');cur[r]=y;paid[k]+=1 + else:need(e[0]in('phase','adapter','residual_adapter'),'Unknown opcode') + need(cur[:632]==c['final'],'Final frames');need(not rows[632],'Owned field cleared') + return rows,paid,maxnorm + +def clear_centers(program):return [['scalar',['clear',['C',e[1]]],e[3]]if e[0]=='center'else copy.deepcopy(e)for e in program] +def error_kernel(a): + rows,paid,_=replay(a['canonical'],clear_centers(a['programs']['forward']));E=[] + for i in range(632): + err=rows[i].copy();add(err,expected(i,False),-1) + for (j,w),v in sorted(err.items()): + need(112<=i<224 and(j<112 or j>=224),'Strict triangular error block');need(not w,'Constant owner kernel') + need(a['canonical']['final'][j]==1,'Repair source final full frame');need(j<112 or a['canonical']['start'][j]==0,'Pre-repair source initial ground') + E.append((i,j,v)) + need(len(E)==12532,'Frozen error term count') + return E + diff --git a/research/native-involutive-port-transfer/phase_audit.py b/research/native-involutive-port-transfer/phase_audit.py new file mode 100644 index 0000000000..10de07b384 --- /dev/null +++ b/research/native-involutive-port-transfer/phase_audit.py @@ -0,0 +1,40 @@ +from pathlib import Path +from fractions import Fraction as Q +import json,gzip,importlib.util,hashlib,time +P=Path(__file__).resolve().parent +s=importlib.util.spec_from_file_location('ce_ind',P/'clifford_exact.py');ce=importlib.util.module_from_spec(s);s.loader.exec_module(ce) +a=json.loads(gzip.decompress((P/'INVOLUTIVE-WORD.json.gz').read_bytes()));c=a['canonical'];n=9 +# An independent sparse integer Gaussian interpreter; no tableau/compiler evaluator. +def phase(v,k): + x,y=v;k%=4 + return ((x,y),(-y,x),(-x,-y),(y,-x))[k] +def run(circ,basis): + d={basis:(1,0)};den=0 + for e in circ: + typ=e[0] + if typ=='P':d={sum(((x&r).bit_count()%2)<>i&1)+2*sum(((R[i]>>(i+1))&(x>>(i+1))).bit_count()%2 for i in range(n)if x>>i&1) + out[x]=phase(v,k) + d=out + elif typ=='C': + q,sgn=e[1:];out={} + for x,(r,i) in d.items(): + v=out.get(x,(0,0));out[x]=(v[0]+r-sgn*i,v[1]+i+sgn*r) + y=x^q;v=out.get(y,(0,0));out[y]=(v[0]+r+sgn*i,v[1]+i-sgn*r) + d={x:v for x,v in out.items()if v!=(0,0)};den+=1 + else:raise ValueError(typ) + while den and all(not(r&1 or i&1)for r,i in d.values()):d={x:(r//2,i//2)for x,(r,i)in d.items()};den-=1 + return d,den +checks=[];t=time.monotonic() +for repair in a['native_repairs']: + fi=repair['to'];op=ce.canonical_frame(n,c['frames'][1]).adjoint().then(ce.canonical_frame(n,c['frames'][fi])) + for j in range(512): + if run(op.circuit,j)!=run(repair['literal_circuit'],j):raise ValueError(('Gaussian column',repair['port'],j)) + checks.append({'port':repair['port'],'exact_basis_columns':512}) +out={'status':'PASS_INDEPENDENT_ALL4096_REPAIR_COLUMNS','word_sha256':hashlib.sha256((P/'INVOLUTIVE-WORD.json.gz').read_bytes()).hexdigest(),'checks':checks,'seconds':time.monotonic()-t,'method':'Independent sparse Gaussian-integer interpreter, all 512 basis inputs per repair; compiler evaluator/tableau equality not used for comparisons.'} +print(json.dumps(out,sort_keys=True)) diff --git a/research/native-involutive-port-transfer/unit_transfer_variant.py b/research/native-involutive-port-transfer/unit_transfer_variant.py new file mode 100644 index 0000000000..b9d387f9d9 --- /dev/null +++ b/research/native-involutive-port-transfer/unit_transfer_variant.py @@ -0,0 +1,36 @@ +"""Same-chart returned-source unit-transfer corollary of PR1931; source mutates.""" +from pathlib import Path +import sys,json,gzip +from fractions import Fraction as Q +from collections import Counter +from hashlib import sha256 +root=Path(__file__).resolve().parent;sys.path.insert(0,str(root)) +import native_core as V +V.need(sha256((root/'INVOLUTIVE-WORD.json.gz').read_bytes()).hexdigest()=='ff2999f022e93e05a250160808aa3c32a08041039d7edfb01068c0308f50c138','Frozen positive forward source') +V.need(sha256((root/'R.json').read_bytes()).hexdigest()=='7b33b6dfb494c6eafe6d87a08d6a2c2e0681e56429495b2b27949040f0f63cd1','E8 factor pin') +w=json.loads(gzip.decompress((root/'INVOLUTIVE-WORD.json.gz').read_bytes()));c=w['canonical'];p=w['program'];R=[[Q(x)for x in row]for row in json.loads((root/'R.json').read_text())];F=[[Q(x)for x in row]for row in w['F']] +ports=w['selected_ports'];K=[[R[k][i]/4 for k in range(8)]for i in range(112)];U=[[x*(1-12*(i in ports))for x in row]for i,row in enumerate(K)] +for k in range(8): + p.append(['scalar',['clear',['C',0]],1]) + for j,v in enumerate(R[k]): + if v:p.append(['scalar',['add',['C',0],['L',j],v.numerator,v.denominator],1]) + for i in range(112): + v=-U[i][k] + if v:p.append(['scalar',['add',['L',i],['C',0],v.numerator,v.denominator],1]) + p.append(['scalar',['clear',['C',0]],0]) +rows,paid,mx=V.replay(c,p) +for i in range(632): + expected=V.identity(i) + if i<112:expected={(j,()):v for j,v in enumerate(F[i])if v} + elif i<224: + for j,v in enumerate(F[i-112]): + if v:V.add(expected,V.identity(j),v) + V.need(rows[i]==expected,'Every arbitrary unit-transfer row') +V.need(paid==Counter({1:2209,2:412,3:510,4:127,5:40}),'Unit variant paid invoice') +artifact={'canonical':c,'program':p} +if '--emit' in sys.argv: + (root/'UNIT-TRANSFER-WORD.json.gz').write_bytes(gzip.compress(json.dumps(artifact,sort_keys=True,separators=(',',':')).encode(),mtime=0)) +else: + V.need((root/'UNIT-TRANSFER-WORD.json.gz').is_file(),'Missing frozen unit-transfer word') + V.need(json.loads(gzip.decompress((root/'UNIT-TRANSFER-WORD.json.gz').read_bytes()))==artifact,'Frozen literal unit-transfer word') +print(json.dumps({'status':'PASS_RETURNED_SOURCE_UNIT_TRANSFER','all_arbitrary_rows':632,'arbitrary_helpers_preserved':408,'paid':dict(paid),'endpoint':'Xnew=FX;Ynew=Y+Xnew','source_mutates':True,'new_kappa':None,'max_prefix_l1':str(mx)},sort_keys=True)) diff --git a/research/native-involutive-port-transfer/verify.py b/research/native-involutive-port-transfer/verify.py new file mode 100644 index 0000000000..7412ef1870 --- /dev/null +++ b/research/native-involutive-port-transfer/verify.py @@ -0,0 +1,9 @@ +"""Read-only package entry point; exact byte guards and bounded scientific checks.""" +from pathlib import Path +import hashlib,json,runpy +P=Path(__file__).resolve().parent +for name,digest in json.loads((P/'INTEGRITY.json').read_bytes()).items(): + if hashlib.sha256((P/name).read_bytes()).hexdigest()!=digest:raise ValueError('Source/artifact drift: '+name) +for name in ('involution_verify.py','unit_transfer_variant.py','verify_dilation.py','independent.py','phase_audit.py'): + runpy.run_path(str(P/name),run_name='__main__') +print('PASS_NATIVE_INVOLUTIVE_PORT_TRANSFER_SCOPED_ONLY') diff --git a/research/native-involutive-port-transfer/verify_dilation.py b/research/native-involutive-port-transfer/verify_dilation.py new file mode 100644 index 0000000000..0971e59ab2 --- /dev/null +++ b/research/native-involutive-port-transfer/verify_dilation.py @@ -0,0 +1,57 @@ +"""Portable exact Gram-code involution and three-shear replay (stdlib only).""" +from pathlib import Path +from fractions import Fraction as Q +from hashlib import sha256 +import json +HERE=Path(__file__).resolve().parent +INPUT_SHA='759acb219e3b5097b10cc69ddbee54040a68f23fba689f0d2a49d1c11e0324b2' +def need(c,m): + if not c:raise ValueError(m) +def mm(A,B):return [[sum((x*y for x,y in zip(r,c)),Q(0))for c in zip(*B)]for r in A] +def eye(n):return [[Q(i==j)for j in range(n)]for i in range(n)] +def scale(A,c):return [[c*x for x in r]for r in A] +def add(A,B):return [[x+y for x,y in zip(r,s)]for r,s in zip(A,B)] +def transpose(A):return list(map(list,zip(*A))) +def completion(A,R): + Rt=transpose(R) + return [A[i]+[3*x for x in Rt[i]]for i in range(112)]+[[-x for x in R[i]]+[Q(13*(i==j))for j in range(8)]for i in range(8)] +def replay_shears(R,x,h): + # Chronological J, Sx(Rt/4), Sy(-R), Sx(Rt/4). + h=[-v for v in h] + Rt=transpose(R) + def sx(x,h):return [x[i]+sum((Rt[i][k]*h[k]/4 for k in range(8)),Q(0))for i in range(112)] + x=sx(x,h) + h=[h[k]-sum((R[k][i]*x[i]for i in range(112)),Q(0))for k in range(8)] + x=sx(x,h) + return x+h +def main(): + raw=(HERE/'DYADIC-DILATION-INPUTS.json').read_bytes() + need(sha256(raw).hexdigest()==INPUT_SHA,'Frozen source-derived input hash') + source=json.loads(raw) + R=[[Q(x)for x in r]for r in source['R']];A=[[Q(x)for x in r]for r in source['A']] + need(len(R)==8 and all(len(r)==112 for r in R),'R dimensions') + need(len(A)==112 and all(len(r)==112 for r in A),'A dimensions') + Rt=transpose(R);G=mm(Rt,R) + need(mm(R,Rt)==scale(eye(8),56),'RRt=56I8') + need(A==add(eye(112),scale(G,Q(-1,4))),'A=I-RtR/4') + C=completion(A,R) + need(mm(C,C)==eye(120),'Literal completion is involutive') + weights=[Q(1)]*112+[Q(-3)]*8 + WC=[[weights[i]*x for x in row]for i,row in enumerate(C)] + W=[[weights[i]*Q(i==j)for j in range(120)]for i in range(120)] + need(mm(transpose(C),WC)==W,'Weighted form diag(I112,-3I8) preserved') + Ct=transpose(C) + need(mm(Ct,Ct)==eye(120),'Contragredient block squares to identity') + # Check every basis input; this is independent of the matrix-product implementation. + for j in range(120): + x=[Q(i==j)for i in range(112)];h=[Q(i+112==j)for i in range(8)] + need(replay_shears(R,x,h)==[C[i][j]for i in range(120)],'Three-shear primitive replay') + need(all((x.denominator&(x.denominator-1))==0 for r in C for x in r),'Dyadic coefficients') + bad=[r[:]for r in C];bad[0][0]+=Q(1,4) + need(mm(bad,bad)!=eye(120),'Coefficient mutation control') + + nz=sum(x!=0 for r in R for x in r) + out={'status':'PASS','inputs_sha256':sha256(raw).hexdigest(),'dimension':120,'auxiliary_dimension':8,'R_nonzeros':nz,'scalar_ADDs':3*nz,'scalar_negations':8,'C':'[[A,3Rt],[-R,13I8]]','checks':['RRt=56I8','A=I-RtR/4','C^2=I120','all120basis_three_shear_replays','all_coefficients_dyadic','coefficient_mutation_rejected','C_transpose_W_C_equals_W','240dim_symplectic_contragredient_lift_blocks'],'scope':'Common-chart coefficient theorem only; no physical native admission or kappa improvement.'} + print(json.dumps(out,sort_keys=True)) +if __name__=='__main__':main() +