GEN_ASSUM : term -> thm -> thm
GEN_ASSUM is a generalisation of GEN. While GEN fails, if x is free in an assumption, GEN_ASSUM succeeds.
A1, A2 |- t
--------------------- GEN_ASSUM x [where x is free in A1, but not in A2]
(!x. A1), A2 |- !x. t