States and Effects#

from qualtran import Bloq, CompositeBloq, BloqBuilder, Signature, Register
from qualtran import QBit, QInt, QUInt, QAny
from qualtran.drawing import show_bloq, show_call_graph, show_counts_sigma
from typing import *
import numpy as np
import sympy
import cirq

ZeroState#

The state |0>

from qualtran.bloqs.basic_gates import ZeroState

Example Instances#

zero_state = ZeroState()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([zero_state],
           ['`zero_state`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
zero_state_g, zero_state_sigma = zero_state.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(zero_state_g)
show_counts_sigma(zero_state_sigma)
../../_images/183c2c2e4f7478b20d6a3efc99edb816ee29f70e4e1c9fe97404ba9442a5ec6e.svg

Counts totals:

  • |0>: 1

ZeroEffect#

The effect <0|

from qualtran.bloqs.basic_gates import ZeroEffect

Example Instances#

zero_effect = ZeroEffect()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([zero_effect],
           ['`zero_effect`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
zero_effect_g, zero_effect_sigma = zero_effect.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(zero_effect_g)
show_counts_sigma(zero_effect_sigma)
../../_images/de0e11355bb2c1a26da1dadb0584b580a69f42c73814a69c71c955d656981536.svg

Counts totals:

  • <0|: 1

OneState#

The state |1>

from qualtran.bloqs.basic_gates import OneState

Example Instances#

one_state = OneState()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([one_state],
           ['`one_state`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
one_state_g, one_state_sigma = one_state.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(one_state_g)
show_counts_sigma(one_state_sigma)
../../_images/0530d33c1eb0edd6224bc8791c8c0b75843d2a0b7c1be0de8f5505f286db74d2.svg

Counts totals:

  • |1>: 1

OneEffect#

The effect <1|

from qualtran.bloqs.basic_gates import OneEffect

Example Instances#

one_effect = OneEffect()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([one_effect],
           ['`one_effect`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
one_effect_g, one_effect_sigma = one_effect.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(one_effect_g)
show_counts_sigma(one_effect_sigma)
../../_images/5c5f6c942900448423507319f7ed433dfb123bd64a7ccd94b1bb9a6d845b3e3e.svg

Counts totals:

  • <1|: 1

IntState#

The state |val> for non-negative integer val

Parameters#

  • val: the classical value

  • bitsize: The bitsize of the register

Registers#

  • val: The register of size bitsize which initializes the value val.

from qualtran.bloqs.basic_gates import IntState

Example Instances#

int_state = IntState(55, bitsize=8)

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([int_state],
           ['`int_state`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
int_state_g, int_state_sigma = int_state.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(int_state_g)
show_counts_sigma(int_state_sigma)
../../_images/52d59d1b8a98c39d9200663b2e315dac0db43fb95ec1f5617aca87b6761bbb7b.svg

Counts totals:

  • ArbitraryClifford(n=8): 1

IntEffect#

The effect <val| for non-negative integer val

Parameters#

  • val: the classical value

  • bitsize: The bitsize of the register

Registers#

  • val: The register of size bitsize which de-allocates the value val.

from qualtran.bloqs.basic_gates import IntEffect

Example Instances#

int_effect = IntEffect(55, bitsize=8)

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([int_effect],
           ['`int_effect`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
int_effect_g, int_effect_sigma = int_effect.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(int_effect_g)
show_counts_sigma(int_effect_sigma)
../../_images/d3e728e86c0eba278c8a056b5ac8cc6d89123412b7e77144b9d110ecc65dc7ff.svg

Counts totals:

  • ArbitraryClifford(n=8): 1

PlusState#

The state |+>

from qualtran.bloqs.basic_gates import PlusState

Example Instances#

plus_state = PlusState()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([plus_state],
           ['`plus_state`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
plus_state_g, plus_state_sigma = plus_state.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(plus_state_g)
show_counts_sigma(plus_state_sigma)
../../_images/fc0c73ce375d2f3637035aa5ff3a209d0e29fb3e28a8d9c499b7f0a84742164a.svg

Counts totals:

  • |+>: 1

PlusEffect#

The effect <+|

from qualtran.bloqs.basic_gates import PlusEffect

Example Instances#

plus_effect = PlusEffect()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([plus_effect],
           ['`plus_effect`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
plus_effect_g, plus_effect_sigma = plus_effect.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(plus_effect_g)
show_counts_sigma(plus_effect_sigma)
../../_images/b53ad5bd936c2423085f2a3024a1e3406b4c3d1f8b3f2f26bf321167d167ec3f.svg

Counts totals:

  • <+|: 1

MinusState#

The state |->

from qualtran.bloqs.basic_gates import MinusState

Example Instances#

minus_state = MinusState()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([minus_state],
           ['`minus_state`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
minus_state_g, minus_state_sigma = minus_state.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(minus_state_g)
show_counts_sigma(minus_state_sigma)
../../_images/7658dc4bbf258e5fdbaef80473b12ce331c0244b985790aab486e0e86a40cc43.svg

Counts totals:

  • |->: 1

MinusEffect#

The effect <-|

from qualtran.bloqs.basic_gates import MinusEffect

Example Instances#

minus_effect = MinusEffect()

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([minus_effect],
           ['`minus_effect`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
minus_effect_g, minus_effect_sigma = minus_effect.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(minus_effect_g)
show_counts_sigma(minus_effect_sigma)
../../_images/dafa280971c35ab84ab793dd94be48ba681de2237d7f5034deb03f3794251781.svg

Counts totals:

  • <-|: 1

Properties and Relations#

Creating a Bell state#

We can create a bell state (\(|00\rangle + |11\rangle\)) by cnotting a \(|+\rangle\) state into a \(|0\rangle\) state.

from qualtran.bloqs.basic_gates import CNOT

bb = BloqBuilder()

q0 = bb.add(PlusState())
q1 = bb.add(ZeroState())

q0, q1 = bb.add(CNOT(), ctrl=q0, target=q1)

cbloq = bb.finalize(q0=q0, q1=q1)
show_bloq(cbloq)
print(cbloq.tensor_contract())
../../_images/d5247ff615e8ae547df269eb91df1a8ce544ca848fc2a471cab0f22b3eb71423.svg
/usr/local/google/home/mpharrigan/qualtran/conda-311/lib/python3.11/site-packages/cotengra/hyperoptimizers/hyper.py:57: UserWarning: Couldn't find `optuna`, `cmaes`, `baytune (btb)`, `chocolate`, or `nevergrad` so will use completely random sampling in place of hyper-optimization.
  warnings.warn(
/usr/local/google/home/mpharrigan/qualtran/conda-311/lib/python3.11/site-packages/cotengra/hyperoptimizers/hyper.py:76: UserWarning: Couldn't find `optuna`, `cmaes`, `baytune (btb)`, `chocolate`, or `nevergrad` so will use completely random sampling in place of hyper-optimization.
  warnings.warn(
[0.70710678+0.j 0.        +0.j 0.        +0.j 0.70710678+0.j]

PlusState and ZeroState provide as_cirq_op methods for Cirq interoperability, resulting in the familiar cirq.Circuit for constructing a Bell state.

from cirq.contrib.svg import SVGCircuit
circuit = cbloq.to_cirq_circuit()
SVGCircuit(circuit)
../../_images/373e849d0eb3c943b0efcbf5aa7e480a7b5d9966be6733da17e2eddaa3635b42.svg