tweak definition of constrainable_update

make it cover more subtypes. also prove a property about subtypes
staying ok.