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,
) MutableDenseMatrix[source]#

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 by gate (\(\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],
) MutableDenseMatrix[source]#

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 state input_violating (\(\StateCV\)), and (unitary) interaction described by gate (\(\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,
)[source]#

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 superclass QuantumGate.

  • 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 superclass QuantumGate.

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,
) MutableDenseMatrix[source]#

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,
) MutableDenseMatrix[source]#

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,
) 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.

  • 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,
) QuantumState[source]#

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 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 [].

  • 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 to False.

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,
) QuantumState[source]#

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 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.

  • 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 to False.

Returns:

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