String Verification 

> dfa:=randomDFA(6,[0,1],2);
transitionGraph(dfa);
 

`:=`(dfa, DFA({q0, q1, q2, q3, q4, q5}, {0, 1}, TABLE([(q5, 1) = q1, (q5, 0) = q2, (q4, 1) = q3, (q3, 1) = q5, (q2, 0) = q4, (q4, 0) = q2, (q2, 1) = q4, (q0, 0) = q4, (q1, 1) = q3, (q0, 1) = q5, (q3, ...
`:=`(dfa, DFA({q0, q1, q2, q3, q4, q5}, {0, 1}, TABLE([(q5, 1) = q1, (q5, 0) = q2, (q4, 1) = q3, (q3, 1) = q5, (q2, 0) = q4, (q4, 0) = q2, (q2, 1) = q4, (q0, 0) = q4, (q1, 1) = q3, (q0, 1) = q5, (q3, ...
`:=`(dfa, DFA({q0, q1, q2, q3, q4, q5}, {0, 1}, TABLE([(q5, 1) = q1, (q5, 0) = q2, (q4, 1) = q3, (q3, 1) = q5, (q2, 0) = q4, (q4, 0) = q2, (q2, 1) = q4, (q0, 0) = q4, (q1, 1) = q3, (q0, 1) = q5, (q3, ...
 

Plot_2d
 

> # Example 1:
dfa:=mkDFA({q0, q1, q2, q3, q4, q5},{0, 1},table([(q5, 0) = q3, (q4, 0) = q0, (q3, 0) = q0, (q1, 1) = q3, (q0, 0) = q4, (q4, 1) = q5, (q3, 1) = q0, (q2, 1) = q1, (q2, 0) = q3, (q1, 0) = q0, (q5, 1) = q5, (q0, 1) = q5]),q0,{q0, q4});
w:=[0,0,1,1,0];
transitionGraph(dfa);
stringVerificationDFA(dfa,w,`walk`);
walk;
 

`:=`(dfa, DFA({q0, q1, q2, q3, q4, q5}, {0, 1}, TABLE([(q3, 1) = q0, (q4, 0) = q0, (q2, 1) = q1, (q5, 0) = q3, (q5, 1) = q5, (q1, 1) = q3, (q0, 0) = q4, (q1, 0) = q0, (q3, 0) = q0, (q0, 1) = q5, (q4, ...
`:=`(dfa, DFA({q0, q1, q2, q3, q4, q5}, {0, 1}, TABLE([(q3, 1) = q0, (q4, 0) = q0, (q2, 1) = q1, (q5, 0) = q3, (q5, 1) = q5, (q1, 1) = q3, (q0, 0) = q4, (q1, 0) = q0, (q3, 0) = q0, (q0, 1) = q5, (q4, ...
`:=`(dfa, DFA({q0, q1, q2, q3, q4, q5}, {0, 1}, TABLE([(q3, 1) = q0, (q4, 0) = q0, (q2, 1) = q1, (q5, 0) = q3, (q5, 1) = q5, (q1, 1) = q3, (q0, 0) = q4, (q1, 0) = q0, (q3, 0) = q0, (q0, 1) = q5, (q4, ...
 

`:=`(w, [0, 0, 1, 1, 0])
 

Plot_2d
 

Unaccepted
 

`q0 => q4 => q0 => q5 => q5 => q3`
 

> stringVerificationDFA(dfa,[1,1,1,0,1],`walk`);
 

Accepted (5.2.1)
 

> walk;
 

`q0 => q5 => q5 => q5 => q3 => q0` (5.2.2)
 

> InternalStates:={q0,q1,q2}:
Alphabet:={0,1}:
delta:=table():
delta[(q0,0)]:=q0:
delta[(q0,1)]:=q1:
delta[(q1,0)]:=q0:
delta[(q1,1)]:=q2:
delta[(q2,0)]:=q2:
delta[(q2,1)]:=q1:
InitialState:=q0:
FinalStates:={q1}:
 

> dfa1:=mkDFA(InternalStates,Alphabet,op(delta),InitialState,FinalStates);
w:=[0,0,1,1,0,1,0,1];
stringVerificationDFA(dfa1,w,`walk`);
walk;
 

`:=`(dfa1, DFA({q0, q1, q2}, {0, 1}, TABLE([(q2, 1) = q1, (q1, 1) = q2, (q0, 0) = q0, (q1, 0) = q0, (q0, 1) = q1, (q2, 0) = q2]), q0, {q1}))
`:=`(dfa1, DFA({q0, q1, q2}, {0, 1}, TABLE([(q2, 1) = q1, (q1, 1) = q2, (q0, 0) = q0, (q1, 0) = q0, (q0, 1) = q1, (q2, 0) = q2]), q0, {q1}))
(5.2.3)
 

`:=`(w, [0, 0, 1, 1, 0, 1, 0, 1]) (5.2.3)
 

Accepted (5.2.3)
 

`q0 => q0 => q0 => q1 => q2 => q2 => q1 => q0 => q1` (5.2.3)
 

> InternalStates:={q0,q1,q2}:
Alphabet:={" ",1}:
delta:=table():
delta[(q0," ")]:=q0:
delta[(q0,1)]:=q1:
delta[(q1," ")]:=q0:
delta[(q1,1)]:=q2:
delta[(q2," ")]:=q2:
delta[(q2,1)]:=q1:
InitialState:=q0:
FinalStates:={q1}:
dfa2:=mkDFA(InternalStates,Alphabet,op(delta),InitialState,FinalStates);
 

`:=`(dfa2, DFA({q0, q1, q2}, {1,
`:=`(dfa2, DFA({q0, q1, q2}, {1,
(5.2.4)
 

> w:=[" "," ",1,1," ",1," ",1];
stringVerificationDFA(dfa2,w,`walk`);
walk;
 

`:=`(w, [ (5.2.5)
 

Accepted (5.2.5)
 

`q0 => q0 => q0 => q1 => q2 => q2 => q1 => q0 => q1` (5.2.5)