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
(310)#\[\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
(311)#\[\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:
QuantumCTCA subclass for creating closed timelike curves described by Deutsch’s prescription (D-CTCs) of quantum time travel.
This is built upon the
QuantumCTCclass, 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
QuantumStateinstance.- 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
matrixproperty. 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
QuantumStateinstance.
- 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
QuantumStateinstance.- 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
matrixproperty. 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
QuantumStateinstance.