Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
Static Public Member Functions
automaton::transform::AutomataLeftQuotientCartesianProduct Class Reference

#include <AutomataLeftQuotientCartesianProduct.h>

Static Public Member Functions

template<class SymbolType , class StateType1 , class StateType2 >
static automaton::MultiInitialStateNFA< SymbolType, ext::pair< StateType1, StateType2 > > quotient (const automaton::NFA< SymbolType, StateType1 > &first, const automaton::NFA< SymbolType, StateType2 > &second, bool full)
 

Detailed Description

Full quotient requires that w is maximal and x does not have prefix from L(A1). Non-full quotient does not require that to be true and only some prefix is removed from words in L(A2). This method utilizes cartesian product construction and it is described in paper "The Full Quotient and Its Closure Properties for Regular Languages".

Member Function Documentation

◆ quotient()

template<class SymbolType , class StateType1 , class StateType2 >
automaton::MultiInitialStateNFA< SymbolType, ext::pair< StateType1, StateType2 > > automaton::transform::AutomataLeftQuotientCartesianProduct::quotient ( const automaton::NFA< SymbolType, StateType1 > &  first,
const automaton::NFA< SymbolType, StateType2 > &  second,
bool  full 
)
static

Divides (computes quotient of) two languages represented by two finite automata.

Template Parameters
SymbolTypeType for input symbols.
StateType1Type for states in the first automaton.
StateType2Type for states in the second automaton.
Parameters
firstFirst automaton (A1) representing language of the removed prefix
secondSecond automaton (A2) representing language from which the prefix is removed
fulltrue if the resulting quotient should be full, false if not.
Returns
nondeterministic FA with multiple initial states representing the division (computed quotient) of two languages
Here is the call graph for this function:

The documentation for this class was generated from the following file: