logo

Axioms for the theory of proveit.logic.sets.unification

In [1]:
import proveit
# Prepare this notebook for defining the axioms of a theory:
%axioms_notebook # Keep this at the top following 'import proveit'.
from proveit.logic import Forall, Exists, Or, Equals, InSet, Union
from proveit import m, n, x, Q, R
from proveit.core_expr_types import y_1_to_n, A_1_to_m, Q__y_1_to_n, R__y_1_to_n, S_1_to_n
from proveit.logic.sets import x_in_any_A, general_unionall_Ryn
from proveit.numbers import NaturalPos
%begin axioms
Defining axioms for theory 'proveit.logic.sets.unification'
Subsequent end-of-cell assignments will define axioms
%end_axioms will finalize the definitions

Membership in the union of sets is the same as having membership in any of the sets being unified:

In [2]:
union_def = Forall(m, Forall((x, A_1_to_m), 
                            Equals(InSet(x, Union(A_1_to_m)), x_in_any_A).with_wrap_after_operator()),
                  domain=NaturalPos)
union_def:
In [3]:
union_all_def = Forall(
    n, Forall((S_1_to_n, Q, R, x), 
              Equals(InSet(x, general_unionall_Ryn),
                     Exists(y_1_to_n, InSet(x, R__y_1_to_n), 
                            domains=[S_1_to_n], conditions=[Q__y_1_to_n]))
              .with_wrap_before_operator()),
    domain=NaturalPos)
union_all_def:
In [4]:
%end axioms
These axioms may now be imported from the theory package: proveit.logic.sets.unification