I have 2 formulas F1 and F2. These two formulas share most variables, except some ‘temporary’ (or I call them ‘free’) variables having different names, that are there for some reasons.
Now I want to prove F1 == F2, but prove() method of Z3 always takes into account all the variables. How can I tell prove() to ignore those ‘free’ variables, and focuses only on a list of variables I really care about?
I mean with all the same input to the list of my variables, if at the output time, F1 and F2 have the same value of all these variables (regardless the values of ‘free’ variables), then I consider them ‘equivalence’
I believe this problem has been solved in other researches before, but I dont know where to look for the information.
Thanks so much.
Apparently, I cannot comment, so I have to add another answer. The process of “disregarding” certain variables is typically called “projection” or “forgetting”. I am not familiar with it in contexts going beyond propositional logic, but if direct existential quantification is possible (which Leo described), it is conceptually the simplest way to do it.