For Form, pure function returns a Form with Proved () (FormRange i i) a, while ipure function returns a Form with Proved p (unitRange i) a. FormRange i i is a zero-width range, and it's not equal to unitRange i.
I think pure function is wrong because the FormRange in the FormState would never be a zero-width range in normal operation.