Change proof to polymorphic