SPEC : term -> thm -> thm
A |- !x. t
-------------- SPEC `u`
A |- t[u/x]
# let xv = `x:bool` and yv = `y:bool` in
(GEN xv o DISCH xv o GEN yv o DISCH yv) (ASSUME xv);;
val it : thm = |- !x. x ==> (!y. y ==> x)
# SPEC `~y` it;;
val it : thm = |- ~y ==> (!y'. y' ==> ~y)