From 9daecb34643a504e65772dde74cdbaa448c76f80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Pecka?= <peckato1@fit.cvut.cz>
Date: Thu, 11 Sep 2014 19:10:39 +0200
Subject: [PATCH] Cleanup

---
 aconversions/src/fa2re/StateElimination.cpp | 228 --------------------
 aconversions/src/fa2re/StateElimination.h   | 112 ----------
 2 files changed, 340 deletions(-)
 delete mode 100644 aconversions/src/fa2re/StateElimination.cpp
 delete mode 100644 aconversions/src/fa2re/StateElimination.h

diff --git a/aconversions/src/fa2re/StateElimination.cpp b/aconversions/src/fa2re/StateElimination.cpp
deleted file mode 100644
index 6b6551f0e4..0000000000
--- a/aconversions/src/fa2re/StateElimination.cpp
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * StateElimination.cpp
- *
- *  Created on: 9. 2. 2014
- *      Author: tomas
- */
-
-#include "StateElimination.h"
-
-using namespace alib;
-using namespace automaton;
-using namespace regexp;
-using namespace std;
-
-namespace conversions
-{
-
-StateElimination::StateElimination( const FSM & automaton ) : m_automaton( automaton )
-{
-
-}
-
-StateElimination::~StateElimination( void )
-{
-    deleteTransitions( );
-}
-
-void StateElimination::deleteTransitions( void )
-{
-    for( const auto & transition : m_MR.m_transitions )
-        delete transition.m_regexp;
-}
-
-RegExp StateElimination::convert( void )
-{
-    if( m_automaton.getFinalStates( ).size( ) <= 0 )
-    {
-        RegExp ret;
-        ret.setRegExp( new RegExpEmpty( ) );
-        return ret;
-    }
-
-    m_MR = ExtendedNFA( );
-
-    // steps 1 + 2
-    constructExtendedNFA( );
-    extendExtendedNFA( ); // yup, i am extending extended thing!
-
-    // we are sure there is only 1 initial and 1 final state (follows from step2)
-    const State & q0 = * m_MR.m_initialStates.begin( );
-    const State & f = * m_MR.m_finalStates.begin( );
-
-    // step 3 - iterating over all states except q0 and f, equivalent to the steps in Melichar 2.118
-    for( auto it = m_MR.m_states.begin( ); it != m_MR.m_states.end( ); )
-    {
-        if( * it == q0 || * it == f )
-            it ++;
-        else
-            eliminate( * it ++ );
-    }
-
-    // step 4
-    Iteration * iter = new Iteration( );
-    iter->setElement( transition( f, f ) );
-
-    Concatenation* concat = new Concatenation( );
-    concat->getElements( ).push_back( transition( q0, f ) );
-    concat->getElements( ).push_back( iter );
-
-    RegExpOptimize opt;
-
-    RegExp ret;
-    ret.setRegExp( opt.optimize( concat ) );
-
-    delete concat;
-
-    return ret;
-}
-
-void StateElimination::constructExtendedNFA( void )
-{
-    for( const auto & state : m_automaton.getStates( ) )
-        m_MR.m_states.insert( state );
-
-    for( const auto & symbol : m_automaton.getInputAlphabet( ) )
-        m_MR.m_alphabet.insert( symbol );
-
-    for( const auto & transition : m_automaton.getTransitions( ) )
-        m_MR.m_transitions.insert( TransitionExtendedNFA( transition.getFrom( ), new RegExpSymbol( transition.getInput( ).getSymbol( ) ), transition.getTo( ) ) );
-
-    for( const auto & state : m_automaton.getInitialStates( ) )
-        m_MR.m_initialStates.insert( state );
-
-    for( const auto & state : m_automaton.getFinalStates( ) )
-        m_MR.m_finalStates.insert( state );
-}
-
-void StateElimination::extendExtendedNFA( void )
-{
-    if( isInSet( * m_MR.m_initialStates.begin( ), m_MR.m_finalStates ) || m_MR.transitionsToState( * m_MR.m_initialStates.begin( ) ).size( ) > 0 )
-    {
-        State q0 = m_MR.createUniqueState( "q0" );
-
-        for( const auto & state : m_MR.m_initialStates )
-            m_MR.m_transitions.insert( TransitionExtendedNFA( q0, new RegExpEpsilon( ), state ) );
-
-        m_MR.m_initialStates.clear( );
-        m_MR.m_initialStates.insert( q0 );
-    }
-
-    if( m_MR.m_finalStates.size( ) > 1 )
-    {
-        State f = m_MR.createUniqueState( "f" );
-
-        for( const auto & state : m_MR.m_finalStates )
-            m_MR.m_transitions.insert( TransitionExtendedNFA( state, new RegExpEpsilon( ), f ) );
-
-        m_MR.m_finalStates.clear( );
-        m_MR.m_finalStates.insert( f );
-    }
-}
-
-void StateElimination::eliminate( const State & q )
-{
-    set<TransitionExtendedNFA> newTransitions;
-    RegExpOptimize opt;
-
-    for( const auto & p : m_MR.m_states )
-    {
-        for( const auto & r : m_MR.m_states )
-        {
-            if( p == q || r == q ) continue;
-
-            // new transition function y(p,r) = y(p,r) + y(p,q)y(q,q)*y(q,r)
-            Iteration* iter = new Iteration( );
-            iter->setElement( transition( q, q ) );
-
-            Concatenation* concat = new Concatenation( );
-            concat->getElements( ).push_back( transition( p, q ) );
-            concat->getElements( ).push_back( iter );
-            concat->getElements( ).push_back( transition( q, r ) );
-
-            Alternation* alt = new Alternation( );
-            alt->getElements( ).push_back( transition( p, r ) );
-            alt->getElements( ).push_back( concat );
-
-            newTransitions.insert( TransitionExtendedNFA( p, opt.optimize( alt ), r ) );
-            delete alt;
-        }
-    }
-
-    m_MR.m_states.erase( q );
-
-    deleteTransitions( );
-    m_MR.m_transitions = newTransitions;
-}
-
-RegExpElement* StateElimination::transition( const State & p, const State & q ) const
-{
-    Alternation* alt = new Alternation( );
-
-    alt->getElements( ).push_back( new RegExpEmpty( ) );
-
-    for( const auto & transition : m_MR.m_transitions )
-        if( transition.m_from == p && transition.m_to == q )
-            alt->getElements( ).push_back( transition.m_regexp->clone( ) );
-
-    return alt;
-}
-
-// ----------------------------------------------------------------------------
-
-set<StateElimination::TransitionExtendedNFA> StateElimination::ExtendedNFA::transitionsToState( const State & toState ) const
-{
-    if( ! isInSet( toState, m_states ) )
-        throw AlibException( "StateElimination::ExtendedNFA::transitionsToState - unknown state!" );
-
-    set<TransitionExtendedNFA> transitions;
-
-    for( const auto & transition : m_transitions )
-        if( transition.m_to == toState )
-            transitions.insert( transition );
-
-    return transitions;
-}
-
-const State & StateElimination::ExtendedNFA::createUniqueState( const string & name )
-{
-    State uniqueState( name );
-    if( ! isInSet( uniqueState, m_states ) )
-    {
-        m_states.insert( uniqueState );
-        return * m_states.find( uniqueState );
-    }
-
-    int i = 0;
-    while( i < INT_MAX )
-    {
-        State uniqueState( name + std::to_string( ++ i ) );
-
-        if( ! isInSet( uniqueState, m_states ) )
-        {
-            m_states.insert( uniqueState );
-            return * m_states.find( uniqueState );
-        }
-    }
-
-     throw AlibException( "StateElimination::ExtendedNFA::createUniqueState - could not create unique state." );
-}
-
-// ----------------------------------------------------------------------------
-
-StateElimination::TransitionExtendedNFA::TransitionExtendedNFA( const State & from, RegExpElement* regexp, const State & to ) : m_from( from ), m_to( to ), m_regexp( regexp )
-{
-
-}
-
-bool StateElimination::TransitionExtendedNFA::operator<( const StateElimination::TransitionExtendedNFA & x ) const
-{
-    if( m_from != x.m_from )
-        return m_from < x.m_from;
-    else if( m_regexp != x.m_regexp )
-        return m_regexp < x.m_regexp;
-    else
-        return m_to < x.m_to;
-}
-
-} /* namespace conversions */
diff --git a/aconversions/src/fa2re/StateElimination.h b/aconversions/src/fa2re/StateElimination.h
deleted file mode 100644
index 93a81ca51a..0000000000
--- a/aconversions/src/fa2re/StateElimination.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * StateElimination.h
- *
- *  Created on: 9. 2. 2014
- *      Author: tomas
- */
-
-#ifndef STATEELIMINATION_H_
-#define STATEELIMINATION_H_
-
-#include <set>
-
-#include <automaton/FSM/FSM.h>
-#include <regexp/RegExp.h>
-#include <regexp/RegExpElements.h>
-
-#include "../interface/IConversionRE.h"
-#include "../include/macros.h"
-
-#include "RegExpOptimize.h"
-
-namespace conversions
-{
-
-/**
- * Converts FSM to RE using State Elimination algorithm.
- * Source: Melichar 2.118
- */
-class StateElimination: public IConversionRE
-{
-public:
-    /**
-     * @param fsm Source automaton.
-     */
-    StateElimination( const automaton::FSM & fsm );
-
-    ~StateElimination( void );
-
-    /**
-     * Performs conversion.
-     * @return regular expression equivalent to source automaton.
-     */
-    regexp::RegExp convert( void );
-
-private:
-    /**
-     * Representation of extended NFA transition function (Q x R_T -> Q, R_T = regexp over alphabet T)
-     */
-    struct TransitionExtendedNFA
-    {
-        const automaton::State m_from, m_to;
-        regexp::RegExpElement* m_regexp;
-
-        /**
-         * @param from From state
-         * @param to To state
-         * @param regexp Expression
-         */
-        TransitionExtendedNFA( const automaton::State & from, regexp::RegExpElement* regexp ,const automaton::State & to );
-        bool operator<( const TransitionExtendedNFA & rhs ) const;
-    };
-
-    /**
-     * Stores extended NFA.
-     */
-    struct ExtendedNFA
-    {
-        std::set<automaton::State> m_states, m_finalStates, m_initialStates;
-        std::set<alphabet::Symbol> m_alphabet;
-        std::set<TransitionExtendedNFA> m_transitions;
-
-        const automaton::State & createUniqueState( const std::string & name );
-        std::set<StateElimination::TransitionExtendedNFA> transitionsToState( const automaton::State & toState ) const;
-    };
-
-    void constructExtendedNFA( void );
-
-    void extendExtendedNFA( void );
-
-    /**
-     * Eliminates given state
-     * @param q given state
-     */
-    void eliminate( const automaton::State & q );
-
-    /**
-     * Cleanup
-     */
-    void deleteTransitions( void );
-
-    /**
-     * gets regexp representing transition from state P to state Q
-     * @param p from state
-     * @param q to state
-     * @return RegExpElement
-     */
-    regexp::RegExpElement* transition( const automaton::State & p, const automaton::State & q ) const;
-
-    /**
-     * Extended NFA.
-     */
-    ExtendedNFA m_MR;
-
-    /**
-     * Input automaton
-     */
-    const automaton::FSM & m_automaton;
-};
-
-} /* namespace conversions */
-
-#endif /* STATEELIMINATION_H_ */
-- 
GitLab