Skip to main content

The FAdo system aims to provide an open source extensible high-performance software library for the symbolic manipulation of automata and other models of computation.

To allow high-level programming with complex data structures, easy prototyping of algorithms, and portability (to use in computer grid systems for example), are its main features. Our main motivation is the theoretical and experimental research, but we have also in mind the construction of a pedagogical tool for teaching automata theory and formal languages.

Regular Languages

It currently includes most standard operations for the manipulation of regular languages. Regular languages can be represented by regular expressions (RegExp) or finite automata, among other formalisms. Finite automata may be deterministic (DFA), non-deterministic (NFA) or generalized (GFA). In FAdo these representations are implemented as Python classes.

Elementary regular languages operations as union, intersection, concatenation, complementation and reverse are implemented for each class. Also several other regular operations (e.g shuffle) and combined operations are available for specific models.

  • Several conversions between these representations are implemented:

    • NFA -> DFA: subset construction

    • NFA -> RE: recursive method

    • GFA -> RE: state elimination, with possible choice of state orderings (several heuristics)

    • RE -> NFA: Thompson, Glushkov/Position, epsilon-Follow, Follow, Partial Derivatives (naive and compressed RE), Prefix; and their duals.

    • SRE -> DFA: Brzozowski (SRE are RegExp ACIA, using sets)

    • RE -> DFA: AuPoint (Marked before) and YMG (Marked after)

  • For DFAs several minimization algorithms are available: Moore, Hopcroft, and some incremental algorithms. Brzozowski minimization is available for NFAs.

  • An algorithm for hyper-minimization of DFAs

  • For DFAs tests for reversability

  • Language equivalence of two DFAs can be determined by reducing their correspondent minimal DFA to a canonical form, or by the Hopcroft and Karp algorithm.

  • For NFAs reductions by left and right bisimilarity

  • Enumeration of the first words of a language or all words of a given length (Cross Section)

  • Some support for the transition semigroups of DFAs

Finite Languages

Special methods for finite languages are available:

  • Construction of a ADFA (acyclic finite automata) from a set of words

  • Minimization of ADFAs

  • Several methods for ADFAs random generation

  • Methods for deterministic cover finite automata (DCFA)

  • Special methods for Block languages where all words have the same length

Transducers

Several methods for transducers in standard form (SFT) are available:

  • Rational operations: union, inverse, reversal, composition, concatenation, Star

  • Test if a transducer is functional

  • Input intersection and Output intersection operations

Codes

A language property is a set of languages. Given a property specified by a transducer, several language tests are possible.

  • Satisfaction i.e. if a language satisfies the property

  • Maximality i.e. the language satisfies the property and is maximal

  • Properties implemented by transducers include: input preserving, input altering, trajectories, and fixed properties

  • Computation of the edit distance of a regular language, using input altering transducers

PRAX

Polynomial Random Approximation Algorithms allow to decide hard automata problems considering cetrain natural distributions on set of words.

In particular, using the notion of approximate universality

  • Test NFA universality for finite languagens

  • Test NFA universality for infinite languages using tractable word distributions (Lambert and Dirichlet)

Metadata

Release files for FAdo 2.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for FAdo 2.2.0
File Size Uploaded
fado-2.2.0.tar.gz 163.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for FAdo 2.2.0
File Interpreter ABI Platform
fado-2.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 343.1 kB

Release files / fado-2.2.0.tar.gz

Download URL fado-2.2.0.tar.gz
Size 163.0 kB
Tags Source
SHA-256 checksum
How to use checksums
977b9bdfe164270c4fbcc1587b86be3aa73549d6b48f623132b83d82b26c0f3d
BLAKE2b-256 checksum
How to use checksums
22684cacecf84359bea0d9eb8d60c320d794b8d9d525c0cf9f5ef5bd964d10ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.12.2 Darwin/23.4.0

Release files / fado-2.2.0-py3-none-any.whl

Download URL fado-2.2.0-py3-none-any.whl
Size 180.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f382df66017c2496ae4046b622effa58ceb2f849ab27e3777eb0fe7f57a25fd
BLAKE2b-256 checksum
How to use checksums
aa4d515319c5a46ce309cdd29c0670c753b9564ad32aa0f4ff020573d7851710
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.12.2 Darwin/23.4.0

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 release files

2.1.2

2 release files

2.0.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page