automata

Crates.ioautomata
lib.rsautomata
version0.0.4
sourcesrc
created_at2015-03-14 07:11:05.708316
updated_at2019-03-17 23:27:55.880192
descriptionAn implementation of standard finite state automata such as DFA, NFA, Regex
homepage
repositoryhttps://github.com/HeroicKatora/automata
max_upload_size
id1574
size65,242
León (leonbohn)

documentation

README

Automata

A rust library to model several different automata and algorithms. In its current form includes the following automata:

  • Deterministic Finite Automata (DFA)
  • Non-deterministic Finite Automata (NFA) with epsilon transitions

Visualization & Debugging

cargo run --bin test

Contained is an exporter to the popular dot format. A separate test binary also showcases construction and use of the exporter for example automata of each family and try to immediately show the images. This is handled by invoking dot–for conversion to png– and feh–for rendering the images–so make sure those are installed for the best effect.

NOTICE: Ownership transfer

This crate has recently changed ownership from gsingh93 and are now maintained following a university course. Supplementary material on theoretical questions might appear as part of the documentation.

Tests

cargo test

All units are tested, a bit stricter than their interface requirements, by automated unit tests. This includes automata construction, language recognition, word rejection, and the exporter.

Features

  • Dfa
    • word membership test
    • automaton pairing
  • Nfa
    • word membership (dynamic powerset)
    • conversion to regex
    • conversion to dfa
  • Regex
    • construction & printing over general alphabet
    • nothing particularly interesting yet

TODO

There are more features planned and/or in development

  • Converters–all of (dfa, nfa, regex) are equivalent
    • Dfa -> Nfa
    • Regex -> Nfa
    • Regx -> Dfa (directly, no det step)
  • Joins, Compositions, Intersects, Differences, Equivalence checks
  • Minimization
    • Quotienting (Hopcroft)
    • Dualization, Brzozowski’s algorithm, maybe.
  • Finite-state Transducers–and compositions
    • Join, Pre, Post
    • Membership, Projections
    • Presburger arithmetic, Modeling solutions to linear integer (in-)equalities with finite automata
  • Finite length languages
    • Minimization
    • Construction from NFA
    • Projection, Join, Pre, Post
  • Decision Diagrams
    • Intersect, complement
    • Minimization
  • Infinite-word automata
    • Büchi, Co-Büchi
    • NBA, Regex
    • DBA
    • Muller
    • Rabin
    • Streett
    • Parity
  • Algorithms on infinite automata
    • Union, Intersection
    • Complement
    • Emptiness
    • Emerson-Lei (liveliness)
  • Second-order logic
    • Finite word
    • Infinite universes
Commit count: 52

cargo fmt