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)