from research import *
s=begin(961,'Nonredundant synchronization','How many extra constraints join the three caps to one parameter?',{},['C954','C956','C960'])
u=json.loads((ROOT/'model/sp_birth_regeneration.json').read_text())['suffixes']; p=json.loads((ROOT/'model/sp_cap_prediction.json').read_text()); a=p['active_rows']; kval=[p['lifespans'][i]-u[i] for i in a]; differences=[kval[0]-kval[1],kval[1]-kval[2],kval[0]-kval[2]]
finish(s,{'k_from_each':kval,'pairwise_residuals':differences,'independent_synchronization_equations':2},'One cap fixes k; two further equations synchronize the remaining caps. The third pairwise comparison is their sum.','Determine how much weaker clipped-row support alone would be.',{'common_k':kval==[601]*3,'dependent_third':differences[2]==differences[0]+differences[1]})
