Library

Public

BellDiagonalQudits.AnalysedCoordStateType

Representing an entanglement analyzed Bell diagonal state.

  • coordState: The analyzed CoordState
  • kernel: true if kernel check successful, else false. missing if entanglement check not applied.
  • spinrep: true if spinrep check successful, else false. missing if entanglement check not applied.
  • ppt: true if ppt check successful, else false. missing if entanglement check not applied.
  • realign: true if realignment check successful, else false. missing if entanglement check not applied.
  • concurrence: true if concurrence check successful, else false. missing if entanglement check not applied.
  • mub: true if mub check successful, else false. missing if entanglement check not applied.
  • numericEW: true if numericEW check successful, else false. missing if entanglement check not applied.
BellDiagonalQudits.AnalysisSpecificationType

Specification which entanglement checks to use.

  • kernel_check
  • spinrep_check
  • ppt_check
  • realignment_check
  • concurrenceqpcheck
  • mub_check
  • numericewcheck
  • useSymmetries
BellDiagonalQudits.BoundedCoordEWType

Represents an entanglement witness $W$ with extrema to detect entangled Bell diagonal states.

  • coords: Coordinates in Bell basis.
  • upperBound: Upper bound of $tr W \rho$ satisfied by all separable states $\rho$. Violation detects entanglement.
  • lowerBound: Lower bound of $tr W \rho$ satisfied by all separable states $\rho$. Violation detects entanglement.
  • checkedIterations: Number of iterations used in the optimization of bounds.
BellDiagonalQudits.CoordStateType

Represents a Bell diagonal state in Bell basis.

  • coords: Coordinates in Bell basis.
  • eClass: Entanglement class of the represented state.
BellDiagonalQudits.DensityStateType

Represents a Bell diagonal state.

  • coords: Coordinates in Bell basis.
  • densityMatrix: Hermitian density matrix in computational basis.
  • eClass: Entanglement class of the represented state.
BellDiagonalQudits.StandardBasisType

Represents a Bell basis related to Weyl operators.

  • basis: Array with elements containing Bell basis density matrices, Weyl- and flat indices.
BellDiagonalQudits.analyse_coordstateFunction
analyse_coordstate(
    d,
    coordState::CoordState,
    anaSpec::AnalysisSpecification,
    stdBasis::StandardBasis=missing,
    kernelPolytope::Union{HPolytope{Float64,Array{Float64,1}},VPolytope{Float64,Array{Float64,1}},Missing}=missing,
    bipartiteWeylBasis::Union{Vector{Array{Complex{Float64},2}},Missing}=missing,
    dictionaries::Union{Any,Missing}=missing,
    mubSet::Union{Vector{Vector{Vector{ComplexF64}}},Missing}=missing,
    boundedEWs::Union{Array{BoundedCoordEW},Missing}=missing,
    precision=10,
    relUncertainity=0.0
)

Return an AnalysedCoordState for a coordState in d dimensions based on the given anaSpec and corresponding analysis objects.

If an entanglement check should not be carried out or if an analysis object in not passed as variable, the corresponding property in anaSpec needs to be false. In this case, return the corresponding property of the AnalysedCoordState as missing.

BellDiagonalQudits.create_densitystateMethod
create_densitystate(coordState::CoordState, standardBasis::StandardBasis)

Return DensityStatecontaining the density matrix in computational basis based oncoordStatecoordinates in BellstandardBasis`.

BellDiagonalQudits.create_kernel_polytopeMethod
create_kernel_polytope(d, standardBasis::StandardBasis)

Return LazySets.HPolytope representation of the kernel polytope for dimension d and Bell basis standardBasis.

BellDiagonalQudits.create_random_bounded_ewsFunction
create_random_bounded_ews(
    d,
    standardBasis::StandardBasis,
    n,
    sphericalOnly::Bool,
    iterations::Integer,
    method=Optim.NelderMead,
    useConstrainedOpt=false
)

Return array of n BoundedEW with $d^2$ standardBasis coordinates uniformly distributed in [-1, 1] if sphericalOnly is false or uniformly distributed on unit sphere otherwise.

Use iterations runs to improve optimizatio with Optim.jl optimization method method.

BellDiagonalQudits.create_random_coordstatesFunction
create_random_coordstates(nSamples, d, object=:magicSimplex, precision=10, roundToSteps::Int=0, nTriesMax=10000000)

Return an array of nSamples $d^2$ dimensional CoordStates.

Use the object to specify the coordinate ranges to [0,1] for 'magicSimplex' or [0, 1/d] for 'enclosurePolytope'. If roundToSteps > 0, round the coordinates to the vertices that divide the range in roundToSteps` equally sized sections. Be aware that the resulting distribution of points is generally not uniform.

BellDiagonalQudits.extend_vpolytope_by_densitystatesMethod
extend_vpolytope_by_densitystates(
    sepPolytope::VPolytope{Float64,Array{Float64,1}},
    sepDensityStates::Array{DensityState},
    precision::Integer
)

Return an extended Lazysets.VPolytope representation of polytope of separable states based on given polytope sepPolytope and new separable sepDensityStates as new vertices.

