Header menu logo F# Header menu logo Averest

Automata Module

This module implements functions for working with automata, in particular, determinizing them by the subset and the breakpoint constructions, as well as converting omega-automata to other acceptance conditions. Automata are represented in either a fully explicit enumeration of their states and transitions, a fully symbolic representation, or a semi-symbolic one.

Types

Type Description

AutomatonExpl<'input, 'output, 'state>

Explicitly represented automata consist of a set of inputs, possibly a set of outputs, a set of states, a set of initial states, a set of accepting states, and the transition relation.

AutomatonSemi<'state>

Semi-symbolic automata have an explicit enumeration of states, initial and accepting states, but the inputs and outputs are represented by boolean formulas so that many transitions can be shared.

Functions and values

Function or value Description

AutoExpl2AutoSemi auto

Full Usage: AutoExpl2AutoSemi auto

Parameters:
Returns: AutomatonSemi<'state> * (Map<'input, BoolExpr> * Map<'output, BoolExpr>)

encode an explicitly encoded automaton by boolean variables so that automata of type AutomatonExpl are converted to AutomatonSymb

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonSemi<'state> * (Map<'input, BoolExpr> * Map<'output, BoolExpr>)

AutoExpl2AutoSymb auto

Full Usage: AutoExpl2AutoSymb auto

Parameters:
Returns: AutomatonSymb * (Map<'input, BoolExpr> * Map<'output, BoolExpr> * Map<'state, BoolExpr> * Map<'state, BoolExpr>)

encode an explicitly encoded automaton by boolean variables so that automata of type AutomatonExpl are converted to AutomatonSymb

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonSymb * (Map<'input, BoolExpr> * Map<'output, BoolExpr> * Map<'state, BoolExpr> * Map<'state, BoolExpr>)

AutoExpl2DetAutoSymb auto

Full Usage: AutoExpl2DetAutoSymb auto

Parameters:
Returns: DetAutomatonSymb

encode an explicitly encoded deterministic automaton by boolean variables so that automata of type AutomatonExpl are converted to DetAutomatonSymb

auto : AutomatonExpl<'input, 'output, 'state>
Returns: DetAutomatonSymb

AutoExpl2Dot bundle ostr stateStr transStr auto

Full Usage: AutoExpl2Dot bundle ostr stateStr transStr auto

Parameters:
    bundle : bool
    ostr : TextWriter
    stateStr : 'state -> string
    transStr : 'input * 'output option -> string
    auto : AutomatonExpl<'input, 'output, 'state>

 Write a graphviz file to output stream ostr for an explicit automaton.
 The function stateStr is used to generate a label for the state, and the
 function labelStr is used to generate a label for the transition. For
 instance, these functions may look as follows:

     let transStr (i,o) =
         match o with 
          | None -> string i
          | Some(o) -> (string i)+"/"+(string o)

     let stateStr1 i = "s"+(string i)

     let stateStr2 s = string s

 If the parameter "bundle" is true, then at most one transition between
 a state pair is drawn that contains then the bundled list of input/output
 pairs instead of single transitions for each input/output combination
 between the same states.
bundle : bool
ostr : TextWriter
stateStr : 'state -> string
transStr : 'input * 'output option -> string
auto : AutomatonExpl<'input, 'output, 'state>

AutoExplF2FG auto

Full Usage: AutoExplF2FG auto

Parameters:
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

reduce acceptance F to FG by using a watchdog: states s are replaced by pairs (s,w) with a boolean value w that becomes true when an accepting state has been reached by one of its predecessor states

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

AutoExplF2GF auto

Full Usage: AutoExplF2GF auto

Parameters:
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

reduce acceptance F to GF

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

AutoExplFG2F auto

Full Usage: AutoExplFG2F auto

Parameters:
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

reduce acceptance FG to F by using a watchdog: states s are replaced by pairs (s,w) with a boolean value w that can become true when an accepting state has been reached

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

