mvcisback / dfa-mutate

Library for generating mutations for DFAs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DFA Mutate

Primitives and utilities for manipulating deterministic finite automata (DFA) represented using the dfa library.

Build Status PyPI version License: MIT

Table of Contents

Installation

If you just need to use dfa_mutate, you can just run:

$ pip install dfa_mutate

For developers, note that this project uses the poetry python package/dependency management tool. Please familarize yourself with it and then run:

$ poetry install

Usage

Example Usage:

from dfa import DFA
import dfa_mutate

dfa1 = DFA(
    start=0,
    inputs={0, 1},
    label=lambda s: (s % 4) == 3,
    transition=lambda s, c: (s + c) % 4,
)

# Pick a specific mutation.
dfa2 = dfa_mutate.add_state(dfa1)
dfa3 = dfa_mutate.change_start(dfa1)
dfa4 = dfa_mutate.change_transition(dfa1)
dfa5 = dfa_mutate.relabel_state(dfa1)

# Infinite Generator mutations round-robin (will repeat).
dfas = dfa_mutate.generate_mutations(orig)

# Sample DFA using softmax over a scoring function (default constant).
# Uses first n dfas generated by above generator.

# NOTE: requires the optional numpy dependency.
dfa6 = dfa_mutate.sample_mutation(dfa1, n=20, score=lambda d: len(d.states()))

# All functions support passing in random number generator.
import random
dfa7 = dfa_mutate.relabel_state(dfa1, random.Random(0))

About

Library for generating mutations for DFAs

License:MIT License


Languages

Language:Python 100.0%