relation-algebra

Relation algebra library for Coq

https://github.com/damien-pous/relation-algebra

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.0%) to scientific vocabulary

Scientific Fields

Engineering Computer Science - 40% confidence
Last synced: 6 months ago · JSON representation

Repository

Relation algebra library for Coq

Basic Info
  • Host: GitHub
  • Owner: damien-pous
  • License: lgpl-3.0
  • Language: Coq
  • Default Branch: master
  • Size: 649 KB
Statistics
  • Stars: 48
  • Watchers: 1
  • Forks: 17
  • Open Issues: 1
  • Releases: 15
Created over 10 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog License Authors Codemeta

README.md

Relation Algebra for Rocq

Webpage of the project: http://perso.ens-lyon.fr/damien.pous/ra

DESCRIPTION

This Rocq development is a modular library about relation algebra: those algebras admitting heterogeneous binary relations as a model, ranging from partially ordered monoid to residuated Kleene allegories and Kleene algebra with tests (KAT).

This library presents this large family of algebraic theories in a modular way; it includes several high-level reflexive tactics: - [kat], which decides the (in)equational theory of KAT; - [hkat], which decides the Hoare (in)equational theory of KAT (i.e., KAT with Hoare hypotheses); - [ka], which decides the (in)equational theory of KA; - [ra], a normalisation based partial decision procedure for Relation algebra; - [ra_normalise], the underlying normalisation tactic.

The tactic for Kleene algebra with tests is obtained by reflection, using a simple bisimulation-based algorithm working on the appropriate automaton of partial derivatives, for the generalised regular expressions corresponding to KAT.

Combined with a formalisation of KA completeness, and then of KAT completeness on top of it, this provides entirely axiom-free decision procedures for all model of these theories (including relations, languages, traces, min-max and max-plus algebras, etc...).

Algebraic structures are generalised in a categorical way: composition is typed like in categories, allowing us to reach "heterogeneous" models like rectangular matrices or heterogeneous binary relations, where most operations are partial. We exploit untyping theorems to avoid polluting decision algorithms with these additional typing constraints.

APPLICATIONS

We give a few examples of applications of this library to program verification: - a formalisation of a paper by Dexter Kozen and Maria-Cristina Patron. showing how to certify compiler optimisations using KAT. - a formalisation of the IMP programming language, followed by: 1/ some simple program equivalences that become straightforward to prove using our tactics; 2/ a formalisation of Hoare logic rules for partial correctness in the above language: all rules except the assignation one are proved by a single call to the hkat tactic. - a proof of the equivalence of two flowchart schemes, due to Paterson. The informal paper proof takes one page; Allegra Angus and Dexter Kozen gave a six pages long proof using KAT; our Rocq proof is about 100 lines.

INSTALLATION

The easiest way to install this library is via OPAM. For the current stable release of Rocq, the library can be installed directly through the released repository: opam repo add coq-released https://coq.inria.fr/opam/released opam install coq-relation-algebra Otherwise, use the provided opam file using opam pin add . (from the project directory)

To compile manually use ./configure --enable-ssr to enable building the finite types model (requires coq-mathcomp-ssreflect). Also use --enable-aac to enable building the bridge with AAC rewriting tactics (requires coq-aac-tactics). Then compile using make and install using make install.

DOCUMENTATION

Each module is documented, see index.html or http://perso.ens-lyon.fr/damien.pous/ra for: - a description of each module's role and dependencies - a list of the available user-end tactics - the coqdoc generated documentation.

LICENSE

This library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library. If not, see http://www.gnu.org/licenses/.

AUTHORS

  • Main author

    • Damien Pous (2012-), CNRS - LIP, ENS Lyon (UMR 5668), France
  • Additional authors

    • Christian Doczkal (2018-), CNRS - LIP, ENS Lyon (UMR 5668), France
    • Insa Stucke (2015-2016), Dpt of CS, University of Kiel, Germany
    • Coq development team (2013-)

Owner

  • Name: Damien Pous
  • Login: damien-pous
  • Kind: user
  • Location: France
  • Company: CNRS, ENS Lyon

CodeMeta (CodeMeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "type": "SoftwareSourceCode",
  "applicationCategory": "Relation algebra",
  "author": [
    {
      "id": "https://perso.ens-lyon.fr/damien.pous/",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "Plume team, LIP, CNRS"
      },
      "email": "Damien.Pous@ens-lyon.fr",
      "familyName": "Pous",
      "givenName": "Damien"
    }
  ],
  "codeRepository": "https://github.com/damien-pous/relation-algebra",
  "dateCreated": "2012-09-01",
  "datePublished": "2012-12-16",
  "description": "A modular library about relation algebra, from idempotent semirings to residuated Kleene allegories, including a decision tactic for Kleene algebra with Tests (KAT)",
  "keywords": [
    "relation algebra",
    "Kleene algebra",
    "Kleene algebra with tests",
    "automata",
    "allegories",
    "automation tactics",
    "regular expressions",
    "Rocq"
  ],
  "license": "LGPL",
  "name": "relation-algebra",
  "programmingLanguage": "Rocq",
  "referencePublication": "https://doi.org/10.1007/978-3-642-39634-2_15"
}

GitHub Events

Total
  • Issues event: 3
  • Watch event: 3
  • Issue comment event: 5
  • Push event: 7
  • Pull request event: 8
  • Fork event: 1
  • Create event: 1
Last Year
  • Issues event: 3
  • Watch event: 3
  • Issue comment event: 5
  • Push event: 7
  • Pull request event: 8
  • Fork event: 1
  • Create event: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 2
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 2
  • Total pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 2
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • MSoegtropIMC (2)
  • Justme0606 (1)
  • SnarkBoojum (1)
  • rtetley (1)
Pull Request Authors
  • ppedrot (3)
  • proux01 (1)
  • SkySkimmer (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 10
proxy.golang.org: github.com/damien-pous/relation-algebra
  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 9.0%
Average: 9.6%
Dependent repos count: 10.2%
Last synced: 6 months ago

Dependencies

.github/workflows/build-relation-algebra.yml actions
  • actions/checkout v2 composite
  • coq-community/docker-coq-action v1 composite
description cran