from research import *
s=begin(667,'Explain retained-part conversion algebraically','What term distinguishes converting a core from converting its entire bracket?',{'core':690,'flanks':[30,30],'operators':['P','E']},['C666','C631 retained-part synthesis'])
rows=[]
for k in [P,E]:
    retained=k*690+60; whole=k*750
    rows.append({'retained':retained,'whole':whole,'excess':whole-retained,'flank_gain':2*(k-1)*30})
finish(s,{'rows':rows,'general_difference':'2(k−1)f'},'Whole conversion adds exactly2(k−1)f more than core conversion with retained flanks. This is the same retained-subdivision distinction that explains the earlier partial-E and whole-J routes: matching totals never establish identical internal paths.','Reconstruct the native alternating ladder from its two rail parameters.',{'P_excess':rows[0]['excess']==F(20,23),'E_excess':rows[1]['excess']==F(120,23),'identity':all(r['excess']==r['flank_gain'] for r in rows)})
