def bundle_equality(self, num_levels=2, **defaults_config): ''' Given a nested forall, equate it with an equivalent form in which a given number of nested levels is bundled together. For example, \forall_{x, y | Q(x, y)} \forall_{z | R(z)} P(x, y, z) can be equated with \forall_{x, y, z | Q(x, y), R(z)} P(x, y, z) via bundle with num_levels=2. ''' from proveit import bundle # generic for OperationOverInstances from . import bundling return bundle(self, bundling, num_levels=num_levels)
def bundle(self, num_levels=2, *, assumptions=USE_DEFAULTS): ''' Given a nested forall, derive an equivalent form in which a given number of nested levels is bundled together. For example, \forall_{x, y | Q(x, y)} \forall_{z | R(z)} P(x, y, z) can become \forall_{x, y, z | Q(x, y), R(z)} P(x, y, z) via bundle with num_levels=2. ''' from proveit import bundle # generic for OperationOverInstances from ._theorems_ import bundle as bundle_thm return bundle(self, bundle_thm, num_levels=num_levels, assumptions=assumptions)