Postselected teleportation (P-CTCs)#
Functions#
- pctc_violating(
- input_respecting: mat | arr | QuantumState,
- gate: mat | arr | QuantumGate,
- systems_respecting: list[int],
- systems_violating: list[int],
Calculate the chronology-violating (CV) state according to the P-CTC weak-measurement tomography expression for the prescription’s CV map
(324)#\[\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 interaction described bygate(\(\Unitary\)). Here, \(\Dimension\) is the dimensionality of the CV 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 | arr | QuantumState) – The matrix representation of the chronology-respecting (CR) input state.gate (
mat | arr | 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 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: mat | arr | QuantumState,
- gate: mat | arr | QuantumGate,
- systems_respecting: list[int],
- systems_violating: list[int],
Calculate the (non-renormalized) chronology-respecting (CR) state according to the P-CTC prescription’s non-renormalizing CR map
(325)#\[\MapPCTCsCR_{\Unitary}[\StateCR] \propto \OperatorPCTC \StateCR \OperatorPCTC^\dagger\]given the chronology-respecting (CR) input state
input_respecting(\(\StateCR\)) and (unitary) interaction described bygate(\(\Unitary\)). Here,(326)#\[\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
(327)#\[\MapPCTCsCR_{\Unitary}[\StateCR] = \frac{\OperatorPCTC \StateCR \OperatorPCTC^\dagger} {\trace\bigl[ \OperatorPCTC \StateCR \OperatorPCTC^\dagger\bigr]}.\]- Parameters:
input_respecting (
mat | arr | QuantumState) – The matrix representation of the chronology-respecting (CR) input state.gate (
mat | arr | 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,
Bases:
QuantumCTCA subclass for creating closed timelike curves described by the postselected teleportation prescription (P-CTCs) of quantum time travel.
This is built upon the
QuantumCTCclass, and so inherits all of its attributes, properties, and methods.- Parameters:
*args – Positional arguments, passed directly to the constructor
__init__of the superclassQuantumGate.**kwargs – Arbitrary keyword arguments, passed directly to the constructor
__init__of the superclassQuantumGate.
Examples
For usage examples, please see the superclass
QuantumCTC.
Methods#
- PCTC.matrix(
- numerical: bool | None = None,
- array: bool | None = None,
Compute the unprocessed matrix representation of the P-CTC chronology-respecting (CR) output state.
- Parameters:
numerical (
bool) – Whether to cast the matrix elements as floating-point values (True) (if possible) or exact values (False). Defaults to the value ofself.numerical.array (
bool) – Whether to cast the matrix as a NumPy array (True) or SymPy matrix (False). Defaults to the value ofself.array.
- Returns:
mat | arr– The unprocessed matrix representation of the P-CTC CR output state.
- PCTC.output(
- numerical: bool | None = None,
- array: bool | None = None,
- substitutions: list[tuple[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- norm: bool | num | expr | str | None = None,
- postprocess: bool | None = None,
An alias for the
output_respecting()method.Useful for polymorphism.
- Parameters:
numerical (
bool) – Whether to cast the matrix elements as floating-point values (True) (if possible) or exact values (False). Defaults to the value ofself.numerical.array (
bool) – Whether to cast the matrix as a NumPy array (True) or SymPy matrix (False). Defaults to the value ofself.array.substitutions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic substitutions to be applied to the state. Defaults to the value ofself.substitutions.simplify (
bool) – Whether to perform mathematical simplification on the state. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. Defaults toFalse.norm (
bool | num | expr | str) – The value to which the state is normalized. IfTrue, normalizes to a value of \(1\). IfFalse, does not normalize. Defaults toFalse.postprocess (
bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults toTrue.
- Returns:
mat | arr– The processed matrix representation of the P-CTC CR output state.
Note
The output state is not renormalized.
- PCTC.output_violating(
- numerical: bool | None = None,
- array: bool | None = None,
- substitutions: list[tuple[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- norm: bool | num | expr | str | None = None,
Compute the processed matrix representation of the P-CTC chronology-violating (CV) state.
- Parameters:
numerical (
bool) – Whether to cast the matrix elements as floating-point values (True) (if possible) or exact values (False). Defaults to the value ofself.numerical.array (
bool) – Whether to cast the matrix as a NumPy array (True) or SymPy matrix (False). Defaults to the value ofself.array.substitutions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic substitutions to be applied to the state. Defaults to the value ofself.substitutions.simplify (
bool) – Whether to perform mathematical simplification on the state. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. Defaults toFalse.norm (
bool | num | expr | str) – The value to which the state is normalized. IfTrue, normalizes to a value of \(1\). IfFalse, does not normalize. Defaults toFalse.
- Returns:
mat | arr– The processed matrix representation of the D-CTC 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(
- numerical: bool | None = None,
- array: bool | None = None,
- substitutions: list[tuple[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- norm: bool | num | expr | str | None = None,
- postprocess: bool | None = None,
Compute the matrix representation of the P-CTC chronology-respecting (CR) output state (including any post-processing, i.e., traces and postselections).
- Parameters:
numerical (
bool) – Whether to cast the matrix elements as floating-point values (True) (if possible) or exact values (False). Defaults to the value ofself.numerical.array (
bool) – Whether to cast the matrix as a NumPy array (True) or SymPy matrix (False). Defaults to the value ofself.array.substitutions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic substitutions to be applied to the state. Defaults to the value ofself.substitutions.simplify (
bool) – Whether to perform mathematical simplification on the state. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. Defaults toFalse.norm (
bool | num | expr | str) – The value to which the state is normalized. IfTrue, normalizes to a value of \(1\). IfFalse, does not normalize. Defaults toFalse.postprocess (
bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults toTrue.
- Returns:
mat | arr– The processed matrix representation of the P-CTC CR output state.
Note
The output state is not renormalized.
- PCTC.state_violating(
- numerical: bool | None = None,
- array: bool | None = None,
- substitutions: list[tuple[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- norm: bool | num | expr | str | None = None,
- label: str | None = None,
- notation: str | None = None,
- traces: list[int] | None = None,
- debug: bool | None = None,
Compute the P-CTC chronology-violating (CV) state as a
QuantumStateinstance.- Parameters:
numerical (
bool) – Whether to cast the state’s matrix elements as floating-point values (True) (if possible) or exact values (False). Defaults to the value ofself.numerical.array (
bool) – Whether to cast the state’s matrix as a NumPy array (True) or SymPy matrix (False). Defaults to the value ofself.array.substitutions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic substitutions to be applied to the state. Defaults to the value ofself.substitutions.simplify (
bool) – Whether to perform mathematical simplification on the state before committing it in thematrixproperty. IfFalse, does not simplify. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. IfFalse, does not conjugate. Defaults toFalse.norm (
bool | num | expr | str) – The value to which the state is normalized. IfTrue, normalizes to a value of \(1\). IfFalse, does not normalize. Defaults toFalse.label (
str) – The unformatted string used to represent the state in mathematical expressions. Must have a non-zero length. Defaults to"ρ"(ifform == "matrix") or"ψ"(ifform == "vector").notation (
str) – The formatted string used to represent the state in mathematical expressions. When notNone, overrides the value passed tolabel. Must have a non-zero length. Not intended to be set by the user in most cases. Defaults toNone.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 inmatrix) on change. IfFalse, does not print. Defaults toFalse.
- Returns:
QuantumState– The P-CTC CV output state as aQuantumStateinstance.
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(
- numerical: bool | None = None,
- array: bool | None = None,
- substitutions: list[tuple[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- norm: bool | num | expr | str | None = None,
- label: str | None = None,
- notation: str | None = None,
- traces: list[int] | None = None,
- postprocess: bool | None = None,
- debug: bool | None = None,
Compute the P-CTC chronology-respecting (CR) state as a
QuantumStateinstance.- Parameters:
numerical (
bool) – Whether to cast the state’s matrix elements as floating-point values (True) (if possible) or exact values (False). Defaults to the value ofself.numerical.array (
bool) – Whether to cast the state’s matrix as a NumPy array (True) or SymPy matrix (False). Defaults to the value ofself.array.substitutions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic substitutions to be applied to the state. Defaults to the value ofself.substitutions.simplify (
bool) – Whether to perform mathematical simplification on the state before committing it to thematrixproperty. IfFalse, does not simplify. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. IfFalse, does not conjugate. Defaults toFalse.norm (
bool | num | expr | str) – The value to which the state is normalized. IfTrue, normalizes to a value of \(1\). IfFalse, does not normalize. Defaults toFalse.label (
str) – The unformatted string used to represent the state in mathematical expressions. Must have a non-zero length. Defaults to"ρ"(ifform == "matrix") or"ψ"(ifform == "vector").notation (
str) – The formatted string used to represent the state in mathematical expressions. When notNone, overrides the value passed tolabel. Must have a non-zero length. Not intended to be set by the user in most cases. Defaults toNone.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 ofpostprocess. Defaults to[].postprocess (
bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults toTrue.debug (
bool) – Whether to print the internal state (held inmatrix) on change. IfFalse, does not print. Defaults toFalse.
- Returns:
QuantumState– The P-CTC CR output state as aQuantumStateinstance.
Note
The output state is not renormalized if
normisFalse.