BellDiagonalQudits.generate_symmetriesFunction
generate_symmetries(stdBasis::StandardBasis, d, orderLimit=0)

Return array of Permutations.Permutation of all symmetries up to order orderLimit in d dimensions generated by the generators represented in standardBasis.

BellDiagonalQudits.get_symcoordsMethod
get_symcoords(coords::Array{Float64,1}, symPermutations::Array{Permutation})

Return array containing all symmetric Bell coordinates of given symmetries symPermutations applied to Bell coordinates coords.

BellDiagonalQudits.sym_analyse_coordstateFunction
sym_analyse_coordstate(
    d,
    coordState::CoordState,
    symmetries::Array{Permutation},
    anaSpec::AnalysisSpecification,
    stdBasis::StandardBasis=missing,
    kernelPolytope::Union{HPolytope{Float64,Array{Float64,1}},VPolytope{Float64,Array{Float64,1}},Missing}=missing,
    bipartiteWeylBasis::Union{Vector{Array{Complex{Float64},2}},Missing}=missing,
    dictionaries::Union{Any,Missing}=missing,
    mubSet::Union{Vector{Vector{Vector{ComplexF64}}},Missing}=missing,
    boundedCoordEWs::Union{Array{BoundedCoordEW},Missing}=missing,
    precision=10,
    relUncertainity=0.0
)

Return an AnalysedCoordState for a coordState in d dimensions based on the given anaSpec and corresponding analysis objects and symmetry analysis.

If an entanglement check should not be carried out or if an analysis object in not passed as variable, the corresponding property in anaSpec needs to be false. In this case, return the corresponding property of the AnalysedCoordState as missing.

BellDiagonalQudits.uniform_bell_samplerFunction
uniform_bell_sampler(n, d, object=:magicSimplex, precision=10)

Create array of n uniformly distributed $d^2$ Bell diagonal states represented as CoordState rounded to precision digits.

Use object=:enclosurePolytope to create CoordStates in the enclosure polytope, having all $coords \leq 1/d$.

Internal

BellDiagonalQudits.BoundedEWType

Represents an entanglement witness $W$ with extrema and extremizers to detect entangled Bell diagonal states.

  • coords: Coordinates in Bell basis.
  • upperBound: Upper bound of $tr W \rho$ satisfied by all separable states $\rho$. Violation detects entanglement.
  • lowerBound: Lower bound of $tr W \rho$ satisfied by all separable states $\rho$. Violation detects entanglement.
  • maximizingDensityMatrix: Density matrix of separable state $\rho$ in computational basis, maximizing $tr W \rho$.
  • minimizingDensityMatrix: Density matrix of separable state $\rho$ in computational basis. minimizing $tr W \rho$.
  • checkedIterations: Number of iterations used in the optimization of bounds.
BellDiagonalQudits.EntanglementWitnessType

Represents an operator to detect Bell diagonal entangled states.

  • coords: Coordinates in Bell basis
  • operatorMatrix: Hermitian matrix representing the linear operator in computational basis.
BellDiagonalQudits.calculate_mub_correlationFunction
calculate_mub_correlation(d, mubSet::Vector{Vector{Vector{ComplexF64}}}, ρ, s=-1)

Based on complete set of mutually unbiased bases mubSet, return sum of mutual predictibilities, shifted by s, for density matrix ρ in d dimensions.

BellDiagonalQudits.classify_entanglementMethod
classify_entanglement(analysedCoordState)

Return entanglement class of analysedCoordState.

Entanglement class can be "UNKNWON", "PPT_UNKNOWN" for PPT states that can be separable or entangled, "SEP" for separable states, "BOUND" for PPT/bound entangled states or "NPT" for NPT/free entangled states.

BellDiagonalQudits.concurrence_qp_checkFunction
concurrence_qp_check(coordState::CoordState, d, dictionaries, precision=10)

Return true if the quasi-pure concurrence (see concurrence.jl) is positive for a coordState and given basis dictionaries in the given precision.

BellDiagonalQudits.create_basis_state_operatorsMethod
create_basis_state_operators(d, bellStateOperator, precision)

Use maximally entangled Bell state bellStateOperator of dimension d to create Bell basis and return with corresponding flat and Weyl indices.

BellDiagonalQudits.create_halfspheric_witnessesMethod
create_halfspheric_witnesses(standardBasis::StandardBasis, n)

Return array of n uniformly distributed random EntanglementWitness on unit sphere represented in Bell basis standardBasis.

BellDiagonalQudits.create_index_sublattice_stateMethod
create_index_sublattice_state(standardBasis::StandardBasis, subLattice)

Return collection of standardBasis elements contributing to the state corresponding to the sublattice, coordinates in Bell basis and density matrix in computational basis.

BellDiagonalQudits.create_kernel_vertexstatesMethod
create_kernel_vertexstates(d, standardBasis::StandardBasis)

Return array containing collections of corresponding standardBasis indices, coordinates and density matrices for all d element sublattices in discrete phase space.

BellDiagonalQudits.create_random_witnessesMethod
create_random_witnesses(standardBasis::StandardBasis, n)

Return array of n uniformly distributed random EntanglementWitness represented in Bell basis standardBasis.

