The Open Deduction Proof Editor allows proof theorists (or anyone) to deconstruction proofs step by step. It currently supports deep inference formalisms, namely Open Deduction and naturally the Calculus of Structures. The front end of the application is written in Java, while the back end is written in Maude. There is also an implementation of proof search both with and without proof variables.
A paper I wrote regarding this implementation is available. I also wrote a paper discussing the implementation and theory behind the proof search functionality is available.
- Download the Github repository.
- Open the terminal / command prompt.
- Navigate to the directory within the downloaded Github repository that corresponds to your operating system.
- Enter java -jar odpe.jar
If your operating system is Windows 10, then you must download the Windows Subsystem for Linux. See the Operating System section and other sections for troubleshooting.
Note: The Maude executable is included in the github directories. Follow these instructions to include it yourself and debug issues.
You must have Maude 3.0 (or above) installed on your system. You can download it at the link below, see the section OPERATING SYSTEM, especially if you are on Windows.
Please name the file to 'maude.linux64' for Linux.
Please name the file to 'maude.darwin64' for MacOS.
[See OPERATING SYSTEM]
Ensure that you have made the file executable, for Linux you can do
- chmod +x maude.linux64
For some Linux systems (Arch, lubuntu, etc), ensure you have libinfo5 installed.
- sudo apt install libinfo5
You can test if Maude is working by running
- ./maude.linux64
Java must also be on your system - the odpe.jar file is compiled using jdk 13.0.2. It has also been tested using jdk 15.0.1.
The odpe.jar file was tested with this version of Java on the Windows subsystem for Linux.
If you have issues with correct functionality you may need jdk 13.0.2 which can be downloaded here:
Otherwise:
Test your version of Java with:
- java -version
Run the .jar file with:
- java -jar odpe.jar
All files within the directory are vital for the functioning of the open deduction proof editor.
Once the application has been launched, either click a button for the default proof system (SKSg at the time of writing), or select 'browse', and choose your own, or other's XML maude files.
Enter a formula or derivation, and click 'Okay' (Ctrl + Enter). You can then highlight the formula, or a subformula, and right click. Choose to 'Do one proof step', and apply a rule from the list (if there are any valid rules applications).
Here are some scenarios you may try to test the system. Or use your own. These assume the proof system SKSg.
1. Enter a formula {[a,b],-a}
2. Apply the switch rule to the whole formula
3. Undo and redo
4. Then apply the interaction rule to [a,-a]
1. Enter a formula [a,-a]
2. Press the 'subatomise' button
3. Apply the rule a-down to [a,-a]
4. Press the 'interpret' button
1. Enter a >['c_down]> [a,a] and press OK
1. Enter a derivation such as (({[a,c],[e,g]} >[Q6]> phi1) a ({[b,d],[f,h]} >[Q7]> phi2)) >[Q5]> ([{a,phi3} a {b,phi4} >[Q4]> {a a b,phi5 a phi6},{c,phi7} a {d,phi8} >[Q3]> {c a d,phi9 a phi10}] >[Q2]> {[a a b,c a d],{phi11 a phi12,phi13 a phi14} >[Q1]> (phi15 a phi16 >[Q]> [e a f,g a h])}) and press OK
2. Press the button 'Proof Search'
3. Wait for solution
Maude works 'out of the box' with Linux and MacOS. Maude works within the Windows Subsystem for Linux.
There are two types of Maude 3.0 files, it does not matter which one you download, but you must rename it to "maude.linux64".
There are two types of Maude 3.0 files, it does not matter which one you download, but you must rename it to "maude.darwin64".
With the introduction of the Windows Subsystem for Linux this software can be run on Windows 10. In order to do so, one must install and enable the Windows Subsystem.
There are two types of Maude 3.0 files, it does not matter which one you download, but you must rename it to "maude.linux64".
This is the executable Maude program.
The majority of Maude is written in Maude. This is prelude file that the Maude team provides. It offers the very core functions of Maude.
Maude file for the proof system, defines grammar and rules.
Maude file for canonically simplifying a formula in KSg.
Maude file for the subatomic proof system SAKS, includes the object level strategies for proof searching.
Maude file with functional modules corresponding to representation and interpretation of SKS and SAKS, respectively.
Meta-level Maude file that provides many key utility functions. The GUI uses this to find rewrites, convert between subatomic systems etc. This is effectively the main file where all the meta-level computation is performed.
Declarations for XML files.
Declarations for XML files.
XML file that stores the description of the proof system, used by the GUI to correctly display various symbols.
This information is for people who want to compile the code themselves from source.
Some of the code for parsing is effectively legacy code. Regex was not yet released for Java in 2006, when the original GraPE code was last maintained. It does however still function perfectly. I would like to completely replace it in the future though.
Note: If you have problems with the stack on linux - you can temporarily call
- ulimit -s unlimited
In the file Maude.java at line 33
- maudecmd[0] = "./maude.linux64";
Must be changed to the name of the Maude file, therefore to switch between Mac and Linux it must be done here. (./maude.darwin64 or ./maude.linux64)
In order to use the software on Windows, then because bash commands can be run from a windows cmd, (if the subsystem is installed), line 46 must be changed.
- ProcessBuilder pb = new ProcessBuilder(maudecmd);
Must be replaced by
- String cmd = """.concat(String.join(" ",maudecmd)).concat(""");
- ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "bash -c ".concat(cmd));
Proof systems are implemented in Maude and XML.
Please see KSg.maude and KSg-maude.xml for examples.
For more information about proof systems see here.
For a detailed discussion about designing deep inference systems within Maude see Ozan Kahramanoğulları's work here.
For an greater understanding of how proof systems are implemented in the open deduction graphical proof editor, see my paper here.
Within Maude files the structure is as follows:
fmod
- Grammar of the proof system
endm
mod
- Rules of the proof system
endm
- Fix various bugs that occur.
- Improve support for representation of regular logic.
- Completely generalise Maude strategies at the meta-level to support proof search in other proof systems.
- Rewrite some old code for parsing.
- Rewrite some functions in general for better coding practises.
- Improve error handling.
- Make maude definitions more user-friendly (e.g. extract everything to the meta-level where the user does not need to see it).
Joe Lynch
joe.r.d.lynch@gmail.com