Skip to content

Commit 9a19390

Browse files
committed
2018 version + README + GitHub workflow
0 parents  commit 9a19390

21 files changed

+3574
-0
lines changed

.github/workflows/build.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Build
2+
3+
on: [ push, pull_request ]
4+
5+
jobs:
6+
build:
7+
name: Build
8+
runs-on: windows-latest
9+
10+
steps:
11+
- uses: actions/checkout@v3
12+
- uses: stevenwdv/setup-fasm@v1
13+
with:
14+
edition: fasm1
15+
- run: fasm asmsequent.asm
16+
env:
17+
inc: ${{ env.INCLUDE }}
18+
- uses: actions/upload-artifact@v3
19+
with:
20+
name: asmsequent.exe
21+
path: asmsequent.exe
22+
if-no-files-found: error

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*.exe
2+
*.fas
3+
*.o

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Assembly sequent solver GUI
2+
===========================
3+
4+
Solves a [sequent](https://en.wikipedia.org/wiki/Sequent) you enter by [applying rules](https://en.wikipedia.org/wiki/Sequent_calculus) and displays the resulting [tableau](https://en.wikipedia.org/wiki/Method_of_analytic_tableaux).
5+
A sequent is open if the propositional formula to the left of the `@` can be true while simultaneously the formula on the right is false, in this case the program displays the list of possible valuations with true variables to the left of a bar (`|`) and false variables to the right (the valuations may include duplicates). A sequent is closed if this is not satisfiable.
6+
Hence, you can use `φ @` for some propositional formula `φ` to check if `φ` is satisfiable, and you can use `@ φ` to check if the negation is unsatisfiable to check if `φ` is always true.
7+
8+
This is just a program I made for fun during a course in 2018 (my first large assembly program).
9+
It's not (made to be) particularly efficient, since it allocates all terms on the heap to display the tableau later. Most of the running time is actually spent on concatenating strings to display it. However, it should work correctly, be crash-free (if it has enough memory), and not have memory leaks. Although it doesn't always check if Windows/MSVC functions it calls return success.
10+
11+
This was written for [flat assembler](https://flatassembler.net/) 1. Point the `inc` environment variable to the fasm `INCLUDE` directory when building. You can also open the `.fpr` project file with the [Fresh IDE](https://fresh.flatassembler.net/). In Fresh, you can set `inc` as an 'alias' via the IDE/project options.
12+
13+
It works on x86-64 Windows and on Linux with Wine.
14+
15+
The assembly files in the initial commit are the original ones from 2018, so they still contain some TODOs for stuff that could be done and some commented/unused legacy code.
16+
17+
Credit me with a [link to the repository](https://github.com/stevenwdv/asmsequent) if you use this somewhere for some reason!
18+
19+
Screenshots
20+
-----------
21+
22+
![Closed](screenshots/closed.png)
23+
`a & b` cannot be true while `a | b` is false.
24+
25+
![Open: tableau](screenshots/open-tableau.png "idk?")
26+
![Open: valuations](screenshots/open-valuations.png)
27+
`c -> a & b` is true if either `c` is false or `a` and `b` are both true.

0 commit comments

Comments
 (0)