Example of required distinct variable constraints are not a subset of actual distinct variable constraint

The easiest way to get some statements to work with is going to be to import one of our existing interfaces; here we pick Interface:First-order logic.  import (PROPOSITIONAL Interface:Classical_propositional_calculus ) import (FIRST Interface:First-order_logic (PROPOSITIONAL) ) 

The important thing from that file is: stmt (Generalization ((x φ)) (φ → (∀ x φ)))

Here's a valid proof:

 var (variable x y) thm (valid ((x y)) (((value x) = (value x)) → (∀ y ((value x) = (value x)))) ( ((value x) = (value x)) y Generalization )) 

Here's the same proof without the distinct variable constraint between  and. It violates the distinct variable constraint which results from invoking, because it is not valid if   and   are expanded to the same variable.

 thm (invalid  (((value x) = (value x)) → (∀ y ((value x) = (value x)))) ( ((value x) = (value x)) y Generalization )) 