logo

Expression of type Conditional

from the theory of proveit.physics.quantum.QPE

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, k, t
from proveit.linear_algebra import ScalarMult, VecSum
from proveit.logic import Equals, InSet
from proveit.numbers import Exp, Interval, Mult, NaturalPos, e, frac, i, one, pi, subtract, two, zero
from proveit.physics.quantum import NumKet
from proveit.physics.quantum.QPE import _phase, _psi_t_ket, two_pow_t
In [2]:
# build up the expression from sub-expressions
expr = Conditional(Equals(_psi_t_ket, ScalarMult(frac(one, Exp(two, frac(t, two))), VecSum(index_or_indices = [k], summand = ScalarMult(Exp(e, Mult(two, pi, i, _phase, k)), NumKet(k, t)), domain = Interval(zero, subtract(two_pow_t, one))))), InSet(t, NaturalPos))
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\{\lvert \psi_{t} \rangle = \left(\frac{1}{2^{\frac{t}{2}}} \cdot \left(\sum_{k=0}^{2^{t} - 1} \left(\mathsf{e}^{2 \cdot \pi \cdot \mathsf{i} \cdot \varphi \cdot k} \cdot \lvert k \rangle_{t}\right)\right)\right) \textrm{ if } t \in \mathbb{N}^+\right..
In [5]:
stored_expr.style_options()
namedescriptiondefaultcurrent valuerelated methods
condition_delimiter'comma' or 'and'commacomma('with_comma_delimiter', 'with_conjunction_delimiter')
In [6]:
# display the expression information
stored_expr.expr_info()
 core typesub-expressionsexpression
0Conditionalvalue: 1
condition: 2
1Operationoperator: 3
operands: 4
2Operationoperator: 29
operands: 5
3Literal
4ExprTuple6, 7
5ExprTuple58, 8
6Operationoperator: 9
operand: 58
7Operationoperator: 27
operands: 11
8Literal
9Literal
10ExprTuple58
11ExprTuple12, 13
12Operationoperator: 25
operands: 14
13Operationoperator: 15
operand: 18
14ExprTuple59, 17
15Literal
16ExprTuple18
17Operationoperator: 53
operands: 19
18Lambdaparameter: 50
body: 21
19ExprTuple57, 22
20ExprTuple50
21Conditionalvalue: 23
condition: 24
22Operationoperator: 25
operands: 26
23Operationoperator: 27
operands: 28
24Operationoperator: 29
operands: 30
25Literal
26ExprTuple58, 57
27Literal
28ExprTuple31, 32
29Literal
30ExprTuple50, 33
31Operationoperator: 53
operands: 34
32Operationoperator: 35
operands: 36
33Operationoperator: 37
operands: 38
34ExprTuple39, 40
35Literal
36ExprTuple50, 58
37Literal
38ExprTuple41, 42
39Literal
40Operationoperator: 43
operands: 44
41Literal
42Operationoperator: 45
operands: 46
43Literal
44ExprTuple57, 47, 48, 49, 50
45Literal
46ExprTuple51, 52
47Literal
48Literal
49Literal
50Variable
51Operationoperator: 53
operands: 54
52Operationoperator: 55
operand: 59
53Literal
54ExprTuple57, 58
55Literal
56ExprTuple59
57Literal
58Variable
59Literal