Coder Social home page Coder Social logo

oratio's Introduction

Oratio

Interactively build any proof object

Oratio is an experiment around interactive theorem proving. It includes a program to build and verify natural deduction proof trees for the propositional logic. It is based on a set of tactics which output proof construction code. This code may be evaluated by Oratio's verified kernel and may be re-used to build any kind of proof object as soon as a suitable OCaml module is provided.

Using Oratio

Oratio takes goal files as input. Their syntax is as follows :

goals ::= <goal> <goals>

goal ::= Goal <prop> EOL

prop ::= 
  | <prop> -> <prop>
  | <prop> /\ <prop>
  | <prop> \/ <prop>
  | not <prop>
  | (<prop>)
  | <var>

var ::= [a-zA-Z]+

To run Oratio with a given goal file :

oratio file.goals

This will run an interactive loop asking for proofs of each goal described in the file. For more details about goals proving, the command help may be used at any time while the interactive loop is running.

Behind Oratio

Oratio is divided into 3 main pieces :

  1. a proof construction engine It's a customizable stack machine which evaluates a tiny assembly-like language
  2. a set of tactics Tactics are functions that may be used by the users to prove theorem in interaction. They produce code for the proof construction engine and transform the proof context. No verifications are made at the tactics level.
  3. a kernel The Kernel is a verified set of inference rules. When used as a backend for the proof construction engine, it allows to build valid sequents from a proof construction program. Combined with the tactic system, it gives a mini proof-assistant for the propositional logic.

The proof construction engine consist in a functor taking a set of inference rules and instantiating an evaluator which build proof object using these rules. The beauty of this approach being that one can provide any kind of backend and still use the same engine and the same tactics to build various proof objects (typed proof trees, lambda-terms, abstract representations of valid sequents...). We are currently trying to use this approach to provide a natural language based backend for Oratio. This will eventually lead to the translation of proofs into natural language such as French or English.

oratio's People

Contributors

acorrenson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

hermetique

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.