logo

Expression of type MultiQubitElem

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 Literal, Variable
from proveit.numbers import Exp, Interval, Mod, Mult, Round, one, two
from proveit.physics.quantum import NumKet
from proveit.physics.quantum.circuits import MultiQubitElem, Output
In [2]:
# build up the expression from sub-expressions
sub_expr1 = Exp(two, Literal("t", theory = "proveit.physics.quantum.QPE"))
expr = MultiQubitElem(element = Output(state = NumKet(Mod(Round(Mult(sub_expr1, Literal("phase", latex_format = r"\varphi", theory = "proveit.physics.quantum.QPE"))), sub_expr1), Literal("t", theory = "proveit.physics.quantum.QPE")), part = Variable("_a", latex_format = r"{_{-}a}")), targets = Interval(one, Literal("t", theory = "proveit.physics.quantum.QPE")))
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())
\begin{array}{c} \Qcircuit@C=1em @R=.7em{
& & \qout{\lvert round\left(2^{t} \cdot \varphi\right) ~\textup{mod}~ 2^{t} \rangle_{t}~\mbox{part}~{_{-}a}~\mbox{on}~\{1~\ldotp \ldotp~t\}} 
} \end{array}
In [5]:
stored_expr.style_options()
no style options
In [6]:
# display the expression information
stored_expr.expr_info()
 core typesub-expressionsexpression
0Operationoperator: 1
operands: 2
1Literal
2NamedExprselement: 3
targets: 4
3Operationoperator: 5
operands: 6
4Operationoperator: 7
operands: 8
5Literal
6NamedExprsstate: 9
part: 10
7Literal
8ExprTuple11, 28
9Operationoperator: 12
operands: 13
10Variable
11Literal
12Literal
13ExprTuple14, 28
14Operationoperator: 15
operands: 16
15Literal
16ExprTuple17, 23
17Operationoperator: 18
operand: 20
18Literal
19ExprTuple20
20Operationoperator: 21
operands: 22
21Literal
22ExprTuple23, 24
23Operationoperator: 25
operands: 26
24Literal
25Literal
26ExprTuple27, 28
27Literal
28Literal