Entanglement Purification

Code for BBPSSW entanglement purification.

This module defines code to support the BBPSSW protocol for entanglement purification. Success results are pre-determined based on network parameters. Also defined is the message type used by the BBPSSW code.

class src.entanglement_management.purification.BBPSSW(own: Node, name: str, kept_memo: Memory, meas_memo: Memory)

Purification protocol instance.

This class provides an implementation of the BBPSSW purification protocol. It should be instantiated on a quantum router node.

Variables:

BBPSSW.circuit (Circuit): circuit that purifies entangled memories.

own

node that protocol instance is attached to.

Type:

QuantumRouter

name

label for protocol instance.

Type:

str

kept_memo

memory to be purified by the protocol (should already be entangled).

meas_memo

memory to measure and discart (should already be entangled).

meas_res

measurement result from circuit.

Type:

int

remote_node_name

name of other node.

Type:

str

remote_protocol_name

name of other protocol

Type:

str

remote_memories

name of remote memories

Type:

List[str]

static improved_fidelity(F: float) float

Method to calculate fidelity after purification.

Formula comes from Dur and Briegel (2007) formula (18) page 14.

Parameters:

F (float) – fidelity of entanglement.

is_ready() bool

Method to check if protocol is ready to start (abstract).

Returns:

if protocol is ready or not.

Return type:

bool

memory_expire(memory: Memory) None

Method to receive memory expiration events.

Parameters:

memory (Memory) – memory that has expired.

Side Effects:

Will call update_resource_manager method.

received_message(src: str, msg: BBPSSWMessage) None

Method to receive messages.

Parameters:
  • src (str) – name of node that sent the message.

  • msg (BBPSSW message) – message received.

Side Effects:

Will call update_resource_manager method.

release() None

Method to release attached memories.

set_others(protocol: str, node: str, memories: List[str]) None

Method to set other entanglement protocol instance.

Parameters:
  • protocol (str) – other protocol name.

  • node (str) – other node name.

  • memories (List[str]) – the list of memory names used on other node.

start() None

Method to start entanglement purification.

Run the circuit below on two pairs of entangled memories on both sides of protocol.

o ——-(x)———-| M | . | . o —-.—————- . . . . . o . o

The overall circuit is shown below:

o ——-(x)———-| M | . | . o —-.—————- . . . . . o —-.—————- . | o ——-(x)———-| M |

Side Effects:

May update parameters of kept memory. Will send message to other protocol instance.

class src.entanglement_management.purification.BBPSSWMessage(msg_type: BBPSSWMsgType, receiver: str, **kwargs)

Message used by entanglement purification protocols.

This message contains all information passed between purification protocol instances.

msg_type

defines the message type.

Type:

BBPSSWMsgType

receiver

name of destination protocol instance.

Type:

str

class src.entanglement_management.purification.BBPSSWMsgType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Defines possible message types for entanglement purification