logo

Expression of type Lambda

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, Lambda, 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 = Lambda(t, 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())
t \mapsto \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()
no style options
In [6]:
# display the expression information
stored_expr.expr_info()
 core typesub-expressionsexpression
0Lambdaparameter: 59
body: 1
1Conditionalvalue: 2
condition: 3
2Operationoperator: 4
operands: 5
3Operationoperator: 30
operands: 6
4Literal
5ExprTuple7, 8
6ExprTuple59, 9
7Operationoperator: 10
operand: 59
8Operationoperator: 28
operands: 12
9Literal
10Literal
11ExprTuple59
12ExprTuple13, 14
13Operationoperator: 26
operands: 15
14Operationoperator: 16
operand: 19
15ExprTuple60, 18
16Literal
17ExprTuple19
18Operationoperator: 54
operands: 20
19Lambdaparameter: 51
body: 22
20ExprTuple58, 23
21ExprTuple51
22Conditionalvalue: 24
condition: 25
23Operationoperator: 26
operands: 27
24Operationoperator: 28
operands: 29
25Operationoperator: 30
operands: 31
26Literal
27ExprTuple59, 58
28Literal
29ExprTuple32, 33
30Literal
31ExprTuple51, 34
32Operationoperator: 54
operands: 35
33Operationoperator: 36
operands: 37
34Operationoperator: 38
operands: 39
35ExprTuple40, 41
36Literal
37ExprTuple51, 59
38Literal
39ExprTuple42, 43
40Literal
41Operationoperator: 44
operands: 45
42Literal
43Operationoperator: 46
operands: 47
44Literal
45ExprTuple58, 48, 49, 50, 51
46Literal
47ExprTuple52, 53
48Literal
49Literal
50Literal
51Variable
52Operationoperator: 54
operands: 55
53Operationoperator: 56
operand: 60
54Literal
55ExprTuple58, 59
56Literal
57ExprTuple60
58Literal
59Variable
60Literal