Postselected teleportation (P-CTCs)#

Functions#

pctc_violating(
input_respecting: MutableDenseMatrix | QuantumState,
gate: MutableDenseMatrix | QuantumGate,
systems_respecting: list[int],
systems_violating: list[int],
) MutableDenseMatrix[source]#

Calculate the chronology-violating (CV) state according to the P-CTC weak-measurement tomography expression for the prescription’s CV map

(310)#\[\MapPCTCsCV_{\Unitary}[\StateCR] = \trace_\CR\bigl[\Unitary(\StateCR \otimes \tfrac{1}{\Dimension}\Identity) \Unitary^\dagger\bigr]\]

given the chronology-respecting (CR) input state input_respecting (\(\StateCR\)) and (unitary) interaction described by gate (\(\Unitary\)). Here, \(\Dimension\) is the dimensionality of the CV system’s Hilbert space (assumed to be equivalent to that of its CR counterpart), while \(\Identity\) is the \(\Dimension \times \Dimension\) identity matrix.

Parameters:
  • input_respecting (mat | QuantumState) – The matrix representation of the chronology-respecting (CR) input state.

  • gate (mat | QuantumGate) – The matrix representation of the gate describing the (unitary) interaction between the CR and CV systems.

  • systems_respecting (list[int]) – The numerical indices of the chronology-respecting (CR) subsystems.

  • systems_violating (list[int]) – The numerical indices of the chronology-violating (CV) subsystems.

Returns:

mat – The weak-measurement tomography expression for the P-CTC’s CV state.

Note

The validity of the expression used in this function to compute the P-CTC CV state for non-qubit systems has not been proven.

pctc_respecting(
input_respecting: MutableDenseMatrix | QuantumState,
gate: MutableDenseMatrix | QuantumGate,
systems_respecting: list[int],
systems_violating: list[int],
) MutableDenseMatrix[source]#

Calculate the (non-renormalized) chronology-respecting (CR) state according to the P-CTC prescription’s non-renormalizing CR map

(311)#\[\MapPCTCsCR_{\Unitary}[\StateCR] \propto \OperatorPCTC \StateCR \OperatorPCTC^\dagger\]

given the chronology-respecting (CR) input state input_respecting (\(\StateCR\)) and (unitary) interaction described by gate (\(\Unitary\)). Here,

(312)#\[\OperatorPCTC \equiv \trace_\CV[\Unitary]\]

is the P-CTC operator.

Note

This function does not renormalize the output state as per the renormalized P-CTC map

(313)#\[\MapPCTCsCR_{\Unitary}[\StateCR] = \frac{\OperatorPCTC \StateCR \OperatorPCTC^\dagger} {\trace\bigl[ \OperatorPCTC \StateCR \OperatorPCTC^\dagger\bigr]}\]
Parameters:
  • input_respecting (mat | QuantumState) – The matrix representation of the chronology-respecting (CR) input state.

  • gate (mat | QuantumGate) – The matrix representation of the gate describing the (unitary) interaction between the CR and CV systems.

  • systems_respecting (list[int]) – The numerical indices of the chronology-respecting (CR) subsystems.

  • systems_violating (list[int]) – The numerical indices of the chronology-violating (CV) subsystems.

Returns:

mat – The solution of the P-CTC CR map.

Class#

class PCTC(
*args,
**kwargs,
)[source]#

Bases: QuantumCTC

A subclass for creating closed timelike curves described by the postselected teleportation prescription (P-CTCs) of quantum time travel.

This is built upon the QuantumCTC class, and so inherits all of its attributes, properties, and methods.

Parameters:
  • *args – Variable-length argument list, passed directly to the constructor __init__ of the superclass QuantumGate.

  • **kwargs – Arbitrary keyword arguments, passed directly to the constructor __init__ of the superclass QuantumGate.

Examples

For usage examples, please see the superclass QuantumCTC.

Read-only properties#

property PCTC.matrix: MutableDenseMatrix#

The matrix representation of the total P-CTC CR output state prior to any post-processing.

Methods#

PCTC.output_violating(
conditions: list[tuple[Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str, Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str]] | None = None,
simplify: bool | None = None,
conjugate: bool | None = None,
) MutableDenseMatrix[source]#

Compute the matrix representation of the P-CTC chronology-violating (CV) state.

Parameters:
  • conditions (list[tuple[num | sym | str, num | sym | str]]) – Algebraic conditions to be applied to the state. Defaults to the value of self.conditions.

  • simplify (bool) – Whether to perform algebraic simplification on the state. Defaults to False.

  • conjugate (bool) – Whether to perform Hermitian conjugation on the state. Defaults to False.

Returns:

mat – The matrix representation of the CV output state.

Note

The validity of the expression used in this method to compute the P-CTC CV state for non-qubit systems has not been proven.

PCTC.output_respecting(
conditions: list[tuple[Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str, Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str]] | None = None,
simplify: bool | None = None,
conjugate: bool | None = None,
postprocess: bool | None = None,
) MutableDenseMatrix[source]#

