Example of distinct variable constraint violation: Intersection of cartesian product factors is not empty

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 one which violates the distinct variable constraint, because the variable x appears in both the formula  and the variable.

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