Skip to content

Latest commit

 

History

History
72 lines (39 loc) · 2.05 KB

README.md

File metadata and controls

72 lines (39 loc) · 2.05 KB

rust-metamath

A Metamath verifier written in rust. Forked from https://github.com/jzw2/rust-metamath.

other verifier's that I will probably take inspiration from.

https://github.com/david-a-wheeler/metamath-knife

https://github.com/david-a-wheeler/mmverify.py

Running

Compile it with cargo build --release, the binary should be in /target/release

Change to the correct directory then do path/to/binary name-of-mm-file.mm

Features/Goals

The main goal of this project is to provide a faster metamath checker than the default, as we've had some issues relating to its performance.

Potential Features

Extending Metamath

Some potential ideas for extending metamath would be adding some sort of modularity in the import system. For instance, something similar to the python module system in order to allow reuse of labels.

Another idea is implementing some sort of tagging system, in case you want to only verify a certain subset of your theorems, you could specifiy a certain tag that you want to verify (or maybe ignore).

Paralellism

Incorporating parallelism to the verifying part would be nice, and I will probably take inspiration from the metamath knife repo. I noticed that they also parallelize the parsing, which I'm probably not going to implement because I think the verifying part is the slow part, and it won't matter if the parsing is already fast enough.

Caching

Again taking inspiriation from the other rust checker, create some system of caching results so repeated verifications can be faster by only checking proofs that have changed. This would also mean creating a REPL like system, which may be another feature.

ITP

Integration with an interactive theorem prover may also be a possibility. I'm not exactly sure what features I would want to add.

Diagnostic information

Provide information such as how long certain proofs took, or how much space certain proofs take. This could be used to identify which proofs should try to be reworked.

Why Rust

Rust is a very fast language, and I prefer it over C and C++.