E-mail: triska@metalevel.at
GitHub: github.com/triska
The central theme of my research
is software reliability. How can we guarantee
correctness, robustness and
acceptable performance of our programs?
My goal is to provide programs that work as intended,
reliably and conveniently, with
zero surprises. Programs that you can run
for multiple decades without any issues such as
crashes, resource leaks or other unexpected behaviour.
I am interested in programming languages, combinatorial
optimization, testing, verification, cryptography and
many other areas of computer science.
Acomip | A Couple of Meta-interpreters in Prolog, collection of meta-interpreters and tutorial. |
Alzint | Interpreter for AL(Z) (assignment language over integers), a simple Turing-complete programming language. Supports tracing and reverse execution. Written in Prolog. |
Bitcoinolog | Reason about Bitcoin addresses with Prolog. |
CLP(B) | Constraint solver over Boolean variables. |
CLP(ℤ) | Constraint logic programming over integers. Using a slightly modified version of a program by Mats Carlsson, you can for example solve instances of the social golfer problem with Scryer Prolog. An example with 8 games a week in groups of 4 (32 players in total) playing for 9 weeks is sol9.txt. You can also read a short introduction. |
Connect 4 | Connect 4 (four in a row, plot four) game that plays against itself. Prolog. |
DCG Primer | Introduction to Prolog definite clause grammars (DCGs). |
ediprolog | Emacs does Interactive Prolog. Elisp definitions to interact with Scryer Prolog in arbitrary Emacs buffers. |
etrace | Graphical Prolog Tracer in Emacs. |
galeshapley.pl | Gale-Shapley algorithm to find a stable matching, also known as stable marriage, implemented in Prolog. A Prolog program that finds all stable matchings by exhaustive search: allstable.pl |
Knight's Tour | Closed knight's tours on an NxN chessboard, written in Prolog. Example application of the circuit/1 constraint, describing a Hamiltonian circuit. |
LetSWICrypt | Walkthrough document and sample files for running HTTPS servers with SWI-Prolog. |
Lisprolog | Interpreter and parser for a simple Lisp, written in Prolog. |
markov.pl | Markov chain demonstration, written in Prolog. Train a Markov chain of arbitrary order and use it for text generation. |
N-queens | N-queens constraint solving visualization, written in Prolog. |
plres.pl | Prolog program that finds shortest resolution refutations of propositional clauses. |
Presprover | Presprover can determine validity and satisfiability of all formulas of Presburger arithmetic. Written in Prolog. |
Proloxy | HTTP reverse proxy, written in Prolog. |
Prost | Prolog streams (sequences, delayed/lazy/infinite lists) demonstration. |
quine.pl | A Prolog quine, bootstrapped from quinebs.pl. Prolog is fully reflective, allowing for a more concise quine: quinerefl.pl. |
scc.pl | Prolog library for computing the strongly connected components of a graph using Tarjan's algorithm. |
simplex | Prolog library for solving linear programming problems. Implements the simplex algorithm, and contains a streamlined version for solving transportation and assignment problems. Also contains a simplistic branch-and-bound implementation to solve mixed integer programs. A show-case is delayed column generation. |
Simsttab | A timetabling engine for schools. Written in Prolog. |
Sudoku | Sudoku constraint solving visualization, written in Prolog. |
Tist | Thinking in States; various show-cases (puzzle, interpreter, compiler, virtual machine), realized using declarative approaches. Examples in Prolog, Haskell and J. |
TRS | Prolog definitions for reasoning about term rewriting systems, using algorithms described in Term Rewriting and All That by Baader and Nipkow. This program implements the Knuth-Bendix completion procedure. |
Wisemen | Demonstrates agent reasoning using constraint handling rules (CHR). See source file for documentation. |
Wumpus World | An AI-classic. Contains a framework to test your own agents and a simple example agent. Written in Prolog. |
Zurg | A Prolog solution to a search problem called Escape from Zurg. |
cdvdmacs | Create data CDs and DVDs from within Emacs. |
ediprolog | Emacs does Interactive Prolog. Elisp definitions to interact with Scryer Prolog in arbitrary Emacs buffers. |
etrace | Graphical Prolog Tracer in Emacs. |
Freud | Standalone C++ port of the Emacs Psychiatrist, simulating a Rogerian analyst using phrase-production techniques similar to the classic ELIZA demonstration of pseudo-AI. |
imimacs | Instant messaging in Emacs. Very simple IM system. |
linum | Emacs definitions for displaying line numbers to the left of buffers. |
openwith.el | openwith.el lets you associate external applications with files, so that you can open them from within Emacs via C-x C-f, with RET in dired, etc. |
PceProlog | Prolog development using GNU Emacs. |
pointback | Emacs definitions for restoring previous window points when switching buffers. |
UnicAPL | Enter and typeset APL and A+ in Emacs and LaTeX using Unicode. |
Animations | PostScript lets you draw portable animations of search processes and nice pictures of solutions. |
Austria | Scalable PostScript outline of Austria. |
Temperatures | Visualization of daily maximum temperatures in Vienna, using PostScript. |
Alana | A Turing machine simulator with many examples (unary and binary addition, subtraction, multiplication, a 5-state busy beaver, 2 string parsing examples, divisibility test, primality test) and a theoretical introduction to Turing machines. A more formal document about this is alana.pdf. |
Blinkory | Memory game involving a sequence of blinking disks. |
CGIForum | Light-weight discussion board with expandable/collapsible threads, name registration, multiple sections, previewing, searching, and marking of new entries. Written in Perl. |
Contests | Material from programming contests. |
Finomaton | Finomaton lets you draw finite state machines (automata) and similar graphs. It outputs MetaPost code that can be transformed to PostScript and used in TeX and LaTeX documents. Written in Tcl/Tk. |
goco.tcl | GO considered, minimalistic front-end for GNU Go. Written in Tcl/Tk (screenshot). |
Greenpoint | Der grüne Punkt in METAFONT. |
Hoarescope | Hoarescope helps to prove partial correctness assertions of AL programs over natural numbers using Hoare logic (Hoare calculus). The resulting proof tree is exported to LaTeX. If the remaining formulas are of Presburger arithmetic, you can use Presprover to see whether they are valid. A more formal paper about this is hoarescope.pdf. |
Jind | An interactive interpreter for a toy programming language. You are to formulate how to get out of a rather general maze. Written in Java. |
jugs.maude | A water jugs puzzle expressed as a term rewriting system in Maude. A transcript of an example session: jugs.txt. |
knighttour.lisp | Finds a knight's tour on an 8x8 chessboard using first-fail heuristics (always choose the position which is reachable from the fewest other positions). Written in Lisp. |
Magic Hexagon | 3 ways to compute all magic hexagons of order 3. |
misc | Miscellaneous programs and code snippets, prototypes, work in progress etc. |
Puzpan | Puzzle game involving a panel of squares. |
Spakes | Snakes-Clone for up to 4 players that can be played across the Internet. Optionally, AI players (computer controlled) can join the game. Written in C++. |
Swap | File transfer program with resume-capability. Written in Tcl/Tk. |
Tickletankle | A 2-player game with fractal terrain that can be played locally or across the Internet or a LAN. You can play against a human player or a computer-controlled opponent (AI player). Written in Tcl/Tk. |
Worldcup | Statistical simulation of FIFA World Cup. |
Compass | Compass buying tips. |
compnumerik.pdf | Short paper about numerical issues involved in approximating exponential and cosine functions using Taylor series. German. |
fourier.pdf | Short paper about Fourier series with some common example expansions. German. |
Logic | Some proofs and solved exercises. |