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})