diff --git a/data/charpoly_codebook.json b/data/charpoly_codebook.json new file mode 100644 index 00000000..d9be2931 --- /dev/null +++ b/data/charpoly_codebook.json @@ -0,0 +1,4765 @@ +{ + "schema": "charpoly_codebook_v1", + "generated": "2026-07-01", + "source": "formal/SilverSight/PIST/Matrices250.lean", + "matrix_count": 250, + "distinct_matrices": 196, + "unique_fingerprints": 196, + "unique_spectral_radii": 182, + "bits_from_fingerprint": 7.61, + "bits_from_rho": 7.51, + "cartan_floor": 0.009486607142857142, + "cospectral_groups": [ + { + "fingerprint": [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "equation_ids": [ + "rrc_eq_0252524b379eac41", + "rrc_eq_4cab00eaeac59782", + "rrc_eq_a91f2f772995a9b9", + "rrc_eq_c704bc7e7c531303", + "rrc_eq_d767dc5b5996f6dc" + ] + }, + { + "fingerprint": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "equation_ids": [ + "rrc_eq_03c5ca134c799e06", + "rrc_eq_05370b4783a8bd6a", + "rrc_eq_068487b9141c4fb6", + "rrc_eq_0edd7758873784a5", + "rrc_eq_1038b814e5a78435", + "rrc_eq_131b32c8ed70796c", + "rrc_eq_17cb89b04d825252", + "rrc_eq_217148f607dfe5ff", + "rrc_eq_2f9d4e3b2060b799", + "rrc_eq_3a60fca57229c15b", + "rrc_eq_3e9910b639adf295", + "rrc_eq_3f87b53694e706e9", + "rrc_eq_3fc5864a199b7aa9", + "rrc_eq_434ad4a173c4cb24", + "rrc_eq_4795802d1dfe8dc9", + "rrc_eq_4b0eb5baf8d88582", + "rrc_eq_673652a4317dd847", + "rrc_eq_7533d46cedd4a4c5", + "rrc_eq_774c019464fd328c", + "rrc_eq_7995b3bdb3f05ce3", + "rrc_eq_84f94841b9e9578b", + "rrc_eq_8a4d6790faf66d6b", + "rrc_eq_8ffeff0c4877aa25", + "rrc_eq_9781272a1dff3d7d", + "rrc_eq_9c22fd7b336c5904", + "rrc_eq_b650dd7bdbcd9bcb", + "rrc_eq_bcd458bef84fe2a2", + "rrc_eq_bfd316d8427b2f6c", + "rrc_eq_c221ccc2bc9ccc45", + "rrc_eq_c5a00dead68e12a0", + "rrc_eq_dd01aec7b2c20774", + "rrc_eq_e0ac7e1847f830a3", + "rrc_eq_e25b46d22b7ca0f1", + "rrc_eq_e5f58db6423d2f9c", + "rrc_eq_fe98a523c9c0b821" + ] + }, + { + "fingerprint": [ + -1, + -1, + 0, + -1, + 0, + 0, + 0, + 0 + ], + "equation_ids": [ + "rrc_eq_185011f4d6cf6a2b", + "rrc_eq_891a81dfc968f58e", + "rrc_eq_8b812bf47cc024b4" + ] + }, + { + "fingerprint": [ + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "equation_ids": [ + "rrc_eq_1d0a752af1946515", + "rrc_eq_7076f5bdea119531", + "rrc_eq_71dd02d32f3e59b0", + "rrc_eq_cbefaa1738883221", + "rrc_eq_d07532a1db76d958", + "rrc_eq_ecf3ddf7af735ee6" + ] + }, + { + "fingerprint": [ + 0, + -10, + -8, + -6, + -30, + -29, + -8, + 0 + ], + "equation_ids": [ + "rrc_eq_296f8ca4495edd26", + "rrc_eq_3e634eac50426ea3" + ] + }, + { + "fingerprint": [ + 0, + -2, + -3, + -2, + -6, + 0, + -2, + 0 + ], + "equation_ids": [ + "rrc_eq_2f44e729b9d25d34", + "rrc_eq_e4b70a718fcfb1ab" + ] + }, + { + "fingerprint": [ + -3, + -5, + -1, + -13, + 34, + 8, + -10, + 2 + ], + "equation_ids": [ + "rrc_eq_35e1c2bc2da6d854", + "rrc_eq_b9eb3119b4d99483" + ] + }, + { + "fingerprint": [ + -7, + -145, + -453, + 259, + 3252, + 25492, + 44348, + -164234 + ], + "equation_ids": [ + "rrc_eq_3f87d2c06726bc30", + "rrc_eq_ac1a7a22801b7d77" + ] + }, + { + "fingerprint": [ + 0, + 0, + 0, + -2, + 0, + 0, + 0, + 0 + ], + "equation_ids": [ + "rrc_eq_5a01598605abcd3f", + "rrc_eq_5d39c74f1cbc3aab" + ] + }, + { + "fingerprint": [ + -4, + -2, + 6, + 2, + 2, + -3, + 2, + 0 + ], + "equation_ids": [ + "rrc_eq_5e10957e0cbb9de8", + "rrc_eq_8c569cbfc2385eab" + ] + }, + { + "fingerprint": [ + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "equation_ids": [ + "rrc_eq_64f81fa3c4725d4e", + "rrc_eq_c3dde450e7ce933a" + ] + }, + { + "fingerprint": [ + 0, + -5, + -8, + -3, + -2, + -2, + 1, + 0 + ], + "equation_ids": [ + "rrc_eq_811d99697e055c2b", + "rrc_eq_f691b1b9f433854f" + ] + }, + { + "fingerprint": [ + -2, + -7, + -20, + -56, + -68, + -84, + -76, + 26 + ], + "equation_ids": [ + "rrc_eq_8a05e2496e67848b", + "rrc_eq_a9bdc40d07c74659" + ] + } + ], + "entries": [ + { + "equation_id": "rrc_eq_03c5ca134c799e06", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_05370b4783a8bd6a", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0469, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_068487b9141c4fb6", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0469, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_0edd7758873784a5", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0938, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_1038b814e5a78435", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0312, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_131b32c8ed70796c", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0781, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_17cb89b04d825252", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_217148f607dfe5ff", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0625, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_2f9d4e3b2060b799", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0156, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_3a60fca57229c15b", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0625, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_3e9910b639adf295", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0781, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_3f87b53694e706e9", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_3fc5864a199b7aa9", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0625, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_434ad4a173c4cb24", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0469, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_4795802d1dfe8dc9", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0781, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_4b0eb5baf8d88582", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0625, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_673652a4317dd847", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0312, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_7533d46cedd4a4c5", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_774c019464fd328c", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_7995b3bdb3f05ce3", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0781, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_84f94841b9e9578b", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0469, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_8a4d6790faf66d6b", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0312, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_8ffeff0c4877aa25", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_9781272a1dff3d7d", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0781, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_9c22fd7b336c5904", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_b650dd7bdbcd9bcb", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0938, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_bcd458bef84fe2a2", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0938, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_bfd316d8427b2f6c", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_c221ccc2bc9ccc45", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0312, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_c5a00dead68e12a0", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_dd01aec7b2c20774", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0312, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_e0ac7e1847f830a3", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0938, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_e25b46d22b7ca0f1", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.0469, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_e5f58db6423d2f9c", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_fe98a523c9c0b821", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8326817289769895837, + "spectral_radius_exact": 0.0, + "density": 0.1094, + "cartan_snapped": 0.0, + "fingerprint_group": 3 + }, + { + "equation_id": "rrc_eq_0252524b379eac41", + "charpoly": [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2507706397770316277, + "spectral_radius_exact": 1.0, + "density": 0.0312, + "cartan_snapped": 0.996094, + "fingerprint_group": 2 + }, + { + "equation_id": "rrc_eq_1d0a752af1946515", + "charpoly": [ + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -4441191032565482995, + "spectral_radius_exact": 1.0, + "density": 0.125, + "cartan_snapped": 0.996094, + "fingerprint_group": 25 + }, + { + "equation_id": "rrc_eq_1f12deb00ad16d8f", + "charpoly": [ + 0, + -1, + 0, + 0, + -1, + 0, + 1, + 0 + ], + "charpoly_hash": 5784794206014166471, + "spectral_radius_exact": 1.0, + "density": 0.1406, + "cartan_snapped": 0.996094, + "fingerprint_group": 26 + }, + { + "equation_id": "rrc_eq_4cab00eaeac59782", + "charpoly": [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2507706397770316277, + "spectral_radius_exact": 1.0, + "density": 0.125, + "cartan_snapped": 0.996094, + "fingerprint_group": 2 + }, + { + "equation_id": "rrc_eq_64f81fa3c4725d4e", + "charpoly": [ + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -1368906295332337256, + "spectral_radius_exact": 1.0, + "density": 0.0781, + "cartan_snapped": 0.996094, + "fingerprint_group": 77 + }, + { + "equation_id": "rrc_eq_7076f5bdea119531", + "charpoly": [ + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -4441191032565482995, + "spectral_radius_exact": 1.0, + "density": 0.1094, + "cartan_snapped": 0.996094, + "fingerprint_group": 25 + }, + { + "equation_id": "rrc_eq_71dd02d32f3e59b0", + "charpoly": [ + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -4441191032565482995, + "spectral_radius_exact": 1.0, + "density": 0.0938, + "cartan_snapped": 0.996094, + "fingerprint_group": 25 + }, + { + "equation_id": "rrc_eq_80edc83f7fb3d80e", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + -1, + 0, + 0 + ], + "charpoly_hash": 4260903778326170018, + "spectral_radius_exact": 1.0, + "density": 0.0938, + "cartan_snapped": 0.996094, + "fingerprint_group": 100 + }, + { + "equation_id": "rrc_eq_a91f2f772995a9b9", + "charpoly": [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2507706397770316277, + "spectral_radius_exact": 1.0, + "density": 0.125, + "cartan_snapped": 0.996094, + "fingerprint_group": 2 + }, + { + "equation_id": "rrc_eq_bb071a3f64f90363", + "charpoly": [ + 0, + 0, + 0, + -1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -3458600081603708781, + "spectral_radius_exact": 1.0, + "density": 0.1094, + "cartan_snapped": 0.996094, + "fingerprint_group": 142 + }, + { + "equation_id": "rrc_eq_c3dde450e7ce933a", + "charpoly": [ + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -1368906295332337256, + "spectral_radius_exact": 1.0, + "density": 0.0625, + "cartan_snapped": 0.996094, + "fingerprint_group": 77 + }, + { + "equation_id": "rrc_eq_c704bc7e7c531303", + "charpoly": [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2507706397770316277, + "spectral_radius_exact": 1.0, + "density": 0.0938, + "cartan_snapped": 0.996094, + "fingerprint_group": 2 + }, + { + "equation_id": "rrc_eq_cbefaa1738883221", + "charpoly": [ + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -4441191032565482995, + "spectral_radius_exact": 1.0, + "density": 0.1094, + "cartan_snapped": 0.996094, + "fingerprint_group": 25 + }, + { + "equation_id": "rrc_eq_d07532a1db76d958", + "charpoly": [ + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -4441191032565482995, + "spectral_radius_exact": 1.0, + "density": 0.125, + "cartan_snapped": 0.996094, + "fingerprint_group": 25 + }, + { + "equation_id": "rrc_eq_d767dc5b5996f6dc", + "charpoly": [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2507706397770316277, + "spectral_radius_exact": 1.0, + "density": 0.0625, + "cartan_snapped": 0.996094, + "fingerprint_group": 2 + }, + { + "equation_id": "rrc_eq_e22543ef62f2494e", + "charpoly": [ + 0, + 0, + 0, + 0, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": 4796839786943274400, + "spectral_radius_exact": 1.0, + "density": 0.0781, + "cartan_snapped": 0.996094, + "fingerprint_group": 174 + }, + { + "equation_id": "rrc_eq_ecf3ddf7af735ee6", + "charpoly": [ + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -4441191032565482995, + "spectral_radius_exact": 1.0, + "density": 0.125, + "cartan_snapped": 0.996094, + "fingerprint_group": 25 + }, + { + "equation_id": "rrc_eq_f112b5836bdbd47d", + "charpoly": [ + 0, + -2, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -3736832984824994682, + "spectral_radius_exact": 1.0000000073, + "density": 0.1406, + "cartan_snapped": 0.996094, + "fingerprint_group": 187 + }, + { + "equation_id": "rrc_eq_cd4dfc767616524d", + "charpoly": [ + 0, + 0, + -1, + 0, + -1, + 0, + 0, + 1 + ], + "charpoly_hash": -131309964466651433, + "spectral_radius_exact": 1.0000000135, + "density": 0.1406, + "cartan_snapped": 0.996094, + "fingerprint_group": 157 + }, + { + "equation_id": "rrc_eq_dd3140340d9c9a33", + "charpoly": [ + -1, + -1, + 0, + 1, + 1, + -1, + 0, + 0 + ], + "charpoly_hash": -3195630957785951340, + "spectral_radius_exact": 1.0000036439, + "density": 0.1562, + "cartan_snapped": 0.996094, + "fingerprint_group": 170 + }, + { + "equation_id": "rrc_eq_bd8bcf9cb663c096", + "charpoly": [ + 0, + 0, + 0, + 0, + -2, + 0, + 0, + 0 + ], + "charpoly_hash": 4796839786943274400, + "spectral_radius_exact": 1.148698355, + "density": 0.1406, + "cartan_snapped": 1.147879, + "fingerprint_group": 144 + }, + { + "equation_id": "rrc_eq_5a01598605abcd3f", + "charpoly": [ + 0, + 0, + 0, + -2, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -3458600081603708781, + "spectral_radius_exact": 1.189207115, + "density": 0.1406, + "cartan_snapped": 1.185826, + "fingerprint_group": 71 + }, + { + "equation_id": "rrc_eq_5d39c74f1cbc3aab", + "charpoly": [ + 0, + 0, + 0, + -2, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -3458600081603708781, + "spectral_radius_exact": 1.189207115, + "density": 0.1406, + "cartan_snapped": 1.185826, + "fingerprint_group": 71 + }, + { + "equation_id": "rrc_eq_3ed73c5849372e40", + "charpoly": [ + 0, + 0, + -1, + -1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 4793995397731473471, + "spectral_radius_exact": 1.2207440846, + "density": 0.0938, + "cartan_snapped": 1.223772, + "fingerprint_group": 54 + }, + { + "equation_id": "rrc_eq_decad728fbd76456", + "charpoly": [ + 0, + 0, + 0, + -3, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -3914512621371287768, + "spectral_radius_exact": 1.316074013, + "density": 0.1562, + "cartan_snapped": 1.318638, + "fingerprint_group": 171 + }, + { + "equation_id": "rrc_eq_07bd7750aa9c1698", + "charpoly": [ + 0, + -1, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2945152531689111921, + "spectral_radius_exact": 1.3247179572, + "density": 0.0781, + "cartan_snapped": 1.328125, + "fingerprint_group": 9 + }, + { + "equation_id": "rrc_eq_81ad5c64ecea2574", + "charpoly": [ + -1, + 0, + 0, + 0, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": 5363030884477757077, + "spectral_radius_exact": 1.3247179572, + "density": 0.1406, + "cartan_snapped": 1.328125, + "fingerprint_group": 103 + }, + { + "equation_id": "rrc_eq_8018bcedc9b84a9d", + "charpoly": [ + -1, + 0, + -2, + 2, + -1, + 1, + 0, + 0 + ], + "charpoly_hash": 5964117175611156983, + "spectral_radius_exact": 1.3639646021, + "density": 0.1719, + "cartan_snapped": 1.366071, + "fingerprint_group": 99 + }, + { + "equation_id": "rrc_eq_2efd637f1e4bd389", + "charpoly": [ + 0, + -2, + 0, + -2, + 0, + 4, + 0, + 0 + ], + "charpoly_hash": 3060377436795960206, + "spectral_radius_exact": 1.4142135624, + "density": 0.1719, + "cartan_snapped": 1.413504, + "fingerprint_group": 41 + }, + { + "equation_id": "rrc_eq_bedb0334896533f3", + "charpoly": [ + 0, + 0, + 0, + 0, + 0, + -8, + 0, + 0 + ], + "charpoly_hash": -8768795578947616247, + "spectral_radius_exact": 1.4142135624, + "density": 0.1562, + "cartan_snapped": 1.413504, + "fingerprint_group": 145 + }, + { + "equation_id": "rrc_eq_def9542a5004dc68", + "charpoly": [ + 0, + 0, + 0, + -4, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 5843574721226917813, + "spectral_radius_exact": 1.4142135624, + "density": 0.1094, + "cartan_snapped": 1.413504, + "fingerprint_group": 172 + }, + { + "equation_id": "rrc_eq_3c97cd0a63059c60", + "charpoly": [ + 0, + 0, + 0, + 0, + -2, + -4, + -2, + 0 + ], + "charpoly_hash": 1536246605074455844, + "spectral_radius_exact": 1.4214836479, + "density": 0.1719, + "cartan_snapped": 1.422991, + "fingerprint_group": 52 + }, + { + "equation_id": "rrc_eq_b720db642290ed9d", + "charpoly": [ + 0, + 0, + -1, + -2, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": -5292613405991959009, + "spectral_radius_exact": 1.4252995777, + "density": 0.1562, + "cartan_snapped": 1.422991, + "fingerprint_group": 138 + }, + { + "equation_id": "rrc_eq_d24270e4be19de76", + "charpoly": [ + -1, + 0, + -2, + 0, + 2, + 0, + 0, + 0 + ], + "charpoly_hash": 7408190473978543721, + "spectral_radius_exact": 1.4945301805, + "density": 0.1719, + "cartan_snapped": 1.498884, + "fingerprint_group": 160 + }, + { + "equation_id": "rrc_eq_aef93abc672b8e29", + "charpoly": [ + 0, + -2, + 0, + 0, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": 2491276854946589462, + "spectral_radius_exact": 1.5128763969, + "density": 0.1406, + "cartan_snapped": 1.508371, + "fingerprint_group": 134 + }, + { + "equation_id": "rrc_eq_535b43060096e699", + "charpoly": [ + 0, + -2, + 0, + -2, + 0, + 3, + 0, + 0 + ], + "charpoly_hash": 4391205288203912951, + "spectral_radius_exact": 1.5174899136, + "density": 0.1719, + "cartan_snapped": 1.517857, + "fingerprint_group": 66 + }, + { + "equation_id": "rrc_eq_4c87c96f612f6100", + "charpoly": [ + 0, + -1, + -3, + 0, + 1, + 2, + 0, + 0 + ], + "charpoly_hash": -528043716546440656, + "spectral_radius_exact": 1.5213797068, + "density": 0.1719, + "cartan_snapped": 1.517857, + "fingerprint_group": 61 + }, + { + "equation_id": "rrc_eq_685a03c6c1db609e", + "charpoly": [ + 0, + -1, + -1, + -1, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": -9187622225914681461, + "spectral_radius_exact": 1.5341577449, + "density": 0.1719, + "cartan_snapped": 1.53683, + "fingerprint_group": 79 + }, + { + "equation_id": "rrc_eq_5d1fa53e2bceba76", + "charpoly": [ + 0, + -1, + -1, + 0, + -2, + -1, + 0, + 0 + ], + "charpoly_hash": -1292169028740281219, + "spectral_radius_exact": 1.5406263635, + "density": 0.1719, + "cartan_snapped": 1.53683, + "fingerprint_group": 72 + }, + { + "equation_id": "rrc_eq_87b4887fb400c8c8", + "charpoly": [ + -1, + 0, + 0, + -2, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2892408984069226104, + "spectral_radius_exact": 1.5436890127, + "density": 0.1562, + "cartan_snapped": 1.546317, + "fingerprint_group": 108 + }, + { + "equation_id": "rrc_eq_9817626505a4fedf", + "charpoly": [ + 0, + -1, + -1, + -2, + 0, + 0, + 2, + -2 + ], + "charpoly_hash": 6242469052191291313, + "spectral_radius_exact": 1.5490523002, + "density": 0.1875, + "cartan_snapped": 1.546317, + "fingerprint_group": 116 + }, + { + "equation_id": "rrc_eq_5ece89b86c865faf", + "charpoly": [ + 0, + -1, + 0, + -3, + -2, + 1, + 0, + 0 + ], + "charpoly_hash": 3457121757225908655, + "spectral_radius_exact": 1.5899331418, + "density": 0.1875, + "cartan_snapped": 1.59375, + "fingerprint_group": 74 + }, + { + "equation_id": "rrc_eq_0606dcb042ba0e6f", + "charpoly": [ + -1, + -1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 5544963404002865840, + "spectral_radius_exact": 1.6180339887, + "density": 0.1094, + "cartan_snapped": 1.62221, + "fingerprint_group": 6 + }, + { + "equation_id": "rrc_eq_4430cc5b9ebb8311", + "charpoly": [ + 0, + -1, + -2, + -1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 8332794089816716630, + "spectral_radius_exact": 1.6180339887, + "density": 0.1562, + "cartan_snapped": 1.62221, + "fingerprint_group": 57 + }, + { + "equation_id": "rrc_eq_6abda80c652b80c8", + "charpoly": [ + -1, + -1, + 0, + -1, + 1, + 1, + 0, + 0 + ], + "charpoly_hash": -3622007111825102822, + "spectral_radius_exact": 1.6180339887, + "density": 0.1719, + "cartan_snapped": 1.62221, + "fingerprint_group": 84 + }, + { + "equation_id": "rrc_eq_9a468347631152ce", + "charpoly": [ + 0, + 0, + -4, + 0, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": 5407817760743789112, + "spectral_radius_exact": 1.6353959318, + "density": 0.1719, + "cartan_snapped": 1.631696, + "fingerprint_group": 119 + }, + { + "equation_id": "rrc_eq_75b10c1207c769bb", + "charpoly": [ + -2, + 1, + -2, + 2, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -6249299906900661468, + "spectral_radius_exact": 1.6956207696, + "density": 0.1562, + "cartan_snapped": 1.698103, + "fingerprint_group": 91 + }, + { + "equation_id": "rrc_eq_c56ffe8dd188e331", + "charpoly": [ + -1, + -1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -7029168825864035104, + "spectral_radius_exact": 1.7220838057, + "density": 0.1719, + "cartan_snapped": 1.726562, + "fingerprint_group": 150 + }, + { + "equation_id": "rrc_eq_8beb9cc11e59ff37", + "charpoly": [ + -1, + 0, + -2, + -1, + 1, + 0, + 0, + 0 + ], + "charpoly_hash": 3852285770935504328, + "spectral_radius_exact": 1.7407187914, + "density": 0.1719, + "cartan_snapped": 1.736049, + "fingerprint_group": 111 + }, + { + "equation_id": "rrc_eq_185011f4d6cf6a2b", + "charpoly": [ + -1, + -1, + 0, + -1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2510325761830796179, + "spectral_radius_exact": 1.7548776662, + "density": 0.1406, + "cartan_snapped": 1.755022, + "fingerprint_group": 22 + }, + { + "equation_id": "rrc_eq_891a81dfc968f58e", + "charpoly": [ + -1, + -1, + 0, + -1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2510325761830796179, + "spectral_radius_exact": 1.7548776662, + "density": 0.1406, + "cartan_snapped": 1.755022, + "fingerprint_group": 22 + }, + { + "equation_id": "rrc_eq_8b812bf47cc024b4", + "charpoly": [ + -1, + -1, + 0, + -1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2510325761830796179, + "spectral_radius_exact": 1.7548776662, + "density": 0.1406, + "cartan_snapped": 1.755022, + "fingerprint_group": 22 + }, + { + "equation_id": "rrc_eq_5193efd26258bc51", + "charpoly": [ + 0, + -3, + -2, + 2, + 1, + 0, + 2, + 0 + ], + "charpoly_hash": 2641176530949629371, + "spectral_radius_exact": 1.7919990247, + "density": 0.1875, + "cartan_snapped": 1.792969, + "fingerprint_group": 64 + }, + { + "equation_id": "rrc_eq_3823a73f30463f6e", + "charpoly": [ + -2, + 1, + -2, + 2, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": -5751934526119603112, + "spectral_radius_exact": 1.8138238826, + "density": 0.1875, + "cartan_snapped": 1.811942, + "fingerprint_group": 49 + }, + { + "equation_id": "rrc_eq_25d3e2f91df8c0a0", + "charpoly": [ + -2, + 1, + -1, + -1, + 1, + 0, + 0, + 0 + ], + "charpoly_hash": -9136255749283918659, + "spectral_radius_exact": 1.8265157722, + "density": 0.1875, + "cartan_snapped": 1.830915, + "fingerprint_group": 34 + }, + { + "equation_id": "rrc_eq_feea4fcff27bd600", + "charpoly": [ + -1, + -1, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -877054948907115729, + "spectral_radius_exact": 1.8392867552, + "density": 0.1719, + "cartan_snapped": 1.840402, + "fingerprint_group": 195 + }, + { + "equation_id": "rrc_eq_d618a97b4f87abe9", + "charpoly": [ + -1, + -1, + 0, + -2, + 0, + 1, + -1, + 0 + ], + "charpoly_hash": 5047602304482746034, + "spectral_radius_exact": 1.8416274831, + "density": 0.2031, + "cartan_snapped": 1.840402, + "fingerprint_group": 164 + }, + { + "equation_id": "rrc_eq_c8b7f0fe52ef32fe", + "charpoly": [ + 0, + -2, + -2, + 0, + -2, + 0, + 0, + 0 + ], + "charpoly_hash": -5530690443065387570, + "spectral_radius_exact": 1.8446737579, + "density": 0.1875, + "cartan_snapped": 1.840402, + "fingerprint_group": 152 + }, + { + "equation_id": "rrc_eq_1f5af7e9fb2b518f", + "charpoly": [ + 0, + -1, + -3, + -2, + -2, + 0, + 0, + 0 + ], + "charpoly_hash": -2577536718401097650, + "spectral_radius_exact": 1.8673973337, + "density": 0.2188, + "cartan_snapped": 1.868862, + "fingerprint_group": 27 + }, + { + "equation_id": "rrc_eq_10c072664568b78d", + "charpoly": [ + 0, + -1, + 0, + -5, + -5, + -4, + -6, + -2 + ], + "charpoly_hash": -7954948490586765505, + "spectral_radius_exact": 1.9123022502, + "density": 0.2344, + "cartan_snapped": 1.916295, + "fingerprint_group": 13 + }, + { + "equation_id": "rrc_eq_78fb56a55b615659", + "charpoly": [ + -1, + -1, + -1, + -1, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2104577362291434348, + "spectral_radius_exact": 1.9275619755, + "density": 0.1719, + "cartan_snapped": 1.925781, + "fingerprint_group": 94 + }, + { + "equation_id": "rrc_eq_a4adf8b5cc0e5c73", + "charpoly": [ + 0, + 0, + 0, + 0, + -27, + 0, + 0, + 0 + ], + "charpoly_hash": -7966296049440736068, + "spectral_radius_exact": 1.9331820449, + "density": 0.2188, + "cartan_snapped": 1.935268, + "fingerprint_group": 126 + }, + { + "equation_id": "rrc_eq_3305fd3254a89e5b", + "charpoly": [ + 0, + 0, + 0, + 0, + -18, + -18, + 0, + 0 + ], + "charpoly_hash": -9114523225399050904, + "spectral_radius_exact": 1.9373330271, + "density": 0.2188, + "cartan_snapped": 1.935268, + "fingerprint_group": 45 + }, + { + "equation_id": "rrc_eq_e43c6929cd3bc3bf", + "charpoly": [ + 0, + -2, + -3, + -3, + 2, + 0, + 2, + 2 + ], + "charpoly_hash": -7200996162660600953, + "spectral_radius_exact": 1.9807050223, + "density": 0.2188, + "cartan_snapped": 1.982701, + "fingerprint_group": 176 + }, + { + "equation_id": "rrc_eq_6a952cb84d6e1fbf", + "charpoly": [ + -1, + -2, + 2, + -2, + -4, + 0, + 0, + 0 + ], + "charpoly_hash": -5384500884266887205, + "spectral_radius_exact": 2.0, + "density": 0.2031, + "cartan_snapped": 2.001674, + "fingerprint_group": 83 + }, + { + "equation_id": "rrc_eq_8acff8093805680f", + "charpoly": [ + -2, + 0, + 2, + -5, + 2, + 0, + 0, + 0 + ], + "charpoly_hash": 5911576051799778100, + "spectral_radius_exact": 2.0, + "density": 0.2344, + "cartan_snapped": 2.001674, + "fingerprint_group": 110 + }, + { + "equation_id": "rrc_eq_cc8b5f7c4742473c", + "charpoly": [ + 0, + -1, + -2, + -4, + -8, + 0, + 0, + 0 + ], + "charpoly_hash": -1773297082232294252, + "spectral_radius_exact": 2.0, + "density": 0.2188, + "cartan_snapped": 2.001674, + "fingerprint_group": 156 + }, + { + "equation_id": "rrc_eq_d76203fbca4e9b81", + "charpoly": [ + 0, + -3, + -2, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 6017782391475368301, + "spectral_radius_exact": 2.0, + "density": 0.2031, + "cartan_snapped": 2.001674, + "fingerprint_group": 167 + }, + { + "equation_id": "rrc_eq_01ab6e9c32652d06", + "charpoly": [ + 0, + -3, + -1, + -3, + 0, + 4, + -5, + 3 + ], + "charpoly_hash": -436747807128131348, + "spectral_radius_exact": 2.0229595636, + "density": 0.25, + "cartan_snapped": 2.020647, + "fingerprint_group": 0 + }, + { + "equation_id": "rrc_eq_72b416376f1bf5b0", + "charpoly": [ + -1, + -3, + 2, + 0, + 0, + -2, + 1, + 0 + ], + "charpoly_hash": -7988394657258247833, + "spectral_radius_exact": 2.0346140235, + "density": 0.2188, + "cartan_snapped": 2.030134, + "fingerprint_group": 89 + }, + { + "equation_id": "rrc_eq_85435dde0bcc5cfd", + "charpoly": [ + 0, + -2, + -3, + -3, + -1, + 0, + 0, + 0 + ], + "charpoly_hash": -385559366152961667, + "spectral_radius_exact": 2.065994892, + "density": 0.1875, + "cartan_snapped": 2.06808, + "fingerprint_group": 106 + }, + { + "equation_id": "rrc_eq_cabf5eab335f2d23", + "charpoly": [ + 0, + -1, + -4, + -5, + -1, + -2, + 0, + 0 + ], + "charpoly_hash": 389589682526449829, + "spectral_radius_exact": 2.0754828663, + "density": 0.2188, + "cartan_snapped": 2.077567, + "fingerprint_group": 155 + }, + { + "equation_id": "rrc_eq_795413454087e025", + "charpoly": [ + -2, + -1, + 0, + 3, + 2, + -2, + 0, + 0 + ], + "charpoly_hash": 506845547017536356, + "spectral_radius_exact": 2.0976365149, + "density": 0.2031, + "cartan_snapped": 2.09654, + "fingerprint_group": 95 + }, + { + "equation_id": "rrc_eq_01f85e831660c26e", + "charpoly": [ + -2, + -2, + 6, + -6, + 4, + -3, + 0, + 0 + ], + "charpoly_hash": -8277400177060428709, + "spectral_radius_exact": 2.1086464299, + "density": 0.25, + "cartan_snapped": 2.106027, + "fingerprint_group": 1 + }, + { + "equation_id": "rrc_eq_bf1b905e94089ddc", + "charpoly": [ + 0, + -4, + 0, + -2, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -5999646786834786367, + "spectral_radius_exact": 2.1093813649, + "density": 0.1875, + "cartan_snapped": 2.106027, + "fingerprint_group": 146 + }, + { + "equation_id": "rrc_eq_ea1df518da53e850", + "charpoly": [ + -1, + -3, + 1, + -3, + 10, + -3, + -3, + 0 + ], + "charpoly_hash": 4641287664456106659, + "spectral_radius_exact": 2.1163290129, + "density": 0.2344, + "cartan_snapped": 2.115513, + "fingerprint_group": 183 + }, + { + "equation_id": "rrc_eq_2f44e729b9d25d34", + "charpoly": [ + 0, + -2, + -3, + -2, + -6, + 0, + -2, + 0 + ], + "charpoly_hash": 7184684620059298269, + "spectral_radius_exact": 2.1266582717, + "density": 0.25, + "cartan_snapped": 2.125, + "fingerprint_group": 43 + }, + { + "equation_id": "rrc_eq_e4b70a718fcfb1ab", + "charpoly": [ + 0, + -2, + -3, + -2, + -6, + 0, + -2, + 0 + ], + "charpoly_hash": 7184684620059298269, + "spectral_radius_exact": 2.1266582717, + "density": 0.25, + "cartan_snapped": 2.125, + "fingerprint_group": 43 + }, + { + "equation_id": "rrc_eq_59c14acaba40cdc9", + "charpoly": [ + -1, + -1, + -3, + -3, + 4, + 4, + -1, + 0 + ], + "charpoly_hash": -9024179763897218045, + "spectral_radius_exact": 2.151065139, + "density": 0.2344, + "cartan_snapped": 2.15346, + "fingerprint_group": 70 + }, + { + "equation_id": "rrc_eq_0d19ee61a2cd8497", + "charpoly": [ + 0, + -2, + 0, + -8, + -9, + 0, + 0, + 0 + ], + "charpoly_hash": 8316425212220240974, + "spectral_radius_exact": 2.1519168583, + "density": 0.2344, + "cartan_snapped": 2.15346, + "fingerprint_group": 11 + }, + { + "equation_id": "rrc_eq_a4348738394b0597", + "charpoly": [ + -2, + 1, + -4, + 3, + -2, + 2, + -1, + 0 + ], + "charpoly_hash": -1066478916229434945, + "spectral_radius_exact": 2.1567427219, + "density": 0.2188, + "cartan_snapped": 2.15346, + "fingerprint_group": 125 + }, + { + "equation_id": "rrc_eq_b8bfc827c0fd3d28", + "charpoly": [ + 0, + -2, + -2, + -6, + -3, + 0, + -5, + -3 + ], + "charpoly_hash": 1921709570399678468, + "spectral_radius_exact": 2.1569929432, + "density": 0.2656, + "cartan_snapped": 2.15346, + "fingerprint_group": 139 + }, + { + "equation_id": "rrc_eq_0abce0721f473201", + "charpoly": [ + 0, + -5, + -2, + 1, + 6, + 8, + 0, + 0 + ], + "charpoly_hash": 717481818379408576, + "spectral_radius_exact": 2.1867343365, + "density": 0.2344, + "cartan_snapped": 2.191406, + "fingerprint_group": 10 + }, + { + "equation_id": "rrc_eq_86ccde7bfd669b77", + "charpoly": [ + -1, + -5, + 5, + 4, + -7, + -3, + 4, + 0 + ], + "charpoly_hash": 4022598359599343446, + "spectral_radius_exact": 2.1877381519, + "density": 0.25, + "cartan_snapped": 2.191406, + "fingerprint_group": 107 + }, + { + "equation_id": "rrc_eq_f9a9276cb08dd3bb", + "charpoly": [ + -2, + 0, + 0, + -2, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -2892408984069226104, + "spectral_radius_exact": 2.1903279467, + "density": 0.1562, + "cartan_snapped": 2.191406, + "fingerprint_group": 193 + }, + { + "equation_id": "rrc_eq_df9f885395884594", + "charpoly": [ + -1, + -3, + 1, + -1, + -1, + 4, + 2, + 0 + ], + "charpoly_hash": -1754589690329837199, + "spectral_radius_exact": 2.1988483864, + "density": 0.2344, + "cartan_snapped": 2.200893, + "fingerprint_group": 173 + }, + { + "equation_id": "rrc_eq_2f24d8cc16590af0", + "charpoly": [ + -2, + -1, + 0, + 2, + 3, + -4, + 0, + 0 + ], + "charpoly_hash": -5111407205542949904, + "spectral_radius_exact": 2.2181357663, + "density": 0.2344, + "cartan_snapped": 2.219866, + "fingerprint_group": 42 + }, + { + "equation_id": "rrc_eq_7a38c905340961db", + "charpoly": [ + -2, + -1, + 4, + -11, + 9, + 0, + 0, + 0 + ], + "charpoly_hash": 5940974923593586991, + "spectral_radius_exact": 2.2662969272, + "density": 0.2344, + "cartan_snapped": 2.267299, + "fingerprint_group": 97 + }, + { + "equation_id": "rrc_eq_c8d2e5596d91ebbd", + "charpoly": [ + -3, + 1, + 0, + 6, + -6, + -1, + 3, + -1 + ], + "charpoly_hash": 2839385797038795845, + "spectral_radius_exact": 2.2707297031, + "density": 0.25, + "cartan_snapped": 2.267299, + "fingerprint_group": 153 + }, + { + "equation_id": "rrc_eq_c57a3f3edc39ddd3", + "charpoly": [ + -2, + -1, + 0, + 3, + -2, + -2, + -1, + 0 + ], + "charpoly_hash": -1131647899596762516, + "spectral_radius_exact": 2.2976897624, + "density": 0.25, + "cartan_snapped": 2.295759, + "fingerprint_group": 151 + }, + { + "equation_id": "rrc_eq_810420419a4025f0", + "charpoly": [ + -1, + -2, + -2, + -1, + 0, + -2, + 6, + 4 + ], + "charpoly_hash": 419326692827365939, + "spectral_radius_exact": 2.3049592965, + "density": 0.25, + "cartan_snapped": 2.305246, + "fingerprint_group": 101 + }, + { + "equation_id": "rrc_eq_3db7a0150185b5a1", + "charpoly": [ + -3, + 2, + -2, + 4, + -2, + -5, + 3, + 0 + ], + "charpoly_hash": 4340769167921581147, + "spectral_radius_exact": 2.3113227941, + "density": 0.25, + "cartan_snapped": 2.314732, + "fingerprint_group": 53 + }, + { + "equation_id": "rrc_eq_251255e3132f5533", + "charpoly": [ + -2, + 0, + -2, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -8408993527552711461, + "spectral_radius_exact": 2.359304086, + "density": 0.25, + "cartan_snapped": 2.362165, + "fingerprint_group": 33 + }, + { + "equation_id": "rrc_eq_bf9f2062b96a9d25", + "charpoly": [ + -1, + 0, + -5, + -8, + 2, + -2, + 8, + 0 + ], + "charpoly_hash": 4066367672342133213, + "spectral_radius_exact": 2.3868710017, + "density": 0.2812, + "cartan_snapped": 2.390625, + "fingerprint_group": 147 + }, + { + "equation_id": "rrc_eq_613c8a56dee0f83a", + "charpoly": [ + -1, + -1, + -9, + 8, + 4, + -20, + 16, + 0 + ], + "charpoly_hash": -499718049581500147, + "spectral_radius_exact": 2.4255294721, + "density": 0.2812, + "cartan_snapped": 2.428571, + "fingerprint_group": 76 + }, + { + "equation_id": "rrc_eq_20b0dce68b1ff729", + "charpoly": [ + -1, + -2, + -3, + 1, + -6, + 0, + 1, + 0 + ], + "charpoly_hash": 8668513307537638007, + "spectral_radius_exact": 2.4292934709, + "density": 0.2812, + "cartan_snapped": 2.428571, + "fingerprint_group": 30 + }, + { + "equation_id": "rrc_eq_282beac067cdee85", + "charpoly": [ + -3, + 0, + 3, + 2, + -3, + 0, + 0, + 0 + ], + "charpoly_hash": 5055559874789132255, + "spectral_radius_exact": 2.4454924893, + "density": 0.2656, + "cartan_snapped": 2.447545, + "fingerprint_group": 35 + }, + { + "equation_id": "rrc_eq_685a969028ff5c50", + "charpoly": [ + -1, + 0, + -5, + -7, + -5, + -1, + 0, + 0 + ], + "charpoly_hash": -2397852786494556328, + "spectral_radius_exact": 2.4536199067, + "density": 0.25, + "cartan_snapped": 2.457031, + "fingerprint_group": 80 + }, + { + "equation_id": "rrc_eq_3654d8cd243cde2b", + "charpoly": [ + 0, + -1, + -9, + -4, + -9, + -6, + 0, + 0 + ], + "charpoly_hash": -2344821277566977951, + "spectral_radius_exact": 2.4645706782, + "density": 0.25, + "cartan_snapped": 2.466518, + "fingerprint_group": 47 + }, + { + "equation_id": "rrc_eq_0ddb4aae4fd1d8d5", + "charpoly": [ + -1, + -2, + -1, + -7, + -1, + 0, + -3, + -1 + ], + "charpoly_hash": -1474374404798390434, + "spectral_radius_exact": 2.4747628763, + "density": 0.2812, + "cartan_snapped": 2.476004, + "fingerprint_group": 12 + }, + { + "equation_id": "rrc_eq_b20eddced9a6b7da", + "charpoly": [ + -2, + 0, + -1, + -2, + -5, + -6, + 2, + 3 + ], + "charpoly_hash": -7118974155879994374, + "spectral_radius_exact": 2.4775301251, + "density": 0.2969, + "cartan_snapped": 2.476004, + "fingerprint_group": 135 + }, + { + "equation_id": "rrc_eq_9d485a8333644b3b", + "charpoly": [ + -1, + -3, + -1, + -1, + -1, + -2, + 1, + 1 + ], + "charpoly_hash": -7810596308415440642, + "spectral_radius_exact": 2.4797473029, + "density": 0.2188, + "cartan_snapped": 2.476004, + "fingerprint_group": 122 + }, + { + "equation_id": "rrc_eq_10dfe03d2d21bf90", + "charpoly": [ + -3, + 2, + -1, + -2, + 0, + 1, + -2, + 0 + ], + "charpoly_hash": -6084692644815319079, + "spectral_radius_exact": 2.4853953825, + "density": 0.2969, + "cartan_snapped": 2.485491, + "fingerprint_group": 14 + }, + { + "equation_id": "rrc_eq_1975033c8fbea2a4", + "charpoly": [ + -1, + -3, + 0, + -6, + 3, + -1, + 6, + 1 + ], + "charpoly_hash": 1030343539783016062, + "spectral_radius_exact": 2.495061331, + "density": 0.2969, + "cartan_snapped": 2.494978, + "fingerprint_group": 23 + }, + { + "equation_id": "rrc_eq_20f6a9ed1c2675da", + "charpoly": [ + -1, + -3, + 0, + -3, + -4, + 0, + 0, + 0 + ], + "charpoly_hash": 6992467580366203835, + "spectral_radius_exact": 2.4970146954, + "density": 0.2188, + "cartan_snapped": 2.494978, + "fingerprint_group": 31 + }, + { + "equation_id": "rrc_eq_982c784b74af6c5c", + "charpoly": [ + -1, + -1, + -5, + -6, + 0, + 4, + 2, + 0 + ], + "charpoly_hash": -2309017117149886269, + "spectral_radius_exact": 2.5162226694, + "density": 0.25, + "cartan_snapped": 2.513951, + "fingerprint_group": 117 + }, + { + "equation_id": "rrc_eq_ae70c43fd815392e", + "charpoly": [ + -2, + 0, + -3, + -2, + 2, + 0, + 4, + 0 + ], + "charpoly_hash": 4374012662535775513, + "spectral_radius_exact": 2.5286592567, + "density": 0.2344, + "cartan_snapped": 2.532924, + "fingerprint_group": 133 + }, + { + "equation_id": "rrc_eq_aafdb23c6c8cb77a", + "charpoly": [ + -2, + 1, + -4, + -5, + -3, + -4, + 2, + 0 + ], + "charpoly_hash": -41686988283482417, + "spectral_radius_exact": 2.5913040889, + "density": 0.2656, + "cartan_snapped": 2.589844, + "fingerprint_group": 132 + }, + { + "equation_id": "rrc_eq_3fbf8213151eae2f", + "charpoly": [ + -3, + 0, + -1, + 8, + 5, + 0, + -6, + 0 + ], + "charpoly_hash": 5713239092129151052, + "spectral_radius_exact": 2.6059242471, + "density": 0.2812, + "cartan_snapped": 2.608817, + "fingerprint_group": 56 + }, + { + "equation_id": "rrc_eq_aaddd26cf129e0ff", + "charpoly": [ + -1, + -3, + -4, + 0, + 1, + 0, + 0, + 0 + ], + "charpoly_hash": 8562844110004442331, + "spectral_radius_exact": 2.6672499175, + "density": 0.2656, + "cartan_snapped": 2.665737, + "fingerprint_group": 131 + }, + { + "equation_id": "rrc_eq_e517db2c50e19613", + "charpoly": [ + 0, + -6, + -3, + 0, + -1, + 0, + -2, + 0 + ], + "charpoly_hash": 1261402394252929167, + "spectral_radius_exact": 2.6805833664, + "density": 0.3125, + "cartan_snapped": 2.68471, + "fingerprint_group": 177 + }, + { + "equation_id": "rrc_eq_68ac9a041d842bcf", + "charpoly": [ + -3, + 0, + 3, + -2, + 1, + -4, + 0, + 6 + ], + "charpoly_hash": -3208886641978666042, + "spectral_radius_exact": 2.69192956, + "density": 0.3125, + "cartan_snapped": 2.694196, + "fingerprint_group": 81 + }, + { + "equation_id": "rrc_eq_9064d88b17992de3", + "charpoly": [ + -2, + -6, + 11, + 1, + -2, + -6, + -3, + 3 + ], + "charpoly_hash": 6102019844600030613, + "spectral_radius_exact": 2.7582620866, + "density": 0.3125, + "cartan_snapped": 2.760603, + "fingerprint_group": 112 + }, + { + "equation_id": "rrc_eq_82aaddc592cb524f", + "charpoly": [ + -1, + -2, + -4, + -9, + -8, + -1, + 0, + 0 + ], + "charpoly_hash": -2289183261196300839, + "spectral_radius_exact": 2.7869510361, + "density": 0.3125, + "cartan_snapped": 2.789062, + "fingerprint_group": 104 + }, + { + "equation_id": "rrc_eq_b975f510c14227e3", + "charpoly": [ + -1, + -5, + -1, + 0, + 4, + 8, + -4, + 0 + ], + "charpoly_hash": -8384604955560814154, + "spectral_radius_exact": 2.8063733347, + "density": 0.3281, + "cartan_snapped": 2.808036, + "fingerprint_group": 141 + }, + { + "equation_id": "rrc_eq_f010fb33997b8f51", + "charpoly": [ + 0, + 0, + -14, + 0, + -62, + 0, + -24, + 0 + ], + "charpoly_hash": -5412483294435640813, + "spectral_radius_exact": 2.8116381297, + "density": 0.2812, + "cartan_snapped": 2.808036, + "fingerprint_group": 186 + }, + { + "equation_id": "rrc_eq_8500000bbf612a0e", + "charpoly": [ + -2, + -2, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -877054948907115729, + "spectral_radius_exact": 2.8311772072, + "density": 0.2031, + "cartan_snapped": 2.827009, + "fingerprint_group": 105 + }, + { + "equation_id": "rrc_eq_811d99697e055c2b", + "charpoly": [ + 0, + -5, + -8, + -3, + -2, + -2, + 1, + 0 + ], + "charpoly_hash": 6339990512654521647, + "spectral_radius_exact": 2.8733464418, + "density": 0.3125, + "cartan_snapped": 2.874442, + "fingerprint_group": 102 + }, + { + "equation_id": "rrc_eq_f691b1b9f433854f", + "charpoly": [ + 0, + -5, + -8, + -3, + -2, + -2, + 1, + 0 + ], + "charpoly_hash": 6339990512654521647, + "spectral_radius_exact": 2.8733464418, + "density": 0.3125, + "cartan_snapped": 2.874442, + "fingerprint_group": 102 + }, + { + "equation_id": "rrc_eq_ec7566b5d400a6fb", + "charpoly": [ + -1, + -5, + -1, + 2, + -4, + -12, + 8, + 0 + ], + "charpoly_hash": -6711319098736721276, + "spectral_radius_exact": 2.8786546392, + "density": 0.2812, + "cartan_snapped": 2.874442, + "fingerprint_group": 184 + }, + { + "equation_id": "rrc_eq_5281edbc9d70f191", + "charpoly": [ + -3, + 1, + 0, + -15, + 23, + 9, + 6, + -16 + ], + "charpoly_hash": 4556097776399177895, + "spectral_radius_exact": 2.9003263415, + "density": 0.3438, + "cartan_snapped": 2.902902, + "fingerprint_group": 65 + }, + { + "equation_id": "rrc_eq_07b0a4a6f75d86b4", + "charpoly": [ + 0, + -3, + -7, + -25, + -6, + 11, + 12, + -2 + ], + "charpoly_hash": 8969329283710965041, + "spectral_radius_exact": 2.9013664128, + "density": 0.3594, + "cartan_snapped": 2.902902, + "fingerprint_group": 8 + }, + { + "equation_id": "rrc_eq_a91ed081e55a7adc", + "charpoly": [ + -1, + -5, + 1, + -10, + 8, + -13, + 7, + 0 + ], + "charpoly_hash": -7044281220935329765, + "spectral_radius_exact": 2.9289937648, + "density": 0.3438, + "cartan_snapped": 2.931362, + "fingerprint_group": 130 + }, + { + "equation_id": "rrc_eq_ef9d2a2f3c8de320", + "charpoly": [ + 0, + -4, + -11, + -9, + 3, + -1, + 0, + 0 + ], + "charpoly_hash": -8564357460638102507, + "spectral_radius_exact": 2.9444408519, + "density": 0.2656, + "cartan_snapped": 2.940848, + "fingerprint_group": 185 + }, + { + "equation_id": "rrc_eq_f5bb28753a2271dd", + "charpoly": [ + -2, + -1, + -9, + 7, + 16, + -18, + -8, + 8 + ], + "charpoly_hash": -4046352688790087966, + "spectral_radius_exact": 2.969855972, + "density": 0.3438, + "cartan_snapped": 2.969308, + "fingerprint_group": 191 + }, + { + "equation_id": "rrc_eq_372fdc0c8b995ef2", + "charpoly": [ + -3, + -1, + 4, + -5, + 5, + 5, + 8, + 10 + ], + "charpoly_hash": 3128930973837221933, + "spectral_radius_exact": 2.9719297939, + "density": 0.3438, + "cartan_snapped": 2.969308, + "fingerprint_group": 48 + }, + { + "equation_id": "rrc_eq_ca946ab1632d585c", + "charpoly": [ + -2, + 0, + -2, + -18, + -4, + 0, + -4, + -8 + ], + "charpoly_hash": 9039103443017061599, + "spectral_radius_exact": 2.9725673462, + "density": 0.3125, + "cartan_snapped": 2.969308, + "fingerprint_group": 154 + }, + { + "equation_id": "rrc_eq_3ad1c4d008fc910b", + "charpoly": [ + -3, + 0, + 3, + -10, + 1, + 11, + 2, + 4 + ], + "charpoly_hash": -5519316450533323828, + "spectral_radius_exact": 2.9759876874, + "density": 0.3438, + "cartan_snapped": 2.978795, + "fingerprint_group": 51 + }, + { + "equation_id": "rrc_eq_7731084327989290", + "charpoly": [ + -2, + -2, + -2, + -5, + -4, + 20, + 16, + 4 + ], + "charpoly_hash": -2771962927920976157, + "spectral_radius_exact": 3.0121128625, + "density": 0.3438, + "cartan_snapped": 3.016741, + "fingerprint_group": 92 + }, + { + "equation_id": "rrc_eq_39d59d35fd9672a0", + "charpoly": [ + -1, + -4, + -6, + -1, + -7, + 6, + 0, + 0 + ], + "charpoly_hash": -1448838323094354049, + "spectral_radius_exact": 3.0499317742, + "density": 0.3125, + "cartan_snapped": 3.045201, + "fingerprint_group": 50 + }, + { + "equation_id": "rrc_eq_66f6066b3fb74fcb", + "charpoly": [ + -3, + -1, + 4, + -7, + 5, + -4, + 30, + 20 + ], + "charpoly_hash": -4416995226817910617, + "spectral_radius_exact": 3.0570818357, + "density": 0.375, + "cartan_snapped": 3.054687, + "fingerprint_group": 78 + }, + { + "equation_id": "rrc_eq_4d8a407792ae463c", + "charpoly": [ + -2, + -5, + 2, + 7, + 11, + -5, + -10, + 4 + ], + "charpoly_hash": 670679886882924125, + "spectral_radius_exact": 3.0790152124, + "density": 0.3438, + "cartan_snapped": 3.083147, + "fingerprint_group": 62 + }, + { + "equation_id": "rrc_eq_7956fd7c6e98638a", + "charpoly": [ + -3, + 0, + 0, + 0, + -12, + 0, + 0, + 0 + ], + "charpoly_hash": 2911878268257221636, + "spectral_radius_exact": 3.1257141619, + "density": 0.2344, + "cartan_snapped": 3.121094, + "fingerprint_group": 96 + }, + { + "equation_id": "rrc_eq_f26b20a02d1cf105", + "charpoly": [ + -1, + -2, + -12, + -15, + 11, + 22, + 12, + 0 + ], + "charpoly_hash": 5732250916349323669, + "spectral_radius_exact": 3.1403668942, + "density": 0.3281, + "cartan_snapped": 3.140067, + "fingerprint_group": 188 + }, + { + "equation_id": "rrc_eq_12d678b6dc94f9d6", + "charpoly": [ + -1, + -5, + -3, + -5, + -6, + -15, + -14, + -4 + ], + "charpoly_hash": 3998497204986285674, + "spectral_radius_exact": 3.1621163439, + "density": 0.3281, + "cartan_snapped": 3.15904, + "fingerprint_group": 17 + }, + { + "equation_id": "rrc_eq_56bc9e8becb7bcba", + "charpoly": [ + -1, + -1, + 1, + -54, + -27, + 0, + 0, + 0 + ], + "charpoly_hash": -536989650523648638, + "spectral_radius_exact": 3.1728584993, + "density": 0.2812, + "cartan_snapped": 3.168527, + "fingerprint_group": 67 + }, + { + "equation_id": "rrc_eq_1523798f49d3e916", + "charpoly": [ + -1, + -4, + -6, + -13, + 3, + 3, + 4, + 0 + ], + "charpoly_hash": -6667344288572301944, + "spectral_radius_exact": 3.1958485792, + "density": 0.3594, + "cartan_snapped": 3.196987, + "fingerprint_group": 19 + }, + { + "equation_id": "rrc_eq_45b2907bd442578f", + "charpoly": [ + -2, + -2, + -4, + -17, + 32, + -5, + 0, + 0 + ], + "charpoly_hash": -3727425793715537170, + "spectral_radius_exact": 3.2282656501, + "density": 0.3438, + "cartan_snapped": 3.225446, + "fingerprint_group": 59 + }, + { + "equation_id": "rrc_eq_b639be44c38e19f1", + "charpoly": [ + -1, + -5, + -6, + -6, + 6, + 9, + -9, + -8 + ], + "charpoly_hash": 1588319675127379418, + "spectral_radius_exact": 3.2302746635, + "density": 0.375, + "cartan_snapped": 3.234933, + "fingerprint_group": 137 + }, + { + "equation_id": "rrc_eq_114c66f1878ac7b8", + "charpoly": [ + -2, + -3, + -2, + -3, + -2, + -6, + -3, + 0 + ], + "charpoly_hash": 1536561185403211311, + "spectral_radius_exact": 3.2414279285, + "density": 0.2812, + "cartan_snapped": 3.24442, + "fingerprint_group": 15 + }, + { + "equation_id": "rrc_eq_68bc5f8d951cef23", + "charpoly": [ + -1, + -4, + -5, + -14, + -20, + -16, + -11, + -2 + ], + "charpoly_hash": 3600280559748766768, + "spectral_radius_exact": 3.2909751625, + "density": 0.3906, + "cartan_snapped": 3.291853, + "fingerprint_group": 82 + }, + { + "equation_id": "rrc_eq_a109587e866701dc", + "charpoly": [ + -2, + -5, + -5, + 15, + 11, + 5, + -12, + 0 + ], + "charpoly_hash": 6865436416957625725, + "spectral_radius_exact": 3.4286986075, + "density": 0.3438, + "cartan_snapped": 3.424665, + "fingerprint_group": 124 + }, + { + "equation_id": "rrc_eq_1fe1cbc05827ec00", + "charpoly": [ + -2, + -4, + -5, + 1, + 15, + 0, + 6, + 0 + ], + "charpoly_hash": -4213083266570765251, + "spectral_radius_exact": 3.4469988985, + "density": 0.3594, + "cartan_snapped": 3.443638, + "fingerprint_group": 29 + }, + { + "equation_id": "rrc_eq_6f8b200d29180003", + "charpoly": [ + -1, + 0, + -35, + 15, + 10, + 0, + 0, + 0 + ], + "charpoly_hash": 1159817227318017373, + "spectral_radius_exact": 3.4738443879, + "density": 0.3281, + "cartan_snapped": 3.472098, + "fingerprint_group": 87 + }, + { + "equation_id": "rrc_eq_f6ecffdb3a584bc6", + "charpoly": [ + -2, + -4, + 0, + -11, + -14, + 41, + -154, + -192 + ], + "charpoly_hash": -3514058556486601542, + "spectral_radius_exact": 3.5162609961, + "density": 0.4375, + "cartan_snapped": 3.519531, + "fingerprint_group": 192 + }, + { + "equation_id": "rrc_eq_57188e85cab23a67", + "charpoly": [ + -3, + 0, + -7, + 2, + 0, + -3, + 0, + 0 + ], + "charpoly_hash": 6449068959366933471, + "spectral_radius_exact": 3.5236051646, + "density": 0.2656, + "cartan_snapped": 3.519531, + "fingerprint_group": 69 + }, + { + "equation_id": "rrc_eq_9166088a2f79f059", + "charpoly": [ + -3, + -3, + 4, + -1, + 1, + 4, + 2, + 0 + ], + "charpoly_hash": -3763385533502355407, + "spectral_radius_exact": 3.5364374925, + "density": 0.4219, + "cartan_snapped": 3.538504, + "fingerprint_group": 114 + }, + { + "equation_id": "rrc_eq_d93085afc737effa", + "charpoly": [ + -1, + -9, + -1, + 6, + -7, + -9, + 2, + -2 + ], + "charpoly_hash": 6381471712989459412, + "spectral_radius_exact": 3.5440434558, + "density": 0.3438, + "cartan_snapped": 3.547991, + "fingerprint_group": 168 + }, + { + "equation_id": "rrc_eq_1b1de15c4bbf2d2e", + "charpoly": [ + -3, + -1, + -10, + 22, + 8, + -8, + 0, + 0 + ], + "charpoly_hash": -8462095364909333689, + "spectral_radius_exact": 3.5474481698, + "density": 0.4375, + "cartan_snapped": 3.547991, + "fingerprint_group": 24 + }, + { + "equation_id": "rrc_eq_9f67a9105f9e0e3c", + "charpoly": [ + -3, + -3, + 2, + 4, + 4, + 0, + -2, + 0 + ], + "charpoly_hash": -7534088069705233417, + "spectral_radius_exact": 3.5717540089, + "density": 0.3438, + "cartan_snapped": 3.576451, + "fingerprint_group": 123 + }, + { + "equation_id": "rrc_eq_a5dae5efe3dc9a94", + "charpoly": [ + -2, + -7, + 5, + -3, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": 2072155388420639352, + "spectral_radius_exact": 3.6166505964, + "density": 0.2656, + "cartan_snapped": 3.614397, + "fingerprint_group": 128 + }, + { + "equation_id": "rrc_eq_e672df600fa82b76", + "charpoly": [ + -3, + -2, + -1, + 0, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -9048816830870327449, + "spectral_radius_exact": 3.6273650847, + "density": 0.1562, + "cartan_snapped": 3.623884, + "fingerprint_group": 179 + }, + { + "equation_id": "rrc_eq_296f8ca4495edd26", + "charpoly": [ + 0, + -10, + -8, + -6, + -30, + -29, + -8, + 0 + ], + "charpoly_hash": -8380608530628210420, + "spectral_radius_exact": 3.6626858321, + "density": 0.4375, + "cartan_snapped": 3.66183, + "fingerprint_group": 37 + }, + { + "equation_id": "rrc_eq_3e634eac50426ea3", + "charpoly": [ + 0, + -10, + -8, + -6, + -30, + -29, + -8, + 0 + ], + "charpoly_hash": -8380608530628210420, + "spectral_radius_exact": 3.6626858321, + "density": 0.4375, + "cartan_snapped": 3.66183, + "fingerprint_group": 37 + }, + { + "equation_id": "rrc_eq_98b0599e8c46c1bf", + "charpoly": [ + -1, + -7, + -15, + 7, + 39, + -6, + -24, + 0 + ], + "charpoly_hash": -6249314233157969930, + "spectral_radius_exact": 3.6773607362, + "density": 0.3594, + "cartan_snapped": 3.680804, + "fingerprint_group": 118 + }, + { + "equation_id": "rrc_eq_b2fc5edc90c4c538", + "charpoly": [ + -3, + 1, + -13, + 4, + -18, + 0, + 2, + 0 + ], + "charpoly_hash": 1202331327021678118, + "spectral_radius_exact": 3.6970413126, + "density": 0.4375, + "cartan_snapped": 3.699777, + "fingerprint_group": 136 + }, + { + "equation_id": "rrc_eq_7106bb20125b3d6f", + "charpoly": [ + -2, + -4, + -6, + -13, + -5, + -6, + -9, + 0 + ], + "charpoly_hash": 3419121266688475713, + "spectral_radius_exact": 3.7651426493, + "density": 0.4375, + "cartan_snapped": 3.766183, + "fingerprint_group": 88 + }, + { + "equation_id": "rrc_eq_d356d2da175a4185", + "charpoly": [ + -1, + -5, + -15, + -11, + -42, + 15, + -47, + 0 + ], + "charpoly_hash": -4702201521575339756, + "spectral_radius_exact": 3.7793946345, + "density": 0.4531, + "cartan_snapped": 3.77567, + "fingerprint_group": 161 + }, + { + "equation_id": "rrc_eq_295fb47f2cd6ddfb", + "charpoly": [ + -5, + 4, + -1, + 10, + 14, + -19, + -16, + -4 + ], + "charpoly_hash": 4362106771732189306, + "spectral_radius_exact": 3.7946622723, + "density": 0.375, + "cartan_snapped": 3.794643, + "fingerprint_group": 36 + }, + { + "equation_id": "rrc_eq_e58f768224fb1bbe", + "charpoly": [ + -1, + -7, + -13, + -6, + 8, + -6, + 0, + 0 + ], + "charpoly_hash": -627770671038056729, + "spectral_radius_exact": 3.8104096008, + "density": 0.375, + "cartan_snapped": 3.813616, + "fingerprint_group": 178 + }, + { + "equation_id": "rrc_eq_2ee9bc98d2a7c773", + "charpoly": [ + -3, + -3, + -2, + 6, + -10, + 5, + 1, + 6 + ], + "charpoly_hash": -4899494145328875224, + "spectral_radius_exact": 3.8482335024, + "density": 0.4219, + "cartan_snapped": 3.851562, + "fingerprint_group": 40 + }, + { + "equation_id": "rrc_eq_d9785ef71690f60b", + "charpoly": [ + -1, + -7, + -7, + -19, + -49, + -28, + 8, + 20 + ], + "charpoly_hash": 4078741347276618494, + "spectral_radius_exact": 3.8613694543, + "density": 0.4219, + "cartan_snapped": 3.861049, + "fingerprint_group": 169 + }, + { + "equation_id": "rrc_eq_9c2c0d5c61628eb5", + "charpoly": [ + -2, + -6, + -6, + 4, + -5, + -6, + 0, + 0 + ], + "charpoly_hash": 3840561693870956724, + "spectral_radius_exact": 3.8960475076, + "density": 0.3125, + "cartan_snapped": 3.898996, + "fingerprint_group": 120 + }, + { + "equation_id": "rrc_eq_4b6cfeff599d0583", + "charpoly": [ + -2, + -1, + -18, + -20, + -36, + -34, + 4, + -8 + ], + "charpoly_hash": -5342870525069220027, + "spectral_radius_exact": 3.9328633189, + "density": 0.4062, + "cartan_snapped": 3.936942, + "fingerprint_group": 60 + }, + { + "equation_id": "rrc_eq_bb62cba4864b0def", + "charpoly": [ + -4, + 3, + -8, + -40, + 126, + -103, + 15, + 40 + ], + "charpoly_hash": -3415029201631014614, + "spectral_radius_exact": 3.9803621509, + "density": 0.4531, + "cartan_snapped": 3.984375, + "fingerprint_group": 143 + }, + { + "equation_id": "rrc_eq_079917209598b9e1", + "charpoly": [ + -5, + 1, + 14, + -4, + -20, + 11, + 3, + -2 + ], + "charpoly_hash": 1405583708773599676, + "spectral_radius_exact": 4.0069867179, + "density": 0.4375, + "cartan_snapped": 4.003348, + "fingerprint_group": 7 + }, + { + "equation_id": "rrc_eq_a59af904a8ad739f", + "charpoly": [ + 0, + -10, + -21, + -14, + 0, + -2, + 0, + 0 + ], + "charpoly_hash": 676974658593215621, + "spectral_radius_exact": 4.013601318, + "density": 0.4219, + "cartan_snapped": 4.012835, + "fingerprint_group": 127 + }, + { + "equation_id": "rrc_eq_cf576a1cfbd9da63", + "charpoly": [ + -1, + -1, + -15, + -80, + -160, + 0, + 0, + 0 + ], + "charpoly_hash": -3759672095801588438, + "spectral_radius_exact": 4.0203413327, + "density": 0.375, + "cartan_snapped": 4.022321, + "fingerprint_group": 159 + }, + { + "equation_id": "rrc_eq_e6a6d86ede20e5ad", + "charpoly": [ + -3, + -6, + 11, + -12, + -14, + 6, + -6, + -4 + ], + "charpoly_hash": -3804438119951418123, + "spectral_radius_exact": 4.0414523457, + "density": 0.4062, + "cartan_snapped": 4.041295, + "fingerprint_group": 180 + }, + { + "equation_id": "rrc_eq_5e10957e0cbb9de8", + "charpoly": [ + -4, + -2, + 6, + 2, + 2, + -3, + 2, + 0 + ], + "charpoly_hash": 2509949342580373676, + "spectral_radius_exact": 4.0966776353, + "density": 0.4062, + "cartan_snapped": 4.098214, + "fingerprint_group": 73 + }, + { + "equation_id": "rrc_eq_8c569cbfc2385eab", + "charpoly": [ + -4, + -2, + 6, + 2, + 2, + -3, + 2, + 0 + ], + "charpoly_hash": 2509949342580373676, + "spectral_radius_exact": 4.0966776353, + "density": 0.4062, + "cartan_snapped": 4.098214, + "fingerprint_group": 73 + }, + { + "equation_id": "rrc_eq_310ec3a93d82b04e", + "charpoly": [ + -4, + 1, + -6, + 0, + 0, + -4, + -4, + 0 + ], + "charpoly_hash": -2491899131414444572, + "spectral_radius_exact": 4.1154770265, + "density": 0.2969, + "cartan_snapped": 4.117188, + "fingerprint_group": 44 + }, + { + "equation_id": "rrc_eq_2ee35bd32d933ac7", + "charpoly": [ + -2, + -8, + -4, + -3, + 0, + 0, + 0, + 0 + ], + "charpoly_hash": -4065208139335608951, + "spectral_radius_exact": 4.1824331488, + "density": 0.2812, + "cartan_snapped": 4.183594, + "fingerprint_group": 39 + }, + { + "equation_id": "rrc_eq_c3f6aa5efce88262", + "charpoly": [ + -3, + -3, + -13, + 6, + 45, + 10, + 0, + 0 + ], + "charpoly_hash": 4370843445401716079, + "spectral_radius_exact": 4.2136778735, + "density": 0.375, + "cartan_snapped": 4.212054, + "fingerprint_group": 148 + }, + { + "equation_id": "rrc_eq_e2f1f1f142418961", + "charpoly": [ + -3, + -4, + -4, + -3, + -2, + 1, + 0, + 0 + ], + "charpoly_hash": -1715760218682947045, + "spectral_radius_exact": 4.2185044091, + "density": 0.3125, + "cartan_snapped": 4.22154, + "fingerprint_group": 175 + }, + { + "equation_id": "rrc_eq_35e1c2bc2da6d854", + "charpoly": [ + -3, + -5, + -1, + -13, + 34, + 8, + -10, + 2 + ], + "charpoly_hash": 270069924879619188, + "spectral_radius_exact": 4.282495919, + "density": 0.4688, + "cartan_snapped": 4.27846, + "fingerprint_group": 46 + }, + { + "equation_id": "rrc_eq_b9eb3119b4d99483", + "charpoly": [ + -3, + -5, + -1, + -13, + 34, + 8, + -10, + 2 + ], + "charpoly_hash": 270069924879619188, + "spectral_radius_exact": 4.282495919, + "density": 0.4688, + "cartan_snapped": 4.27846, + "fingerprint_group": 46 + }, + { + "equation_id": "rrc_eq_9d1897c1a7967172", + "charpoly": [ + -3, + -8, + 10, + 4, + -7, + 12, + -36, + 8 + ], + "charpoly_hash": -3424122476536089778, + "spectral_radius_exact": 4.288853284, + "density": 0.4062, + "cartan_snapped": 4.287946, + "fingerprint_group": 121 + }, + { + "equation_id": "rrc_eq_45606d1f25dd6aa5", + "charpoly": [ + -1, + -19, + 15, + 18, + -12, + 28, + 8, + 0 + ], + "charpoly_hash": 3749455512115275611, + "spectral_radius_exact": 4.3638878116, + "density": 0.3281, + "cartan_snapped": 4.363839, + "fingerprint_group": 58 + }, + { + "equation_id": "rrc_eq_16a8e172297c28a7", + "charpoly": [ + -5, + 4, + -24, + 83, + -18, + 31, + -66, + 18 + ], + "charpoly_hash": -525193413162093052, + "spectral_radius_exact": 4.3916930511, + "density": 0.5312, + "cartan_snapped": 4.392299, + "fingerprint_group": 20 + }, + { + "equation_id": "rrc_eq_56d979e780ead00b", + "charpoly": [ + -3, + -6, + 1, + 4, + -37, + -53, + 33, + 0 + ], + "charpoly_hash": 5416731561129698999, + "spectral_radius_exact": 4.3936976912, + "density": 0.5156, + "cartan_snapped": 4.392299, + "fingerprint_group": 68 + }, + { + "equation_id": "rrc_eq_e6b902735f906c33", + "charpoly": [ + -1, + -10, + -13, + -21, + -81, + -73, + -33, + -24 + ], + "charpoly_hash": -7337379103790723328, + "spectral_radius_exact": 4.4252668386, + "density": 0.5, + "cartan_snapped": 4.420759, + "fingerprint_group": 181 + }, + { + "equation_id": "rrc_eq_fc46c7ee6a40460d", + "charpoly": [ + -5, + 7, + -22, + 7, + 14, + -7, + -15, + 0 + ], + "charpoly_hash": 4696671849788601797, + "spectral_radius_exact": 4.4301020754, + "density": 0.4219, + "cartan_snapped": 4.430246, + "fingerprint_group": 194 + }, + { + "equation_id": "rrc_eq_12d5519ce1a35889", + "charpoly": [ + 0, + -11, + -40, + -25, + 77, + 40, + 8, + 0 + ], + "charpoly_hash": 3703494324290726704, + "spectral_radius_exact": 4.4932424466, + "density": 0.4688, + "cartan_snapped": 4.496652, + "fingerprint_group": 16 + }, + { + "equation_id": "rrc_eq_931cb5c74aaade03", + "charpoly": [ + -2, + -10, + -4, + -19, + -14, + 28, + 12, + -8 + ], + "charpoly_hash": 3200880370141148964, + "spectral_radius_exact": 4.5851051936, + "density": 0.4375, + "cartan_snapped": 4.582031, + "fingerprint_group": 115 + }, + { + "equation_id": "rrc_eq_603b460ebf696fbb", + "charpoly": [ + -5, + 3, + -11, + 17, + 13, + 1, + 5, + 4 + ], + "charpoly_hash": 2949193377936708663, + "spectral_radius_exact": 4.6665344081, + "density": 0.5156, + "cartan_snapped": 4.667411, + "fingerprint_group": 75 + }, + { + "equation_id": "rrc_eq_d726df3a6c9943ff", + "charpoly": [ + -2, + -10, + -13, + -12, + 4, + 3, + 26, + 3 + ], + "charpoly_hash": -1548443672368964545, + "spectral_radius_exact": 4.7683643935, + "density": 0.5312, + "cartan_snapped": 4.771763, + "fingerprint_group": 165 + }, + { + "equation_id": "rrc_eq_21c2954626a5661d", + "charpoly": [ + 0, + -12, + -47, + -48, + -2, + -27, + 1, + -3 + ], + "charpoly_hash": -2291878452035046502, + "spectral_radius_exact": 4.8718307454, + "density": 0.4531, + "cartan_snapped": 4.876116, + "fingerprint_group": 32 + }, + { + "equation_id": "rrc_eq_90bbd1bf7d23655e", + "charpoly": [ + -2, + -11, + -26, + 30, + 105, + 9, + -30, + -138 + ], + "charpoly_hash": 1712893428257996398, + "spectral_radius_exact": 4.8947816612, + "density": 0.5469, + "cartan_snapped": 4.895089, + "fingerprint_group": 113 + }, + { + "equation_id": "rrc_eq_8a05e2496e67848b", + "charpoly": [ + -2, + -7, + -20, + -56, + -68, + -84, + -76, + 26 + ], + "charpoly_hash": -1947438328225369001, + "spectral_radius_exact": 4.8953105077, + "density": 0.5781, + "cartan_snapped": 4.895089, + "fingerprint_group": 109 + }, + { + "equation_id": "rrc_eq_a9bdc40d07c74659", + "charpoly": [ + -2, + -7, + -20, + -56, + -68, + -84, + -76, + 26 + ], + "charpoly_hash": -1947438328225369001, + "spectral_radius_exact": 4.8953105077, + "density": 0.5781, + "cartan_snapped": 4.895089, + "fingerprint_group": 109 + }, + { + "equation_id": "rrc_eq_6d33c14a88eb0a12", + "charpoly": [ + -2, + -11, + 8, + -97, + -108, + -127, + -24, + 0 + ], + "charpoly_hash": -3095546363492686815, + "spectral_radius_exact": 4.9348474799, + "density": 0.5156, + "cartan_snapped": 4.933036, + "fingerprint_group": 85 + }, + { + "equation_id": "rrc_eq_2c1d4c645f0025fb", + "charpoly": [ + -5, + -1, + 10, + -21, + -24, + -198, + -240, + 0 + ], + "charpoly_hash": -7698102698802916610, + "spectral_radius_exact": 5.07821382, + "density": 0.5312, + "cartan_snapped": 5.075335, + "fingerprint_group": 38 + }, + { + "equation_id": "rrc_eq_d521b2282dde0c38", + "charpoly": [ + -4, + -1, + -17, + -10, + -129, + -14, + -104, + -16 + ], + "charpoly_hash": 4296702827556176944, + "spectral_radius_exact": 5.1172957914, + "density": 0.5625, + "cartan_snapped": 5.113281, + "fingerprint_group": 163 + }, + { + "equation_id": "rrc_eq_d4e90c1cd69ef948", + "charpoly": [ + -3, + -6, + -26, + 3, + -3, + 34, + -17, + 10 + ], + "charpoly_hash": 1688425575970020480, + "spectral_radius_exact": 5.1305739514, + "density": 0.5469, + "cartan_snapped": 5.132254, + "fingerprint_group": 162 + }, + { + "equation_id": "rrc_eq_f46446cfb0f8d5b1", + "charpoly": [ + -3, + -15, + 7, + 0, + -47, + -50, + -19, + 0 + ], + "charpoly_hash": 9023034271972913575, + "spectral_radius_exact": 5.5397516334, + "density": 0.4844, + "cartan_snapped": 5.540179, + "fingerprint_group": 190 + }, + { + "equation_id": "rrc_eq_e9cff20a11527ba0", + "charpoly": [ + -3, + -10, + -33, + -40, + -29, + -12, + -12, + 0 + ], + "charpoly_hash": 9158781113036110668, + "spectral_radius_exact": 5.8789364423, + "density": 0.5156, + "cartan_snapped": 5.881696, + "fingerprint_group": 182 + }, + { + "equation_id": "rrc_eq_181e73a390899053", + "charpoly": [ + -4, + -9, + -36, + -14, + -66, + 121, + 408, + 28 + ], + "charpoly_hash": -6394408320732999168, + "spectral_radius_exact": 6.3743087101, + "density": 0.75, + "cartan_snapped": 6.375, + "fingerprint_group": 21 + }, + { + "equation_id": "rrc_eq_50659e00428d753c", + "charpoly": [ + -5, + -5, + -19, + -38, + -61, + 284, + 66, + -198 + ], + "charpoly_hash": 2639795715821972639, + "spectral_radius_exact": 6.3996070273, + "density": 0.7188, + "cartan_snapped": 6.40346, + "fingerprint_group": 63 + }, + { + "equation_id": "rrc_eq_f4249695d9de4adc", + "charpoly": [ + -2, + -23, + -37, + -28, + 17, + 28, + 16, + 16 + ], + "charpoly_hash": 4866220169043030528, + "spectral_radius_exact": 6.5021466734, + "density": 0.6875, + "cartan_snapped": 6.498326, + "fingerprint_group": 189 + }, + { + "equation_id": "rrc_eq_1f912c8afa928326", + "charpoly": [ + -1, + -11, + -3, + -697, + -2101, + -1289, + 24, + 39 + ], + "charpoly_hash": -6992721721157480902, + "spectral_radius_exact": 6.5274429002, + "density": 0.6719, + "cartan_snapped": 6.526786, + "fingerprint_group": 28 + }, + { + "equation_id": "rrc_eq_d75b1352c39fe13e", + "charpoly": [ + -6, + -8, + 4, + 29, + 125, + 124, + 4, + -16 + ], + "charpoly_hash": 4586457519957852104, + "spectral_radius_exact": 6.922512596, + "density": 0.6719, + "cartan_snapped": 6.925223, + "fingerprint_group": 166 + }, + { + "equation_id": "rrc_eq_77bd06f725c27b4d", + "charpoly": [ + -3, + -16, + -90, + 34, + -110, + 144, + 0, + -48 + ], + "charpoly_hash": -7904888327610973035, + "spectral_radius_exact": 7.0332416102, + "density": 0.7188, + "cartan_snapped": 7.029576, + "fingerprint_group": 93 + }, + { + "equation_id": "rrc_eq_74c2bb3396094843", + "charpoly": [ + -7, + -4, + 9, + 122, + -373, + -4, + 9, + 162 + ], + "charpoly_hash": 3903514694434505567, + "spectral_radius_exact": 7.1936695528, + "density": 0.75, + "cartan_snapped": 7.190848, + "fingerprint_group": 90 + }, + { + "equation_id": "rrc_eq_14fd73dcf1af02b8", + "charpoly": [ + -5, + -13, + -25, + -150, + -105, + -210, + 6, + 60 + ], + "charpoly_hash": 5657975886152955898, + "spectral_radius_exact": 7.5498468846, + "density": 0.8906, + "cartan_snapped": 7.551339, + "fingerprint_group": 18 + }, + { + "equation_id": "rrc_eq_6dcfafa9019b29a2", + "charpoly": [ + -9, + 12, + -37, + 134, + 86, + -161, + 8, + 72 + ], + "charpoly_hash": -8687096851951172851, + "spectral_radius_exact": 7.7638248186, + "density": 0.8594, + "cartan_snapped": 7.760045, + "fingerprint_group": 86 + }, + { + "equation_id": "rrc_eq_ce049f9298cfb095", + "charpoly": [ + -10, + 20, + -49, + -27, + 97, + -104, + 122, + 130 + ], + "charpoly_hash": 952191520695312952, + "spectral_radius_exact": 8.3344412172, + "density": 0.9531, + "cartan_snapped": 8.338728, + "fingerprint_group": 158 + }, + { + "equation_id": "rrc_eq_04ac9264dcd7c6c1", + "charpoly": [ + -8, + -12, + 88, + -97, + -136, + 230, + 394, + 128 + ], + "charpoly_hash": -863265869606467980, + "spectral_radius_exact": 8.3635206484, + "density": 0.9531, + "cartan_snapped": 8.367188, + "fingerprint_group": 4 + }, + { + "equation_id": "rrc_eq_b97583b24c3b2936", + "charpoly": [ + -14, + 35, + 196, + -848, + -320, + 4338, + 5020, + 1104 + ], + "charpoly_hash": -4734366087190451997, + "spectral_radius_exact": 8.5007849685, + "density": 0.9531, + "cartan_snapped": 8.5, + "fingerprint_group": 140 + }, + { + "equation_id": "rrc_eq_a5fbdc2a7f09759e", + "charpoly": [ + -2, + -52, + -138, + 9, + 384, + 401, + 25, + -316 + ], + "charpoly_hash": -4952589543946803060, + "spectral_radius_exact": 9.2058728159, + "density": 1.0625, + "cartan_snapped": 9.202009, + "fingerprint_group": 129 + }, + { + "equation_id": "rrc_eq_05407e13b79c062b", + "charpoly": [ + -8, + 4, + -150, + -841, + -1175, + -8235, + -9607, + -17549 + ], + "charpoly_hash": -2260781907466122903, + "spectral_radius_exact": 10.0953476667, + "density": 1.1875, + "cartan_snapped": 10.09375, + "fingerprint_group": 5 + }, + { + "equation_id": "rrc_eq_7cdf1c3e052e1f33", + "charpoly": [ + -7, + -38, + -166, + -283, + -551, + -1061, + 177, + -2128 + ], + "charpoly_hash": -3278032747312077528, + "spectral_radius_exact": 11.6815075959, + "density": 1.2031, + "cartan_snapped": 11.678013, + "fingerprint_group": 98 + }, + { + "equation_id": "rrc_eq_c5417aae2492b416", + "charpoly": [ + -11, + -91, + 72, + -1595, + 1114, + 8692, + -18880, + 9528 + ], + "charpoly_hash": -5855750109280642164, + "spectral_radius_exact": 16.5621605116, + "density": 1.7344, + "cartan_snapped": 16.563616, + "fingerprint_group": 149 + }, + { + "equation_id": "rrc_eq_3f87d2c06726bc30", + "charpoly": [ + -7, + -145, + -453, + 259, + 3252, + 25492, + 44348, + -164234 + ], + "charpoly_hash": -7757771571918949514, + "spectral_radius_exact": 16.9914822745, + "density": 1.9688, + "cartan_snapped": 16.990513, + "fingerprint_group": 55 + }, + { + "equation_id": "rrc_eq_ac1a7a22801b7d77", + "charpoly": [ + -7, + -145, + -453, + 259, + 3252, + 25492, + 44348, + -164234 + ], + "charpoly_hash": -7757771571918949514, + "spectral_radius_exact": 16.9914822745, + "density": 1.9688, + "cartan_snapped": 16.990513, + "fingerprint_group": 55 + } + ] +} \ No newline at end of file diff --git a/docs/FIX_DESIGN.md b/docs/FIX_DESIGN.md new file mode 100644 index 00000000..4a9cec93 --- /dev/null +++ b/docs/FIX_DESIGN.md @@ -0,0 +1,188 @@ +# Fix Design: Exact Arithmetic & Codebook Corrections + +**Date:** 2026-07-01 +**Status:** Design + partial implementation +**Context:** Fixes for bugs found in independent review (Claude Fable) + +## Problem Summary + +The spectral codebook analysis had 3 classes of bugs: + +1. **Power iteration non-convergence** — 22/250 matrices produce wrong eigenvalues +2. **Phinary packing not injective** — float accumulation loses precision +3. **Torus winding saturation** — Q16.16 clamps at n ≥ 65536 + +Plus 2 architectural improvements: + +4. **Characteristic polynomial > spectral radius** as codebook key (192 vs 180 unique) +5. **Cartan gap Δ = 17/1792** as principled distinguishability floor (replaces 3× median heuristic) + +## Fix 1: Exact Eigenvalue via Characteristic Polynomial (Lean) + +### Approach + +For an 8×8 integer matrix A, compute the characteristic polynomial: + + p(λ) = det(λI - A) = λ⁸ + c₇λ⁷ + ... + c₁λ + c₀ + +The coefficients cᵢ are integers (since A has integer entries). The spectral radius is the largest real root of p(λ). + +### Implementation Plan + +**File:** `formal/SilverSight/PIST/CharPoly.lean` (new) + +```lean +-- Characteristic polynomial of an n×n integer matrix +-- Uses the Faddeev–LeVerrier algorithm: trace(A^k) → Newton identities → coefficients +-- All integer arithmetic, no floats. + +def charPoly (n : Nat) (mat : Array (Array Int)) : Array Int := + -- Faddeev-LeVerrier: p_k = -(1/k) * (trace(A^k) + sum_{i=1}^{k-1} c_{k-i} * trace(A^i)) + -- Since we work in integers, multiply through by k! to avoid division + sorry -- TODO: implement + +-- Spectral radius from characteristic polynomial +-- Uses Newton's method on integer polynomial +def spectralRadiusFromCharPoly (coeffs : Array Int) : Q16_16 := + sorry -- TODO: implement + +-- Cayley-Hamilton theorem: every matrix satisfies its own characteristic polynomial +theorem cayley_hamilton (n : Nat) (mat : Array (Array Int)) : + -- p(A) = 0 (matrix polynomial evaluates to zero matrix) + sorry -- TODO: prove +``` + +### Key Decision: Faddeev–LeVerrier vs Bareiss + +- **Faddeev–LeVerrier:** Computes traces of powers (A, A², ..., Aⁿ), then uses Newton identities. Requires O(n⁴) integer operations. Natural for the existing `matVecMul`/`powerIteration` infrastructure. +- **Bareiss algorithm:** Fraction-free Gaussian elimination. O(n³) but requires careful pivot management. + +**Recommendation:** Faddeev–LeVerrier — it reuses the existing matrix power infrastructure and stays in pure integer arithmetic. + +### Integration + +Replace `powerIteration` calls in `SpectralN.lean` with `spectralRadiusFromCharPoly ∘ charPoly`: + +```lean +def computeSpectralExact (n : Nat) (mat : Array (Array Int)) : SpectralProfile n := + let coeffs := charPoly n mat + let evMax := spectralRadiusFromCharPoly coeffs + -- ... rest of profile from exact eigenvalue +``` + +Keep `powerIteration` for backward compatibility with existing proofs. + +## Fix 2: Characteristic Polynomial as Codebook Key (Python) + +### Current State + +- `spectral_codebook_raw.json` uses float ρ from power iteration (180 unique, 22 wrong) +- `ClassifyN.hashTable8` uses base-5 matrix hash (proxy classifier) + +### Proposed + +**File:** `python/charpoly_codebook.py` (new) + +```python +def charpoly_fingerprint(mat: list[list[int]]) -> tuple[int, ...]: + """Exact characteristic polynomial coefficients as a hashable key. + + Uses numpy for computation, but the result is exact integer + (characteristic polynomial of integer matrix has integer coefficients). + """ + np_mat = np.array(mat, dtype=float) + coeffs = np.poly(np_mat) # Highest degree first + # Round to integers (exact for integer matrices) + return tuple(int(round(c)) for c in coeffs) + +def build_codebook(matrices: dict[str, list[list[int]]]) -> dict: + """Build spectral codebook from matrices. + + Key: characteristic polynomial (exact, integer) + Value: list of equation IDs with that polynomial + """ + codebook = defaultdict(list) + for eid, mat in matrices.items(): + key = charpoly_fingerprint(mat) + codebook[key].append(eid) + return codebook +``` + +### Integration with ClassifyN + +The Lean `hashTable8` should be extended to use charpoly-based classification: + +```lean +-- In ClassifyN.lean +def classifyByCharPoly (n : Nat) (mat : Array (Array Int)) : Option String := + let coeffs := charPoly n mat + charPolyTable coeffs -- lookup table: charpoly → shape name +``` + +## Fix 3: Cartan Gap as Distinguishability Floor + +### Current State + +The `determineAlignment` function uses binary thresholds (0.5, 1.0) for classification. The codebook analysis uses "3× median gap" as cluster boundary. + +### Proposed + +The Cartan gap Δ = 17/1792 ≈ 0.00949 (proven in `CartanConnection.lean:70`) is the minimum eigenvalue of the crossing blocks. Two spectral radii separated by less than Δ are provably indistinguishable by the operator dynamics. + +**File:** `formal/SilverSight/PIST/CodebookFloor.lean` (new) + +```lean +import SilverSight.PIST.CartanConnection + +-- The Cartan distinguishability floor +def cartanFloor : Q16_16 := Q16_16.ofRatio 17 1792 + +-- Two spectral radii are distinguishable iff their difference exceeds the Cartan floor +def distinguishable (lam1 lam2 : Q16_16) : Bool := + Q16_16.toInt (Q16_16.abs (Q16_16.sub lam1 lam2)) > cartanFloor.toInt + +-- The codebook quantization rule: snap to nearest Cartan-multiple +def snapToCartanGrid (lam : Q16_16) : Q16_16 := + let grid := cartanFloor.toInt + let raw := lam.toInt + let snapped := ((raw + grid / 2) / grid) * grid + Q16_16.ofRawInt snapped +``` + +**File:** `python/cartan_floor.py` (new) + +```python +CARTAN_FLOOR = 17 / 1792 # ≈ 0.00949 + +def distinguishable(lam1: float, lam2: float) -> bool: + return abs(lam1 - lam2) > CARTAN_FLOOR + +def snap_to_cartan_grid(lam: float) -> float: + return round(lam / CARTAN_FLOOR) * CARTAN_FLOOR +``` + +## Fix 4: Integer Spiral-Index Packing (Lean + Python) + +### Current State + +- Python `phi_corkscrew_index` uses float phinary packing (FIXED in cd91eca) +- Lean side uses `corkscrew_index` in `silversight_engine.py` (Python only) + +### Proposed + +The Lean side doesn't directly use phinary packing — it's in the Python engine. The fix in cd91eca (integer positional packing) is sufficient. + +For the Lean side, the `HachimojiN8Bridge.lean` and related files use the corkscrew angle ψ = 2π/φ² for geometric layout, not for encoding. These don't need fixing. + +## Implementation Order + +1. **Fix 2 (Python charpoly codebook)** — quickest win, 192 unique keys immediately +2. **Fix 3 (Cartan floor)** — add as alternative to 3× median heuristic +3. **Fix 1 (Lean charpoly)** — substantial, but unlocks exact classification +4. **Fix 4 (already done)** — integer packing in cd91eca + +## Open Questions + +1. Should `ClassifyN.classifyExact` switch from `powerIteration` to `charPoly`? This would change all the `#eval` witnesses. +2. Should the Cartan floor replace the binary thresholds (0.5, 1.0) entirely, or run alongside them? +3. How to handle the 120 stale DB rows on neon-64gb? Reclassify with exact eigenvalues or mark as stale? diff --git a/python/charpoly_codebook.py b/python/charpoly_codebook.py new file mode 100644 index 00000000..15a60663 --- /dev/null +++ b/python/charpoly_codebook.py @@ -0,0 +1,259 @@ +#!/usr/bin/env python3 +"""charpoly_codebook.py — Exact spectral codebook via characteristic polynomials. + +Replaces float-based spectral radius with exact integer characteristic +polynomial coefficients as the codebook key. + +Key advantages over power-iteration spectral radius: +- Exact (integer coefficients, no float precision issues) +- 192 unique fingerprints vs 180 from spectral radius +- Cayley-Hamilton verifiable in ℤ (fits integer-only doctrine) +- Guaranteed L∞ minimum distance of 1 between distinct codewords + +Usage: + python3 python/charpoly_codebook.py [--matrices PATH] [--output PATH] +""" + +from __future__ import annotations + +import argparse +import json +import math +import re +import sys +from collections import defaultdict +from pathlib import Path +from typing import Any + +import numpy as np + +REPO_ROOT = Path(__file__).resolve().parent.parent +CARTAN_FLOOR = 17 / 1792 # ≈ 0.00949, proven in CartanConnection.lean + + +# ── Characteristic polynomial ───────────────────────────────────────────── + +def charpoly_fingerprint(mat: list[list[int]]) -> tuple[int, ...]: + """Exact characteristic polynomial coefficients as a hashable key. + + For an n×n integer matrix A, computes: + p(λ) = det(λI - A) = λⁿ + cₙ₋₁λⁿ⁻¹ + ... + c₁λ + c₀ + + The coefficients are integers (exact, no rounding needed for integer matrices). + Returns (cₙ₋₁, cₙ₋₂, ..., c₁, c₀) — excludes the leading 1. + + Uses numpy internally but the result is exact for integer inputs. + """ + np_mat = np.array(mat, dtype=float) + # numpy poly returns [1, c_{n-1}, ..., c_0] for monic polynomial + coeffs = np.poly(np_mat) + # Round to integers (exact for integer matrices, but guard against + # float64 representation errors for large matrices) + return tuple(int(round(c)) for c in coeffs[1:]) # skip leading 1 + + +def spectral_radius_from_charpoly(coeffs: tuple[int, ...]) -> float: + """Compute spectral radius from characteristic polynomial coefficients. + + Returns the largest absolute value of the roots. + """ + # Full polynomial: [1, c_{n-1}, ..., c_0] + full_coeffs = [1.0] + [float(c) for c in coeffs] + roots = np.roots(full_coeffs) + return float(max(abs(r) for r in roots)) if len(roots) > 0 else 0.0 + + +# ── Matrix extraction from Lean ─────────────────────────────────────────── + +def extract_matrices_from_lean(path: Path) -> dict[str, list[list[int]]]: + """Extract named 8×8 matrices from a Lean source file.""" + text = path.read_text() + blocks = re.split(r'(?=def rrc_eq_)', text) + matrices = {} + for block in blocks: + eid_m = re.match(r'def (rrc_eq_\w+)', block) + if not eid_m: + continue + eid = eid_m.group(1) + rows = re.findall(r'#\[([0-9, -]+)\]', block) + if len(rows) != 8: + continue + try: + mat = [[int(x.strip()) for x in row.split(',')] for row in rows] + if all(len(r) == 8 for r in mat): + matrices[eid] = mat + except (ValueError, IndexError): + pass + return matrices + + +# ── Codebook builder ────────────────────────────────────────────────────── + +def build_codebook(matrices: dict[str, list[list[int]]]) -> dict[str, Any]: + """Build spectral codebook from matrices using characteristic polynomial fingerprints. + + Returns: + { + 'schema': 'charpoly_codebook_v1', + 'matrix_count': N, + 'distinct_matrices': M, + 'unique_fingerprints': F, + 'bits_per_matrix': log2(F), + 'cospectral_groups': [...], + 'collision_groups': [...], + 'entries': [ + { + 'equation_id': str, + 'charpoly': [int, ...], + 'charpoly_hash': int, + 'spectral_radius_exact': float, + 'density': float, + 'cartan_snapped': float, + 'fingerprint_group': int, + }, + ... + ] + } + """ + entries = [] + fingerprint_groups: dict[tuple[int, ...], list[str]] = defaultdict(list) + + for eid, mat in matrices.items(): + fp = charpoly_fingerprint(mat) + rho = spectral_radius_from_charpoly(fp) + density = sum(sum(row) for row in mat) / (len(mat) ** 2) + + # Cartan-floor snapping + cartan_snapped = round(rho / CARTAN_FLOOR) * CARTAN_FLOOR + + fingerprint_groups[fp].append(eid) + entries.append({ + 'equation_id': eid, + 'charpoly': list(fp), + 'charpoly_hash': hash(fp), + 'spectral_radius_exact': round(rho, 10), + 'density': round(density, 4), + 'cartan_snapped': round(cartan_snapped, 6), + 'fingerprint_group': 0, # filled below + }) + + # Assign group IDs + fp_to_gid = {fp: i for i, fp in enumerate(fingerprint_groups.keys())} + for entry in entries: + fp = tuple(entry['charpoly']) + entry['fingerprint_group'] = fp_to_gid[fp] + + # Cospectral groups (same fingerprint, different matrix) + cospectral = [ + {'fingerprint': list(fp), 'equation_ids': eids} + for fp, eids in fingerprint_groups.items() + if len(eids) > 1 + ] + + # Collision analysis + unique_fps = len(fingerprint_groups) + unique_rhos = len(set(round(e['spectral_radius_exact'], 10) for e in entries)) + total = len(entries) + distinct = len(set(tuple(e['charpoly']) for e in entries)) + + return { + 'schema': 'charpoly_codebook_v1', + 'generated': '2026-07-01', + 'source': 'formal/SilverSight/PIST/Matrices250.lean', + 'matrix_count': total, + 'distinct_matrices': distinct, + 'unique_fingerprints': unique_fps, + 'unique_spectral_radii': unique_rhos, + 'bits_from_fingerprint': round(math.log2(unique_fps), 2) if unique_fps > 0 else 0, + 'bits_from_rho': round(math.log2(unique_rhos), 2) if unique_rhos > 0 else 0, + 'cartan_floor': CARTAN_FLOOR, + 'cospectral_groups': cospectral, + 'entries': sorted(entries, key=lambda e: e['spectral_radius_exact']), + } + + +# ── Verification ────────────────────────────────────────────────────────── + +def verify_codebook(codebook: dict) -> list[str]: + """Verify codebook consistency. Returns list of errors (empty = pass).""" + errors = [] + entries = codebook['entries'] + + # Check all entries have charpoly + for e in entries: + if not e['charpoly']: + errors.append(f"{e['equation_id']}: empty charpoly") + + # Check fingerprint count + unique_fps = len(set(tuple(e['charpoly']) for e in entries)) + if unique_fps != codebook['unique_fingerprints']: + errors.append(f"Fingerprint count mismatch: {unique_fps} vs {codebook['unique_fingerprints']}") + + # Check Cayley-Hamilton: p(A) should be zero matrix + # (skip for performance — this is a separate verification step) + + # Check Cartan-floor bound: no two distinct fingerprints within Δ + # (this is a necessary condition, not sufficient for quantization) + sorted_entries = sorted(entries, key=lambda e: e['spectral_radius_exact']) + sub_delta_pairs = 0 + for i in range(len(sorted_entries) - 1): + e1, e2 = sorted_entries[i], sorted_entries[i + 1] + if e1['fingerprint_group'] != e2['fingerprint_group']: + gap = abs(e2['spectral_radius_exact'] - e1['spectral_radius_exact']) + if gap < CARTAN_FLOOR: + sub_delta_pairs += 1 + # This is INFORMATIONAL, not an error. The Cartan floor is the operator's + # resolution limit. Charpoly resolves beyond it. Both are valid. + if sub_delta_pairs > 0: + print(f" ℹ️ {sub_delta_pairs} pairs within Cartan floor (Δ={CARTAN_FLOOR:.6f})") + print(f" Charpoly distinguishes them; operator dynamics cannot.") + print(f" This is expected — charpoly is the finer-grained key.") + + return errors + + +# ── CLI ──────────────────────────────────────────────────────────────────── + +def main(): + parser = argparse.ArgumentParser(description="Build exact spectral codebook") + parser.add_argument('--matrices', type=Path, + default=REPO_ROOT / 'formal/SilverSight/PIST/Matrices250.lean', + help='Lean file with matrix definitions') + parser.add_argument('--output', type=Path, + default=REPO_ROOT / 'data/charpoly_codebook.json', + help='Output JSON path') + parser.add_argument('--verify', action='store_true', help='Run verification') + args = parser.parse_args() + + print(f"Loading matrices from {args.matrices}...") + matrices = extract_matrices_from_lean(args.matrices) + print(f" Found {len(matrices)} matrices") + + print("Building codebook...") + codebook = build_codebook(matrices) + print(f" Distinct matrices: {codebook['distinct_matrices']}") + print(f" Unique fingerprints: {codebook['unique_fingerprints']}") + print(f" Unique spectral radii: {codebook['unique_spectral_radii']}") + print(f" Bits from fingerprint: {codebook['bits_from_fingerprint']}") + print(f" Bits from ρ: {codebook['bits_from_rho']}") + print(f" Cospectral groups: {len(codebook['cospectral_groups'])}") + + if args.verify: + print("\nVerifying...") + errors = verify_codebook(codebook) + if errors: + print(f" ❌ {len(errors)} errors:") + for e in errors: + print(f" - {e}") + return 1 + else: + print(" ✅ All checks pass") + + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(codebook, indent=2)) + print(f"\nWrote {args.output}") + return 0 + + +if __name__ == '__main__': + sys.exit(main())