Source code for proveit.logic.sets.unification.union
from proveit import Literal, Operation, USE_DEFAULTS, relation_prover
from proveit import m, n, A, S, x
[docs]class Union(Operation):
# operator of the Intersect operation
_operator_ = Literal(
string_format='union',
latex_format=r'\cup',
theory=__file__)
def __init__(self, *operands, styles=None):
'''
Union any number of sets: A union B union C
'''
Operation.__init__(self, Union._operator_, operands,
styles=styles)
[docs] def membership_object(self, element):
from .union_membership import UnionMembership
return UnionMembership(element, self)
[docs] def nonmembership_object(self, element):
from .union_membership import UnionNonmembership
return UnionNonmembership(element, self)
@relation_prover
def deduce_superset_eq_relation(self, superset, **defaults_config):
# Check for special case of a union subset
# A_1 union ... union ... A_m \subseteq S
from . import union_inclusion
_A = self.operands
_m = _A.num_elements()
_S = superset
return union_inclusion.instantiate(
{A:_A, m:_m, S:_S})