logo

Expression of type ExprTuple

from the theory of proveit.numbers.modular

In [1]:
import proveit
# Automation is not needed when building an expression:
proveit.defaults.automation = False # This will speed things up.
proveit.defaults.inline_pngs = False # Makes files smaller.
%load_expr # Load the stored expression as 'stored_expr'
# import Expression classes needed to build the expression
from proveit import Conditional, ExprTuple, L, Lambda, S, c, x
from proveit.logic import Card, Equals, Forall, SetOfAll, SubsetEq
from proveit.numbers import Add, Mod, Real
In [2]:
# build up the expression from sub-expressions
sub_expr1 = [x]
expr = ExprTuple(Lambda(S, Conditional(Forall(instance_param_or_params = [c], instance_expr = Equals(Card(SetOfAll(instance_param_or_params = sub_expr1, instance_element = Mod(Add(c, x), L), domain = S)), Card(SetOfAll(instance_param_or_params = sub_expr1, instance_element = Mod(x, L), domain = S))), domain = Real), SubsetEq(S, Real))))
expr:
In [3]:
# check that the built expression is the same as the stored expression
assert expr == stored_expr
assert expr._style_id == stored_expr._style_id
print("Passed sanity check: expr matches stored_expr")
Passed sanity check: expr matches stored_expr
In [4]:
# Show the LaTeX representation of the expression for convenience if you need it.
print(stored_expr.latex())
\left(S \mapsto \left\{\forall_{c \in \mathbb{R}}~\left(|\left\{\left(c + x\right) ~\textup{mod}~ L\right\}_{x \in S}| = |\left\{x ~\textup{mod}~ L\right\}_{x \in S}|\right) \textrm{ if } S \subseteq \mathbb{R}\right..\right)
In [5]:
stored_expr.style_options()
no style options
In [6]:
# display the expression information
stored_expr.expr_info()
 core typesub-expressionsexpression
0ExprTuple1
1Lambdaparameter: 44
body: 3
2ExprTuple44
3Conditionalvalue: 4
condition: 5
4Operationoperator: 6
operand: 10
5Operationoperator: 8
operands: 9
6Literal
7ExprTuple10
8Literal
9ExprTuple44, 20
10Lambdaparameter: 47
body: 12
11ExprTuple47
12Conditionalvalue: 13
condition: 14
13Operationoperator: 15
operands: 16
14Operationoperator: 40
operands: 17
15Literal
16ExprTuple18, 19
17ExprTuple47, 20
18Operationoperator: 22
operand: 24
19Operationoperator: 22
operand: 25
20Literal
21ExprTuple24
22Literal
23ExprTuple25
24Operationoperator: 27
operand: 29
25Operationoperator: 27
operand: 30
26ExprTuple29
27Literal
28ExprTuple30
29Lambdaparameter: 48
body: 31
30Lambdaparameter: 48
body: 33
31Conditionalvalue: 34
condition: 36
32ExprTuple48
33Conditionalvalue: 35
condition: 36
34Operationoperator: 38
operands: 37
35Operationoperator: 38
operands: 39
36Operationoperator: 40
operands: 41
37ExprTuple42, 43
38Literal
39ExprTuple48, 43
40Literal
41ExprTuple48, 44
42Operationoperator: 45
operands: 46
43Variable
44Variable
45Literal
46ExprTuple47, 48
47Variable
48Variable