Implementation of the convex cones introduced in the papers
Mariana Navarro, Andrés González Lorente, Pablo V. Parellada, Carlos Pascual-García, and Mateus Araújo
and
First you need to install Julia. From within Julia, enter the package manager by typing ]. Then install ConicQKD:
pkg> add https://github.com/araujoms/ConicQKD.jlThis will automatically install all dependencies. The main one is the solver Hypatia, which this package extends.
Simplified examples that demonstrate how to use the cones are available in the examples folder. They can also be used to reproduce the results of "Quantum key distribution rates from non-symmetric conic optimization". To reproduce the results of "Finite-size quantum key distribution rates from Renyi entropies using conic optimization" use the code available in MarianaNvrr/Renyi-ConicQKD.
The interface is formulated using the modeller JuMP.
To constraint a quantum state ρ to belong to the von Neumann QKD cone with CP maps Ghat and ZGhat the syntax is
@constraint(model, [h; ρ_vec] in EpiQKDTriCone{T,R}(Ghat, ZGhat, 1 + length(ρ_vec); blocks))To constraint a quantum state ρ to belong to the FastRényiQKD cone with CP maps Ghat, ZGhat, isometry S, and Rényi parameter β = 1/α the syntax is
@constraint(model, [h; ρ_vec] in EpiFastRenyiQKDTriCone{T,R}(β, Ghat, ZGhat, 1 + length(ρ_vec); S, blocks))To constraint quantum states ρ, σ to belong to the RényiQKD cone with CP maps Ghat, Zhat, isometry S, and Rényi parameter γ = α/(2α - 1) the syntax is
@constraint(model, [h; ρ_vec; σ_vec] in EpiRenyiQKDTriCone{T,R}(γ, Ghat, Zhat, 1 + length(ρ_vec) + length(σ_vec); S, blocks))modelis the JuMP optimization model being used.his a variable which will have the conditional entropy in base e.ρ_vec,σ_vecare vectorizations ofρ,σin the svec format (we provided a functionsvecto compute it).Tis the floating point type to be used (e.g.Float64,Double64,Float128,BigFloat, etc.).Ris either equal toT, in order to optimize over real matrices, or equal toComplex{T}in order to optimize over complex matrices.Ghat,ZGhat, andZhatencode the CP maps as vectors of Kraus operators.blocksis an optional keyword argument specifying the block structure ofZhatas a vector of vectors. For example, ifZhatmaps a 4x4ρto a matrixMsuch that onlyM[1:2,1:2]andM[3:4,3:4]are nonzero, thenblocksshould be[1:2, 3:4]. If this argument is omitted the computation will be considerably slower.Sis an optional keyword argument, assumed to be identity if ommitted.