AutoExplFG2GF auto

Full Usage: AutoExplFG2GF auto

Parameters:
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

reduce acceptance FG to GF

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, ('state * bool)>

AutoExplG2Any newAcpt auto

Full Usage: AutoExplG2Any newAcpt auto

Parameters:
Returns: AutomatonExpl<'input, 'output, 'state>

reduce acceptance G to any other one is done by reducing the automaton to the safe states, i.e., intersecting the initial states and transitions with the safe states

newAcpt : AcceptanceType
auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, 'state>

AutoExplTrim auto

Full Usage: AutoExplTrim auto

Parameters:
Returns: AutomatonExpl<'input, 'output, 'state>

reduce an automaton to states that are reachable with infinite paths

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, 'state>

AutoSemi2Dot ostr stateStr auto

Full Usage: AutoSemi2Dot ostr stateStr auto

Parameters:

Write a graphviz file to output stream ostr for an semi-symbolic automaton. The function stateStr is used to generate a label for the state. If the given automaton has many transitions between some state pairs, you may first apply function BundleAutoSemi.

ostr : TextWriter
stateStr : 'state -> string
auto : AutomatonSemi<'state>

AutoSemiTrim auto

Full Usage: AutoSemiTrim auto

Parameters:
Returns: AutomatonSemi<'state>

reduce an automaton to states that are reachable with infinite paths

auto : AutomatonSemi<'state>
Returns: AutomatonSemi<'state>

AutoSymb2AutoExpl auto

Full Usage: AutoSymb2AutoExpl auto

Parameters:
Returns: Map<BoolExpr, bool> list * Map<BoolExpr, bool> list * Map<BoolExpr, bool> list * AutomatonExpl<int, int, int>

Convert a symbolic automaton to an explicit automaton by enumerating all possible assignments of all variables and reducing the transition relation to the next state condition.

auto : AutomatonSymb
Returns: Map<BoolExpr, bool> list * Map<BoolExpr, bool> list * Map<BoolExpr, bool> list * AutomatonExpl<int, int, int>

AutoSymb2AutoSemi useLogicMin auto

Full Usage: AutoSymb2AutoSemi useLogicMin auto

Parameters:
Returns: Map<BoolExpr, bool> list * AutomatonSemi<int>

Convert a symbolic automaton to a semi-symbolic automaton by enumerating all possible assignments to the state variables and reducing the transition relation to the enabling condition between two states. If useLogicMin holds, the enabling condition is also minimized (and this way also checked for being satisfiable).

useLogicMin : bool
auto : AutomatonSymb
Returns: Map<BoolExpr, bool> list * AutomatonSemi<int>

AutoSymb2AutoSemiWithReachableStates useLogicMin reachStates auto

Full Usage: AutoSymb2AutoSemiWithReachableStates useLogicMin reachStates auto

Parameters:
Returns: Map<BoolExpr, bool> list * AutomatonSemi<int>

AutoSymb2AutoSemiWithReachableStates is the same function as AutoSymb2AutoSemi, but is given the set of reachable states which can be computed by ComputeSpecialStatesAutoSymb. The generated automaton is then reduced to the reachable states only and therefore often smaller.

useLogicMin : bool
reachStates : Set<BoolExpr> seq
auto : AutomatonSymb
Returns: Map<BoolExpr, bool> list * AutomatonSemi<int>

AutoSymb2Dot ostr auto

Full Usage: AutoSymb2Dot ostr auto

Parameters:

Write a graphviz file to output stream ostr for a symbolic automaton. The function converts the given automaton to a semi-symbolic one and generates the graphviz file for it.

ostr : TextWriter
auto : AutomatonSymb

AutoSymbF2FG qIdx auto

Full Usage: AutoSymbF2FG qIdx auto

Parameters:
Returns: AutomatonSymb

reduce acceptance F to FG by using a watchdog that uses the new state variable with index qIdx

qIdx : Index
auto : AutomatonSymb
Returns: AutomatonSymb

AutoSymbF2GF qIdx auto

Full Usage: AutoSymbF2GF qIdx auto

Parameters:
Returns: AutomatonSymb

reduce acceptance F to GF by using a watchdog that uses the new state variable with index qIdx

qIdx : Index
auto : AutomatonSymb
Returns: AutomatonSymb

AutoSymbFG2F qIdx auto

Full Usage: AutoSymbFG2F qIdx auto

Parameters:
Returns: AutomatonSymb

reduce acceptance FG to F by using a watchdog that uses the new state variable with index qIdx

qIdx : Index
auto : AutomatonSymb
Returns: AutomatonSymb

AutoSymbFG2GF qIdx auto

Full Usage: AutoSymbFG2GF qIdx auto

Parameters:
Returns: AutomatonSymb

reduce acceptance FG to GF by using a watchdog that uses the new state variable with index qIdx

qIdx : Index
auto : AutomatonSymb
Returns: AutomatonSymb

AutoSymbG2Any newAcpt auto

Full Usage: AutoSymbG2Any newAcpt auto

Parameters:
Returns: AutomatonSymb

reduce acceptance G to any other one is done by reducing the automaton to the safe states, i.e., intersecting the initial states and transitions with the safe states

newAcpt : AcceptanceType
auto : AutomatonSymb
Returns: AutomatonSymb

AutoSymbTrim auto

Full Usage: AutoSymbTrim auto

Parameters:
Returns: AutomatonSymb

reduce an automaton to states that are reachable with infinite paths

auto : AutomatonSymb
Returns: AutomatonSymb

BundleAutoSemi auto

Full Usage: BundleAutoSemi auto

Parameters:
Returns: AutomatonSemi<'state>

optimize a semi-symbolic automaton in that all transitions between a state pair are combined into a single transition whose enabling condition is the disjunction of the enabling conditions of the transitions. Note that this is already the case for the automaton generated by function AutoSymb2AutoSemi.

auto : AutomatonSemi<'state>
Returns: AutomatonSemi<'state>

CheckEmptiness auto

Full Usage: CheckEmptiness auto

Parameters:
Returns: bool * BddAdr * BddAdr * (Map<BoolExpr, bool> list * Map<BoolExpr, bool> list) option

Given an existential omega automaton as generated by function LTL2Omega, the function initializes the Bdd and computes the initial accepting states by a fixpoint computation. The fair states are all states of the associated Kripke structure that have path where all fairness constraints hold infinitely often. Having computed the fair states, the function also computes the conjunction of the initial states with these states and also computes the conjunction of the fair states with the transition relation. The computation of the fair states is based on a fixpoint definition of the fair states condition (see also EmLe85, EmLe86a, EmLe86b, EmLe87, CGMZ95, BlGS00, FFKV01, HKSV97, HTKB93, KePR98, RaBS00, WBHR01, WBHR06, SoRB02, SeTV05).

auto : AutomatonSymb
Returns: bool * BddAdr * BddAdr * (Map<BoolExpr, bool> list * Map<BoolExpr, bool> list) option

CheckEmptinessbyNuSMV smvExe auto

Full Usage: CheckEmptinessbyNuSMV smvExe auto

Parameters:
Returns: bool * (Map<BoolExpr, bool> list * Map<BoolExpr, bool> list) option

CheckEmptinessbyNuSMV checks the emptiness of a given symbolic automaton using NuSMV whose executable file must be provided by smvExe.

smvExe : string
auto : AutomatonSymb
Returns: bool * (Map<BoolExpr, bool> list * Map<BoolExpr, bool> list) option

ComputeSpecialStatesAutoExpl auto

Full Usage: ComputeSpecialStatesAutoExpl auto

Parameters:
Returns: Set<'state> * Set<'state> * Set<'state>
auto : AutomatonExpl<'input, 'output, 'state>
Returns: Set<'state> * Set<'state> * Set<'state>

ComputeSpecialStatesAutoSemi auto

Full Usage: ComputeSpecialStatesAutoSemi auto

Parameters:
Returns: Set<'state> * Set<'state> * Set<'state>
auto : AutomatonSemi<'state>
Returns: Set<'state> * Set<'state> * Set<'state>

ComputeSpecialStatesAutoSymb auto

Full Usage: ComputeSpecialStatesAutoSymb auto

Parameters:
Returns: Set<AtomIndex> * BddAdr * BddAdr

ComputeSpecialStatesAutoSymb computes the states of an automaton that are reachable and that have an infinite outgoing path. The procedure makes use of BDDs in that the transition relation is constructed with the variable ordering Xq1;...;XqN;q1;...;qN;a1;...;aM. The function returns a triple (stateVarIds,reachBdd,infBdd) with the set of indices of the state variables, and the BDDs which encode the reachable states and the states with infinite outgoing paths.

auto : AutomatonSymb
Returns: Set<AtomIndex> * BddAdr * BddAdr

DetAutoSymb2AutoSymb autoDet

Full Usage: DetAutoSymb2AutoSymb autoDet

Parameters:
Returns: AutomatonSymb

convert a deterministic automaton to a AutoSymb without changing the transition relation etc.

autoDet : DetAutomatonSymb
Returns: AutomatonSymb

DetBreakpointExpl auto

Full Usage: DetBreakpointExpl auto

Parameters:
Returns: AutomatonExpl<'input, 'output, (Set<'state> * Set<'state>)>

This function applies the Breakpoint construction to construct a deterministic automaton whose states are pairs of sets of states of the given automaton such that ((q,qf),a,(q',qf')) is a transition iff there were states s,s' in q and q', respectively with (s,a,s'), and qf is the subset of states of q where since the last breakpoint only accepting states could be used to reach these states.

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, (Set<'state> * Set<'state>)>

DetBreakpointSymb qDet bDet reachStates auto

Full Usage: DetBreakpointSymb qDet bDet reachStates auto

Parameters:
Returns: DetAutomatonSymb

This function computes a symbolic representation of a deterministic automaton for a given nondeterministic automaton using the breakpoint construction. The deterministic automaton is computed similarly to the one of SymbolicRabinScott, but adds additional state variables b[i] that denote if the corresponding states p[i] belongs to the breakpoint set.

qDet : string
bDet : string
reachStates : Set<BoolExpr> seq
auto : AutomatonSymb
Returns: DetAutomatonSymb

DetSubsetExpl auto

Full Usage: DetSubsetExpl auto

Parameters:
Returns: AutomatonExpl<'input, 'output, Set<'state>>

This function applies the Rabin-Scott subset construction to construct a deterministic automaton whose states are sets of states of the given automaton such that (q,a,q') is a transition iff there were states s,s' in q and q', respectively with (s,a,s').

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, Set<'state>>

DetSubsetSymb qDet reachStates auto

Full Usage: DetSubsetSymb qDet reachStates auto

Parameters:
Returns: DetAutomatonSymb
 This function computes a symbolic representation of a deterministic 
 automaton for a given nondeterministic automaton. The nondeterministic
 automaton is given by its state variables, its initial condition, its
 transition relation, its acceptance condition, and the explicitly 
 enumerated set of its reachable states in terms of minterms which are 
 sets of state variables that contain those state variables that have
 positive occurrences in the minterm, i.e. which hold on the state.
 The latter can be computed by function ComputeSpecialStatesAutoSymb. 
 The determinization function associates then each reachable state 
 (minterm, set of state variables) with a new state variable of the 
 deterministic automaton whose name starts with the prefix "qDet".
 This way, a minterm on the new state variables corresponds with a set
 of sets of states of the nondeterministic automaton, since a minterm on
 the new state variables corresponds with a set of new state variables
 which is therefore a set of set of minterms of the old state variables,
 i.e., a set of set of states of the nondeterministic automaton.
 Details on the construction are given in MoSL08. 
 Note that the transition equations are of the form 
         next(pi) <-> p1&phi[i,1] | ... | pN&phi[i,N]
 where phi[i,j] is the set of inputs that trigger a transition from state
 pj to state pi in the nondeterministic automaton. This corresponds with
 the existential successor computation where pi is added to a successor
 state if one state pj can reach pi with input phi[i,j].
qDet : string
reachStates : Set<BoolExpr> seq
auto : AutomatonSymb
Returns: DetAutomatonSymb

DeterminizeAutoExplF auto

Full Usage: DeterminizeAutoExplF auto

Parameters:
Returns: AutomatonExpl<'input, 'output, (Set<'state * bool> * Set<'state * bool>)>

Determinize a given liveness automaton using the breakpoint construction after a reduction to a FG automaton

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, (Set<'state * bool> * Set<'state * bool>)>

DeterminizeAutoExplFG auto

Full Usage: DeterminizeAutoExplFG auto

Parameters:
Returns: AutomatonExpl<'input, 'output, (Set<'state> * Set<'state>)>

Determinize a given co-Büchi automaton using the breakpoint construction

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, (Set<'state> * Set<'state>)>

DeterminizeAutoExplG auto

Full Usage: DeterminizeAutoExplG auto

Parameters:
Returns: AutomatonExpl<'input, 'output, Set<'state>>

Determinize a given safety automaton using the subset construction

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, Set<'state>>

DeterminizeAutoExplTotalF auto

Full Usage: DeterminizeAutoExplTotalF auto

Parameters:
Returns: AutomatonExpl<'input, 'output, Set<'state>>

Determinize a given total liveness automaton using the subset construction

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, Set<'state>>

DeterminizeAutoSymb qIdx qDet bDet auto

Full Usage: DeterminizeAutoSymb qIdx qDet bDet auto

Parameters:
Returns: DetAutomatonSymb

Determinize a given automaton using either the subset or the breakpoint construction with additionally required steps (like reducing the states to the safe states before the determinization of safety automata). The strings qDet and bDet are the prefixes of the state variables used for encoding the supersets and breakpoint sets (if needed), and qIdx is the index of a state variable required for AutoSymbF2FG in case a NDet-F automaton must be converted to a NDet-FG automaton.

qIdx : Index
qDet : string
bDet : string
auto : AutomatonSymb
Returns: DetAutomatonSymb

EncodeByMinterms addNext varNames items

Full Usage: EncodeByMinterms addNext varNames items

Parameters:
    addNext : bool
    varNames : string
    items : 'things seq

Returns: Index list * Map<'things, BoolExpr>

EncodeByMinterms generates a mapping that assigns to each element in the given sequence item a minterm using variables varNames{i} with the minimal number of variables. If parameter addNext is true, then the BoolNext constructor is added to the variables in the minterms. The function returns the indices of the names of the used variables and the generated mapping.

addNext : bool
varNames : string
items : 'things seq
Returns: Index list * Map<'things, BoolExpr>

EquivalenceDetAutoExpl auto1 auto2

Full Usage: EquivalenceDetAutoExpl auto1 auto2

Parameters:
Returns: bool * Set<'state1 * 'state2>

Check the equivalence of two deterministic (!) automata on finite words. It is assumed that both automata have the same inputs.

auto1 : AutomatonExpl<'input, 'output, 'state1>
auto2 : AutomatonExpl<'input, 'output, 'state2>
Returns: bool * Set<'state1 * 'state2>

FlipFlopControlLogic atomL careSet qVar qNext

Full Usage: FlipFlopControlLogic atomL careSet qVar qNext

Parameters:
Returns: (BoolExpr * BoolExpr) * (BoolExpr * BoolExpr) * BoolExpr

This function compute for SR-, JK- and T-flipflops the control logic. These functions are stored in a map that maps next state variables to the control logic functions.

atomL : BoolExpr list
careSet : BoolExpr
qVar : BoolExpr
qNext : BoolExpr
Returns: (BoolExpr * BoolExpr) * (BoolExpr * BoolExpr) * BoolExpr

Mealy2MooreExpl auto

Full Usage: Mealy2MooreExpl auto

Parameters:
Returns: AutomatonExpl<'input, 'output, ('state * 'output option)>

check whether the automaton is a Moore automaton, i.e., it is a Mealy automaton where outputs only depend on inputs

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, ('state * 'output option)>

MinimizeDetAutoExpl auto

Full Usage: MinimizeDetAutoExpl auto

Parameters:
Returns: AutomatonExpl<'input, 'output, 'state>

Minimize a given deterministic finite state automatton on finite words

auto : AutomatonExpl<'input, 'output, 'state>
Returns: AutomatonExpl<'input, 'output, 'state>

MintermsOfBdd idxSet bddAdr

Full Usage: MintermsOfBdd idxSet bddAdr

Parameters:
Returns: Set<Set<BoolExpr>>

MintermsOfBdd computes all minterms that satisfy a given BDD. These minterms are obtained by using function AllSat to compute the satisfying cubes that are then extended to minterms which are encoded as sets of sets of variables. To this end, the function is given also the set of BDD indices of the variables that may occur in the BDD.

idxSet : Set<int>
bddAdr : BddAdr
Returns: Set<Set<BoolExpr>>

ParseAutoExpl s

Full Usage: ParseAutoExpl s

Parameters:
    s : string

Returns: AutomatonExpl<string, string, int>

Parse an explicit automaton from a string: Inputs and outputs can be arbitrary strings, and the states are a set of integers. Each one of the parts can be omitted and is then either the empty set or determined by the transition or given sets of states. The acceptance type must be one of

GF | FG | G | F
or will become
FIN
if omitted. An example for a Mealy automaton is:

      inputs a,b;
      outputs c,d;
      init  0,1;
      trans (0,a,c,1); (0,b,d,0); (1,a,d,1); (1,b,c,0);

 
and an example for an omega-automaton is as follows:

     init   0,1;
     trans  (0,a,c,1); (0,b,d,0); (1,a,d,1); (1,b,c,0);
     fair   0;
     fair   0,1;
     accept 1;
     acpTy FG;

 
The order must be inputs/outputs/init/transitions/fair...fair/accept.

s : string
Returns: AutomatonExpl<string, string, int>

ParseAutoSymb s

Full Usage: ParseAutoSymb s

Parameters:
    s : string

Returns: AutomatonSymb
s : string
Returns: AutomatonSymb

PrintAutoExpl ostr auto

Full Usage: PrintAutoExpl ostr auto

Parameters:

print explicit automaton

ostr : TextWriter
auto : AutomatonExpl<'input, 'output, 'state>

PrintCounterExampleAsHtmlTable auto defMap (initPath, cyclePath)

Full Usage: PrintCounterExampleAsHtmlTable auto defMap (initPath, cyclePath)

Parameters:

print a html table for the given counterexample consisting of the initial path to a cycle of states; the state variables are explained by the elementary subformulas that they abbreviate as given by defMap which may be empty, or the result of TemporalLogic.ExplainStateVars

auto : AutomatonSymb
defMap : Map<int, SpecExpr>
initPath : Map<BoolExpr, bool> list
cyclePath : Map<BoolExpr, bool> list

PrintCounterExampleAsLatexTable ostr auto defMap (initPath, cyclePath)

Full Usage: PrintCounterExampleAsLatexTable ostr auto defMap (initPath, cyclePath)

Parameters:

print a html table for the given counterexample consisting of the initial path to a cycle of states; the state variables are explained by the elementary subformulas that they abbreviate as given by defMap which may be empty, or the result of TemporalLogic.ExplainStateVars

ostr : TextWriter
auto : AutomatonSymb
defMap : Map<int, string>
initPath : Map<BoolExpr, bool> list
cyclePath : Map<BoolExpr, bool> list

PrintEquivRelTable equivRel states1 states2

Full Usage: PrintEquivRelTable equivRel states1 states2

Parameters:
    equivRel : Set<'a * 'b>
    states1 : Set<'a>
    states2 : Set<'b>

print the equivalence relation of EquivalentFSA or MinimalFSA

equivRel : Set<'a * 'b>
states1 : Set<'a>
states2 : Set<'b>

PrintLatexAutoSymb ostr auto

Full Usage: PrintLatexAutoSymb ostr auto

Parameters:

print a symbolic omega-automaton in Latex

ostr : TextWriter
auto : AutomatonSymb

PrintLatexDetAutoSymb ostr optAcpt autoDet

Full Usage: PrintLatexDetAutoSymb ostr optAcpt autoDet

Parameters:

print a symbolic deterministic omega-automaton in Latex with an optional acceptance condition that replaces the one of the automaton

ostr : TextWriter
optAcpt : SpecExpr option
autoDet : DetAutomatonSymb

TransitionMonoidExpl auto

Full Usage: TransitionMonoidExpl auto

Parameters:
Returns: Set<Set<'state * 'state> * int> * Map<(Set<'state * 'state> * Set<'state * 'state>), Set<'state * 'state>> * Map<Set<'state * 'state>, Set<'input list>> * bool
 This function computes the transition monoid of the given automaton. The
 transition monoid is defined as the set of transition relations that are
 at first determined for every input, and then by closing this initial 
 set of transition relation with the relation product. The obtained 
 transition relations define the transition monoid of the automaton where
 the operation of the monoid is the relation product.
   This function computes for a given automaton a tuple (allTransRels,
 operTable,assocTable,isAperiodic) were allTransRels is the
 set of all transition relations of the monoid paired with their periods,
 operTable is a map that maps two transition relations to their product,
 assocTable is a map that maps each transition relation to the set of
 words that induce it, and isAperiodic holds if the monoid is aperiodic.
auto : AutomatonExpl<'input, 'output, 'state>
Returns: Set<Set<'state * 'state> * int> * Map<(Set<'state * 'state> * Set<'state * 'state>), Set<'state * 'state>> * Map<Set<'state * 'state>, Set<'input list>> * bool

TransitionMonoidSymb auto

Full Usage: TransitionMonoidSymb auto

Parameters:
Returns: Set<BddAdr * int> * Map<(BddAdr * BddAdr), BddAdr> * bool

This function computes the transition monoid of the given symbolic automaton, i.e., the set of transition relations that relate states that can be reached by reading the same word. The operation table computes the relation product of these relations which is a finite monoid since the relation product is associative. The function also computes the period of each transition relation and checks whether the monoid is aperiodic, i.e., whether the automaton can be expressed as a temporal logic formula.

auto : AutomatonSymb
Returns: Set<BddAdr * int> * Map<(BddAdr * BddAdr), BddAdr> * bool

WinConditions useMealy auto

Full Usage: WinConditions useMealy auto

Parameters:
Returns: BddAdr

This function computes a BDD that encodes the winning conditions for the given deterministic omega-automaton with input and output variables. It is assumed that the output variables can be defined by a Mealy or Moore automaton to satisfy the acceptance condition for all words on the input variables. Note that we have the following:

  • \(\mathsf{MooreSafe}(i,o,p) = \nu x.(p \wedge \langle ?o!i\rangle x)\)
  • \(\mathsf{MealySafe}(i,o,p) = \nu x.(p \wedge \langle !i?o\rangle x)\)
  • \(\mathsf{MooreLive}(i,o,p) = \mu x.(p \vee \langle ?o!i\rangle x)\)
  • \(\mathsf{MealyLive}(i,o,p) = \mu x.(p \vee \langle !i?o\rangle x)\)
where \(\langle ?o!i\rangle x\) for a state prediate x(q) is defined as follows (the two alternatives are equivalent for deterministic R(q,i,o,q')): \[ \langle ?o!i\rangle x(q) := ?o.!i.!q'. R(q,i,o,q') \to x(q') = ?o.!i.?q'. R(q,i,o,q') \wedge x(q') \] This also shows the following dualities:
  • \(\neg\mathsf{MooreSafe}(i,o,p) = \mu x.(\neg p \vee \langle !o?i\rangle x) = \mathsf{MealyLive}(o,i,\neg p)\)
  • \(\neg\mathsf{MealySafe}(i,o,p) = \mu x.(\neg p \vee \langle ?i!o\rangle x) = \mathsf{MooreLive}(o,i,\neg p)\)
  • \(\neg\mathsf{MooreLive}(i,o,p) = \nu x.(\neg p \wedge \langle !o?i\rangle x) = \mathsf{MealySafe}(o,i,\neg p)\)
  • \(\neg\mathsf{MealyLive}(i,o,p) = \nu x.(\neg p \wedge \langle ?i!o\rangle x) = \mathsf{MooreSafe}(o,i,\neg p)\)

useMealy : bool
auto : DetAutomatonSymb
Returns: BddAdr

Witness2DotFile (initPath, cyclePath) outStr

Full Usage: Witness2DotFile (initPath, cyclePath) outStr

Parameters:

Printing a fair path which is given as two BddAdr arrays which each element denotes a state which is given as a cube. For printing, we better adapt to the state transition conventions, i.e., not mentioned variables are false, and don't cares have to be fixed to any value (choose false).

initPath : Map<BoolExpr, bool> list
cyclePath : Map<BoolExpr, bool> list
outStr : TextWriter

isAcceptorExpl auto

Full Usage: isAcceptorExpl auto

Parameters:
Returns: bool

check whether the automaton is an acceptor, i.e., it has no outputs

auto : AutomatonExpl<'input, 'output, 'state>
Returns: bool

isDetExpl auto

Full Usage: isDetExpl auto

Parameters:
Returns: bool

check whether the automaton is deterministic, i.e., whether it has for all states and inputs exactly one transition

auto : AutomatonExpl<'input, 'output, 'state>
Returns: bool

isFiniteWordsAcceptorExpl auto

Full Usage: isFiniteWordsAcceptorExpl auto

Parameters:
Returns: bool

check whether the automaton is an acceptor on finite words

auto : AutomatonExpl<'input, 'output, 'state>
Returns: bool

isMealyExpl auto

Full Usage: isMealyExpl auto

Parameters:
Returns: bool

check whether the automaton is a Mealy automaton, i.e., it has neither fairness constraints nor accepting states, but it has outputs

auto : AutomatonExpl<'input, 'output, 'state>
Returns: bool

isMooreExpl auto

Full Usage: isMooreExpl auto

Parameters:
Returns: bool

check whether the automaton is a Moore automaton, i.e., it is a Mealy automaton where outputs only depend on inputs

auto : AutomatonExpl<'input, 'output, 'state>
Returns: bool

isOmegaAutoExpl auto

Full Usage: isOmegaAutoExpl auto

Parameters:
Returns: bool

check whether the automaton is an omega-automaton

auto : AutomatonExpl<'input, 'output, 'state>
Returns: bool

isTotalExpl auto

Full Usage: isTotalExpl auto

Parameters:
Returns: bool

check whether the automaton is totally defined (so that we can use the subset construction for determinizing NDetF automata)

auto : AutomatonExpl<'input, 'output, 'state>
Returns: bool

Type something to start searching.