Skip to content

ediparquantum/VeriQuEST.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VeriQuEST.jl

Stable Dev Build Status

Introduction

VeriQuEST.jl is a measurement based quantum computing package. To complete the quatnum emulation, the C library QuEST, is used. VeriQuEST's purpose is to emulate noisy verification protocols.

Quick start

Run the following commands along with relevant input to implement the blind verification.

using Pkg
Pkg.add(url = "https://github.com/fieldofnodes/VeriQuEST.jl")

or

] add https://github.com/fieldofnodes/VeriQuEST.jl

Then,

using VeriQuEST

A generic template, currently these variable names are mandatory.

# Set up input values
graph = Graph(2)
add_edge!(graph,1,2)


io = InputOutput(Inputs(),Outputs(2))
qgraph = QuantumGraph(graph,io)
function forward_flow(vertex)
    v_str = string(vertex)
    forward = Dict(
        "1" =>2,
        "2"=>0)
    forward[v_str]
end
flow = Flow(forward_flow)
measurement_angles = Angles([π/2/2])
total_rounds = 10
computation_rounds = 1
trapification_strategy = TestRoundTrapAndDummycolouring()



# Initial setups
ct = LeichtleVerification(
    total_rounds,
    computation_rounds,
    trapification_strategy,
    qgraph,flow,measurement_angles)
nt_bp = BellPairExplicitNetwork()
nt_im = ImplicitNetworkEmulation()
st = DensityMatrix()
ch = NoisyChannel(NoNoise(NoQubits()))

for i in Base.OneTo(100)
    ver_res1 = run_verification_simulator(ct,nt_bp,st,ch)
    ver_res2 = run_verification_simulator(ct,nt_im,st,ch)
    @assert ver_res1.tests isa Ok
    @assert ver_res2.tests isa Ok
end

vr = run_verification_simulator(ct,nt_bp,st,ch)
get_tests(vr) 
get_computations(vr)
get_tests_verbose(vr)
get_computations_verbose(vr) 
get_computations_mode(vr) 

This script can be seen as the mandatory configuration used to run all subsequent computations.