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
(316)#\[\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
(317)#\[\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[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- free_symbol: sym | str | None = None,
Compute the matrix representation of the D-CTC chronology-violating (CV) state(s).
- Parameters:
conditions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic conditions to be applied to the state. Defaults to the value ofself.conditions.simplify (
bool) – Whether to perform algebraic simplification on the state. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. Defaults toFalse.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 ofself.free_symbol.
- Returns:
mat– The matrix representation of the CV output state.
- DCTC.output_respecting(
- conditions: list[tuple[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- postprocess: bool | None = None,
- free_symbol: sym | 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 | expr | str,num | expr | str]]) – Algebraic conditions to be applied to the state. Defaults to the value ofself.conditions.simplify (
bool) – Whether to perform algebraic simplification on the state. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. Defaults toFalse.postprocess (
bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults toTrue.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 ofself.free_symbol.
- Returns:
mat– The matrix representation of the (post-processed) CR output state.
- DCTC.output(
- conditions: list[tuple[num | expr | str, num | expr | str]] | None = None,
- simplify: bool | None = None,
- conjugate: bool | None = None,
- postprocess: bool | None = None,
- free_symbol: sym | str | None = None,
An alias for the
output_respecting()method.Useful for polymorphism.
- Parameters:
conditions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic conditions to be applied to the state. Defaults to the value ofself.conditions.simplify (
bool) – Whether to perform algebraic simplification on the state. Defaults toFalse.conjugate (
bool) – Whether to perform Hermitian conjugation on the state. Defaults toFalse.postprocess (
bool) – Whether to post-process the state (i.e., perform the circuit’s traces and postselections). Defaults toTrue.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 ofself.free_symbol.
- Returns:
mat– The matrix representation of the (post-processed) CR output state.
- DCTC.state_violating(
- conditions: 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,
- free_symbol: sym | str | None = None,
Compute the D-CTC chronology-violating (CV) state(s) as a
QuantumStateinstance.- Parameters:
conditions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic conditions to be applied to the state. Defaults to the value ofself.conditions.simplify (
bool) – Whether to perform algebraic simplification on the state before committing it to thematrixproperty. 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.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[].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 ofself.free_symbol.debug (
bool) – Whether to print the internal state (held inmatrix) on change. Defaults toFalse.
- Returns:
QuantumState– The CV output state as aQuantumStateinstance.
- DCTC.state_respecting(
- conditions: 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,
- free_symbol: sym | str | None = None,
Compute the D-CTC chronology-respecting (CR) state(s) as a
QuantumStateinstance.- Parameters:
conditions (
list[tuple[num | expr | str,num | expr | str]]) – Algebraic conditions to be applied to the state. Defaults to the value ofself.conditions.simplify (
bool) – Whether to perform algebraic simplification on the state before committing it to thematrixproperty. 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.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.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 ofself.free_symbol.debug (
bool) – Whether to print the internal state (held inmatrix) on change. Defaults toFalse.
- Returns:
QuantumState– The (post-processed) CR output state as aQuantumStateinstance.