Giter Site home page Giter Site logo

silky / icryptol Goto Github PK

View Code? Open in Web Editor NEW

This project forked from galoisinc/icryptol

0.0 2.0 0.0 115 KB

IPython-style interaction for Cryptol

License: BSD 3-Clause "New" or "Revised" License

Makefile 12.75% Shell 2.91% Python 50.05% CSS 0.38% JavaScript 4.59% Haskell 29.33%

icryptol's Introduction

ICryptol Notebook (Experimental)

This project allows Cryptol to run in an IPython notebook. There is an executable icryptol-kernel that uses Cryptol as a library, and a script icryptol which sets up the current IPython environment with a Cryptol profile. More details are available in issues #75, #76, and #163.

Getting ICryptol Binaries

TODO

Getting CVC4

ICryptol currently depends on the CVC4 SMT solver to solve constraints during type checking, and as the default solver for the :sat and :prove commands. You can download CVC4 binaries for a variety of platforms from their download page.

Building ICryptol From Source

Prerequisites

Building ICryptol requires building Cryptol, so you must first satisfy the prerequisites for Cryptol.

There are a couple extra prerequisites for the notebook, though we hope to ease them in the future.

Cryptol sources

Add a checkout of the Cryptol repository to your cabal sandbox sources:

git clone https://github.com/GaloisInc/cryptol.git deps/cryptol
cabal sandbox init
cabal sandbox add-source deps/cryptol

IPython 2.4

Install IPython 2.4 (see http://ipython.org/install.html, but note that we don't yet support IPython 3). Internally we've had the best luck installing with pip install --user "ipython[notebook]<3.0.0". Make sure ipython is on your path.

Install ZeroMQ 4 with development headers (see https://github.com/gibiansky/IHaskell#zeromq).

Once these prerequisites are in place, you can run the notebook in place with make notebook, or run icryptol from a distribution.

Building ICryptol

From the ICryptol source directory, run:

make

This will build ICryptol in place. From there, there are additional targets:

  • make notebook: run ICryptol and launch a browser session
  • make tarball: build a tarball with a relocatable ICryptol binary and examples
  • make dist: build a platform-specific distribution. On all platforms except Windows, this is currently equivalent to make tarball. On Windows, this will build an .msi package using WiX Toolset 3.8, which must be installed separately.

Checking your Installation

Run ICryptol, and in a cell type:

:prove True

If ICryptol responds

Q.E.D.

then ICryptol is installed correctly. If it prints something like

*** An error occurred.
***  Unable to locate executable for cvc4
***  Executable specified: "cvc4"

then make sure you've installed CVC4, and that the binary is on your PATH.

Contributing

See the [contributor's guide for Cryptol](https://github.com/GaloisInc/cryptol#contributing]

Repository Structure

  • /examples: ICryptol notebooks in .ipynb format implementing several interesting algorithms
  • /profile-cryptol: The skeleton of an IPython profile for ICryptol. This gets lightly preprocessed to point to the icryptol-kernel executable
  • /src: Haskell sources for the front-end icryptol-kernel executable

Thanks!

ICryptol has been under development for a couple of years with several people contributing to its design and implementation. Those people include (but are not limited to) Adam Foltzer, David Christiansen, Dylan McNamee, Aaron Tomb, Iavor Diatchki, Rogan Creswick and Benjamin Jones. Special thanks to Andrew Gibianski whose IHaskell project provides the underpinning of this project.

icryptol's People

Contributors

acfoltzer avatar david-christiansen avatar

Watchers

 avatar  avatar

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.