Giter Club home page Giter Club logo

matching-logic-spec's Introduction

There are currently multiple formalizations of matching logic, in [Coq], [Dedukti], [Lean], [MM0] and [Metamath]. To build a cohesive matching logic ecosystem, it is in our best interest to have these formalization cooperate, rather than compete with each other.

To enable this, in this project we build a high-level representation of matching logic specifications and use this as a medium of exchange. We will have translations of specifications from this high-level representation to Metamath, and each of the formalizations. This will enable us to use each of the formalizations to handle the reasoning that they are best at, while handing off other reasoning to more suitable formalizations.

At the same time, having a higher-level formalization enables us to make changes to the Metamath formalization without forcing each of immediately change their representation. This will let us take a more agile approach and not have each of the formalizations tighly bound to the Metamath formalization.

Goals

  1. Only allow the axiomatization of well-formed ML theories.
  2. Abstractly capture constructs for MSML, Kore, and eventually K, in a way that allows us to translate them to analogous concepts in each formalization.
    • Make us agile: Allow changing the representation of a particular abstract concept without forcing rewrite many metamath translations simulatuously.
  3. Act as a medium of exchange between the formalizations.

How is this different from kore and kompile?

kore and kompile bring K closer to Matching Logic, by reducing K Specifications to simpler ones. Our goal here, is to move in the opposite direction, building more complex notions, from matching logic, to eventually meet Kore in the middle.

Structure of this repo

The test script provides some rudimentary tests.

matching-logic-spec's People

Contributors

nishantjr avatar

Stargazers

Adam Fiedler avatar

Watchers

 avatar

matching-logic-spec's Issues

On sorts

I think that "Sort" should be a sort such that "inhabitant Sort" denotes the set of sorts.
The sorts are defined by the inhabitants' set symbol "inh": a symbol "s" is a sort iff its set of inhabitants is not empty. This can be captured by an axiom of the form

(in s inhabitant Sort) iff (definedness inhabitant s)

Obviously, we have in Sort (inhabitant Sort).

Use of ":" is confusing

The use of the colon ":" for both metavariables and notations is very confusing. The use of "x : EVar" is different from that of "top : ( not bot )" when we instantiate the schema as a theory.

The keyword "theory" is misleading

The use of the keyword "theory" is misleading, because in most cases such a module does not define an ML theory.
I think that "scheme" ("schema"?) or "theory-scheme" is more appropriate.
Let's consider the case of "theory definedness": without considering a concrete signature (EV, SV, Σ) we cannot get a theory.
Even given such a signature, we get an ML theory only after the notations are "de-sugared".

If the decision is to maintain "theory", then its meaning should be very well explained.

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.