BellDiagonalQudits.direct_optimizationFunction
direct_optimization(f, negf, method, d, iterations, constrainedOpt=false)

Return total (minimum, minimizer) and (maximum, maximizer) of iterations optimization runs of function f and its negative negf over the set of separale states using Optim.jl optimization mehtod method.

Optim.jl is used for optimazation based on parameterization.jl, so f and negf are defined for $2(d-1)$ parameters. Supported methods include NelderMead, LBFGS and NewtonTrustRegion.

BellDiagonalQudits.get_bounded_ewFunction
get_bounded_ew(d, wit::EntanglementWitness, iterations, method=Optim.NelderMead, useConstrainedOpt=false)

Return BoundedEW in d dimensions based on EntanglementWitness wit and iterations optimization runs of lower and upper bound for separable states.

BellDiagonalQudits.get_comppar_unitary_from_parvectorMethod
get_comppar_unitary_from_parvector(x, d)

Return parameterized unitatry matrix U of dimension d and rank 1 from parameter vector x with $2(d-1)$ elements.

Using the first basis state of the computational basis with density matrix $e_1$, any pure state $\rho$ can be generated as $\rho = U e_1 U^\dagger$.

BellDiagonalQudits.get_concurrence_qpMethod
get_concurrence_qp(coords, d, dictionaries)

Return quasi-pure approximation of the concurrence for a Bell diagonal state represented by coordinates coords with respect to a StandardBasis and corresponding dictionaries in d dimensions.

BellDiagonalQudits.get_direct_functions_for_wit_traceoptimizationMethod
get_direct_functions_for_wit_traceoptimization(wit::EntanglementWitness, d)

Return the function and its negative that calculates $tr \rho$ wit.coords, the trace of the given witness wit multiplied by a parameterized seperable state $\rho$ in d dimensions.

BellDiagonalQudits.get_permutation_from_translationMethod
get_permutation_from_translation(translation::Tuple{Int,Int}, stdBasis::StandardBasis, d)

Return Permutations.Permutation of translation for $d^2$ dimensional vector of coordinates in Bell basis standardBasis.

BellDiagonalQudits.get_witness_extremaFunction
get_witness_extrema(d, wit::EntanglementWitness, iterations, method, useConstrainedOpt=false)

Return optimization (see optimization.jl) results for lower and upper bound of d dimensional EntanglementWitness wit using iterations runs and Optim.jl optimization method method.

BellDiagonalQudits.ispptMethod
isPPTP(ρ, d, precision)

Return true if the partial transposition of the Hermitian matrix based on the upper triangular of ρ is positive semi-definite in precision.

BellDiagonalQudits.ispsdMethod
ispsd(M, precision)

Return true if the smallest eingenvalue of matrix M rounded to precision precision is not negative.

BellDiagonalQudits.kernel_checkMethod

kernel_check(coordState::CoordState, kernelPolytope::Union{HPolytope{Float64,Array{Float64,1}},VPolytope{Float64,Array{Float64,1}}})

Return true if the Euclidean coordinates of the coordStateare contained in thekernelPolytope` represented in V- or H-representation.

BellDiagonalQudits.mub_checkMethod
mub_check(coordState::CoordState, d, stdBasis::StandardBasis, mubSet::Vector{Vector{Vector{ComplexF64}}})

Return true if the sum of mutual predictibilities for a mubSet (see mub.jl) of dimension d exceeds $2$ for a coordState and given standardBasis.

BellDiagonalQudits.numeric_ew_checkFunction
numeric_ew_check(coordState::CoordState, boundedEWs::Array{BoundedCoordEW}, relUncertainity::Float64)

Return true if any entanglement witness of boundedEWs detects the density matrix ρ as entangled.

An entanglement witness $E$ of boundedEWs detects ρ, if the scalar product $\rho$.coords $\cdot E$.coords is not in [lowerBound, upperBound]. If a relUncertainity is given, the violation relative to upperBound-lowerBound needs to exceed relUncertainity` to detect entanglement.

BellDiagonalQudits.ppt_checkFunction
ppt_check(coordState::CoordState, standardBasis::StandardBasis, precision=10)

Return trueif thecoordStatedefined via thestandardBasishas positive partial transposition in the givenprecision`.

BellDiagonalQudits.realignment_checkFunction
realignment_check(coordState::CoordState, standardBasis::StandardBasis, precision=10)

Return trueif the realignedcoordStatedefined via thestandardBasishas trace norm> 1in the givenprecision`.

BellDiagonalQudits.spinrep_checkFunction
spinrep_check(coordState::CoordState, stdBasis::StandardBasis, bipartiteWeylBasis::Vector{Array{Complex{Float64},2}}, precision=10)

Return true and detects a coordState for a standardBasis as separbale, if its coefficiencts in the bipartiteWeylBasis have 1-norm smaller than $2$ in given precision.

BellDiagonalQudits.weyltrfMethod
weyltrf(d, ρ, k, l)

Apply the $(k,l)$-th Weyl transformation of dimension d to the density matrix ρ. Return $W_{k,l} \rho W_{k,l}^\dagger$.