maxdore / cubetac

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cubetac

Installation

The solver is packaged up with stack, a simple stack build should install and compile everything.

Usage

The solver can be called on .cube files, some examples can be found in examples/.

A .cube file consists of a context and a number of goals. Example:

zero : []
one : []
seg : [(zero , one)]
---
app1 = [(seg 1, seg 1) , (zero , one)]
inv = [(one , zero)]

The cube has three constructors. The 0-paths zero and one have an empty boundary. The 1-path seg has one pair of faces as its boundary. The marker --- ends the definition of the context and starts the goal section. Each goal consists of an identifier, we have app1 and inv in this example, and a boundary prescription after an = sign.

The boundary of app1 consists of 4 faces, so we are describing the boundary of a square. Each face is implicitly abstracted over a interval variable, which may be used. For instance, seg 1 means that we apply that interval variable to the seg path, while zero is just a constant path.

A .cube file can be called with a single goal to be solved. For instance,

stack exec cubetac-exe examples/interval.cube app1

will load the above example and search for a proof of app1. The prover can be asked to give more debugging information by appending a verbose as follows:

stack exec cubetac-exe examples/interval.cube app1 verbose

Next steps

Introduce constructor terms

Integrate with Agda

Making representations of types and terms more general

  • Extension types
  • Partially specified boundaries
  • Reversal of paths: Translation between formulas with reversals and partially specified cubes

Kan composition solver

  • Implement some basic heuristics:
    • Open squares on top
    • have depth limit
    • congruence closure of hcomps with constructors, search with depth limit (unifier?)

Dependent cubes? Match hosting cube

Integrate with proof search in dependent type theory (Agsy rescuable?)

Examples

About

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


Languages

Language:TeX 60.0%Language:Haskell 36.9%Language:Agda 2.5%Language:Emacs Lisp 0.7%