Compute the matrix representation of the P-CTC chronology-respecting (CR) state (including any post-processing).

Parameters:
  • conditions (list[tuple[num | sym | str, num | sym | str]]) – Algebraic conditions to be applied to the state. Defaults to the value of self.conditions.

  • simplify (bool) – Whether to perform algebraic simplification on the state. Defaults to False.

  • conjugate (bool) – Whether to perform Hermitian conjugation on the state. Defaults to False.

  • postprocess (bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults to True.

Returns:

mat – The matrix representation of the (post-processed) CR output state.

Note

The output state is not renormalized.

PCTC.output(
conditions: list[tuple[Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str, Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str]] | None = None,
simplify: bool | None = None,
conjugate: bool | None = None,
postprocess: bool | None = None,
) MutableDenseMatrix[source]#

An alias for the output_respecting() method.

Useful for polymorphism.

Parameters:
  • conditions (list[tuple[num | sym | str, num | sym | str]]) – Algebraic conditions to be applied to the state. Defaults to the value of self.conditions.

  • simplify (bool) – Whether to perform algebraic simplification on the state. Defaults to False.

  • conjugate (bool) – Whether to perform Hermitian conjugation on the state. Defaults to False.

  • postprocess (bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults to True.

Returns:

mat – The matrix representation of the (post-processed) CR output state.

Note

The output state is not renormalized.

PCTC.state_violating(
conditions: list[tuple[Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str, Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str]] | None = None,
simplify: bool | None = None,
conjugate: bool | None = None,
norm: bool | Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str | None = None,
label: str | None = None,
notation: str | None = None,
traces: list[int] | None = None,
debug: bool | None = None,
) QuantumState[source]#

Compute the P-CTC chronology-violating (CV) state as a QuantumState instance.

Parameters:
  • conditions (list[tuple[num | sym | str, num | sym | str]]) – Algebraic conditions to be applied to the state. Defaults to the value of self.conditions.

  • simplify (bool) – Whether to perform algebraic simplification on the state before committing it in the matrix property. Defaults to False.

  • conjugate (bool) – Whether to perform Hermitian conjugation on the state. Defaults to False.

  • norm (bool | num | sym | str) – The value to which the state is normalized. If True, normalizes to a value of \(1\). If False, does not normalize. Defaults to False.

  • label (str) – The unformatted string used to represent the state in mathematical expressions. Must have a non-zero length. Defaults to "ρ" (if form == "matrix") or "ψ" (if form == "vector").

  • notation (str) – The formatted string used to represent the state in mathematical expressions. When not None, overrides the value passed to label. Must have a non-zero length. Not intended to be set by the user in most cases. Defaults to None.

  • traces (list[int]) – A list of indices of the CV systems (relative to the entire circuit) on which to perform partial traces. Defaults to [].

  • debug (bool) – Whether to print the internal state (held in matrix) on change. Defaults to False.

Returns:

QuantumState – The CV output state as a QuantumState instance.

Note

The validity of the expression used in this method to compute the P-CTC CV state for non-qubit systems has not been proven.

PCTC.state_respecting(
conditions: list[tuple[Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str, Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str]] | None = None,
simplify: bool | None = None,
conjugate: bool | None = None,
norm: bool | Number | generic | Basic | MatrixSymbol | MatrixElement | Symbol | str | None = None,
label: str | None = None,
notation: str | None = None,
traces: list[int] | None = None,
postprocess: bool | None = None,
debug: bool | None = None,
) QuantumState[source]#

Compute the P-CTC chronology-respecting (CR) state as a QuantumState instance.

Parameters:
  • conditions (list[tuple[num | sym | str, num | sym | str]]) – Algebraic conditions to be applied to the state. Defaults to the value of self.conditions.

  • simplify (bool) – Whether to perform algebraic simplification on the state before committing it to the matrix property. Defaults to False.

  • conjugate (bool) – Whether to perform Hermitian conjugation on the state. Defaults to False.

  • norm (bool | num | sym | str) – The value to which the state is normalized. If True, normalizes to a value of \(1\). If False, does not normalize. Defaults to False.

  • label (str) – The unformatted string used to represent the state in mathematical expressions. Must have a non-zero length. Defaults to "ρ" (if form == "matrix") or "ψ" (if form == "vector").

  • notation (str) – The formatted string used to represent the state in mathematical expressions. When not None, overrides the value passed to label. Must have a non-zero length. Not intended to be set by the user in most cases. Defaults to None.

  • traces (list[int]) – A list of indices of the CR systems (relative to the entire circuit) on which to perform partial traces. Performed regardless of the value of postprocess. Defaults to [].

  • postprocess (bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults to True.

  • debug (bool) – Whether to print the internal state (held in matrix) on change. Defaults to False.

Returns:

QuantumState – The (post-processed) CR output state as a QuantumState instance.

Note

The output state is not renormalized if norm is False.