GEN

Thm.GEN : term -> thm -> thm

Generalizes the conclusion of a theorem.

When applied to a term x and a theorem A |- t, the inference rule GEN returns the theorem A |- !x. t, provided x is a variable not free in any of the assumptions. There is no compulsion that x should be free in t.

      A |- t
   ------------  GEN x                [where x is not free in A]
    A |- !x. t

Failure

Fails if x is not a variable, or if it is free in any of the assumptions.

Example

The following example shows how the above side-condition prevents the derivation of the theorem x=T |- !x. x=T, which is clearly invalid.

   > show_types := true;
   val it = (): unit

   > val t = ASSUME “x=T”;
   val t =  [.] ⊢ (x :bool) ⇔ T: thm

   > try (GEN “x:bool”) t;
   Exception- HOL_ERR (at Thm.GEN: variable occurs free in hypotheses) raised

See also

Thm.GENL, Drule.GEN_ALL, Tactic.GEN_TAC, Thm.SPEC, Drule.SPECL, Drule.SPEC_ALL, Tactic.SPEC_TAC, ConseqConv.GEN_ASSUM, ConseqConv.GEN_IMP, ConseqConv.GEN_EQ