entanglish.MaxEntangState module

class entanglish.MaxEntangState.MaxEntangState(num_rows, row_shape, x_axes, y_axes)[source]

Bases: object

This class is designed to perform tasks related to a maximally entangled pure state with parts x_axes, y_axes. x_axes, y_axes give a bi-partition of range( len(row_shape)).

See Ref.1 for an explicit definition of the maximally entangled states that we use. The basic requirement for a density matrix Dxy to be maximally entangled is for its partial trace Dx to be a diagonal matrix with all terms in the diagonal equal to the same constant. The sum of the diagonal elements must of course be one. For example, Dx=diag(0.25, 0.25,0.25,0.25) (If num_vals_x != num_vals_y, this assumes that num_vals_x is the smaller of the two.)

References

1. R.R. Tucci, “A New Algorithm for Calculating Squashed Entanglement and a Python Implementation Thereof”

Variables:
  • num_rows (int) – equals product(row_shape)
  • num_vals_min (int) – equals min( num_vals_x, num_vals_y)
  • num_vals_x (int) – equals product(row_shape_x)
  • num_vals_y (int) – equals product(row_shape_y)
  • row_shape (tuple[int]) –
  • row_shape_x (tuple[int]) – subset of row_shape, only items indexed by x_axes
  • row_shape_y (tuple[int]) – subset of row_shape, only items indexed by y_axes
  • x_axes (list{int]) –
  • y_axes (list{int]) –
__init__(num_rows, row_shape, x_axes, y_axes)[source]

Constructor

Parameters:
  • num_rows (int) –
  • row_shape (tuple[int]) –
  • x_axes (list{int]) –
  • y_axes (list{int]) –
get_known_entang()[source]

This method returns the known entanglement of the state, i.e. log( self.num_vals_min)

Returns:
Return type:float
get_st_vec()[source]

This method returns the state vector of the state.

Returns:shape=(self.num_rows,)
Return type:np.ndarray