### Description

This is will eventually be a suite of tools to be used by an orthographic/grammatical checker and the checker itself. The tools are currently coded in Python, but I began to rewrite it in Lisp. Moman, the suite itself, will be consisted of the following tools:
• FineNight is the FSA library.
• A FST library. (Not yet implemented)
• ZSpell is the orthographic checker.

### FineNight

The FineNight library contains many algorithms for Finite State Automatons. That includes:
• Union of two FSAs
• Intersection of two FSAs
• Complement of a FSAs
• Difference of two FSAs
• Reversal of a FSA
• Closure of a FSA
• Concatenation of two FSAs
• Determination of a NFA
• Equivalence test
• Minimization algorithm
• Construction of an IADFA from a sorted dictionary
• Graphviz support
Almost all algorithms were taken from the book Introduction to Automata Theory, Languages, and Computation [1]. The minimization algorithm is an implementation of Brzozowski's method [2]. In this method, the (possibly non-deterministic) automaton is reversed, determinized, reversed and determinized. I'll eventually add the Hopcroft's nlog(n) minimization algorithm [3].

### ZSpell

ZSpell is meant to be a concurrent of aspell, made by Kevin Atkinson. At this time, ZSpell can suggest words with a Levenshtein-distance of one. Before we were using Kemal Oflazer's algorithm [4] . This algorithm is very slow, but now we use a faster algorithm (Schulz's and Mihov's algoritm [5]). However, only substitution, removal and insertion are used for the faster algorithm. It means that transpositions errors, like "ehllo" -> "hello", are considered as two operations.

Since version 0.2 we can specifiy a Levenshtein-distance greater than 1.

TODOs includes:
• Add transposition errors for Levenshtein-distance algorithm.
• Add phonetic errors (spelling by sound).