a :: o b :: o f :: o → o → o g :: o → o → o h :: (o → o) → o f(x, b) → g(x, x) g(x, a) → f(x, x) h(F) → F(a) h(F) → F(b)