Deutsch’s prescription (D-CTCs)#
Functions#
- dctc_violating(
- input_respecting: MutableDenseMatrix | QuantumState,
- gate: MutableDenseMatrix | QuantumGate,
- systems_respecting: list[int],
- systems_violating: list[int],
- free_symbol: MatrixSymbol | MatrixElement | Symbol | str | None = None,
Calculate the chronology-violating (CV) state(s) according to the D-CTC prescription by computing fixed points of the map
(308)#\[\MapDCTCsCV_{\Unitary}[\StateCR,\StateCV] = \trace_\CR\bigl[\Unitary(\StateCR \otimes \StateCV)\Unitary^\dagger\bigr]\]given the chronology-respecting (CR) input state
input_respecting
(\(\StateCR\)) and (unitary) interaction described bygate
(\(\Unitary\)).- 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.
free_symbol (sym | str) – The representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points. Defaults to
"g"
.
- Returns:
mat – The fixed-point solution(s) of the D-CTC CV map.
Note
Please note that this function in its current form is considered to be highly experimental.
- dctc_respecting(
- input_respecting: MutableDenseMatrix | QuantumState,
- input_violating: MutableDenseMatrix | QuantumState,
- gate: MutableDenseMatrix | QuantumGate,
- systems_respecting: list[int],
- systems_violating: list[int],
Calculate the chronology-respecting (CR) state(s) according to the D-CTC prescription’s CR map
(309)#\[\MapDCTCsCR_{\Unitary}[\StateCR,\StateCV] = \trace_\CV\bigl[\Unitary(\StateCR \otimes \StateCV)\Unitary^\dagger\bigr]\]given the chronology-respecting (CR) input state
input_respecting
(\(\StateCR\)), chronology-violating (CV) solution stateinput_violating
(\(\StateCV\)), and (unitary) interaction described bygate
(\(\Unitary\)).- Parameters:
input_respecting (mat | QuantumState) – The matrix representation of the chronology-respecting (CR) input state.
input_violating (mat | QuantumState) – The matrix representation of the chronology-violating (CR) solution 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(s) of the D-CTC CR map.
Class#
- class DCTC(
- *args,
- free_symbol: MatrixSymbol | MatrixElement | Symbol | str | None = None,
- **kwargs,
Bases:
QuantumCTC
A subclass for creating closed timelike curves described by Deutsch’s prescription (D-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 superclassQuantumGate
.free_symbol (sym | str) – The representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points. Defaults to
"g"
.**kwargs – Arbitrary keyword arguments, passed directly to the constructor
__init__
of the superclassQuantumGate
.
Examples
For usage examples, please see the superclass
QuantumCTC
.
Constructor argument properties#
- property DCTC.free_symbol: MatrixSymbol | MatrixElement | Symbol | str#
The representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points.
Read-only properties#
- property DCTC.matrix: MutableDenseMatrix#
The matrix representation of the total D-CTC chronology-respecting (CR) output state prior to any post-processing.
Methods#
- DCTC.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,
- free_symbol: MatrixSymbol | MatrixElement | Symbol | str | None = None,
Compute the matrix representation of the D-CTC chronology-violating (CV) state(s).
- 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
.free_symbol (str) – The string representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points. Defaults to the value of
self.free_symbol
.
- Returns:
mat – The matrix representation of the CV output state.
- DCTC.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,
- free_symbol: MatrixSymbol | MatrixElement | Symbol | str | None = None,
Compute the matrix representation of the D-CTC chronology-respecting (CR) state(s) (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
.free_symbol (str) – The string representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points. Defaults to the value of
self.free_symbol
.
- Returns:
mat – The matrix representation of the (post-processed) CR output state.
- DCTC.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,
- free_symbol: MatrixSymbol | MatrixElement | Symbol | str | None = None,
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
.free_symbol (str) – The string representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points. Defaults to the value of
self.free_symbol
.
- Returns:
mat – The matrix representation of the (post-processed) CR output state.
- DCTC.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,
- free_symbol: MatrixSymbol | MatrixElement | Symbol | str | None = None,
Compute the D-CTC chronology-violating (CV) state(s) 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 toFalse
.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\). 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 not
None
, 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
[]
.free_symbol (str) – The string representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points. Defaults to the value of
self.free_symbol
.debug (bool) – Whether to print the internal state (held in
matrix
) on change. Defaults toFalse
.
- Returns:
QuantumState – The CV output state as a
QuantumState
instance.
- DCTC.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,
- free_symbol: MatrixSymbol | MatrixElement | Symbol | str | None = None,
Compute the D-CTC chronology-respecting (CR) state(s) 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 toFalse
.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\). 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 not
None
, 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 of
postprocess
. Defaults to[]
.postprocess (bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults to
True
.free_symbol (str) – The string representation of the algebraic symbol to be used as the free parameter in the case where the CV map has a multiplicity of fixed points. Defaults to the value of
self.free_symbol
.debug (bool) – Whether to print the internal state (held in
matrix
) on change. Defaults toFalse
.
- Returns:
QuantumState – The (post-processed) CR output state as a
QuantumState
instance.