Giter Site home page Giter Site logo

dominique-unruh / qrhl-tool Goto Github PK

View Code? Open in Web Editor NEW
17.0 5.0 3.0 92.28 MB

Proof assistant for qRHL

Home Page: https://dominique-unruh.github.io/qrhl-tool/

License: MIT License

Scala 41.41% Isabelle 36.35% Standard ML 11.49% Makefile 0.12% Shell 0.19% OCaml 10.35% Dockerfile 0.07% Batchfile 0.02% PowerShell 0.01%
theorem-prover quantum-cryptography

qrhl-tool's Introduction

Build Status Gitter chat

Qrhl-tool is an interactive theorem prover for qRHL (quantum relational Hoare logic), specifically for quantum and post-quantum security proofs.

Acknowledgments

Development was supported by the Air Force Office of Scientific Research (AOARD Grant FA2386-17-1-4022), by the ERC consolidator grant CerQuS (819317), and by the PRG946 grant from the Estonian Research Council.

qrhl-tool's People

Contributors

dominique-unruh avatar josephcmac avatar tejasanilshah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

qrhl-tool's Issues

Error while installing on MacOS

The following error appears when I install QRHL on MacOS. It seems that the package only works with Linux, not Darwin.
Thank you very much for considering this issue.

Screen Shot 2020-09-15 at 20 51 17

Binary installation documentation bugs

I just managed to get qrhl-tool running. In doing so, I ran into a couple of issues with the installation instructions in README.md.

First, the github downloads directory does not seem to have a binary development snapshot as the README suggests. I succeeded at installing qrhl-0.6.zip using Isabelle 2019.

Second, the README claims that the path to AFP should be set in qrhl-tool.conf as afp-home, but this results in AFP not being found. It seems to need to be set as afp-root instead.

Exceptions should be rendered prettily

At least Par_Exn [CONTEXT (<context>, ERROR "Failed to apply initial proof method <markup>:\n<markup>")]

See the example code from #6 which raises this exception.

Documentation updates

  • qrhl-tool.conf not searched for in current directory
  • no options session-dir, session in config
  • directory of isabelle command is session dir
  • isabelle command syntax [session]

Methods that does wp, skip, rnd, simp automatically

Rough algo:

  • For assignments, do wp.
  • For <$ on both sides with everything the same, do rnd.
  • For identical call on both sides, to equal.
  • For skip on both sides, do skip.
  • For result of skip, do simp (with the lemmas that are given to the method)
  • Repeat till it doesn't work.

Phase out overloaded syntaxes

  • $\cdot$ for operator applications
  • $\otimes$ for tensor product (also unify tensorOp and tensor_op)
  • $&gt;&gt;$ only for operators (at least document the =q variant
  • Input method syntax for those
  • Document

Print Isabelle exceptions including extra arguments

E.g., if TERM ("text", terms) is raised, then text is printed when the exception is forwarded to qrhl-tool, but terms are not printed.
In contrast, in jEdit, those arguments are always printed, so there is a way to translate such exceptions to text!

Tool should recognize if dependent theory changes

E.g., if we load isabelle Test and Test.thy loads Bla.thy and blubb.ML, then a change in those should also lead to a warning about changed files. (But files included in the QRHL session should not.)

Adapt TeX input method

The TeX input method should have nicer keystrokes for some symbols (e.g. \frqq, or quantum equality, or [[).
Also, it should not interpret _ to create a small letter.

Printing/parsing ambiguity

On Isabelle level: both (A *⇩S B) ⊓ C and A *⇩S (B ⊓ C) print as A *⇩S B ⊓ C which fails to parse.


bin/qrhl should abort on error

Currently, bin/qrhl file.qrhl, if there is an error in file.qrhl, will throw an exception and then wait forever.
It should return with nonzero return code instead.

Fix syntactic sugar in goal-state-display

For example:
probability (expression 〚var_b〛 (λb. b = 1)) enc_fixed rho = probability (expression 〚var_b〛 (λb. b = 1)) random rho
should be
Pr[b=1 : enc_fixed(rho)] = Pr[b=1: random(rho)]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.