It seems to me that proving an arbitrary property over an n-ary HOL function of type (a1 => (a2 => ... (an => b))) is not possible, since STT doesn't permit quantifying over types themselves. Is there some sort of smart workaround that I can use to prove properties over n-ary (curried or uncurried) functions
(note: n is variable)
fold + lists is a workaround
wouldn't that work if all of the a_i are the same type
which they aren't?
since lists are homogenous
Correct, but usually n-ary operators have a fixed type as argument...
(at least in my experience)
I'm guessing I'm making an X-Y problem here, sorry about that.
I'm trying to get the hang of HOLCF. What I'd like to prove is that if (σ1, ... σn) are all flat types, then (σ1 -> (σ2 -> ... -> (σn -> τ))) that is strict in its first n arguments is monotonic (Logic and Computation, exercise 3.4)
(typo: exercise 3.3)
Last updated: Sep 28 2026 at 16:33 UTC