from research import *
s=begin(879,'Prove the whole-field integer obstruction','Can changing a common anchor put every image head on integer years?',{},['File46 §6A.5','C878'])
heads=json.loads((ROOT/'model/operator_inputs.json').read_text())['file46_literal_Adam_field']['BC_heads']
gaps=[a-b for a,b in zip(heads,heads[1:])]
images=[E*g for g in gaps]
proof={'identity':'D_E,a(u)−D_E,a(v)=E*(u−v), independent of anchor','necessary':'two integral image heads have an integral difference','contradiction':'source gap430 maps to10750/23, not an integer','scope':'no common anchor can make the complete field integral; fractions remain exact'}
a=artifact('model/File46_integer_obstruction.json',json.dumps(clean({'gaps':gaps,'images':images,'proof':proof}),indent=2)+'\n')
finish(s,{'gaps':gaps,'image_gaps':images,'proof':a},'No common anchor can make every File46 head integral: the transformed430 and30 gaps are nonintegral independently of anchor. Whole-field shape is preserved, while whole-grid membership fails.','Derive the stagewise grid criterion for a fixed Key word.',{'all_obstructions':all(x.denominator!=1 for x in images),'anchor_free':len(gaps)==3,'specific':images[0]==F(10750,23)})
