diff --git a/research/two-block-signatures/.gitattributes b/research/two-block-signatures/.gitattributes new file mode 100644 index 0000000000..20cd7d6852 --- /dev/null +++ b/research/two-block-signatures/.gitattributes @@ -0,0 +1,2 @@ +* text eol=lf +source/** -text diff --git a/research/two-block-signatures/COUNTING.md b/research/two-block-signatures/COUNTING.md new file mode 100644 index 0000000000..f529f47386 --- /dev/null +++ b/research/two-block-signatures/COUNTING.md @@ -0,0 +1,41 @@ +# Exact labeled counts and the size of the binary exception + +Let $L,R$ count messages of types $(AA,AM,MA)$ and $(BB,BM,MB)$ respectively, and let $n=p+q$. Once $L,R$ positions are selected, the rest are $MM$. Write $T(n,L,R)=\binom nL\binom{n-L}R$ and $H(k)=3^k-2\cdot2^k+1$. The latter counts length-$k$ words on three letters using both specified nondefault letters. The classification in [PROOF.md](PROOF.md) gives the following $O(pq)$ formula in arithmetic operations for the number $G_{p,q}$ of ordinary signatures. +$$ +G_{p,q}=\sum_{L=0}^p\sum_{R=0}^q T(n,L,R)\,B_{L,R}. +$$ + +| Occupancy | $B_{L,R}$ | +| --- | --- | +| $L
0$, with $n=p+q$. Column $j$ of $P$ determines the source blocks of message $j$. Row $j$ of $P^{-1}$ determines its reader blocks. The message labels stay fixed. Write $M$ for the two-block mask and abbreviate a pair of masks by two letters in source, reader order. This is the interface of Gonzalo Mier's #3990/#3997 and Nick Petalas's #6691. The question in #6691 asks for two blocks of three ports. [#3997](https://github.com/CrocSwap/integer-mult-bounds/pull/3997) · [#6691](https://github.com/CrocSwap/integer-mult-bounds/pull/6691)
+
+Use the seven counts $(a,s,t,b,f,g,h)$ in order
+$$
+(AA,AM,MA,BB,BM,MB,MM).
+$$
+All other mask pairs are forbidden. Define
+$$
+u=p-a-s-t,\qquad v=q-b-f-g .
+$$
+The **ordinary conditions** are that $u,v\ge0$ and
+$$
+(p-a-t=0)\ \Longleftrightarrow\ (q-b-f=0),\qquad
+(q-b-g=0)\ \Longleftrightarrow\ (p-a-s=0).
+$$
+The counts sum to $n$, so $u+v=h$.
+
+**Theorem.** Over every field with more than two elements the ordinary conditions are necessary and sufficient. Over $\mathbb F_2$ they remain necessary. They suffice there unless $u,v$ are both odd and at least one equals one. In those cases the following additional test is exact.
+
+| Free pivot counts | Additional condition over $\mathbb F_2$ |
+| --- | --- |
+| $u=1,\ v>1$ odd | $s+t>0$ |
+| $v=1,\ u>1$ odd | $f+g>0$ |
+| $u=v=1$ | $(s>0\ \mathrm{and}\ g>0)$ or $(t>0\ \mathrm{and}\ f>0)$ |
+
+Every ordinary signature has an integer witness with entries $0,1,-1$ and a structural support pattern whose generic signature is exactly the requested one. Thus the generic support census equals the realizable rational census in **all two-block dimensions**. The equality concerns the union over all support patterns. A particular matrix and a generic assignment to that very same entry pattern can have different inverse supports.
+
+For example, the six labels $AM,AM,MA,MA,MM,MM$ have only two exclusively $A$ sources and only two exclusively $A$ readers. Neither individual count reaches three, yet four labels require $A$ pivots. No $3+3$ basis can realize them. This illustrates the joint capacity test that a check of the two counts in isolation misses.
+
+## 2. Find simultaneous pivots
+
+Let $W_A,W_B$ be the two complementary row spaces, let $E_X$ be the coordinates $j$ for which $e_j\in W_X$, and let $F_X$ be the coordinates identically zero on $W_X$. The row-space argument in #6691 works for any block sizes. A source omits $X$ exactly on $F_X$. The expansion of $e_j$ in the rows of $P$ has coefficients in row $j$ of $P^{-1}$. Hence its reader is $A$ alone exactly on $E_A$, and $B$ alone exactly on $E_B$. An $AB$ or $BA$ message would put $e_j$ inside a space whose $j$th coordinate is always zero.
+
+Laplace expansion of $\det P$ along its top $p$ rows supplies a set $I$ of $p$ columns such that the top minor on $I$ and the bottom minor on $J=I^c$ are both invertible. In particular $I$ contains $E_A$ because restriction of $W_A$ to $I$ is injective. It also contains $F_B$ because restriction of $W_B$ to $J$ is surjective. Similarly $J$ contains $E_B\cup F_A$. Thus every $AA,AM,MA$ must go into $I$, and every $BB,BM,MB$ into $J$. The remaining $MM$ coordinates occupy $u$ slots in $I$ and $v$ in $J$.
+
+Order the columns as $I,J$ and independently change row bases within the two blocks. These invertible operations preserve their row spaces, hence all plane-level masks. The resulting matrix is
+$$
+P_0=\begin{pmatrix} I_p&X\\Y&I_q\end{pmatrix}.
+$$
+A pivot coordinate in $I$ is in $E_A$ exactly when its row of $X$ is zero. A coordinate of $J$ belongs to $F_A$ exactly when its column of $X$ is zero. Consequently the rows of $X$ that must be nonzero number $p-a-t$, and its required columns number $q-b-f$. For $Y$ the corresponding counts are $q-b-g$ and $p-a-s$. A matrix cannot have an empty set of nonzero rows and a nonempty set of nonzero columns or vice versa. This proves the two equivalences and all the ordinary necessity claims.
+
+## 3. Construct an ordinary witness
+
+Choose the required $I,J$ in label order, allocating any $u$ of the $MM$ labels to $I$. Set $X$ to one on the rectangle of its required rows and columns and zero elsewhere. Set $Y$ to a fixed nonzero scalar $c$ on its required rectangle. The ordinary conditions give exactly the prescribed zero rows and columns, including the cases where an entire rectangle is empty.
+
+Eliminating the bottom-left block gives $\det P_0=\det(I_q-YX)$. Only $MM$ pivots belong to both active rectangles at their respective ends. In particular $YX$ has rank at most one and trace $cuv$. The rank-one determinant identity yields $\det P_0=1-cuv$, in the displayed column order. If $uv$ vanishes in $K$, any nonzero $c$ works. Otherwise exactly one nonzero scalar can fail. Every field larger than $\mathbb F_2$ supplies a choice, and over $\mathbb Q$ the choice $c=-1$ always gives determinant $1+uv>0$.
+
+Giving every supported entry an independent indeterminate leaves the diagonal matching and a nonzero determinant. The two pivot submatrices remain diagonal, so row normalization preserves exactly the same zero rows and columns of $X,Y$. Thus every constructed ordinary pattern has the requested generic signature. Conversely the necessity proof also applies over the rational-function field of a generic matrix. This proves generic equality without enumerating $2^{n^2}$ structural supports. Structural determinant and cofactor tests by matchings are classical. [Edmonds (1967)](https://nvlpubs.nist.gov/nistpubs/jres/71B/jresv71Bn4p241_A1b.pdf)
+
+## 4. The complete binary obstruction
+
+In $\mathbb F_2$ take $c=1$. The construction already works if $uv$ is even. To see exactly what can happen when $uv$ is odd, let $X_0,Y_0$ be the restrictions to the $u$ and $v$ free pivots. For **any** graph matrix with the requested masks,
+$$
+\det P_0=\det(I_u-X_0Y_0).
+$$
+Indeed, in $I_p-XY$ an $I$-coordinate outside the free set has either a zero row of $X$ or a zero column of $Y$. Its determinant row or column is the corresponding identity row or column and can be deleted with its matching index. A nonfree $J$-coordinate has either a zero column of $X$ or a zero row of $Y$ and contributes nothing to the remaining product.
+
+Start with both active rectangles filled with ones. Removing one common entry from $X_0$ or $Y_0$ leaves the other core rank one. The product then has trace $uv-1$, even, giving determinant one. The question is whether this deletion preserves the required row and column supports.
+
+- If $u,v>1$ are odd, both are at least three. Delete any core entry of $X$ and its row and column still have other entries.
+- If $u=1,v>1$ are odd and $s>0$, delete one entry of $X_0$. Its column is covered by an $AM$ row and its row still has another free column. If $t>0$, delete one entry of $Y_0$ instead. Its row can use an $MA$ column. If $s=t=0$, the only active $I$ row of $X$ and the only active $I$ column of $Y$ are the single free pivot. Every free $J$ coordinate forces a one in both cores. Their product is the scalar $v=1$ in $\mathbb F_2$. No invertible graph matrix is possible. Swapping the block names gives the $v=1,u>1$ row of the table.
+- If $u=v=1$, the determinant is $1-xy$ for the two core bits. Setting $x=0$ is possible exactly when the free row can use an $MB$ column and the free column an $AM$ row, so $g,s>0$. Setting $y=0$ requires an $MA$ column and a $BM$ row, so $t,f>0$. If neither deletion is possible, both bits are forced to one. This proves necessity as well as sufficiency.
+
+These arguments use only the counts of the signature. Every possible pivot chart has those same counts, so switching pivots cannot evade an obstruction. A field of characteristic two with at least four elements falls under Section 3.
+
+## 5. Exact prices under monotone support tariffs
+
+Allow a different price $c_j(S,R)$ for each message. Assume enlarging either mask cannot lower that price. The pivots from Section 2 assign every $I$-message to $A$ and every $J$-message to $B$, and the assigned block belongs to **both** masks. A row-permuted coordinate basis realizes the corresponding pure $AA$ and $BB$ messages. Its price is at most that of the original basis. Every assignment of $p$ labels to $A$ and the remainder to $B$ can itself be realized by such a permutation.
+
+It follows that the exact minimum on every field is $\sum_j c_j(B,B)$ plus the sum of the $p$ smallest values $c_j(A,A)-c_j(B,B)$. In particular field-specific omissions cannot affect a monotone additive tariff. This statement permits message-dependent prices and concerns square bases. The matched-plane COPY mass bound for overcomplete scalar factorizations is credited separately to #4365. [#4365](https://github.com/CrocSwap/integer-mult-bounds/pull/4365)
+
+A positive, nonmonotone tariff can distinguish fields. Take $p=q=d\ge2$ and costs $(3,3,3,1,2,2,2)$ in the seven-type order. Writing $L=a+s+t$, its total is $4d+L-b$. If $b=d$ then $E_B$ and $F_A$ both have size $d$ and all remaining messages are $AA$. Otherwise $b\le d-1$. The ordinary minimum is therefore $3d+1$, attained at $L=0,\ b=d-1$. At that equality, an additional $BM$ would saturate $F_A$ and force $E_A$ to have dimension $d$, and an additional $MB$ would saturate $E_B$ and force $F_B$ to have size $d$. Both contradict $L=0$. The sole optimal profile consists of $d-1$ copies of $BB$ and $d+1$ copies of $MM$.
+
+Its free sizes are $(u,v)=(d,1)$. It is binary-realizable when $d$ is even and forbidden when $d$ is odd. For odd $d\ge3$, take $d-2$ copies of $BB$ and $d+2$ copies of $MM$. The free sizes $(d,2)$ have even product and this binary witness costs $3d+2$. Integrality excludes a price strictly between the two. At $d=3$ the two minima are ten and eleven. These prices exhibit a mathematical separation and are not measured decoder costs.
+
+One zero-one witness for the six-port optimum $BB,BB,MM,MM,MM,MM$ is
+$$
+\begin{pmatrix}
+0&0&1&0&0&1\\0&0&0&1&0&1\\0&0&0&0&1&1\\
+1&0&0&0&0&0\\0&1&0&0&0&0\\0&0&1&1&1&1
+\end{pmatrix}.
+$$
+Its determinant is $-2$, so it works over the rationals and the three-element field. In the two-element field the theorem rules out **every** witness for that signature, in addition to the singularity of this particular matrix.
+
+## 6. Scope and reproducible counts
+
+For $p=q=3$ the ordinary conditions give 188 count profiles and 33,727 labeled signatures. Binary feasibility leaves 167 profiles and 30,547 labeled signatures. Of the 3,180 excluded codes, 3,150 have a $1$-by-$1$ free core and 15 each have the two one-sided odd obstructions. Each profile represents $6!/\prod_i n_i!$ labelings. Exhaustive matching and finite-field incidence counts, actual matrices, exact inverse checks and prices are described in [VALIDATION.md](VALIDATION.md).
+
+[COUNTING.md](COUNTING.md) sums the pivot categories in $O(pq)$ arithmetic operations, gives the exact size of each exception family, and derives the asymptotic binary deficit. For the six-port case, [PRICE-CERTIFICATES.json](PRICE-CERTIFICATES.json) separates 12 of the 21 missing profiles strictly below all binary profiles under a positive integral additive tariff. The other nine are exact convex combinations of binary profiles and hence cannot beat every binary choice under any linear tariff. A separating price need not make its specified profile the unique ordinary optimum.
+
+The row-space description, four-port constraints and four-port rational census are predecessor results. This package supplies the arbitrary two-block classification, uniform larger-field construction, exact binary exceptions and tariff consequences. Three or more blocks, the full port-level joint zero pattern of $P,P^{-1}$ and physical supplier invoices fall outside the theorem.
diff --git a/research/two-block-signatures/README.md b/research/two-block-signatures/README.md
new file mode 100644
index 0000000000..7e568edb6c
--- /dev/null
+++ b/research/two-block-signatures/README.md
@@ -0,0 +1,49 @@
+# Which source and reader masks can two port blocks realize?
+
+This answers open question 1 of Nick Petalas's #6691. For two blocks of three ports, an invertible basis realizes **33,727 labeled source/reader signatures over the rationals**, exactly the generic support census. Over the two-element field it realizes **30,547**. The classification holds for arbitrary positive block sizes and every field. [Four-port handoff](https://github.com/CrocSwap/integer-mult-bounds/pull/6691)
+
+A signature records which blocks a message uses on input and which blocks read it on output. The input masks come from the corresponding column of the basis matrix and the output masks from the corresponding row of its inverse. A generic support pattern gives each allowed matrix entry its own independent coefficient. The original six-port search would have had 2^36 port-level supports.
+
+| Two blocks of three ports | Up to relabeling messages | Labeled signatures |
+| --- | ---: | ---: |
+| Rational, generic or any field with more than two elements | 188 | 33,727 |
+| Zero-one entries with rational inversion | 179 | 32,287 |
+| Two-element field | 167 | 30,547 |
+| Ordinary minus two-element field | 21 | 3,180 |
+
+In the middle row the basis entries are restricted. The rational inverse can use other coefficients. An exact weighted census accounts for 28,836,612,000 invertible zero-one matrices. [Restricted coefficient census](ZERO-ONE.md)
+
+Although these three sets have different sizes, one additive tariff shared across the six messages gives at most two distinct minimum prices. Either adjacent pair can tie. [Why the three minima cannot all be distinct](ZERO-ONE.md#why-the-three-minima-cannot-all-be-distinct)
+
+## What determines a signature
+
+A nonzero determinant supplies simultaneous pivots for both blocks. After row-basis changes inside each block, the matrix consists of two identity diagonal blocks and two rectangular off-diagonal blocks. Six exclusive message types force the side on which they pivot. Messages using both blocks on input and output fill the leftover positions. The row and column support requirements then give an exact test and a direct witness with entries 0, 1 and −1 over the rationals. A small parity obstruction accounts for the entire binary deficit. Fields of characteristic two with more than two elements realize the full ordinary set. [Classification and proof](PROOF.md)
+
+The labeled counts take quadratic arithmetic time in the balanced dimension. In balanced size d+d, the proportion of ordinary signatures missing over the two-element field is asymptotic to d^(3/2) (16/49)^d / (4√π). [Counting formula](COUNTING.md)
+
+## Why the tariff matters
+
+If a message's price cannot decrease when either mask grows, its exact minimum over all invertible bases is attained by assigning messages to individual blocks with a coordinate permutation. This even permits different prices for different messages. The result concerns square bases. The earlier sharp matched-plane COPY bound also allows overcomplete scalar factorizations. [Tariff proof](PROOF.md#5-exact-prices-under-monotone-support-tariffs) · [#4365](https://github.com/CrocSwap/integer-mult-bounds/pull/4365)
+
+Under a positive **nonmonotone** tariff, fields can differ. The same seven prices give minima 10 and 11 in the six-port rational and binary cases, respectively. Among the 21 missing profiles, 12 can be priced strictly below every binary choice. The other nine are convex combinations of binary profiles. These are exact example tariffs. A physical decoder would need its own measured or proved prices. [Price certificates](PRICE-CERTIFICATES.json)
+
+## Reproduce
+
+Run the registered replay from the repository root with CPython 3.12 and its standard library.
+
+```sh
+python3.12 -B scripts/research_package.py --package research/two-block-signatures
+```
+
+[SIX-PORTS.json](SIX-PORTS.json) contains a rational matrix for each of the 188 profiles, a binary matrix where one exists, and the exact number of ordered complementary pairs over the two- and three-element fields for each **single labeling**. The matrix strings use `+` for one, `-` for minus one and `.` for zero. The symbol order is AA, AM, MA, BB, BM, MB, MM. Permuting the columns relabels a witness. [RESULT.json](RESULT.json) and [VALIDATION.md](VALIDATION.md) give the counts and the independent replay commands.
+
+## Source, scope and credit
+
+Gonzalo Mier supplied the original binary-coefficient and generic four-port screens in #3990/#3997. Nick Petalas supplied the complementary-space interpretation, four-port classification and six-port handoff in #6691. #4365 supplies the earlier overcomplete matched-plane result. Classical determinant/cofactor matchings and coordinate incidence retain their usual credit. Source blobs from the pending handoff are retained with their original author, path and Git identity. [Source identities](SOURCES.json) · [Scope and overlap](OVERLAP.json)
+
+The revision-8 `coverage-law-change` card changes scope to the exact attainable signatures of this decoder interface. The selected source-binding orientation passed. Native delivery, completeness of a physical caller and a new multiplication exponent are outside this result. New work prepared for SHIN09-git with substantial OpenAI Codex assistance in derivation, implementation, verification and writing. Apache-2.0.
+
+## Open next questions
+
+1. For three blocks of two ports, can a special cancellation produce a signature absent from the generic census? A reader coordinate can lie in the sum of the other two row spaces, so the present opposite-space test does not decide it.
+2. Is there an exact field-order formula for the number of bases with an individual signature? Begin with the stored two- and three-element multiplicities. Feasibility alone does not determine those numbers.
diff --git a/research/two-block-signatures/RESULT.json b/research/two-block-signatures/RESULT.json
new file mode 100644
index 0000000000..58284c47bc
--- /dev/null
+++ b/research/two-block-signatures/RESULT.json
@@ -0,0 +1,429 @@
+{
+ "censuses": {
+ "all_mixed_six_port_pairs": [
+ 64560,
+ 309983240
+ ],
+ "binary": {
+ "1+1": {
+ "code_sha256": "b37d0d8914bf3037f8ead900ca1f68a4d999c135fe8a873487c8fff988c66f6f",
+ "codes": 6,
+ "first_spaces": 3,
+ "pairs": 6,
+ "second_spaces": 3
+ },
+ "1+2": {
+ "code_sha256": "2198b261b743c99114681cfe5bebc31f31a41ea3f4b2aa9a89cdd6ab6147364b",
+ "codes": 28,
+ "first_spaces": 7,
+ "pairs": 28,
+ "second_spaces": 7
+ },
+ "1+3": {
+ "code_sha256": "952d8fda1c0e5788aeae74b1a26c18421efccf4b9a64db9b720c476bd9cb2d34",
+ "codes": 120,
+ "first_spaces": 15,
+ "pairs": 120,
+ "second_spaces": 15
+ },
+ "1+4": {
+ "code_sha256": "eed96f50c53e517801956dc406c808f42555da0f8c9eb5f0f460801e18b339af",
+ "codes": 496,
+ "first_spaces": 31,
+ "pairs": 496,
+ "second_spaces": 31
+ },
+ "1+5": {
+ "code_sha256": "dcfc446104f229744393a57528a37f8ca6b00b1c32dfe085679a48382114fd0b",
+ "codes": 2016,
+ "first_spaces": 63,
+ "pairs": 2016,
+ "second_spaces": 63
+ },
+ "2+1": {
+ "code_sha256": "8a3676ae21346c942006dd5a86609f60decba1b2115d737fcda96cd70a5b83a4",
+ "codes": 28,
+ "first_spaces": 7,
+ "pairs": 28,
+ "second_spaces": 7
+ },
+ "2+2": {
+ "code_sha256": "4b056b833330cf93333cdf590156cd68db7f6c3ab7d6ea462bb1fce2883e0779",
+ "codes": 355,
+ "first_spaces": 35,
+ "pairs": 560,
+ "second_spaces": 35
+ },
+ "2+3": {
+ "code_sha256": "36bb5746dca0273f60e605df057262415117be2a328f5582b841d3df020573dd",
+ "codes": 2846,
+ "first_spaces": 155,
+ "pairs": 9920,
+ "second_spaces": 155
+ },
+ "2+4": {
+ "code_sha256": "8313650a02b8884ee37f2055e0b7f2e90acefa9d086477c11eebe481da6a6dfe",
+ "codes": 18157,
+ "first_spaces": 651,
+ "pairs": 166656,
+ "second_spaces": 651
+ },
+ "3+1": {
+ "code_sha256": "88af3c806de784b2c7b1fbf7cfcc7ab4750ca7bd9c5756f80f44d6f300ea7d62",
+ "codes": 120,
+ "first_spaces": 15,
+ "pairs": 120,
+ "second_spaces": 15
+ },
+ "3+2": {
+ "code_sha256": "9df416ab10c6c1d308d73695a9ff368ff7d90b495a7ecb30361f1c2b82320f93",
+ "codes": 2846,
+ "first_spaces": 155,
+ "pairs": 9920,
+ "second_spaces": 155
+ },
+ "3+3": {
+ "code_sha256": "a1e14852a53a581c2577f2eb77112e8161e135473c78d86c63872c7ca7dc3e29",
+ "codes": 30547,
+ "first_spaces": 1395,
+ "pairs": 714240,
+ "second_spaces": 1395
+ },
+ "4+1": {
+ "code_sha256": "26910e24815914d4063e6dde28b22eb7ec129df23fe0d6b6e823a3cebb6aba8d",
+ "codes": 496,
+ "first_spaces": 31,
+ "pairs": 496,
+ "second_spaces": 31
+ },
+ "4+2": {
+ "code_sha256": "bfd957f2033862ef54826a14452ad8dcc9dcec3f5b8e74d8a9ce00a90274bede",
+ "codes": 18157,
+ "first_spaces": 651,
+ "pairs": 166656,
+ "second_spaces": 651
+ },
+ "5+1": {
+ "code_sha256": "5b357d46a8f2767acdee02845ecb4fb801e8d3ffaec2a541a228dfc047ed97db",
+ "codes": 2016,
+ "first_spaces": 63,
+ "pairs": 2016,
+ "second_spaces": 63
+ }
+ },
+ "generic": {
+ "1+5": {
+ "chart": true,
+ "classes": 56,
+ "fixed_order_codes": 1024,
+ "labeled_codes": 3367,
+ "nonsingular": 1024,
+ "patterns": 1024,
+ "variables": 10
+ },
+ "2+2": {
+ "chart": false,
+ "classes": 34,
+ "fixed_order_codes": 439,
+ "labeled_codes": 439,
+ "nonsingular": 37823,
+ "patterns": 65536,
+ "variables": 16
+ },
+ "2+4": {
+ "chart": true,
+ "classes": 147,
+ "fixed_order_codes": 2116,
+ "labeled_codes": 20827,
+ "nonsingular": 65536,
+ "patterns": 65536,
+ "variables": 16
+ },
+ "3+3": {
+ "chart": true,
+ "classes": 188,
+ "fixed_order_codes": 2500,
+ "labeled_codes": 33727,
+ "nonsingular": 262144,
+ "patterns": 262144,
+ "variables": 18
+ }
+ },
+ "literal_GL4_F2": 20160,
+ "ternary": {
+ "2+2": {
+ "classes": 34,
+ "first_space_orbits": 7,
+ "orbit_size_histogram": {
+ "6": 1,
+ "8": 1,
+ "12": 1,
+ "16": 2,
+ "24": 1,
+ "48": 1
+ },
+ "ordered_pairs": 10530,
+ "spaces": 130
+ },
+ "3+3": {
+ "classes": 188,
+ "first_space_orbits": 31,
+ "orbit_size_histogram": {
+ "20": 1,
+ "120": 3,
+ "180": 1,
+ "240": 4,
+ "320": 2,
+ "360": 1,
+ "480": 2,
+ "640": 1,
+ "960": 5,
+ "1440": 6,
+ "1920": 2,
+ "2880": 1,
+ "3840": 1,
+ "5760": 1
+ },
+ "ordered_pairs": 666860040,
+ "spaces": 33880
+ }
+ }
+ },
+ "construction": {
+ "closed_counts": {
+ "balanced": {
+ "16": {
+ "binary": 750741788882855027930788183,
+ "excluded": {
+ "binary 1x1": 167421595863287358720,
+ "binary one A": 3682520346137787360,
+ "binary one B": 3682520346137787360
+ },
+ "ordinary": 750741963669491583493721623
+ },
+ "3": {
+ "binary": 30547,
+ "excluded": {
+ "binary 1x1": 3150,
+ "binary one A": 15,
+ "binary one B": 15
+ },
+ "ordinary": 33727
+ },
+ "32": {
+ "binary": 974405693443100613225887281557957607866855166873922455,
+ "excluded": {
+ "binary 1x1": 8655481941118601940106363430192105100288,
+ "binary one A": 64973607567736713550764568314223610304,
+ "binary one B": 64973607567736713550764568314223610304
+ },
+ "ordinary": 974405693443109398655043535633324815759421987426243351
+ },
+ "8": {
+ "binary": 18893444657911,
+ "excluded": {
+ "binary 1x1": 15086111040,
+ "binary one A": 376524720,
+ "binary one B": 376524720
+ },
+ "ordinary": 18909283818391
+ }
+ },
+ "exact_profile_grids": 78
+ },
+ "four_port_control": {
+ "F2": 355,
+ "actual_signed_witnesses": 439,
+ "rational_zero_one_predecessor": 391
+ },
+ "grids": {
+ "1+1": {
+ "binary_profiles": 3,
+ "binary_signatures": 6,
+ "field_witnesses": 15,
+ "profiles": 4,
+ "signatures": 7
+ },
+ "1+2": {
+ "binary_profiles": 7,
+ "binary_signatures": 28,
+ "field_witnesses": 37,
+ "profiles": 10,
+ "signatures": 37
+ },
+ "1+3": {
+ "binary_profiles": 13,
+ "binary_signatures": 120,
+ "field_witnesses": 73,
+ "profiles": 20,
+ "signatures": 175
+ },
+ "1+4": {
+ "binary_profiles": 22,
+ "binary_signatures": 496,
+ "field_witnesses": 127,
+ "profiles": 35,
+ "signatures": 781
+ },
+ "1+5": {
+ "binary_profiles": 34,
+ "binary_signatures": 2016,
+ "field_witnesses": 202,
+ "profiles": 56,
+ "signatures": 3367
+ },
+ "2+1": {
+ "binary_profiles": 7,
+ "binary_signatures": 28,
+ "field_witnesses": 37,
+ "profiles": 10,
+ "signatures": 37
+ },
+ "2+2": {
+ "binary_profiles": 27,
+ "binary_signatures": 355,
+ "field_witnesses": 129,
+ "profiles": 34,
+ "signatures": 439
+ },
+ "2+3": {
+ "binary_profiles": 65,
+ "binary_signatures": 2846,
+ "field_witnesses": 299,
+ "profiles": 78,
+ "signatures": 3361
+ },
+ "2+4": {
+ "binary_profiles": 126,
+ "binary_signatures": 18157,
+ "field_witnesses": 567,
+ "profiles": 147,
+ "signatures": 20827
+ },
+ "3+1": {
+ "binary_profiles": 13,
+ "binary_signatures": 120,
+ "field_witnesses": 73,
+ "profiles": 20,
+ "signatures": 175
+ },
+ "3+2": {
+ "binary_profiles": 65,
+ "binary_signatures": 2846,
+ "field_witnesses": 299,
+ "profiles": 78,
+ "signatures": 3361
+ },
+ "3+3": {
+ "binary_profiles": 167,
+ "binary_signatures": 30547,
+ "field_witnesses": 731,
+ "profiles": 188,
+ "signatures": 33727
+ },
+ "4+1": {
+ "binary_profiles": 22,
+ "binary_signatures": 496,
+ "field_witnesses": 127,
+ "profiles": 35,
+ "signatures": 781
+ },
+ "4+2": {
+ "binary_profiles": 126,
+ "binary_signatures": 18157,
+ "field_witnesses": 567,
+ "profiles": 147,
+ "signatures": 20827
+ },
+ "5+1": {
+ "binary_profiles": 34,
+ "binary_signatures": 2016,
+ "field_witnesses": 202,
+ "profiles": 56,
+ "signatures": 3367
+ }
+ },
+ "invalid_cases": 8,
+ "monotone_prices": [
+ 26,
+ 47,
+ 47,
+ 43,
+ 58,
+ 46,
+ 33,
+ 41,
+ 31,
+ 35,
+ 47,
+ 41
+ ],
+ "parity_tariffs": [
+ [
+ 2,
+ 7,
+ 7
+ ],
+ [
+ 3,
+ 10,
+ 11
+ ],
+ [
+ 4,
+ 13,
+ 13
+ ],
+ [
+ 5,
+ 16,
+ 17
+ ],
+ [
+ 6,
+ 19,
+ 19
+ ],
+ [
+ 7,
+ 22,
+ 23
+ ],
+ [
+ 8,
+ 25,
+ 25
+ ]
+ ],
+ "tariff_certificates": {
+ "in_binary_convex_hull": 9,
+ "separated": 12
+ },
+ "zero_one_example": {
+ "code": 16777130,
+ "matrix": [
+ "..+..+",
+ "...+.+",
+ "....++",
+ "+.....",
+ ".+....",
+ "..++++"
+ ],
+ "price": 10
+ }
+ },
+ "labeled_witnesses": {
+ "F2": 30547,
+ "F3": 33727,
+ "rational": 33727,
+ "rational_abs_determinants": {
+ "1": 22620,
+ "2": 7290,
+ "3": 3240,
+ "4": 270,
+ "5": 270,
+ "7": 36,
+ "10": 1
+ }
+ }
+}
diff --git a/research/two-block-signatures/SIX-PORTS.json b/research/two-block-signatures/SIX-PORTS.json
new file mode 100644
index 0000000000..ffa3fc58ab
--- /dev/null
+++ b/research/two-block-signatures/SIX-PORTS.json
@@ -0,0 +1,190 @@
+[
+ {"counts":[0,0,0,0,0,0,6],"multiplicity":1,"rational":["+..+++",".+.+++","..++++","---+..","---.+.","---..+"],"binary":["+...++",".+.+++","..++++","++++..","+++.+.","+++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[64560,309983240]},
+ {"counts":[0,0,0,0,0,1,5],"multiplicity":6,"rational":["++..++","+.+.++","+..+++","+.....",".---+.",".---.+"],"binary":["++..++","+.+.++","+..+++","+.....",".++++.",".+++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[5470,8771840]},
+ {"counts":[0,0,0,0,0,2,4],"multiplicity":15,"rational":["+++..+","++.+.+","++..++","+.....",".+....","..---+"],"binary":["+++...","++.+.+","++..++","+.....",".+....","..++++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[160,112288]},
+ {"counts":[0,0,0,0,1,0,5],"multiplicity":6,"rational":[".+..++","..+.++","...+++","+---..",".---+.",".---.+"],"binary":[".+..++","..+.++","...+++","++++..",".++++.",".+++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[5470,8771840]},
+ {"counts":[0,0,0,0,1,1,4],"multiplicity":30,"rational":[".++..+",".+.+.+",".+..++","+.---.",".+....","..---+"],"binary":[".++...",".+.+.+",".+..++","+.+++.",".+....","..++++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[576,271264]},
+ {"counts":[0,0,0,0,1,2,3],"multiplicity":60,"rational":[".+++..",".++.+.",".++..+","+..---",".+....","..+..."],"binary":[".+++..",".++.+.",".++..+","+..+++",".+....","..+..."],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,3968]},
+ {"counts":[0,0,0,0,2,0,4],"multiplicity":15,"rational":["..+..+","...+.+","....++","+.---.",".+---.","..---+"],"binary":["..+..+","...+.+","....++","+.+++.",".++++.","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[160,112288]},
+ {"counts":[0,0,0,0,2,1,3],"multiplicity":60,"rational":["..++..","..+.+.","..+..+","+..---",".+.---","..+..."],"binary":["..++..","..+.+.","..+..+","+..+++",".+.+++","..+..."],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,3968]},
+ {"counts":[0,0,0,1,0,0,5],"multiplicity":6,"rational":[".+..++","..+.++","...+++","+.....",".---+.",".---.+"],"binary":[".+..++","..+.++","...+++","+.....",".++++.",".+++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[430,241120]},
+ {"counts":[0,0,0,1,0,1,4],"multiplicity":30,"rational":[".++..+",".+.+.+",".+..++","+.....",".+....","..---+"],"binary":[".++...",".+.+.+",".+..++","+.....",".+....","..++++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,3344]},
+ {"counts":[0,0,0,1,1,0,4],"multiplicity":30,"rational":["..+..+","...+.+","....++","+.....",".+---.","..---+"],"binary":["..+..+","...+.+","....++","+.....",".++++.","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,3344]},
+ {"counts":[0,0,0,1,1,1,3],"multiplicity":120,"rational":["..++..","..+.+.","..+..+","+.....",".+.---","..+..."],"binary":["..++..","..+.+.","..+..+","+.....",".+.+++","..+..."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,64]},
+ {"counts":[0,0,0,2,0,0,4],"multiplicity":15,"rational":["..+..+","...+.+","....++","+.....",".+....","..---+"],"binary":null,"binary_verdict":"binary one B","pairs_per_label_F2_F3":[0,40]},
+ {"counts":[0,0,1,0,0,0,5],"multiplicity":6,"rational":["+.....",".+.+++","..++++","---+..","---.+.","---..+"],"binary":["+.....",".+.+++","..++++","++++..","+++.+.","+++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[5470,8771840]},
+ {"counts":[0,0,1,0,0,1,4],"multiplicity":30,"rational":["+.....",".++.++",".+.+++",".+....","-.--+.","-.--.+"],"binary":["+.....",".++.++",".+.+++",".+....","+.+++.","+.++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[414,242304]},
+ {"counts":[0,0,1,0,0,2,3],"multiplicity":60,"rational":["+.....",".+++.+",".++.++",".+....","..+...","-..--+"],"binary":["+.....",".+++.+",".++.++",".+....","..+...","+..+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,2976]},
+ {"counts":[0,0,1,0,1,0,4],"multiplicity":30,"rational":["+.....","..+.++","...+++","-+--..","-.--+.","-.--.+"],"binary":["+.....","..+.++","...+++","++++..","+.+++.","+.++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1554,960648]},
+ {"counts":[0,0,1,0,1,1,3],"multiplicity":120,"rational":["+.....","..++.+","..+.++","-+.--.","..+...","-..--+"],"binary":["+.....","..++.+","..+.++","++.++.","..+...","+..+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[147,29040]},
+ {"counts":[0,0,1,0,1,2,2],"multiplicity":180,"rational":["+.....","..+++.","..++.+","-+..--","..+...","...+.."],"binary":["+.....","..+++.","..++.+","++..++","..+...","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,448]},
+ {"counts":[0,0,1,0,2,0,3],"multiplicity":60,"rational":["+.....","...+.+","....++","-+.--.","-.+--.","-..--+"],"binary":["+.....","...+.+","....++","++.++.","+.+++.","+..+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[185,58128]},
+ {"counts":[0,0,1,0,2,1,2],"multiplicity":180,"rational":["+.....","...++.","...+.+","-+..--","-.+.--","...+.."],"binary":["+.....","...++.","...+.+","++..++","+.+.++","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,1984]},
+ {"counts":[0,0,1,1,0,0,4],"multiplicity":30,"rational":["+.....","..+.++","...+++",".+....","-.--+.","-.--.+"],"binary":["+.....","..+.++","...+++",".+....","+.+++.","+.++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[114,25824]},
+ {"counts":[0,0,1,1,0,1,3],"multiplicity":120,"rational":["+.....","..++.+","..+.++",".+....","..+...","-..--+"],"binary":["+.....","..++.+","..+.++",".+....","..+...","+..+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,336]},
+ {"counts":[0,0,1,1,1,0,3],"multiplicity":120,"rational":["+.....","...+.+","....++",".+....","-.+--.","-..--+"],"binary":["+.....","...+.+","....++",".+....","+.+++.","+..+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[17,1704]},
+ {"counts":[0,0,1,1,1,1,2],"multiplicity":360,"rational":["+.....","...++.","...+.+",".+....","-.+.--","...+.."],"binary":["+.....","...++.","...+.+",".+....","+.+.++","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[0,0,1,2,0,0,3],"multiplicity":60,"rational":["+.....","...+.+","....++",".+....","..+...","-..--+"],"binary":["+.....","...+.+","....++",".+....","..+...","+..+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,24]},
+ {"counts":[0,0,2,0,0,0,4],"multiplicity":15,"rational":["+.....",".+....","..++++","---+..","---.+.","---..+"],"binary":["+.....",".+....","..++++","++.+..","+++.+.","+++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[160,112288]},
+ {"counts":[0,0,2,0,0,1,3],"multiplicity":60,"rational":["+.....",".+....","..++++","..+...","--.-+.","--.-.+"],"binary":["+.....",".+....","..++++","..+...","++.++.","++.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,2976]},
+ {"counts":[0,0,2,0,0,2,2],"multiplicity":90,"rational":["+.....",".+....","..++++","..+...","...+..","--..-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,32]},
+ {"counts":[0,0,2,0,1,0,3],"multiplicity":60,"rational":["+.....",".+....","...+++","--+-..","--.-+.","--.-.+"],"binary":["+.....",".+....","...+++","++++..","++.++.","++.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[185,58128]},
+ {"counts":[0,0,2,0,1,1,2],"multiplicity":180,"rational":["+.....",".+....","...+++","--+.-.","...+..","--..-+"],"binary":["+.....",".+....","...+++","+++.+.","...+..","++...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,1712]},
+ {"counts":[0,0,2,0,1,2,1],"multiplicity":180,"rational":["+.....",".+....","...+++","--+..-","...+..","....+."],"binary":["+.....",".+....","...+++","+++..+","...+..","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[0,0,2,0,2,0,2],"multiplicity":90,"rational":["+.....",".+....","....++","--+.-.","--.+-.","--..-+"],"binary":["+.....",".+....","....++","+++.+.","++.++.","++...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[208,30032]},
+ {"counts":[0,0,2,0,2,1,1],"multiplicity":180,"rational":["+.....",".+....","....++","--+..-","--.+.-","....+."],"binary":["+.....",".+....","....++","+++..+","++.+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,992]},
+ {"counts":[0,0,2,1,0,0,3],"multiplicity":60,"rational":["+.....",".+....","...+++","..+...","--.-+.","--.-.+"],"binary":["+.....",".+....","...+++","..+...","++.++.","++.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,1488]},
+ {"counts":[0,0,2,1,0,1,2],"multiplicity":180,"rational":["+.....",".+....","...+++","..+...","...+..","--..-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,16]},
+ {"counts":[0,0,2,1,1,0,2],"multiplicity":180,"rational":["+.....",".+....","....++","..+...","--.+-.","--..-+"],"binary":["+.....",".+....","....++","..+...","++.++.","++...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,856]},
+ {"counts":[0,0,2,1,1,1,1],"multiplicity":360,"rational":["+.....",".+....","....++","..+...","--.+.-","....+."],"binary":["+.....",".+....","....++","..+...","++.+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[0,0,2,2,0,0,2],"multiplicity":90,"rational":["+.....",".+....","....++","..+...","...+..","--..-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[0,0,3,0,3,0,0],"multiplicity":20,"rational":["+.....",".+....","..+...","---+..","---.+.","---..+"],"binary":["+.....",".+....","..+...","++++..","+++.+.","+++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[265,16064]},
+ {"counts":[0,0,3,1,2,0,0],"multiplicity":60,"rational":["+.....",".+....","..+...","...+..","---.+.","---..+"],"binary":["+.....",".+....","..+...","...+..","+++.+.","+++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,496]},
+ {"counts":[0,0,3,2,1,0,0],"multiplicity":60,"rational":["+.....",".+....","..+...","...+..","....+.","---..+"],"binary":["+.....",".+....","..+...","...+..","....+.","+++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[0,1,0,0,0,0,5],"multiplicity":6,"rational":["+..+++",".+.+++","..++++",".--+..",".--.+.",".--..+"],"binary":["+..+++",".+.+++","..++++",".+++..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[5470,8771840]},
+ {"counts":[0,1,0,0,0,1,4],"multiplicity":30,"rational":["++..++",".++.++",".+.+++",".+....","..--+.","..--.+"],"binary":["++..++",".++.++",".+.+++",".+....","..+++.","..++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1554,960648]},
+ {"counts":[0,1,0,0,0,2,3],"multiplicity":60,"rational":["+++..+",".+++.+",".++.++",".+....","..+...","...--+"],"binary":["+++..+",".+++.+",".++.++",".+....","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[185,58128]},
+ {"counts":[0,1,0,0,1,0,4],"multiplicity":30,"rational":["+...++","..+.++","...+++",".+--..","..--+.","..--.+"],"binary":["+...++","..+.++","...+++",".+++..","..+++.","..++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[414,242304]},
+ {"counts":[0,1,0,0,1,1,3],"multiplicity":120,"rational":["+.+..+","..++.+","..+.++",".+.--.","..+...","...--+"],"binary":["+.+..+","..++.+","..+.++",".+.++.","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[147,29040]},
+ {"counts":[0,1,0,0,1,2,2],"multiplicity":180,"rational":["+.++..","..+++.","..++.+",".+..--","..+...","...+.."],"binary":["+.++..","..+++.","..++.+",".+..++","..+...","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,1984]},
+ {"counts":[0,1,0,0,2,0,3],"multiplicity":60,"rational":["+....+","...+.+","....++",".+.--.","..+--.","...--+"],"binary":["+....+","...+.+","....++",".+.++.","..+++.","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,2976]},
+ {"counts":[0,1,0,0,2,1,2],"multiplicity":180,"rational":["+..+..","...++.","...+.+",".+..--","..+.--","...+.."],"binary":["+..+..","...++.","...+.+",".+..++","..+.++","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,448]},
+ {"counts":[0,1,0,1,0,0,4],"multiplicity":30,"rational":["+...++","..+.++","...+++",".+....","..--+.","..--.+"],"binary":["+...++","..+.++","...+++",".+....","..+++.","..++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[114,25824]},
+ {"counts":[0,1,0,1,0,1,3],"multiplicity":120,"rational":["+.+..+","..++.+","..+.++",".+....","..+...","...--+"],"binary":["+.+..+","..++.+","..+.++",".+....","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[17,1704]},
+ {"counts":[0,1,0,1,1,0,3],"multiplicity":120,"rational":["+....+","...+.+","....++",".+....","..+--.","...--+"],"binary":["+....+","...+.+","....++",".+....","..+++.","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,336]},
+ {"counts":[0,1,0,1,1,1,2],"multiplicity":360,"rational":["+..+..","...++.","...+.+",".+....","..+.--","...+.."],"binary":["+..+..","...++.","...+.+",".+....","..+.++","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[0,1,0,2,0,0,3],"multiplicity":60,"rational":["+....+","...+.+","....++",".+....","..+...","...--+"],"binary":["+....+","...+.+","....++",".+....","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,24]},
+ {"counts":[0,1,1,0,0,0,4],"multiplicity":30,"rational":["+..+++",".+....","..++++",".--+..",".--.+.",".--..+"],"binary":["+..+++",".+....","..+.++",".+++..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[576,271264]},
+ {"counts":[0,1,1,0,0,1,3],"multiplicity":120,"rational":["+.+.++",".+....","..++++","..+...",".-.-+.",".-.-.+"],"binary":["+.+.++",".+....","..++++","..+...",".+.++.",".+.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[147,29040]},
+ {"counts":[0,1,1,0,0,2,2],"multiplicity":180,"rational":["+.++.+",".+....","..++++","..+...","...+..",".-..-+"],"binary":["+.++.+",".+....","..+++.","..+...","...+..",".+..++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,1712]},
+ {"counts":[0,1,1,0,1,0,3],"multiplicity":120,"rational":["+...++",".+....","...+++",".-+-..",".-.-+.",".-.-.+"],"binary":["+...++",".+....","...+++",".+++..",".+.++.",".+.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[147,29040]},
+ {"counts":[0,1,1,0,1,1,2],"multiplicity":360,"rational":["+..+.+",".+....","...+++",".-+.-.","...+..",".-..-+"],"binary":["+..+.+",".+....","...++.",".++.+.","...+..",".+..++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[48,3368]},
+ {"counts":[0,1,1,0,1,2,1],"multiplicity":360,"rational":["+..++.",".+....","...+++",".-+..-","...+..","....+."],"binary":["+..++.",".+....","...+++",".++..+","...+..","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[0,1,1,0,2,0,2],"multiplicity":180,"rational":["+....+",".+....","....++",".-+.-.",".-.+-.",".-..-+"],"binary":["+....+",".+....","....++",".++.+.",".+.++.",".+...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,1712]},
+ {"counts":[0,1,1,0,2,1,1],"multiplicity":360,"rational":["+...+.",".+....","....++",".-+..-",".-.+.-","....+."],"binary":["+...+.",".+....","....++",".++..+",".+.+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[0,1,1,1,0,0,3],"multiplicity":120,"rational":["+...++",".+....","...+++","..+...",".-.-+.",".-.-.+"],"binary":["+...++",".+....","...+++","..+...",".+.++.",".+.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[33,3000]},
+ {"counts":[0,1,1,1,0,1,2],"multiplicity":360,"rational":["+..+.+",".+....","...+++","..+...","...+..",".-..-+"],"binary":["+..+.+",".+....","...++.","..+...","...+..",".+..++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[4,184]},
+ {"counts":[0,1,1,1,1,0,2],"multiplicity":360,"rational":["+....+",".+....","....++","..+...",".-.+-.",".-..-+"],"binary":["+....+",".+....","....++","..+...",".+.++.",".+...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[4,184]},
+ {"counts":[0,1,1,1,1,1,1],"multiplicity":720,"rational":["+...+.",".+....","....++","..+...",".-.+.-","....+."],"binary":["+...+.",".+....","....++","..+...",".+.+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[0,1,1,2,0,0,2],"multiplicity":180,"rational":["+....+",".+....","....++","..+...","...+..",".-..-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[0,1,2,0,0,0,3],"multiplicity":60,"rational":["+..+++",".+....","..+...",".--+..",".--.+.",".--..+"],"binary":["+..+++",".+....","..+...",".+++..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,3968]},
+ {"counts":[0,1,2,0,0,1,2],"multiplicity":180,"rational":["+..+++",".+....","..+...","...+..",".--.+.",".--..+"],"binary":["+..+++",".+....","..+...","...+..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,448]},
+ {"counts":[0,1,2,0,0,2,1],"multiplicity":180,"rational":["+..+++",".+....","..+...","...+..","....+.",".--..+"],"binary":["+..+++",".+....","..+...","...+..","....+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[0,1,2,0,1,0,2],"multiplicity":180,"rational":["+...++",".+....","..+...",".--+..",".--.+.",".--..+"],"binary":["+...++",".+....","..+...",".+++..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,1984]},
+ {"counts":[0,1,2,0,1,1,1],"multiplicity":360,"rational":["+...++",".+....","..+...",".--+..","....+.",".--..+"],"binary":["+...++",".+....","..+...",".+++..","....+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[0,1,2,0,1,2,0],"multiplicity":180,"rational":["+...++",".+....","..+...",".--+..","....+.",".....+"],"binary":["+...++",".+....","..+...",".+++..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[0,1,2,0,2,0,1],"multiplicity":180,"rational":["+....+",".+....","..+...",".--+..",".--.+.",".--..+"],"binary":["+....+",".+....","..+...",".+++..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,992]},
+ {"counts":[0,1,2,0,2,1,0],"multiplicity":180,"rational":["+....+",".+....","..+...",".--+..",".--.+.",".....+"],"binary":["+....+",".+....","..+...",".+++..",".++.+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,112]},
+ {"counts":[0,1,2,1,0,0,2],"multiplicity":180,"rational":["+...++",".+....","..+...","...+..",".--.+.",".--..+"],"binary":["+...++",".+....","..+...","...+..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[0,1,2,1,0,1,1],"multiplicity":360,"rational":["+...++",".+....","..+...","...+..","....+.",".--..+"],"binary":["+...++",".+....","..+...","...+..","....+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[0,1,2,1,1,0,1],"multiplicity":360,"rational":["+....+",".+....","..+...","...+..",".--.+.",".--..+"],"binary":["+....+",".+....","..+...","...+..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,112]},
+ {"counts":[0,1,2,1,1,1,0],"multiplicity":360,"rational":["+....+",".+....","..+...","...+..",".--.+.",".....+"],"binary":["+....+",".+....","..+...","...+..",".++.+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[0,1,2,2,0,0,1],"multiplicity":180,"rational":["+....+",".+....","..+...","...+..","....+.",".--..+"],"binary":["+....+",".+....","..+...","...+..","....+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[0,2,0,0,0,0,4],"multiplicity":15,"rational":["+..+++",".+.+++","..++++","..-+..","..-.+.","..-..+"],"binary":["+..+++",".+.+++","..+.++","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[160,112288]},
+ {"counts":[0,2,0,0,0,1,3],"multiplicity":60,"rational":["+.+.++",".++.++","..++++","..+...","...-+.","...-.+"],"binary":["+.+.++",".++.++","..++++","..+...","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[185,58128]},
+ {"counts":[0,2,0,0,0,2,2],"multiplicity":90,"rational":["+.++.+",".+++.+","..++++","..+...","...+..","....-+"],"binary":["+.++.+",".+++.+","..+++.","..+...","...+..","....++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[208,30032]},
+ {"counts":[0,2,0,0,1,0,3],"multiplicity":60,"rational":["+...++",".+..++","...+++","..+-..","...-+.","...-.+"],"binary":["+...++",".+..++","...+++","..++..","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,2976]},
+ {"counts":[0,2,0,0,1,1,2],"multiplicity":180,"rational":["+..+.+",".+.+.+","...+++","..+.-.","...+..","....-+"],"binary":["+..+.+",".+.+.+","...++.","..+.+.","...+..","....++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,1712]},
+ {"counts":[0,2,0,0,1,2,1],"multiplicity":180,"rational":["+..++.",".+.++.","...+++","..+..-","...+..","....+."],"binary":["+..++.",".+.++.","...+++","..+..+","...+..","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,992]},
+ {"counts":[0,2,0,0,2,0,2],"multiplicity":90,"rational":["+....+",".+...+","....++","..+.-.","...+-.","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,32]},
+ {"counts":[0,2,0,0,2,1,1],"multiplicity":180,"rational":["+...+.",".+..+.","....++","..+..-","...+.-","....+."],"binary":["+...+.",".+..+.","....++","..+..+","...+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[0,2,0,1,0,0,3],"multiplicity":60,"rational":["+...++",".+..++","...+++","..+...","...-+.","...-.+"],"binary":["+...++",".+..++","...+++","..+...","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,1488]},
+ {"counts":[0,2,0,1,0,1,2],"multiplicity":180,"rational":["+..+.+",".+.+.+","...+++","..+...","...+..","....-+"],"binary":["+..+.+",".+.+.+","...++.","..+...","...+..","....++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,856]},
+ {"counts":[0,2,0,1,1,0,2],"multiplicity":180,"rational":["+....+",".+...+","....++","..+...","...+-.","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,16]},
+ {"counts":[0,2,0,1,1,1,1],"multiplicity":360,"rational":["+...+.",".+..+.","....++","..+...","...+.-","....+."],"binary":["+...+.",".+..+.","....++","..+...","...+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[0,2,0,2,0,0,2],"multiplicity":90,"rational":["+....+",".+...+","....++","..+...","...+..","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[0,2,1,0,0,0,3],"multiplicity":60,"rational":["+..+++",".+.+++","..+...","..-+..","..-.+.","..-..+"],"binary":["+..+++",".+.+++","..+...","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,3968]},
+ {"counts":[0,2,1,0,0,1,2],"multiplicity":180,"rational":["+..+++",".+.+++","..+...","...+..","..-.+.","..-..+"],"binary":["+..+++",".+.+++","..+...","...+..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,1984]},
+ {"counts":[0,2,1,0,0,2,1],"multiplicity":180,"rational":["+..+++",".+.+++","..+...","...+..","....+.","..-..+"],"binary":["+..+++",".+.+++","..+...","...+..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,992]},
+ {"counts":[0,2,1,0,1,0,2],"multiplicity":180,"rational":["+...++",".+..++","..+...","..-+..","..-.+.","..-..+"],"binary":["+...++",".+..++","..+...","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,448]},
+ {"counts":[0,2,1,0,1,1,1],"multiplicity":360,"rational":["+...++",".+..++","..+...","..-+..","....+.","..-..+"],"binary":["+...++",".+..++","..+...","..++..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[0,2,1,0,1,2,0],"multiplicity":180,"rational":["+...++",".+..++","..+...","..-+..","....+.",".....+"],"binary":["+...++",".+..++","..+...","..++..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,112]},
+ {"counts":[0,2,1,0,2,0,1],"multiplicity":180,"rational":["+....+",".+...+","..+...","..-+..","..-.+.","..-..+"],"binary":["+....+",".+...+","..+...","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[0,2,1,0,2,1,0],"multiplicity":180,"rational":["+....+",".+...+","..+...","..-+..","..-.+.",".....+"],"binary":["+....+",".+...+","..+...","..++..","..+.+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[0,2,1,1,0,0,2],"multiplicity":180,"rational":["+...++",".+..++","..+...","...+..","..-.+.","..-..+"],"binary":["+...++",".+..++","..+...","...+..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[0,2,1,1,0,1,1],"multiplicity":360,"rational":["+...++",".+..++","..+...","...+..","....+.","..-..+"],"binary":["+...++",".+..++","..+...","...+..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,112]},
+ {"counts":[0,2,1,1,1,0,1],"multiplicity":360,"rational":["+....+",".+...+","..+...","...+..","..-.+.","..-..+"],"binary":["+....+",".+...+","..+...","...+..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[0,2,1,1,1,1,0],"multiplicity":360,"rational":["+....+",".+...+","..+...","...+..","..-.+.",".....+"],"binary":["+....+",".+...+","..+...","...+..","..+.+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[0,2,1,2,0,0,1],"multiplicity":180,"rational":["+....+",".+...+","..+...","...+..","....+.","..-..+"],"binary":["+....+",".+...+","..+...","...+..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[0,3,0,0,0,3,0],"multiplicity":20,"rational":["+..+++",".+.+++","..++++","...+..","....+.",".....+"],"binary":["+..+++",".+.+++","..++++","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[265,16064]},
+ {"counts":[0,3,0,1,0,2,0],"multiplicity":60,"rational":["+...++",".+..++","..+.++","...+..","....+.",".....+"],"binary":["+...++",".+..++","..+.++","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,496]},
+ {"counts":[0,3,0,2,0,1,0],"multiplicity":60,"rational":["+....+",".+...+","..+..+","...+..","....+.",".....+"],"binary":["+....+",".+...+","..+..+","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[1,0,0,0,0,0,5],"multiplicity":6,"rational":["+.....",".+.+++","..++++",".--+..",".--.+.",".--..+"],"binary":["+.....",".+.+++","..++++",".+++..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[430,241120]},
+ {"counts":[1,0,0,0,0,1,4],"multiplicity":30,"rational":["+.....",".++.++",".+.+++",".+....","..--+.","..--.+"],"binary":["+.....",".++.++",".+.+++",".+....","..+++.","..++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[114,25824]},
+ {"counts":[1,0,0,0,0,2,3],"multiplicity":60,"rational":["+.....",".+++.+",".++.++",".+....","..+...","...--+"],"binary":["+.....",".+++.+",".++.++",".+....","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,1488]},
+ {"counts":[1,0,0,0,1,0,4],"multiplicity":30,"rational":["+.....","..+.++","...+++",".+--..","..--+.","..--.+"],"binary":["+.....","..+.++","...+++",".+++..","..+++.","..++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[114,25824]},
+ {"counts":[1,0,0,0,1,1,3],"multiplicity":120,"rational":["+.....","..++.+","..+.++",".+.--.","..+...","...--+"],"binary":["+.....","..++.+","..+.++",".+.++.","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[33,3000]},
+ {"counts":[1,0,0,0,1,2,2],"multiplicity":180,"rational":["+.....","..+++.","..++.+",".+..--","..+...","...+.."],"binary":["+.....","..+++.","..++.+",".+..++","..+...","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[1,0,0,0,2,0,3],"multiplicity":60,"rational":["+.....","...+.+","....++",".+.--.","..+--.","...--+"],"binary":["+.....","...+.+","....++",".+.++.","..+++.","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[9,1488]},
+ {"counts":[1,0,0,0,2,1,2],"multiplicity":180,"rational":["+.....","...++.","...+.+",".+..--","..+.--","...+.."],"binary":["+.....","...++.","...+.+",".+..++","..+.++","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,224]},
+ {"counts":[1,0,0,1,0,0,4],"multiplicity":30,"rational":["+.....","..+.++","...+++",".+....","..--+.","..--.+"],"binary":["+.....","..+.++","...+++",".+....","..+++.","..++.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[30,2724]},
+ {"counts":[1,0,0,1,0,1,3],"multiplicity":120,"rational":["+.....","..++.+","..+.++",".+....","..+...","...--+"],"binary":["+.....","..++.+","..+.++",".+....","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,168]},
+ {"counts":[1,0,0,1,1,0,3],"multiplicity":120,"rational":["+.....","...+.+","....++",".+....","..+--.","...--+"],"binary":["+.....","...+.+","....++",".+....","..+++.","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,168]},
+ {"counts":[1,0,0,1,1,1,2],"multiplicity":360,"rational":["+.....","...++.","...+.+",".+....","..+.--","...+.."],"binary":["+.....","...++.","...+.+",".+....","..+.++","...+.."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[1,0,0,2,0,0,3],"multiplicity":60,"rational":["+.....","...+.+","....++",".+....","..+...","...--+"],"binary":["+.....","...+.+","....++",".+....","..+...","...+++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,12]},
+ {"counts":[1,0,1,0,0,0,4],"multiplicity":30,"rational":["+.....",".+....","..++++",".--+..",".--.+.",".--..+"],"binary":["+.....",".+....","..++++",".+.+..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,3344]},
+ {"counts":[1,0,1,0,0,1,3],"multiplicity":120,"rational":["+.....",".+....","..++++","..+...",".-.-+.",".-.-.+"],"binary":["+.....",".+....","..++++","..+...",".+.++.",".+.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,336]},
+ {"counts":[1,0,1,0,0,2,2],"multiplicity":180,"rational":["+.....",".+....","..++++","..+...","...+..",".-..-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,16]},
+ {"counts":[1,0,1,0,1,0,3],"multiplicity":120,"rational":["+.....",".+....","...+++",".-+-..",".-.-+.",".-.-.+"],"binary":["+.....",".+....","...+++",".+++..",".+.++.",".+.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[17,1704]},
+ {"counts":[1,0,1,0,1,1,2],"multiplicity":360,"rational":["+.....",".+....","...+++",".-+.-.","...+..",".-..-+"],"binary":["+.....",".+....","...+++",".++.+.","...+..",".+...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[4,184]},
+ {"counts":[1,0,1,0,1,2,1],"multiplicity":360,"rational":["+.....",".+....","...+++",".-+..-","...+..","....+."],"binary":["+.....",".+....","...+++",".++..+","...+..","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[1,0,1,0,2,0,2],"multiplicity":180,"rational":["+.....",".+....","....++",".-+.-.",".-.+-.",".-..-+"],"binary":["+.....",".+....","....++",".++.+.",".+.++.",".+...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,856]},
+ {"counts":[1,0,1,0,2,1,1],"multiplicity":360,"rational":["+.....",".+....","....++",".-+..-",".-.+.-","....+."],"binary":["+.....",".+....","....++",".++..+",".+.+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,112]},
+ {"counts":[1,0,1,1,0,0,3],"multiplicity":120,"rational":["+.....",".+....","...+++","..+...",".-.-+.",".-.-.+"],"binary":["+.....",".+....","...+++","..+...",".+.++.",".+.+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,168]},
+ {"counts":[1,0,1,1,0,1,2],"multiplicity":360,"rational":["+.....",".+....","...+++","..+...","...+..",".-..-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[1,0,1,1,1,0,2],"multiplicity":360,"rational":["+.....",".+....","....++","..+...",".-.+-.",".-..-+"],"binary":["+.....",".+....","....++","..+...",".+.++.",".+...+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[4,92]},
+ {"counts":[1,0,1,1,1,1,1],"multiplicity":720,"rational":["+.....",".+....","....++","..+...",".-.+.-","....+."],"binary":["+.....",".+....","....++","..+...",".+.+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[1,0,1,2,0,0,2],"multiplicity":180,"rational":["+.....",".+....","....++","..+...","...+..",".-..-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,4]},
+ {"counts":[1,0,2,0,3,0,0],"multiplicity":60,"rational":["+.....",".+....","..+...",".--+..",".--.+.",".--..+"],"binary":["+.....",".+....","..+...",".+++..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,496]},
+ {"counts":[1,0,2,1,2,0,0],"multiplicity":180,"rational":["+.....",".+....","..+...","...+..",".--.+.",".--..+"],"binary":["+.....",".+....","..+...","...+..",".++.+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,56]},
+ {"counts":[1,0,2,2,1,0,0],"multiplicity":180,"rational":["+.....",".+....","..+...","...+..","....+.",".--..+"],"binary":["+.....",".+....","..+...","...+..","....+.",".++..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,4]},
+ {"counts":[1,1,0,0,0,0,4],"multiplicity":30,"rational":["+.....",".+.+++","..++++","..-+..","..-.+.","..-..+"],"binary":["+.....",".+.+++","..+.++","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,3344]},
+ {"counts":[1,1,0,0,0,1,3],"multiplicity":120,"rational":["+.....",".++.++","..++++","..+...","...-+.","...-.+"],"binary":["+.....",".++.++","..++++","..+...","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[17,1704]},
+ {"counts":[1,1,0,0,0,2,2],"multiplicity":180,"rational":["+.....",".+++.+","..++++","..+...","...+..","....-+"],"binary":["+.....",".+++.+","..+++.","..+...","...+..","....++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[16,856]},
+ {"counts":[1,1,0,0,1,0,3],"multiplicity":120,"rational":["+.....",".+..++","...+++","..+-..","...-+.","...-.+"],"binary":["+.....",".+..++","...+++","..++..","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,336]},
+ {"counts":[1,1,0,0,1,1,2],"multiplicity":360,"rational":["+.....",".+.+.+","...+++","..+.-.","...+..","....-+"],"binary":["+.....",".+.+.+","...++.","..+.+.","...+..","....++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[4,184]},
+ {"counts":[1,1,0,0,1,2,1],"multiplicity":360,"rational":["+.....",".+.++.","...+++","..+..-","...+..","....+."],"binary":["+.....",".+.++.","...+++","..+..+","...+..","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,112]},
+ {"counts":[1,1,0,0,2,0,2],"multiplicity":180,"rational":["+.....",".+...+","....++","..+.-.","...+-.","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,16]},
+ {"counts":[1,1,0,0,2,1,1],"multiplicity":360,"rational":["+.....",".+..+.","....++","..+..-","...+.-","....+."],"binary":["+.....",".+..+.","....++","..+..+","...+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[1,1,0,1,0,0,3],"multiplicity":120,"rational":["+.....",".+..++","...+++","..+...","...-+.","...-.+"],"binary":["+.....",".+..++","...+++","..+...","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[3,168]},
+ {"counts":[1,1,0,1,0,1,2],"multiplicity":360,"rational":["+.....",".+.+.+","...+++","..+...","...+..","....-+"],"binary":["+.....",".+.+.+","...++.","..+...","...+..","....++"],"binary_verdict":"ok","pairs_per_label_F2_F3":[4,92]},
+ {"counts":[1,1,0,1,1,0,2],"multiplicity":360,"rational":["+.....",".+...+","....++","..+...","...+-.","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[1,1,0,1,1,1,1],"multiplicity":720,"rational":["+.....",".+..+.","....++","..+...","...+.-","....+."],"binary":["+.....",".+..+.","....++","..+...","...+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[1,1,0,2,0,0,2],"multiplicity":180,"rational":["+.....",".+...+","....++","..+...","...+..","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,4]},
+ {"counts":[1,1,1,0,0,0,3],"multiplicity":120,"rational":["+.....",".+.+++","..+...","..-+..","..-.+.","..-..+"],"binary":["+.....",".+.+++","..+...","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,64]},
+ {"counts":[1,1,1,0,0,1,2],"multiplicity":360,"rational":["+.....",".+.+++","..+...","...+..","..-.+.","..-..+"],"binary":["+.....",".+.+++","..+...","...+..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[1,1,1,0,0,2,1],"multiplicity":360,"rational":["+.....",".+.+++","..+...","...+..","....+.","..-..+"],"binary":["+.....",".+.+++","..+...","...+..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[1,1,1,0,1,0,2],"multiplicity":360,"rational":["+.....",".+..++","..+...","..-+..","..-.+.","..-..+"],"binary":["+.....",".+..++","..+...","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,32]},
+ {"counts":[1,1,1,0,1,1,1],"multiplicity":720,"rational":["+.....",".+..++","..+...","..-+..","....+.","..-..+"],"binary":["+.....",".+..++","..+...","..++..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[1,1,1,0,1,2,0],"multiplicity":360,"rational":["+.....",".+..++","..+...","..-+..","....+.",".....+"],"binary":["+.....",".+..++","..+...","..++..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[1,1,1,0,2,0,1],"multiplicity":360,"rational":["+.....",".+...+","..+...","..-+..","..-.+.","..-..+"],"binary":["+.....",".+...+","..+...","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[1,1,1,0,2,1,0],"multiplicity":360,"rational":["+.....",".+...+","..+...","..-+..","..-.+.",".....+"],"binary":["+.....",".+...+","..+...","..++..","..+.+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[1,1,1,1,0,0,2],"multiplicity":360,"rational":["+.....",".+..++","..+...","...+..","..-.+.","..-..+"],"binary":["+.....",".+..++","..+...","...+..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,16]},
+ {"counts":[1,1,1,1,0,1,1],"multiplicity":720,"rational":["+.....",".+..++","..+...","...+..","....+.","..-..+"],"binary":["+.....",".+..++","..+...","...+..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[1,1,1,1,1,0,1],"multiplicity":720,"rational":["+.....",".+...+","..+...","...+..","..-.+.","..-..+"],"binary":["+.....",".+...+","..+...","...+..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[1,1,1,1,1,1,0],"multiplicity":720,"rational":["+.....",".+...+","..+...","...+..","..-.+.",".....+"],"binary":["+.....",".+...+","..+...","...+..","..+.+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,4]},
+ {"counts":[1,1,1,2,0,0,1],"multiplicity":360,"rational":["+.....",".+...+","..+...","...+..","....+.","..-..+"],"binary":["+.....",".+...+","..+...","...+..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,4]},
+ {"counts":[1,2,0,0,0,3,0],"multiplicity":60,"rational":["+.....",".+.+++","..++++","...+..","....+.",".....+"],"binary":["+.....",".+.+++","..++++","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[25,496]},
+ {"counts":[1,2,0,1,0,2,0],"multiplicity":180,"rational":["+.....",".+..++","..+.++","...+..","....+.",".....+"],"binary":["+.....",".+..++","..+.++","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[7,56]},
+ {"counts":[1,2,0,2,0,1,0],"multiplicity":180,"rational":["+.....",".+...+","..+..+","...+..","....+.",".....+"],"binary":["+.....",".+...+","..+..+","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,4]},
+ {"counts":[2,0,0,0,0,0,4],"multiplicity":15,"rational":["+.....",".+....","..++++","..-+..","..-.+.","..-..+"],"binary":null,"binary_verdict":"binary one A","pairs_per_label_F2_F3":[0,40]},
+ {"counts":[2,0,0,0,0,1,3],"multiplicity":60,"rational":["+.....",".+....","..++++","..+...","...-+.","...-.+"],"binary":["+.....",".+....","..++++","..+...","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,24]},
+ {"counts":[2,0,0,0,0,2,2],"multiplicity":90,"rational":["+.....",".+....","..++++","..+...","...+..","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[2,0,0,0,1,0,3],"multiplicity":60,"rational":["+.....",".+....","...+++","..+-..","...-+.","...-.+"],"binary":["+.....",".+....","...+++","..++..","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,24]},
+ {"counts":[2,0,0,0,1,1,2],"multiplicity":180,"rational":["+.....",".+....","...+++","..+.-.","...+..","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[2,0,0,0,1,2,1],"multiplicity":180,"rational":["+.....",".+....","...+++","..+..-","...+..","....+."],"binary":["+.....",".+....","...+++","..+..+","...+..","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[2,0,0,0,2,0,2],"multiplicity":90,"rational":["+.....",".+....","....++","..+.-.","...+-.","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,8]},
+ {"counts":[2,0,0,0,2,1,1],"multiplicity":180,"rational":["+.....",".+....","....++","..+..-","...+.-","....+."],"binary":["+.....",".+....","....++","..+..+","...+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[2,0,0,1,0,0,3],"multiplicity":60,"rational":["+.....",".+....","...+++","..+...","...-+.","...-.+"],"binary":["+.....",".+....","...+++","..+...","...++.","...+.+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,12]},
+ {"counts":[2,0,0,1,0,1,2],"multiplicity":180,"rational":["+.....",".+....","...+++","..+...","...+..","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,4]},
+ {"counts":[2,0,0,1,1,0,2],"multiplicity":180,"rational":["+.....",".+....","....++","..+...","...+-.","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,4]},
+ {"counts":[2,0,0,1,1,1,1],"multiplicity":360,"rational":["+.....",".+....","....++","..+...","...+.-","....+."],"binary":["+.....",".+....","....++","..+...","...+.+","....+."],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,4]},
+ {"counts":[2,0,0,2,0,0,2],"multiplicity":90,"rational":["+.....",".+....","....++","..+...","...+..","....-+"],"binary":null,"binary_verdict":"binary 1x1","pairs_per_label_F2_F3":[0,2]},
+ {"counts":[2,0,1,0,3,0,0],"multiplicity":60,"rational":["+.....",".+....","..+...","..-+..","..-.+.","..-..+"],"binary":["+.....",".+....","..+...","..++..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[2,0,1,1,2,0,0],"multiplicity":180,"rational":["+.....",".+....","..+...","...+..","..-.+.","..-..+"],"binary":["+.....",".+....","..+...","...+..","..+.+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,4]},
+ {"counts":[2,0,1,2,1,0,0],"multiplicity":180,"rational":["+.....",".+....","..+...","...+..","....+.","..-..+"],"binary":["+.....",".+....","..+...","...+..","....+.","..+..+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,2]},
+ {"counts":[2,1,0,0,0,3,0],"multiplicity":60,"rational":["+.....",".+....","..++++","...+..","....+.",".....+"],"binary":["+.....",".+....","..++++","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,8]},
+ {"counts":[2,1,0,1,0,2,0],"multiplicity":180,"rational":["+.....",".+....","..+.++","...+..","....+.",".....+"],"binary":["+.....",".+....","..+.++","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,4]},
+ {"counts":[2,1,0,2,0,1,0],"multiplicity":180,"rational":["+.....",".+....","..+..+","...+..","....+.",".....+"],"binary":["+.....",".+....","..+..+","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,2]},
+ {"counts":[3,0,0,3,0,0,0],"multiplicity":20,"rational":["+.....",".+....","..+...","...+..","....+.",".....+"],"binary":["+.....",".+....","..+...","...+..","....+.",".....+"],"binary_verdict":"ok","pairs_per_label_F2_F3":[1,1]}
+]
diff --git a/research/two-block-signatures/SOURCES.json b/research/two-block-signatures/SOURCES.json
new file mode 100644
index 0000000000..6f80da194d
--- /dev/null
+++ b/research/two-block-signatures/SOURCES.json
@@ -0,0 +1,104 @@
+{
+ "schema_version": 1,
+ "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a",
+ "files": [
+ {
+ "path": "certificates/selected-result.json",
+ "usage": "provenance",
+ "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a",
+ "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa"
+ },
+ {
+ "path": "docs/research/agent-task-catalog.json",
+ "usage": "provenance",
+ "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec",
+ "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81"
+ },
+ {
+ "path": "research/two-block-signatures/source/6691-README.md",
+ "usage": "provenance",
+ "git_blob": "e3e9781e5881d345694e19e3bb3b9be329621b1b",
+ "sha256": "0cbcb749f758e2b8badf6bd5a87512b4b709331c894f0bcdb3126e1002df3e09",
+ "vendored_as": "source/6691-README.md",
+ "upstream_origin": {
+ "commit": "e68cb25dcc859efb03d616305f543fda2d90ece1",
+ "path": "research/two-plane-signature-classes/README.md",
+ "git_blob": "e3e9781e5881d345694e19e3bb3b9be329621b1b",
+ "author": "Nick Petalas",
+ "pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/6691"
+ },
+ "pin": "head:c861a61650c1ea891b2ed6eb5a6f2161c58c7d33:research/two-block-signatures/source/6691-README.md"
+ },
+ {
+ "path": "research/two-block-signatures/source/6691-PROOF.md",
+ "usage": "provenance",
+ "git_blob": "b13a9a6c984b5b3c0a89849942c5f51dcd2e60ad",
+ "sha256": "a6db4dfce4ece302678e9c94e63bc85b550e976d056f273378c25b792cd09b6d",
+ "vendored_as": "source/6691-PROOF.md",
+ "upstream_origin": {
+ "commit": "e68cb25dcc859efb03d616305f543fda2d90ece1",
+ "path": "research/two-plane-signature-classes/PROOF.md",
+ "git_blob": "b13a9a6c984b5b3c0a89849942c5f51dcd2e60ad",
+ "author": "Nick Petalas",
+ "pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/6691"
+ },
+ "pin": "head:c861a61650c1ea891b2ed6eb5a6f2161c58c7d33:research/two-block-signatures/source/6691-PROOF.md"
+ },
+ {
+ "path": "research/two-block-signatures/source/6691-RESULT.json",
+ "usage": "provenance",
+ "git_blob": "27f6b53314af26f9200fb3e9a8d597ef70eaab1a",
+ "sha256": "e8fd2b58ed9c2e359d20c11d0885014058f8567219bfc6aa5ce692e1c6ac17d7",
+ "vendored_as": "source/6691-RESULT.json",
+ "upstream_origin": {
+ "commit": "e68cb25dcc859efb03d616305f543fda2d90ece1",
+ "path": "research/two-plane-signature-classes/RESULT.json",
+ "git_blob": "27f6b53314af26f9200fb3e9a8d597ef70eaab1a",
+ "author": "Nick Petalas",
+ "pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/6691"
+ },
+ "pin": "head:c861a61650c1ea891b2ed6eb5a6f2161c58c7d33:research/two-block-signatures/source/6691-RESULT.json"
+ },
+ {
+ "path": "research/rational-joint-support-screen/TERNARY-SCREEN.txt",
+ "usage": "provenance",
+ "git_blob": "6b1430e3a5aef953e8c6e84772fd8a26f023a9e1",
+ "sha256": "ded4c54c486864dd3d3c2084bbb15f471bb7926af21f6d0c8a4582312a1001ac",
+ "vendored_as": "source/3997-TERNARY-SCREEN.txt"
+ },
+ {
+ "path": "research/rational-joint-support-screen/README.md",
+ "usage": "provenance",
+ "git_blob": "3a791075bfc2f52731d94bbc8c5e11099466c5e7",
+ "sha256": "092bd48c8384f4d57d4161391f27e3aaee0f7a6a4b3cadb2097240b209cdc999"
+ },
+ {
+ "path": "research/two-plane-copy-floor/README.md",
+ "usage": "provenance",
+ "git_blob": "8452ac31bb4ae76ed2664bf41eb3eb7c9b8ce576",
+ "sha256": "3ae78a4cbb01ece18ecc57ecca6b592413959723fa1edd5b41815b834d65d75d"
+ },
+ {
+ "path": "LICENSE",
+ "usage": "provenance",
+ "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
+ "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
+ "vendored_as": "source/LICENSE"
+ }
+ ],
+ "external_background": [
+ {
+ "title": "Systems of Distinct Representatives and Linear Algebra",
+ "author": "Jack Edmonds",
+ "year": 1967,
+ "url": "https://nvlpubs.nist.gov/nistpubs/jres/71B/jresv71Bn4p241_A1b.pdf",
+ "role": "Classical generic determinant/matching correspondence, applied also to cofactors."
+ },
+ {
+ "title": "Classification of small (0,1) matrices",
+ "author": "Miodrag Živković",
+ "url": "https://arxiv.org/abs/math/0511636",
+ "role": "Prior nonsingular matrix count. The source/reader classification and per-profile multiplicities are separate."
+ }
+ ]
+}
diff --git a/research/two-block-signatures/TASK.json b/research/two-block-signatures/TASK.json
new file mode 100644
index 0000000000..365a9e0480
--- /dev/null
+++ b/research/two-block-signatures/TASK.json
@@ -0,0 +1,81 @@
+{
+ "schema_version": 1,
+ "task_id": "coverage-law-change",
+ "priority_revision": 8,
+ "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a",
+ "original_card": {
+ "id": "coverage-law-change",
+ "question": "Can a completed call earn more independent productive target credit without an offsetting paid bill?",
+ "starting_points": [
+ "docs/research/current-priorities.md",
+ "docs/research/research-family-status.md",
+ "certificates/selected-result.json",
+ "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md"
+ ],
+ "methods": [
+ "Construct and independently check one source-bound instance of the stated first experiment.",
+ "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change."
+ ],
+ "acceptance_gate": "A source-bound arbitrary-input identity and legal producer/consumer boundary with the complete paid and productive target invoice, including restoration, ownership, native alignment and extra charges. Price under the actual current model; historical ceiling.py assumptions must be established before use. A favorable optimistic relaxation keeps a route open but is not a completed supplier. A scoped local result remains useful; expansion requires the family-level budget gate.",
+ "first_step": {
+ "command": [
+ "python3",
+ "-B",
+ "scripts/research_selected_baseline.py"
+ ],
+ "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY",
+ "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.",
+ "scope": "Source-bound orientation only, not a supplier replay or theorem proof."
+ },
+ "first_experiment": "Use #5599 as a completed positive control, then choose one uncovered cut/module beyond an applicable frozen exclusion. Derive independence, saturation and chronological availability rather than counting rational rank alone. Price target credits and all new jobs together, then check compiler and actual caller compatibility. Stop on a nonphysical credit or an unfavorable complete relaxation.",
+ "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.",
+ "allowed_variations": [
+ "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes."
+ ],
+ "scope_change_triggers": [
+ "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.",
+ "Treating an archived proposal or local numerical pass as complete supplier admission."
+ ],
+ "overlap_terms": [
+ "target credit",
+ "helper split",
+ "coverage law"
+ ],
+ "existing_checks": [
+ {
+ "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.",
+ "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md",
+ "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.",
+ "status": "reviewed",
+ "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137",
+ "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5"
+ }
+ ]
+ },
+ "scope_status": "changed",
+ "actual_scope": "Answer open question 1 of PR6691. Classify plane-level source/reader signatures of all square bases with two positive port blocks, including the six-port generic census, every binary exception and consequences for additive tariffs.",
+ "scope_change_reason": "The coverage-law-change card requests physical target credit. The source handoff instead asks for exact algebraic eligibility of two-block basis patterns. The current source-binding orientation was run, followed by the credited four-port control.",
+ "bottleneck_link": "A finite signature list screens block-based decoder tariffs. Coordinate assignments already attain the minimum for monotone additive tariffs. Native delivery, target credits, restoration and physical prices require their own contracts.",
+ "budget_minutes": 60,
+ "stop_rule": "Stop with the necessary/sufficient theorem, constructive witnesses, independent generic and finite-field counts, exact tariff certificates and an exported replay. Three-block signatures and a physical supplier are separate questions.",
+ "outcome": "completed",
+ "evidence": "PROOF.md, COUNTING.md, SIX-PORTS.json, RESULT.json, ZERO-ONE.json and exact price certificates for the three domains. All six-port labels are constructed and inverted. Independent structural matchings and finite projective enumerations check coverage and multiplicities.",
+ "author": "SHIN09-git with OpenAI Codex assistance",
+ "ai_assistance": "Substantial OpenAI Codex assistance in proofs, experiments, source and literature checks, code and writing. The differently structured oracles have the same assisted author.",
+ "open_questions": [
+ {
+ "question": "Do generic and actual block signatures still coincide for three blocks of two ports?",
+ "why_it_matters": "A reader can omit one block while its coordinate vector belongs to the sum of the two others. The two-block graph proof uses a single opposite row space.",
+ "first_step": "Look for an actual three-block basis whose exact signature is absent from the generic cofactor screen. Use the explicit six-port tests as controls.",
+ "blocked_by": "The two-block coordinate-axis criterion alone does not describe sums of two opposite blocks."
+ },
+ {
+ "question": "Can exact per-signature basis multiplicities be expressed for arbitrary finite field order?",
+ "why_it_matters": "Feasibility does not give the probability of observing a signature under a uniform random basis.",
+ "first_step": "Recover the F2/F3 frequencies in SIX-PORTS.json from a rank or incidence summation on a fixed message profile.",
+ "blocked_by": "Counting compatible complementary pairs must preserve all row and column support requirements."
+ }
+ ],
+ "scope_key": "2bf6355a8dd01ca324fb",
+ "source_handoff": "https://github.com/CrocSwap/integer-mult-bounds/pull/6691"
+}
diff --git a/research/two-block-signatures/THREE-PRICES.json b/research/two-block-signatures/THREE-PRICES.json
new file mode 100644
index 0000000000..021caa5f0c
--- /dev/null
+++ b/research/two-block-signatures/THREE-PRICES.json
@@ -0,0 +1,37 @@
+[
+ {"x":[0,0,2,0,0,2,2],"y":[0,0,0,2,0,0,4],"terms":[[1,"Z",[0,0,0,0,0,2,4]],[2,"B",[0,0,1,2,0,0,3]]]},
+ {"x":[0,0,2,0,0,2,2],"y":[0,2,0,0,2,0,2],"terms":[[12,"Z",[0,1,1,0,1,2,1]],[6,"Z",[0,1,2,0,2,0,1]],[7,"B",[0,0,0,0,0,0,6]],[2,"B",[0,0,3,0,3,0,0]],[6,"B",[0,2,1,0,0,2,1]]]},
+ {"x":[0,0,2,0,0,2,2],"y":[0,2,0,1,1,0,2],"terms":[[17,"Z",[0,0,0,2,0,0,4]],[48,"Z",[0,1,2,1,0,0,2]],[46,"Z",[0,3,0,0,0,3,0]],[62,"B",[0,0,0,0,0,1,5]],[42,"B",[0,0,3,0,3,0,0]],[22,"B",[0,3,0,2,0,1,0]]]},
+ {"x":[0,0,2,0,0,2,2],"y":[0,2,0,2,0,0,2],"terms":[[9,"Z",[0,2,0,1,0,1,2]],[6,"B",[0,0,1,1,0,1,3]],[1,"B",[0,0,2,0,0,1,3]],[5,"B",[0,1,2,2,0,0,1]],[1,"B",[0,3,0,1,0,2,0]]]},
+ {"x":[0,0,2,0,0,2,2],"y":[1,1,0,0,2,0,2],"terms":[[27,"Z",[0,1,0,0,1,2,2]],[49,"Z",[1,0,1,0,0,0,4]],[2,"Z",[2,0,1,0,3,0,0]],[44,"B",[0,0,2,0,2,1,1]],[17,"B",[0,2,1,0,1,2,0]],[8,"B",[2,1,0,0,0,3,0]]]},
+ {"x":[0,0,2,0,0,2,2],"y":[2,0,0,0,0,0,4],"terms":[[2,"Z",[1,0,1,0,0,0,4]],[1,"B",[0,0,2,0,0,0,4]],[4,"B",[2,0,0,0,0,1,3]]]},
+ {"x":[0,0,2,0,0,2,2],"y":[2,0,0,0,2,0,2],"terms":[[2,"Z",[1,0,2,0,3,0,0]],[3,"Z",[2,0,0,0,0,1,3]],[2,"B",[0,0,1,0,1,1,3]],[2,"B",[0,0,2,0,0,1,3]],[3,"B",[2,0,0,0,2,1,1]]]},
+ {"x":[0,0,2,1,0,1,2],"y":[0,0,0,2,0,0,4],"terms":[[2,"Z",[0,0,0,2,0,0,4]],[1,"B",[0,0,0,0,0,2,4]],[4,"B",[0,0,1,2,0,0,3]]]},
+ {"x":[0,0,2,1,0,1,2],"y":[0,2,0,0,2,0,2],"terms":[[10,"Z",[0,0,0,2,0,0,4]],[3,"Z",[0,1,0,0,0,0,5]],[6,"Z",[0,1,2,1,0,0,2]],[7,"Z",[0,3,0,0,0,3,0]],[5,"B",[0,0,2,0,0,1,3]],[10,"B",[0,0,3,0,3,0,0]]]},
+ {"x":[0,0,2,1,0,1,2],"y":[0,2,0,1,1,0,2],"terms":[[17,"Z",[0,0,0,0,2,1,3]],[67,"Z",[0,1,1,2,0,0,2]],[11,"Z",[0,2,0,0,0,0,4]],[10,"B",[0,0,0,1,0,0,5]],[15,"B",[0,0,3,1,2,0,0]],[39,"B",[0,1,2,0,0,2,1]]]},
+ {"x":[0,0,2,1,0,1,2],"y":[0,2,0,2,0,0,2],"terms":[[6,"Z",[0,1,1,2,0,0,2]],[1,"B",[0,0,1,2,0,0,3]],[3,"B",[0,1,1,0,0,2,2]],[1,"B",[0,1,2,2,0,0,1]]]},
+ {"x":[0,0,2,1,0,1,2],"y":[1,1,0,0,2,0,2],"terms":[[9,"Z",[0,0,0,0,2,1,3]],[23,"Z",[0,2,0,0,0,1,3]],[8,"Z",[3,0,0,3,0,0,0]],[16,"B",[0,0,0,0,0,0,6]],[8,"B",[0,2,1,2,0,0,1]],[4,"B",[1,0,1,0,1,2,1]],[34,"B",[1,0,2,0,3,0,0]]]},
+ {"x":[0,0,2,1,0,1,2],"y":[2,0,0,0,0,0,4],"terms":[[1,"Z",[1,0,1,0,0,1,3]],[1,"B",[1,0,1,1,0,0,3]]]},
+ {"x":[0,0,2,1,0,1,2],"y":[2,0,0,0,2,0,2],"terms":[[8,"Z",[1,0,1,0,0,0,4]],[6,"Z",[1,0,2,1,2,0,0]],[1,"Z",[2,0,0,1,1,0,2]],[3,"B",[0,0,0,1,1,1,3]],[5,"B",[0,0,2,1,0,0,3]],[12,"B",[2,0,0,0,2,1,1]]]},
+ {"x":[0,0,2,2,0,0,2],"y":[0,0,0,2,0,0,4],"terms":[[1,"Z",[0,0,0,2,0,0,4]],[2,"B",[0,0,1,2,0,0,3]]]},
+ {"x":[0,0,2,2,0,0,2],"y":[0,2,0,0,2,0,2],"terms":[[5,"Z",[0,0,0,2,0,0,4]],[8,"Z",[0,0,3,1,2,0,0]],[10,"Z",[0,2,1,2,0,0,1]],[6,"B",[0,0,0,0,0,0,6]],[4,"B",[0,0,3,2,1,0,0]]]},
+ {"x":[0,0,2,2,0,0,2],"y":[0,2,0,1,1,0,2],"terms":[[16,"Z",[0,1,1,2,0,0,2]],[2,"Z",[0,1,2,0,2,0,1]],[5,"B",[0,0,0,1,1,0,4]],[4,"B",[0,0,3,2,1,0,0]],[4,"B",[0,2,1,1,0,0,2]]]},
+ {"x":[0,0,2,2,0,0,2],"y":[0,2,0,2,0,0,2],"terms":[[1,"Z",[0,2,0,2,0,0,2]],[2,"B",[0,1,0,2,0,0,3]],[2,"B",[0,2,1,2,0,0,1]]]},
+ {"x":[0,0,2,2,0,0,2],"y":[1,1,0,0,2,0,2],"terms":[[12,"Z",[0,0,0,1,0,0,5]],[13,"Z",[0,2,0,2,0,0,2]],[10,"Z",[2,0,1,0,3,0,0]],[12,"B",[0,0,2,1,0,0,3]],[8,"B",[0,0,3,1,2,0,0]],[6,"B",[1,0,2,2,1,0,0]]]},
+ {"x":[0,0,2,2,0,0,2],"y":[2,0,0,0,0,0,4],"terms":[[2,"Z",[0,0,1,2,0,0,3]],[1,"Z",[0,0,2,0,0,0,4]],[2,"Z",[3,0,0,3,0,0,0]],[6,"B",[1,0,1,0,0,0,4]]]},
+ {"x":[0,0,2,2,0,0,2],"y":[2,0,0,0,2,0,2],"terms":[[1,"Z",[1,0,0,0,1,0,4]],[1,"B",[1,0,2,2,1,0,0]]]},
+ {"x":[1,0,1,0,0,2,2],"y":[0,0,0,2,0,0,4],"terms":[[4,"Z",[0,0,0,1,0,1,4]],[2,"Z",[1,0,0,0,0,1,4]],[2,"Z",[3,0,0,3,0,0,0]],[5,"B",[0,0,1,0,0,2,3]],[3,"B",[0,0,1,2,0,0,3]]]},
+ {"x":[1,0,1,0,0,2,2],"y":[0,2,0,0,2,0,2],"terms":[[52,"Z",[0,1,0,0,1,2,2]],[16,"Z",[0,1,2,0,0,0,3]],[37,"Z",[1,0,1,0,0,0,4]],[4,"Z",[2,0,1,0,3,0,0]],[18,"B",[0,0,2,0,2,1,1]],[32,"B",[2,1,0,0,0,3,0]]]},
+ {"x":[1,0,1,0,0,2,2],"y":[0,2,0,1,1,0,2],"terms":[[11,"Z",[0,0,1,1,1,0,3]],[48,"Z",[0,1,2,0,1,2,0]],[28,"Z",[0,2,0,0,0,1,3]],[33,"Z",[2,0,0,0,1,2,1]],[27,"Z",[3,0,0,3,0,0,0]],[52,"B",[0,0,0,0,0,2,4]],[40,"B",[0,2,1,0,0,0,3]]]},
+ {"x":[1,0,1,0,0,2,2],"y":[0,2,0,2,0,0,2],"terms":[[1,"Z",[0,0,0,2,0,0,4]],[1,"B",[0,2,0,0,0,1,3]],[1,"B",[0,2,1,2,0,0,1]],[1,"B",[1,2,0,2,0,1,0]]]},
+ {"x":[1,0,1,0,0,2,2],"y":[1,1,0,0,2,0,2],"terms":[[16,"Z",[0,0,0,0,2,1,3]],[8,"Z",[1,0,2,0,3,0,0]],[21,"Z",[2,1,0,0,0,3,0]],[2,"B",[0,0,2,0,2,1,1]],[3,"B",[0,3,0,0,0,3,0]],[25,"B",[1,0,1,0,0,0,4]]]},
+ {"x":[1,0,1,0,0,2,2],"y":[2,0,0,0,0,0,4],"terms":[[1,"Z",[2,0,0,0,0,1,3]],[1,"B",[1,0,1,0,0,1,3]]]},
+ {"x":[1,0,1,0,0,2,2],"y":[2,0,0,0,2,0,2],"terms":[[2,"Z",[2,0,0,0,1,2,1]],[1,"B",[0,0,2,0,0,0,4]]]},
+ {"x":[2,0,0,0,0,2,2],"y":[0,0,0,2,0,0,4],"terms":[[1,"Z",[0,0,0,2,0,0,4]],[1,"B",[1,0,0,0,0,2,3]],[1,"B",[1,0,0,2,0,0,3]]]},
+ {"x":[2,0,0,0,0,2,2],"y":[0,2,0,0,2,0,2],"terms":[[1,"Z",[2,0,0,0,2,0,2]],[2,"Z",[2,1,0,0,0,3,0]],[1,"B",[0,0,0,0,0,0,6]]]},
+ {"x":[2,0,0,0,0,2,2],"y":[0,2,0,1,1,0,2],"terms":[[6,"Z",[0,2,0,1,1,0,2]],[1,"Z",[1,1,0,2,0,0,2]],[8,"Z",[2,1,0,0,0,3,0]],[3,"B",[0,1,0,0,0,2,3]],[5,"B",[1,0,0,0,2,0,3]],[8,"B",[1,1,0,1,0,0,3]]]},
+ {"x":[2,0,0,0,0,2,2],"y":[0,2,0,2,0,0,2],"terms":[[4,"Z",[0,1,0,1,0,0,4]],[1,"B",[0,0,0,0,0,1,5]],[6,"B",[1,2,0,2,0,1,0]],[1,"B",[2,0,0,0,0,1,3]]]},
+ {"x":[2,0,0,0,0,2,2],"y":[1,1,0,0,2,0,2],"terms":[[3,"Z",[0,2,0,0,0,0,4]],[2,"Z",[0,2,0,0,2,1,1]],[6,"Z",[2,0,0,0,1,0,3]],[10,"B",[2,0,0,0,1,2,1]]]},
+ {"x":[2,0,0,0,0,2,2],"y":[2,0,0,0,0,0,4],"terms":[[1,"Z",[2,0,0,0,0,1,3]],[1,"B",[2,0,0,0,0,1,3]]]},
+ {"x":[2,0,0,0,0,2,2],"y":[2,0,0,0,2,0,2],"terms":[[1,"Z",[2,0,0,0,2,0,2]],[2,"B",[2,0,0,0,1,0,3]],[2,"B",[2,0,0,0,2,1,1]]]}
+]
diff --git a/research/two-block-signatures/VALIDATION.md b/research/two-block-signatures/VALIDATION.md
new file mode 100644
index 0000000000..3d2401d29e
--- /dev/null
+++ b/research/two-block-signatures/VALIDATION.md
@@ -0,0 +1,46 @@
+# Sources and finite checks
+
+The general claim is a written proof. The checks below use exact arithmetic and independent counting algorithms. They were designed and implemented in the same assisted contribution. Independent human and formal proof-kernel review remain open.
+
+| Check | Domain and observed outcome |
+| --- | --- |
+| Four-port source control | Invert and decode every one of the 439 retained signed witnesses from Gonzalo Mier's #3997. Compare the complete code set and Nick Petalas's #6691 counts. The 391 zero-one signatures over the rationals and the 355 signatures in GL4 over the two-element field belong to different domains |
+| Construction | 3,485 matrices across all positive block splits of sizes 2–6. Check the input and inverse masks, and both inverse products, over Q, F2, F3 and F4 where applicable |
+| All six-port labels | Build and invert all 33,727 rational and 33,727 ternary witnesses, and all 30,547 binary witnesses, in their supplied label order. For the rational and ternary cases the second implementation uses integer fraction-free elimination, verifies the scaled inverse product and then reads the masks |
+| Generic perfect matchings | All 65,536 unrestricted four-port supports. The 37,823 structurally invertible ones give exactly the predecessor's 439 codes. All 262,144 six-port 3+3 graph-chart supports yield 2,500 codes for that fixed pivot labeling and 188 profiles under arbitrary relabeling |
+| Binary spaces | Enumerate both reduced row-echelon spaces and intersect their actual vector sets for every block split through six ports. At 3+3, all 714,240 complementary pairs among 1,395 three-spaces give exactly the 30,547 predicted codes. At 2+2, enumeration of all 65,536 binary matrices independently recovers all 20,160 invertible matrices, including every code's multiplicity |
+| Zero-one entries over Q | A separate census covers all 28,836,612,000 invertible six-port zero-one matrices. They give 179 profiles and 32,287 labels. Exact four-port cofactors check the whole small histogram |
+| Shared additive prices across three domains | All 35 candidate pairs for two strict gaps have exact positive dependences. Two positive tariffs realize the two different single gaps |
+| Ternary spaces | Enumerate all 33,880 three-spaces in six coordinates. Coordinate permutations and sign changes partition the first space into 31 orbits. For each representative, test every possible second space using projective-line intersections. With exact orbit weights, all 666,860,040 ordered complementary pairs give precisely the 188 predicted profiles. The two-port control accounts for 10,530 complementary pairs in four coordinates |
+| Closed formulas | The ordinary count and the three separate binary deficits agree with weighted seven-type enumeration for all 78 splits of sizes 2–13. Larger balanced values, including 32+32, are in RESULT.json |
+| Tariffs | Twelve label-dependent monotone price tables are checked on every six-port signature. The nonmonotone parity family is independently minimized at balanced sizes 2–8. The 21 rational certificates cover every missing binary profile and use exact integer inequalities or convex weights |
+
+## Why the finite oracles are independent
+
+[matching_oracle.py](matching_oracle.py) does not call the signature classifier or make an incidence test. For each port-level support it determines whether a full matching exists, and repeats the test after deleting the appropriate row and column for each entry of the inverse. The terms of a generic determinant have distinct monomials. A matching therefore characterizes nonvanishing over the rational function field. Encoding the set of supporting patterns in a bitset makes all the cofactor tests directly reproducible. A fixed pivot labeling does not cover every labeled signature, but permitting all label permutations covers every profile by the simultaneous-pivot proof.
+
+[binary_oracle.py](binary_oracle.py) constructs genuine finite subspaces, with no generic-rank assumption. [ternary_oracle.py](ternary_oracle.py) assigns each line its unique point in projective space and enumerates every row-echelon representative. Two equal-dimensional spaces in complementary ambient dimension are complementary exactly when their point sets do not intersect. Each first d-space has q^(d^2) complements, the graphs of linear maps over one fixed complement. Adjacent coordinate transpositions and independent sign changes preserve the seven-type counts under relabeling. For each orbit, its size times the representative's histogram gives the exact total. The total for a single labeling is the profile total divided by its multinomial multiplicity, with exact divisibility checked. For example, with all six messages mixed the pair counts are 64,560 over F2 and 309,983,240 over F3.
+
+The 12 separating prices and nine convex mixtures were found using numerical linear programming during exploration. The committed verifier checks every certificate with integer arithmetic against the complete binary profile set. No optimizer is needed to reproduce the published result.
+
+## Direct replay
+
+```sh
+python3.12 -I -W error -B research/two-block-signatures/verify.py
+python3.12 -I -O -W error -B research/two-block-signatures/verify.py
+python3.12 -I -W error -B research/two-block-signatures/census_check.py
+python3.12 -I -O -W error -B research/two-block-signatures/census_check.py
+python3.12 -I -W error -B research/two-block-signatures/label_check.py
+python3.12 -I -W error -B research/two-block-signatures/zero_one_census.py
+python3.12 -I -W error -B research/two-block-signatures/audit_mutations.py
+```
+
+Markers are `PASS_TWO_BLOCK_SIGNATURES`, `PASS_TWO_BLOCK_INDEPENDENT_CENSUSES`, `PASS_TWO_BLOCK_LABELED_WITNESSES`, `PASS_TWO_BLOCK_ZERO_ONE_Q` and `PASS_TWO_BLOCK_MUTATIONS`. The fault audit starts with six private-copy positive controls. Twenty-three actual substitutions are rejected for their named reasons under both interpreter modes. They include losing pivot capacity, relaxing an isolated binary entry, transposing the cofactor, treating four elements as two, ignoring an orbit weight, reducing rational determinants modulo two, corrupting a price certificate and altering a retained source. Normal and optimized scientific receipts agree.
+
+All scientific entry points are standalone, work on read-only package files and need no network or Git executable. In a full Git checkout the source-history check runs separately.
+
+```sh
+python3.12 -B scripts/check_research_commit.py --package research/two-block-signatures --check-source-history
+```
+
+On a POSIX system add `--check-modes` to check executable-mode provenance.
diff --git a/research/two-block-signatures/VERIFY.json b/research/two-block-signatures/VERIFY.json
new file mode 100644
index 0000000000..4bc802ab3c
--- /dev/null
+++ b/research/two-block-signatures/VERIFY.json
@@ -0,0 +1,95 @@
+{
+ "schema_version": 1,
+ "status": "ready",
+ "python": "3.12",
+ "requirements": [],
+ "inputs": [],
+ "commands": [
+ {
+ "argv": [
+ "{python}",
+ "-I",
+ "-W",
+ "error",
+ "-B",
+ "{package}/verify.py"
+ ],
+ "timeout_seconds": 100,
+ "checks": "Construct witnesses and check both inverse products, prior source bindings, quadratic count formulas and positive price certificates."
+ },
+ {
+ "argv": [
+ "{python}",
+ "-I",
+ "-O",
+ "-W",
+ "error",
+ "-B",
+ "{package}/verify.py"
+ ],
+ "timeout_seconds": 100,
+ "checks": "Repeat the complete constructive checks with optimizations enabled."
+ },
+ {
+ "argv": [
+ "{python}",
+ "-I",
+ "-W",
+ "error",
+ "-B",
+ "{package}/census_check.py"
+ ],
+ "timeout_seconds": 150,
+ "checks": "Independently enumerate generic cofactor matchings, binary complementary spaces and ternary projective point incidences."
+ },
+ {
+ "argv": [
+ "{python}",
+ "-I",
+ "-O",
+ "-W",
+ "error",
+ "-B",
+ "{package}/census_check.py"
+ ],
+ "timeout_seconds": 150,
+ "checks": "Repeat both finite-field and generic exhaustive censuses in optimized Python."
+ },
+ {
+ "argv": [
+ "{python}",
+ "-I",
+ "-W",
+ "error",
+ "-B",
+ "{package}/label_check.py"
+ ],
+ "timeout_seconds": 150,
+ "checks": "Literally invert every labeled six-port witness over Q and F3, and every available F2 witness."
+ },
+ {
+ "argv": [
+ "{python}",
+ "-I",
+ "-W",
+ "error",
+ "-B",
+ "{package}/zero_one_census.py"
+ ],
+ "timeout_seconds": 100,
+ "checks": "Exact rational zero-one coefficient census and positive dependences ruling out two strict six-port price gaps."
+ },
+ {
+ "argv": [
+ "{python}",
+ "-I",
+ "-W",
+ "error",
+ "-B",
+ "{package}/audit_mutations.py"
+ ],
+ "timeout_seconds": 300,
+ "checks": "Six private-copy positive controls. Twenty-three concrete faults rejected for specified reasons in normal and optimized interpreters."
+ }
+ ]
+}
diff --git a/research/two-block-signatures/ZERO-ONE.json b/research/two-block-signatures/ZERO-ONE.json
new file mode 100644
index 0000000000..12c52783e3
--- /dev/null
+++ b/research/two-block-signatures/ZERO-ONE.json
@@ -0,0 +1,214 @@
+{
+ "four_port": {
+ "spaces": 55,
+ "first_space_orbits": 7,
+ "ordered_space_pairs": 1680,
+ "invertible_matrices": 22560,
+ "profiles": 30,
+ "signatures": 391
+ },
+ "six_port": {
+ "spaces": 11445,
+ "first_space_orbits": 72,
+ "ordered_space_pairs": 81939900,
+ "invertible_matrices": 28836612000,
+ "profiles": 179,
+ "signatures": 32287
+ },
+ "three_domain_prices": {
+ "candidate_pairs": 35,
+ "examples": [
+ [
+ 10,
+ 10,
+ 11
+ ],
+ [
+ 8,
+ 9,
+ 9
+ ]
+ ]
+ },
+ "profiles": [
+ {"counts":[0,0,0,0,0,0,6],"matrices_per_label":3459385440,"matrix":["110000","101000","000111","011000","000110","100101"]},
+ {"counts":[0,0,0,0,0,1,5],"matrices_per_label":206118000,"matrix":["110000","101000","000111","100000","000110","011101"]},
+ {"counts":[0,0,0,0,0,2,4],"matrices_per_label":5032080,"matrix":["001100","001010","110001","100000","010000","001111"]},
+ {"counts":[0,0,0,0,1,0,5],"matrices_per_label":322000560,"matrix":["011000","010100","000011","001100","010010","100001"]},
+ {"counts":[0,0,0,0,1,1,4],"matrices_per_label":22405392,"matrix":["011000","010100","000011","010000","001010","100101"]},
+ {"counts":[0,0,0,0,1,2,3],"matrices_per_label":835200,"matrix":["010100","010010","001001","010000","001000","100111"]},
+ {"counts":[0,0,0,0,2,0,4],"matrices_per_label":13347648,"matrix":["001100","001010","001001","000110","101000","010001"]},
+ {"counts":[0,0,0,0,2,1,3],"matrices_per_label":997920,"matrix":["001100","001010","001001","001000","100100","010011"]},
+ {"counts":[0,0,0,1,0,0,5],"matrices_per_label":19040400,"matrix":["011000","010100","000011","010010","001101","100000"]},
+ {"counts":[0,0,0,1,0,1,4],"matrices_per_label":547056,"matrix":["001100","001010","010001","010000","001111","100000"]},
+ {"counts":[0,0,0,1,1,0,4],"matrices_per_label":984240,"matrix":["001100","001010","001001","000110","100000","011001"]},
+ {"counts":[0,0,0,1,1,1,3],"matrices_per_label":45936,"matrix":["001100","001010","001001","001000","100000","010111"]},
+ {"counts":[0,0,0,2,0,0,4],"matrices_per_label":20880,"matrix":["001100","001010","001001","001111","100000","010000"]},
+ {"counts":[0,0,1,0,0,0,5],"matrices_per_label":206118000,"matrix":["100000","011000","000111","110000","000110","001101"]},
+ {"counts":[0,0,1,0,0,1,4],"matrices_per_label":11508480,"matrix":["100000","011000","000111","010000","000110","101101"]},
+ {"counts":[0,0,1,0,0,2,3],"matrices_per_label":225504,"matrix":["100000","000110","011101","010000","001000","100111"]},
+ {"counts":[0,0,1,0,1,0,4],"matrices_per_label":62280576,"matrix":["100000","001100","000011","101000","100010","010101"]},
+ {"counts":[0,0,1,0,1,1,3],"matrices_per_label":4352616,"matrix":["100000","001100","000011","001000","100010","010101"]},
+ {"counts":[0,0,1,0,1,2,2],"matrices_per_label":185832,"matrix":["100000","001010","000101","001000","000100","110011"]},
+ {"counts":[0,0,1,0,2,0,3],"matrices_per_label":7159968,"matrix":["100000","000110","000101","100100","110000","001011"]},
+ {"counts":[0,0,1,0,2,1,2],"matrices_per_label":544320,"matrix":["100000","000110","000101","000100","110000","001011"]},
+ {"counts":[0,0,1,1,0,0,4],"matrices_per_label":3338496,"matrix":["100000","001100","000011","001010","101101","010000"]},
+ {"counts":[0,0,1,1,0,1,3],"matrices_per_label":75168,"matrix":["100000","000110","001101","001000","100111","010000"]},
+ {"counts":[0,0,1,1,1,0,3],"matrices_per_label":523584,"matrix":["100000","000110","000101","100100","010000","001011"]},
+ {"counts":[0,0,1,1,1,1,2],"matrices_per_label":25056,"matrix":["100000","000110","000101","000100","010000","101011"]},
+ {"counts":[0,0,1,2,0,0,3],"matrices_per_label":25056,"matrix":["100000","000110","000101","100111","010000","001000"]},
+ {"counts":[0,0,2,0,0,0,4],"matrices_per_label":5032080,"matrix":["100000","010000","001111","101000","000110","010101"]},
+ {"counts":[0,0,2,0,0,1,3],"matrices_per_label":225504,"matrix":["100000","010000","001111","001000","000110","110101"]},
+ {"counts":[0,0,2,0,1,0,3],"matrices_per_label":7011504,"matrix":["100000","010000","000111","100100","100010","011001"]},
+ {"counts":[0,0,2,0,1,1,2],"matrices_per_label":507384,"matrix":["100000","010000","000111","000100","100010","011001"]},
+ {"counts":[0,0,2,0,1,2,1],"matrices_per_label":30276,"matrix":["100000","010000","000111","000100","000010","111001"]},
+ {"counts":[0,0,2,0,2,0,2],"matrices_per_label":7882200,"matrix":["100000","010000","000011","100010","101000","010101"]},
+ {"counts":[0,0,2,0,2,1,1],"matrices_per_label":657720,"matrix":["100000","010000","000011","000010","101000","010101"]},
+ {"counts":[0,0,2,1,0,0,3],"matrices_per_label":225504,"matrix":["100000","010000","000111","000110","110101","001000"]},
+ {"counts":[0,0,2,1,1,0,2],"matrices_per_label":507384,"matrix":["100000","010000","000011","100010","001000","010101"]},
+ {"counts":[0,0,2,1,1,1,1],"matrices_per_label":30276,"matrix":["100000","010000","000011","000010","001000","110101"]},
+ {"counts":[0,0,3,0,3,0,0],"matrices_per_label":8320680,"matrix":["100000","010000","001000","100100","100010","011001"]},
+ {"counts":[0,0,3,1,2,0,0],"matrices_per_label":657720,"matrix":["100000","010000","001000","000100","100010","011001"]},
+ {"counts":[0,0,3,2,1,0,0],"matrices_per_label":30276,"matrix":["100000","010000","001000","000100","000010","111001"]},
+ {"counts":[0,1,0,0,0,0,5],"matrices_per_label":322000560,"matrix":["011000","010100","100011","001100","010010","010001"]},
+ {"counts":[0,1,0,0,0,1,4],"matrices_per_label":62280576,"matrix":["011000","010100","100011","010000","001010","000101"]},
+ {"counts":[0,1,0,0,0,2,3],"matrices_per_label":7011504,"matrix":["010100","010010","101001","010000","001000","000111"]},
+ {"counts":[0,1,0,0,1,0,4],"matrices_per_label":27841104,"matrix":["001100","001010","100001","000110","001001","011000"]},
+ {"counts":[0,1,0,0,1,1,3],"matrices_per_label":5979096,"matrix":["001100","001010","100001","001000","000101","010010"]},
+ {"counts":[0,1,0,0,1,2,2],"matrices_per_label":835200,"matrix":["001010","001001","100100","001000","000100","010011"]},
+ {"counts":[0,1,0,0,2,0,3],"matrices_per_label":1118880,"matrix":["000110","000101","100100","000011","010100","001100"]},
+ {"counts":[0,1,0,0,2,1,2],"matrices_per_label":281952,"matrix":["000110","000101","100100","000100","010010","001001"]},
+ {"counts":[0,1,0,1,0,0,4],"matrices_per_label":5345568,"matrix":["001100","001010","100001","000110","001001","010000"]},
+ {"counts":[0,1,0,1,0,1,3],"matrices_per_label":691128,"matrix":["001100","001010","100001","001000","000111","010000"]},
+ {"counts":[0,1,0,1,1,0,3],"matrices_per_label":234792,"matrix":["000110","000101","100100","000011","010000","001100"]},
+ {"counts":[0,1,0,1,1,1,2],"matrices_per_label":45936,"matrix":["000110","000101","100100","000100","010000","001011"]},
+ {"counts":[0,1,0,2,0,0,3],"matrices_per_label":39672,"matrix":["000110","000101","100100","000111","010000","001000"]},
+ {"counts":[0,1,1,0,0,0,4],"matrices_per_label":22405392,"matrix":["010000","001100","100011","011000","010010","000101"]},
+ {"counts":[0,1,1,0,0,1,3],"matrices_per_label":4352616,"matrix":["010000","001100","100011","001000","010010","000101"]},
+ {"counts":[0,1,1,0,0,2,2],"matrices_per_label":507384,"matrix":["010000","001010","100101","001000","000100","010011"]},
+ {"counts":[0,1,1,0,1,0,3],"matrices_per_label":5979096,"matrix":["010000","000110","100001","010100","010001","001010"]},
+ {"counts":[0,1,1,0,1,1,2],"matrices_per_label":1330776,"matrix":["010000","000110","100001","000100","010001","001010"]},
+ {"counts":[0,1,1,0,1,2,1],"matrices_per_label":185832,"matrix":["010000","000101","100010","000100","000010","011001"]},
+ {"counts":[0,1,1,0,2,0,2],"matrices_per_label":643392,"matrix":["010000","000011","100010","010010","011000","000101"]},
+ {"counts":[0,1,1,0,2,1,1],"matrices_per_label":153792,"matrix":["010000","000011","100010","000010","011000","000101"]},
+ {"counts":[0,1,1,1,0,0,3],"matrices_per_label":1088856,"matrix":["010000","000110","100001","010100","000011","001000"]},
+ {"counts":[0,1,1,1,0,1,2],"matrices_per_label":135720,"matrix":["010000","000110","100001","000100","010011","001000"]},
+ {"counts":[0,1,1,1,1,0,2],"matrices_per_label":134496,"matrix":["010000","000011","100010","010010","001000","000101"]},
+ {"counts":[0,1,1,1,1,1,1],"matrices_per_label":25056,"matrix":["010000","000011","100010","000010","001000","010101"]},
+ {"counts":[0,1,1,2,0,0,2],"matrices_per_label":8352,"matrix":["010000","100010","100001","010011","001000","000100"]},
+ {"counts":[0,1,2,0,0,0,3],"matrices_per_label":835200,"matrix":["010000","001000","100111","010100","010010","001001"]},
+ {"counts":[0,1,2,0,0,1,2],"matrices_per_label":185832,"matrix":["010000","001000","100111","000100","010010","001001"]},
+ {"counts":[0,1,2,0,0,2,1],"matrices_per_label":30276,"matrix":["010000","001000","100111","000100","000010","011001"]},
+ {"counts":[0,1,2,0,1,0,2],"matrices_per_label":835200,"matrix":["010000","001000","100011","010010","010001","001100"]},
+ {"counts":[0,1,2,0,1,1,1],"matrices_per_label":185832,"matrix":["010000","001000","100011","000010","010001","001100"]},
+ {"counts":[0,1,2,0,1,2,0],"matrices_per_label":30276,"matrix":["010000","001000","100011","000010","000001","011100"]},
+ {"counts":[0,1,2,0,2,0,1],"matrices_per_label":835200,"matrix":["010000","001000","100001","010001","010100","001010"]},
+ {"counts":[0,1,2,0,2,1,0],"matrices_per_label":185832,"matrix":["010000","001000","100001","000001","010100","001010"]},
+ {"counts":[0,1,2,1,0,0,2],"matrices_per_label":185832,"matrix":["010000","001000","100011","010010","001001","000100"]},
+ {"counts":[0,1,2,1,0,1,1],"matrices_per_label":30276,"matrix":["010000","001000","100011","000010","011001","000100"]},
+ {"counts":[0,1,2,1,1,0,1],"matrices_per_label":185832,"matrix":["010000","001000","100001","010001","000100","001010"]},
+ {"counts":[0,1,2,1,1,1,0],"matrices_per_label":30276,"matrix":["010000","001000","100001","000001","000100","011010"]},
+ {"counts":[0,1,2,2,0,0,1],"matrices_per_label":30276,"matrix":["010000","001000","100001","011001","000100","000010"]},
+ {"counts":[0,2,0,0,0,0,4],"matrices_per_label":13347648,"matrix":["101000","100100","010011","001100","001010","001001"]},
+ {"counts":[0,2,0,0,0,1,3],"matrices_per_label":7159968,"matrix":["001100","101000","010011","001000","000110","000101"]},
+ {"counts":[0,2,0,0,0,2,2],"matrices_per_label":7882200,"matrix":["001010","101000","010101","001000","000100","000011"]},
+ {"counts":[0,2,0,0,1,0,3],"matrices_per_label":1118880,"matrix":["100100","100010","010001","000110","000101","001100"]},
+ {"counts":[0,2,0,0,1,1,2],"matrices_per_label":643392,"matrix":["000110","100100","010001","000100","000011","001010"]},
+ {"counts":[0,2,0,0,1,2,1],"matrices_per_label":835200,"matrix":["000101","100100","010010","000100","000010","001001"]},
+ {"counts":[0,2,0,0,2,0,2],"matrices_per_label":44496,"matrix":["100010","100001","110000","000011","001010","000110"]},
+ {"counts":[0,2,0,0,2,1,1],"matrices_per_label":38016,"matrix":["000011","100010","010010","000010","001001","000101"]},
+ {"counts":[0,2,0,1,0,0,3],"matrices_per_label":564192,"matrix":["100100","100010","010001","000110","000101","001000"]},
+ {"counts":[0,2,0,1,0,1,2],"matrices_per_label":712008,"matrix":["000110","100100","010001","000100","000011","001000"]},
+ {"counts":[0,2,0,1,1,0,2],"matrices_per_label":21312,"matrix":["100010","100001","110000","000011","001000","000110"]},
+ {"counts":[0,2,0,1,1,1,1],"matrices_per_label":45936,"matrix":["000011","100010","010010","000010","001000","000101"]},
+ {"counts":[0,2,0,2,0,0,2],"matrices_per_label":22968,"matrix":["100010","100001","110000","000011","001000","000100"]},
+ {"counts":[0,2,1,0,0,0,3],"matrices_per_label":997920,"matrix":["001000","100100","010011","001100","001010","001001"]},
+ {"counts":[0,2,1,0,0,1,2],"matrices_per_label":544320,"matrix":["001000","100100","010011","000100","001010","001001"]},
+ {"counts":[0,2,1,0,0,2,1],"matrices_per_label":657720,"matrix":["001000","100100","010011","000100","000010","001001"]},
+ {"counts":[0,2,1,0,1,0,2],"matrices_per_label":281952,"matrix":["001000","100010","010001","001010","001001","001100"]},
+ {"counts":[0,2,1,0,1,1,1],"matrices_per_label":153792,"matrix":["001000","100010","010001","000010","001001","001100"]},
+ {"counts":[0,2,1,0,1,2,0],"matrices_per_label":185832,"matrix":["001000","100010","010001","000010","000001","001100"]},
+ {"counts":[0,2,1,0,2,0,1],"matrices_per_label":38016,"matrix":["001000","100001","010001","001001","001100","001010"]},
+ {"counts":[0,2,1,0,2,1,0],"matrices_per_label":20736,"matrix":["001000","100001","010001","000001","001100","001010"]},
+ {"counts":[0,2,1,1,0,0,2],"matrices_per_label":153792,"matrix":["001000","100010","010001","001010","001001","000100"]},
+ {"counts":[0,2,1,1,0,1,1],"matrices_per_label":185832,"matrix":["001000","100010","010001","000010","001001","000100"]},
+ {"counts":[0,2,1,1,1,0,1],"matrices_per_label":20736,"matrix":["001000","100001","010001","001001","000100","001010"]},
+ {"counts":[0,2,1,1,1,1,0],"matrices_per_label":25056,"matrix":["001000","100001","010001","000001","000100","001010"]},
+ {"counts":[0,2,1,2,0,0,1],"matrices_per_label":25056,"matrix":["001000","100001","010001","001001","000100","000010"]},
+ {"counts":[0,3,0,0,0,3,0],"matrices_per_label":8320680,"matrix":["100100","010100","001011","000100","000010","000001"]},
+ {"counts":[0,3,0,1,0,2,0],"matrices_per_label":835200,"matrix":["100010","010010","001001","000010","000001","000100"]},
+ {"counts":[0,3,0,2,0,1,0],"matrices_per_label":45936,"matrix":["100001","010001","001001","000001","000100","000010"]},
+ {"counts":[1,0,0,0,0,0,5],"matrices_per_label":19040400,"matrix":["100000","011000","000111","010100","010010","001001"]},
+ {"counts":[1,0,0,0,0,1,4],"matrices_per_label":3338496,"matrix":["100000","011000","000111","010000","000110","001101"]},
+ {"counts":[1,0,0,0,0,2,3],"matrices_per_label":225504,"matrix":["100000","000110","011101","010000","001000","000111"]},
+ {"counts":[1,0,0,0,1,0,4],"matrices_per_label":5345568,"matrix":["100000","001100","000011","001010","000110","010001"]},
+ {"counts":[1,0,0,0,1,1,3],"matrices_per_label":1088856,"matrix":["100000","001100","000011","001000","000110","010001"]},
+ {"counts":[1,0,0,0,1,2,2],"matrices_per_label":185832,"matrix":["100000","001010","000101","001000","000100","010011"]},
+ {"counts":[1,0,0,0,2,0,3],"matrices_per_label":564192,"matrix":["100000","000110","000101","000011","010100","001100"]},
+ {"counts":[1,0,0,0,2,1,2],"matrices_per_label":153792,"matrix":["100000","000110","000101","000100","010010","001001"]},
+ {"counts":[1,0,0,1,0,0,4],"matrices_per_label":946944,"matrix":["100000","001100","000011","001010","001101","010000"]},
+ {"counts":[1,0,0,1,0,1,3],"matrices_per_label":75168,"matrix":["100000","000110","001101","001000","000111","010000"]},
+ {"counts":[1,0,0,1,1,0,3],"matrices_per_label":114912,"matrix":["100000","000110","000101","000011","010000","001100"]},
+ {"counts":[1,0,0,1,1,1,2],"matrices_per_label":25056,"matrix":["100000","000110","000101","000100","010000","001011"]},
+ {"counts":[1,0,0,2,0,0,3],"matrices_per_label":25056,"matrix":["100000","000110","000101","000111","010000","001000"]},
+ {"counts":[1,0,1,0,0,0,4],"matrices_per_label":547056,"matrix":["010000","100000","001111","011000","000110","000101"]},
+ {"counts":[1,0,1,0,0,1,3],"matrices_per_label":75168,"matrix":["010000","100000","001111","001000","000110","010101"]},
+ {"counts":[1,0,1,0,1,0,3],"matrices_per_label":691128,"matrix":["010000","100000","000111","010100","010010","001001"]},
+ {"counts":[1,0,1,0,1,1,2],"matrices_per_label":135720,"matrix":["010000","100000","000111","000100","010010","001001"]},
+ {"counts":[1,0,1,0,1,2,1],"matrices_per_label":30276,"matrix":["010000","100000","000111","000100","000010","011001"]},
+ {"counts":[1,0,1,0,2,0,2],"matrices_per_label":712008,"matrix":["010000","100000","000011","010010","011000","000101"]},
+ {"counts":[1,0,1,0,2,1,1],"matrices_per_label":185832,"matrix":["010000","100000","000011","000010","011000","000101"]},
+ {"counts":[1,0,1,1,0,0,3],"matrices_per_label":75168,"matrix":["010000","100000","000111","000110","010101","001000"]},
+ {"counts":[1,0,1,1,1,0,2],"matrices_per_label":135720,"matrix":["010000","100000","000011","010010","001000","000101"]},
+ {"counts":[1,0,1,1,1,1,1],"matrices_per_label":30276,"matrix":["010000","100000","000011","000010","001000","010101"]},
+ {"counts":[1,0,2,0,3,0,0],"matrices_per_label":835200,"matrix":["010000","001000","100000","010100","010010","001001"]},
+ {"counts":[1,0,2,1,2,0,0],"matrices_per_label":185832,"matrix":["010000","001000","100000","000100","010010","001001"]},
+ {"counts":[1,0,2,2,1,0,0],"matrices_per_label":30276,"matrix":["010000","001000","100000","000100","000010","011001"]},
+ {"counts":[1,1,0,0,0,0,4],"matrices_per_label":984240,"matrix":["100000","001100","010011","001010","000110","001001"]},
+ {"counts":[1,1,0,0,0,1,3],"matrices_per_label":523584,"matrix":["100000","001100","010011","001000","000110","000101"]},
+ {"counts":[1,1,0,0,0,2,2],"matrices_per_label":507384,"matrix":["100000","001010","010101","001000","000100","000011"]},
+ {"counts":[1,1,0,0,1,0,3],"matrices_per_label":234792,"matrix":["100000","000110","010001","000101","000011","001100"]},
+ {"counts":[1,1,0,0,1,1,2],"matrices_per_label":134496,"matrix":["100000","000110","010001","000100","000011","001010"]},
+ {"counts":[1,1,0,0,1,2,1],"matrices_per_label":185832,"matrix":["100000","000101","010010","000100","000010","001001"]},
+ {"counts":[1,1,0,0,2,0,2],"matrices_per_label":21312,"matrix":["100000","010010","010001","000011","001010","000110"]},
+ {"counts":[1,1,0,0,2,1,1],"matrices_per_label":20736,"matrix":["100000","000011","010010","000010","001001","000101"]},
+ {"counts":[1,1,0,1,0,0,3],"matrices_per_label":114912,"matrix":["100000","000110","010001","000101","000011","001000"]},
+ {"counts":[1,1,0,1,0,1,2],"matrices_per_label":135720,"matrix":["100000","000110","010001","000100","000011","001000"]},
+ {"counts":[1,1,0,1,1,0,2],"matrices_per_label":9216,"matrix":["100000","010010","010001","000011","001000","000110"]},
+ {"counts":[1,1,0,1,1,1,1],"matrices_per_label":25056,"matrix":["100000","000011","010010","000010","001000","000101"]},
+ {"counts":[1,1,0,2,0,0,2],"matrices_per_label":8352,"matrix":["100000","010010","010001","000011","001000","000100"]},
+ {"counts":[1,1,1,0,0,0,3],"matrices_per_label":45936,"matrix":["001000","100000","010111","001100","001010","001001"]},
+ {"counts":[1,1,1,0,0,1,2],"matrices_per_label":25056,"matrix":["001000","100000","010111","000100","001010","001001"]},
+ {"counts":[1,1,1,0,0,2,1],"matrices_per_label":30276,"matrix":["001000","100000","010111","000100","000010","001001"]},
+ {"counts":[1,1,1,0,1,0,2],"matrices_per_label":45936,"matrix":["001000","100000","010011","001010","001001","001100"]},
+ {"counts":[1,1,1,0,1,1,1],"matrices_per_label":25056,"matrix":["001000","100000","010011","000010","001001","001100"]},
+ {"counts":[1,1,1,0,1,2,0],"matrices_per_label":30276,"matrix":["001000","100000","010011","000010","000001","001100"]},
+ {"counts":[1,1,1,0,2,0,1],"matrices_per_label":45936,"matrix":["001000","100000","010001","001001","001100","001010"]},
+ {"counts":[1,1,1,0,2,1,0],"matrices_per_label":25056,"matrix":["001000","100000","010001","000001","001100","001010"]},
+ {"counts":[1,1,1,1,0,0,2],"matrices_per_label":25056,"matrix":["001000","100000","010011","001010","001001","000100"]},
+ {"counts":[1,1,1,1,0,1,1],"matrices_per_label":30276,"matrix":["001000","100000","010011","000010","001001","000100"]},
+ {"counts":[1,1,1,1,1,0,1],"matrices_per_label":25056,"matrix":["001000","100000","010001","001001","000100","001010"]},
+ {"counts":[1,1,1,1,1,1,0],"matrices_per_label":30276,"matrix":["001000","100000","010001","000001","000100","001010"]},
+ {"counts":[1,1,1,2,0,0,1],"matrices_per_label":30276,"matrix":["001000","100000","010001","001001","000100","000010"]},
+ {"counts":[1,2,0,0,0,3,0],"matrices_per_label":657720,"matrix":["100000","010100","001011","000100","000010","000001"]},
+ {"counts":[1,2,0,1,0,2,0],"matrices_per_label":185832,"matrix":["100000","010010","001001","000010","000001","000100"]},
+ {"counts":[1,2,0,2,0,1,0],"matrices_per_label":25056,"matrix":["100000","010001","001001","000001","000100","000010"]},
+ {"counts":[2,0,0,0,0,0,4],"matrices_per_label":20880,"matrix":["100000","010000","001111","001100","001010","001001"]},
+ {"counts":[2,0,0,0,0,1,3],"matrices_per_label":25056,"matrix":["100000","010000","001111","001000","000110","000101"]},
+ {"counts":[2,0,0,0,1,0,3],"matrices_per_label":39672,"matrix":["100000","010000","000111","000110","000101","001100"]},
+ {"counts":[2,0,0,0,1,1,2],"matrices_per_label":8352,"matrix":["100000","010000","000111","000100","001010","001001"]},
+ {"counts":[2,0,0,0,1,2,1],"matrices_per_label":30276,"matrix":["100000","010000","000111","000100","000010","001001"]},
+ {"counts":[2,0,0,0,2,0,2],"matrices_per_label":22968,"matrix":["100000","010000","000011","001010","001001","000110"]},
+ {"counts":[2,0,0,0,2,1,1],"matrices_per_label":25056,"matrix":["100000","010000","000011","000010","001001","000101"]},
+ {"counts":[2,0,0,1,0,0,3],"matrices_per_label":25056,"matrix":["100000","010000","000111","000110","000101","001000"]},
+ {"counts":[2,0,0,1,1,0,2],"matrices_per_label":8352,"matrix":["100000","010000","000011","001000","000110","000101"]},
+ {"counts":[2,0,0,1,1,1,1],"matrices_per_label":30276,"matrix":["100000","010000","000011","000010","001000","000101"]},
+ {"counts":[2,0,1,0,3,0,0],"matrices_per_label":45936,"matrix":["001000","100000","010000","001100","001010","001001"]},
+ {"counts":[2,0,1,1,2,0,0],"matrices_per_label":25056,"matrix":["001000","100000","010000","000100","001010","001001"]},
+ {"counts":[2,0,1,2,1,0,0],"matrices_per_label":30276,"matrix":["001000","100000","010000","000100","000010","001001"]},
+ {"counts":[2,1,0,0,0,3,0],"matrices_per_label":30276,"matrix":["100000","010000","001111","000100","000010","000001"]},
+ {"counts":[2,1,0,1,0,2,0],"matrices_per_label":30276,"matrix":["100000","010000","001011","000010","000001","000100"]},
+ {"counts":[2,1,0,2,0,1,0],"matrices_per_label":30276,"matrix":["100000","010000","001001","000001","000100","000010"]},
+ {"counts":[3,0,0,3,0,0,0],"matrices_per_label":30276,"matrix":["100000","010000","001000","000100","000010","000001"]}
+ ]
+}
diff --git a/research/two-block-signatures/ZERO-ONE.md b/research/two-block-signatures/ZERO-ONE.md
new file mode 100644
index 0000000000..b77f2cd524
--- /dev/null
+++ b/research/two-block-signatures/ZERO-ONE.md
@@ -0,0 +1,24 @@
+# Zero-one entries, with the inverse taken over the rationals
+
+The word “binary” in Gonzalo Mier's #3990 refers to **coefficients restricted to zero and one**. Its inverse is taken over the rationals. In four ports this gives 391 signatures, between the 355 attained in the two-element field and the 439 attained over unrestricted rationals. The analogous six-port counts are **30,547, 32,287 and 33,727**, respectively. The middle quantity is a finite coefficient census and does not extend the arbitrary-size sufficiency theorem to a restricted alphabet. [#3990](https://github.com/CrocSwap/integer-mult-bounds/pull/3990) · [#3997](https://github.com/CrocSwap/integer-mult-bounds/pull/3997)
+
+## How the enumeration covers every matrix
+
+1. For each triple of distinct nonzero zero-one rows, compute its 20 maximal minors. A nonzero minor vector identifies its rational row space up to a common scalar. Dividing by the gcd and fixing the sign gives a unique key. One way to see uniqueness is to choose a nonzero pivot minor. Ratios of the minors that replace one pivot column recover the entries in that pivot chart by Cramer's rule. Every independent unordered triple contributes six ordered row bases to its space. This gives 11,445 spaces spanned by an admissible basis.
+2. A coordinate is absent from that space if no nonzero pivot minor uses it. Its coordinate vector lies in the space if every nonzero pivot minor uses it, because deletion of that column then drops the row rank. Thus the two incidences needed for the signature are read from the minor key.
+3. Two spaces are complementary exactly when the signed sum of products of their minors on complementary column sets is nonzero. This is Laplace expansion of the stacked determinant over the integers. Coordinate permutations preserve the signature profile and number of zero-one row bases. Their action on the first space gives 72 orbits. Test every second space against one representative and multiply by the orbit size. For each complementary pair, multiply by the numbers of ordered zero-one bases in its two spaces to count actual matrices.
+4. The result is 81,939,900 ordered pairs of admissible complementary spaces and 28,836,612,000 invertible matrices. There are 179 message profiles or 32,287 labeled signatures. Dividing each profile's matrix count by its multinomial multiplicity gives the exact count per label. A first representative is relabeled canonically and inverted over the rationals before publication. [Matrices and per-label counts](ZERO-ONE.json) · [Executable census](zero_one_census.py)
+
+As a separate control, literal integer cofactors on all 65,536 four-port matrices reproduce the entire four-port profile histogram, including all 22,560 invertible matrices and all 391 labeled codes. The six-port total of invertible matrices is a previously published figure. The distinct question here is their block source/reader distribution. [Živković, *Classification of small (0,1) matrices*](https://arxiv.org/abs/math/0511636) · [Dai, Kim and Kim, Table 1](https://archive.ymsc.tsinghua.edu.cn/pacm_download/21/59-2008Invertibility_probability_of_binary_matrices.pdf)
+
+The zero-one graph witnesses for all feasible two-element-field signatures have odd determinant. In those pivot charts the masks depend on which rows and columns are zero, so the integer matrices retain their signatures over the rationals. The six-port restricted alphabet thus adds 1,740 labeled signatures to the binary-field set and leaves 1,440 ordinary signatures unrealized. The strict positive-tariff example in the main proof is attained with zero-one entries over the rationals.
+
+## Why the three minima cannot all be distinct
+
+Fix one additive seven-type price vector shared by all six messages. Let O, Z and B denote the ordinary, rational zero-one and binary-field profile sets. They are nested, so the minima are weakly increasing in this order. **At least two adjacent minima agree**, for every real price vector in this six-port model.
+
+If both gaps were strict, some profile x outside Z would beat every profile in Z, and some profile y in Z but outside B would beat every profile in B. Each must also beat all of B. The nine convex-mixture certificates from [PRICE-CERTIFICATES.json](PRICE-CERTIFICATES.json) exclude those profiles from either role. This leaves five possible x and seven possible y.
+
+For each of the 35 pairs, [THREE-PRICES.json](THREE-PRICES.json) gives positive integer weights on differences of the form z−x with z in Z, or b−y with b in B. The weighted sum is the zero vector. Under the two proposed strict price gaps each of its terms would have strictly positive dot product with the common price, which is impossible. The verifier checks the domains, signs, all seven coordinate sums and coverage of the 35 pairs. Numerical linear programming found the weights; exact integer arithmetic certifies them.
+
+Either single gap can occur. In seven-type order, prices (3,3,3,1,2,2,2) yield minima (10,10,11), while (2,3,1,2,3,1,2) yield (8,9,9). This finite conclusion concerns the same price table at every label. Message-dependent nonmonotone tariffs are outside its scope.
diff --git a/research/two-block-signatures/algebra.py b/research/two-block-signatures/algebra.py
new file mode 100644
index 0000000000..f976b877b8
--- /dev/null
+++ b/research/two-block-signatures/algebra.py
@@ -0,0 +1,70 @@
+"""Literal inverse and mask reading for the finite witnesses. No residue or signature classification."""
+from fractions import Fraction
+
+
+class Field:
+ def __init__(self, label):
+ self.label = label
+ self.modulus = {"Q":0, "F2":2, "F3":3, "F4":4}[label]
+
+ def value(self, a):
+ return Fraction(a) if self.label == "Q" else a % self.modulus
+
+ def minus(self, a, b):
+ if self.label == "F4":
+ return a ^ b
+ return (a-b) % self.modulus if self.modulus else a-b
+
+ def times(self, a, b):
+ if self.label == "F4":
+ # F2[z]/(z^2+z+1), coefficient bits in ascending degree.
+ raw = (a if b&1 else 0) ^ (a << 1 if b&2 else 0)
+ return raw ^ 7 if raw & 4 else raw
+ return (a*b) % self.modulus if self.modulus else a*b
+
+ def reciprocal(self, a):
+ if self.label == "F4":
+ return (None,1,3,2)[a]
+ return pow(a, -1, self.modulus) if self.modulus else 1/a
+
+
+def inverse(matrix, field):
+ n = len(matrix)
+ f = Field(field)
+ rows = [[f.value(a) for a in row] + [int(i == j) for j in range(n)] for i,row in enumerate(matrix)]
+ for j in range(n):
+ pivot = next((i for i in range(j,n) if rows[i][j]), None)
+ if pivot is None:
+ return None
+ rows[j], rows[pivot] = rows[pivot], rows[j]
+ scale = f.reciprocal(rows[j][j])
+ rows[j] = [f.times(scale,x) for x in rows[j]]
+ for i in range(n):
+ if i != j and rows[i][j]:
+ c = rows[i][j]
+ rows[i] = [f.minus(x,f.times(c,y)) for x,y in zip(rows[i],rows[j],strict=True)]
+ return tuple(tuple(row[n:]) for row in rows)
+
+
+def masks(matrix, inv, p):
+ symbols = []
+ for j in range(len(matrix)):
+ sources = int(any(row[j] for row in matrix[:p])) + 2*int(any(row[j] for row in matrix[p:]))
+ readers = int(any(inv[j][:p])) + 2*int(any(inv[j][p:]))
+ symbols.append(4*sources + readers)
+ return tuple(symbols)
+
+
+def inverse_is_two_sided(matrix, inv, field):
+ f = Field(field)
+ n = len(matrix)
+ for first, second in ((matrix,inv), (inv,matrix)):
+ for i in range(n):
+ for j in range(n):
+ # Subtract the entire dot product from the desired entry.
+ delta = int(i == j)
+ for k in range(n):
+ delta = f.minus(delta, f.times(first[i][k], second[k][j]))
+ if delta:
+ return False
+ return True
diff --git a/research/two-block-signatures/audit_mutations.py b/research/two-block-signatures/audit_mutations.py
new file mode 100644
index 0000000000..1b21ae66ae
--- /dev/null
+++ b/research/two-block-signatures/audit_mutations.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python3
+"""Run positive controls and introduce one semantic fault per private copy."""
+import json
+from pathlib import Path
+import shutil
+import subprocess
+import sys
+import tempfile
+
+PACKAGE = Path(__file__).resolve().parent
+PRIMARY, CENSUS = "verify.py", "census_check.py"
+# Use one exact substitution per source fault. Reject only the named diagnostic.
+FAULTS = [
+ ("oversubscribed pivots", "signatures.py", "if u < 0 or w < 0:", "if u < -1 or w < -1:", CENSUS, "binary space census disagrees"),
+ ("ignore A saturation", "signatures.py", "if (p-v.aa-v.ma == 0) != (q-v.bb-v.bm == 0):", "if False:", CENSUS, "binary space census disagrees"),
+ ("ignore B saturation", "signatures.py", "if (q-v.bb-v.mb == 0) != (p-v.aa-v.am == 0):", "if False:", CENSUS, "binary space census disagrees"),
+ ("only one slack for an isolated bit", "signatures.py", "(v.am and v.mb) or (v.ma and v.bm)", "(v.am or v.mb) or (v.ma or v.bm)", CENSUS, "binary space census disagrees"),
+ ("admit odd one-row core", "signatures.py", 'return "ok" if v.am or v.ma else "binary one A"', 'return "ok"', CENSUS, "binary space census disagrees"),
+ ("admit odd one-column core", "signatures.py", 'return "ok" if v.mb or v.bm else "binary one B"', 'return "ok"', CENSUS, "binary space census disagrees"),
+ ("apply binary exception to F4", "signatures.py", 'binary=field == "F2"', 'binary=field in ("F2","F4")', PRIMARY, "binary 1x1"),
+ ("ignore ternary pivot scalar", "signatures.py", '"F3": 2 if u*w%3 == 1 else 1', '"F3": 1', PRIMARY, "constructed witness is singular"),
+ ("keep both core entries", "signatures.py", 'if field == "F2" and u*w % 2:', 'if False:', PRIMARY, "constructed witness is singular"),
+ ("reverse reader block", "binary_oracle.py", "2*spread(full^e,n)", "spread(full^e,n)", CENSUS, "binary space census disagrees"),
+ ("transpose cofactor incorrectly", "matching_oracle.py", "cofactors[j][i] |=", "cofactors[i][j] |=", CENSUS, "oracle reported a forbidden mask"),
+ ("retain intersecting spaces", "ternary_oracle.py", "if a & b:", "if False:", CENSUS, "ternary complement multiplicity"),
+ ("omit monomial orbit weight", "ternary_oracle.py", "total[key] += weight*count", "total[key] += count", CENSUS, "ternary total pair count"),
+ ("omit doubly saturated patterns", "counts.py", " + both(p)*both(q)", " + 0", PRIMARY, "ordinary count formula differs"),
+ ("miss one odd side", "counts.py", '"binary one B":odd_side(q,p)', '"binary one B":0', PRIMARY, "exception count formula differs"),
+ ("drop coefficient basis multiplicity", "zero_one_census.py", "hist[key] += weight*bases[upper]*number",
+ "hist[key] += weight", "zero_one_census.py", "zero-one literal four-port census"),
+ ("reduce rational complement modulo two", "zero_one_census.py", "if not sum(c*lower[j] for j,c in dual):",
+ "if not sum(c*lower[j] for j,c in dual) % 2:", "zero_one_census.py", "zero-one literal four-port census"),
+ ("corrupt prior source", "source/6691-PROOF.md", "## Lemma 1:", "## Altered lemma:", PRIMARY, "retained source hash"),
+]
+DATA_FAULTS = [
+ ("flatten separating tariff", "PRICE-CERTIFICATES.json", PRIMARY, "price does not strictly separate"),
+ ("perturb convex weights", "PRICE-CERTIFICATES.json", PRIMARY, "convex combination differs from profile"),
+ ("erase signed matrix entry", "SIX-PORTS.json", PRIMARY, "stored witness certificate differs"),
+ ("inflate ternary multiplicity", "SIX-PORTS.json", CENSUS, "stored per-label multiplicity differs"),
+ ("perturb price dependence", "THREE-PRICES.json", "zero_one_census.py", "price differences do not cancel"),
+]
+
+
+def change_data(name, original):
+ data = json.loads(original)
+ if name == "flatten separating tariff":
+ next(row for row in data if "prices" in row)["prices"] = [1]*7
+ elif name == "perturb convex weights":
+ next(row for row in data if "mixture" in row)["mixture"][0]["weight"] += 1
+ elif name == "erase signed matrix entry":
+ data[0]["rational"][0] = "......"
+ elif name == "perturb price dependence":
+ data[0]["terms"][0][0] += 1
+ else:
+ data[0]["pairs_per_label_F2_F3"][1] += 1
+ return json.dumps(data).encode()
+
+
+def invoke(root, entry, optimize):
+ extra = ["-O"] if optimize else []
+ return subprocess.run([sys.executable,"-I",*extra,"-W","error","-B",str(root/entry)],cwd=root,
+ capture_output=True,text=True,encoding="utf-8",timeout=120)
+
+
+def test_fault(root, name, filename, original, faulty, entry, why):
+ (root/filename).write_bytes(faulty)
+ for opt in (False, True):
+ proc = invoke(root,entry,opt)
+ last = proc.stderr.strip().splitlines()[-1:] or [""]
+ if proc.returncode == 0 or last[0] != "ValueError: "+why:
+ raise ValueError(f"{name} optimized={opt}: expected {why!r}, got {last[0]!r}")
+ (root/filename).write_bytes(original)
+ return [name,why]
+
+
+def audit():
+ results = []
+ with tempfile.TemporaryDirectory(prefix="two-ports-") as tmp:
+ root = Path(tmp)
+ for f in PACKAGE.rglob("*"):
+ if f.is_file() and "__pycache__" not in f.parts:
+ dest = root/f.relative_to(PACKAGE)
+ dest.parent.mkdir(parents=True,exist_ok=True)
+ shutil.copyfile(f,dest)
+ for entry in (PRIMARY,CENSUS,"zero_one_census.py"):
+ positives = []
+ for opt in (False,True):
+ proc = invoke(root,entry,opt)
+ if proc.returncode:
+ raise ValueError(proc.stderr[-600:])
+ positives.append(json.loads(proc.stdout))
+ if positives[0] != positives[1]:
+ raise ValueError("private-copy positive receipts differ")
+ for name,filename,old,new,entry,why in FAULTS:
+ raw = (root/filename).read_bytes()
+ if raw.count(old.encode()) != 1:
+ raise ValueError("ambiguous mutation target "+name)
+ results.append(test_fault(root,name,filename,raw,raw.replace(old.encode(),new.encode()),entry,why))
+ for name,filename,entry,why in DATA_FAULTS:
+ raw = (root/filename).read_bytes()
+ results.append(test_fault(root,name,filename,raw,change_data(name,raw),entry,why))
+ return dict(status="PASS_TWO_BLOCK_MUTATIONS", positive_controls=6, rejected_probes=2*len(results), faults=results)
+
+
+if __name__ == "__main__":
+ print(json.dumps(audit(),sort_keys=True))
diff --git a/research/two-block-signatures/binary_oracle.py b/research/two-block-signatures/binary_oracle.py
new file mode 100644
index 0000000000..47ea514a5c
--- /dev/null
+++ b/research/two-block-signatures/binary_oracle.py
@@ -0,0 +1,42 @@
+"""Exhaustive ordered complementary row spaces over F2, independent of the signature criterion."""
+from collections import Counter
+from itertools import combinations
+
+
+def spaces(n, d):
+ """Every d-space once in reduced row-echelon form, with all its vectors."""
+ for pivots in combinations(range(n), d):
+ free = [(i,j) for i,p in enumerate(pivots) for j in range(p+1,n) if j not in pivots]
+ for assignment in range(1 << len(free)):
+ basis = [1 << j for j in pivots]
+ for k,(i,j) in enumerate(free):
+ if assignment >> k & 1:
+ basis[i] |= 1 << j
+ words = [0]
+ for row in basis:
+ words += [x ^ row for x in words]
+ support = 0
+ elements = 0
+ for word in words:
+ support |= word
+ elements |= 1 << word
+ axes = sum(1 << j for j in range(n) if (1 << j) in words)
+ yield elements, support, axes
+
+
+def spread(mask, n):
+ return sum(((mask >> j) & 1) << (4*j) for j in range(n))
+
+
+def enumerate_pairs(n, p):
+ """A source mask reads block columns. A reader mask reads opposite axes."""
+ full = (1 << n)-1
+ # Separate the bit positions that each plane contributes to each nibble.
+ left = [(elements, 4*spread(s,n) + 2*spread(full^e,n)) for elements,s,e in spaces(n,p)]
+ right = [(elements, 8*spread(s,n) + spread(full^e,n)) for elements,s,e in spaces(n,n-p)]
+ tally = Counter()
+ for vectors, x in left:
+ for other, y in right:
+ if vectors & other == 1: # The all-zero vector is the only common vector.
+ tally[x+y] += 1
+ return len(left), len(right), tally
diff --git a/research/two-block-signatures/census_check.py b/research/two-block-signatures/census_check.py
new file mode 100644
index 0000000000..da8e1c9e1c
--- /dev/null
+++ b/research/two-block-signatures/census_check.py
@@ -0,0 +1,122 @@
+#!/usr/bin/env python3
+"""Compare independent generic, binary and ternary censuses to the declared classification."""
+from collections import Counter
+from dataclasses import astuple
+from hashlib import sha256
+import json
+from pathlib import Path
+import sys
+
+PACKAGE = Path(__file__).resolve().parent
+sys.path.insert(0,str(PACKAGE))
+from binary_oracle import enumerate_pairs
+from construction_check import labeled_codes, need
+from matching_oracle import census as generic_census
+from signatures import TYPES, Profile, multiplicity, profiles, verdict
+from ternary_oracle import census as ternary_census
+
+
+def counts(key, n):
+ symbols = [(key >> (4*j)) & 15 for j in range(n)]
+ need(all(s in TYPES for s in symbols), "oracle reported a forbidden mask")
+ return tuple(symbols.count(s) for s in TYPES)
+
+
+def digest(codes, n):
+ return sha256(b"".join(x.to_bytes((n+1)//2,"little") for x in sorted(codes))).hexdigest()
+
+
+def full_gl4():
+ tally = Counter()
+ for pattern in range(1<<16):
+ source = [(pattern >> (4*i)) & 15 for i in range(4)]
+ rows = [x | (16 << i) for i,x in enumerate(source)]
+ for j in range(4):
+ pivot = next((i for i in range(j,4) if rows[i] & (1<