Reversion 

> nfa:=mkNFA({q0,q1},{0,1},table([(q0,0)={q1},(q1,\lambda)={q1}]),q0,{q1});
reverseNFA(nfa);
 

`:=`(nfa, NFA({q1, q0}, {0, 1}, TABLE([(q0, 0) = {q1}, (q1, lambda) = {q1}]), q0, {q1})) (6.9.1)
 

NFA({q1, q0}, {0, 1}, TABLE([(q1, 0) = {q0}, (q1, lambda) = {q1}]), q1, {q0}) (6.9.1)
 

> nfa:=mkNFA({q0,q1,q2},{0,1},table([(q0,0)={q1},(q0,1)={q2},(q1,\lambda)={q1}]),q0,{q1});
reverseNFA(nfa);
 

`:=`(nfa, NFA({q1, q2, q0}, {0, 1}, TABLE([(q0, 0) = {q1}, (q0, 1) = {q2}, (q1, lambda) = {q1}]), q0, {q1})) (6.9.2)
 

NFA({q1, q2, q0}, {0, 1}, TABLE([(q1, 0) = {q0}, (q2, 1) = {q0}, (q1, lambda) = {q1}]), q1, {q0}) (6.9.2)
 

> nfa:=mkNFA({q0,q1},{0,1},table([(q0,0)={q1},(q0,\lambda)={q0},(q1,1)={q0}]),q0,{q0});
reverseNFA(nfa);
 

`:=`(nfa, NFA({q1, q0}, {0, 1}, TABLE([(q0, lambda) = {q0}, (q0, 0) = {q1}, (q1, 1) = {q0}]), q0, {q0})) (6.9.3)
 

NFA({q1, q0}, {0, 1}, TABLE([(q0, lambda) = {q0}, (q1, 0) = {q0}, (q0, 1) = {q1}]), q0, {q0}) (6.9.3)
 

> nfa:=randomNFA(6,3,2);
transitionGraph(nfa);
nfa2:=reverseNFA(nfa);
transitionGraph(nfa2);
 

`:=`(nfa, NFA({q1, q2, q3, q4, q5, q0}, {a1, a2, a3}, TABLE([(q0, lambda) = {q0}, (q2, a1) = {q1, q0}, (q1, a2) = {q1, q4, q5}, (q3, lambda) = {q5}, (q1, a1) = {q2, q4}, (q2, lambda) = {q2}, (q1, lamb...
`:=`(nfa, NFA({q1, q2, q3, q4, q5, q0}, {a1, a2, a3}, TABLE([(q0, lambda) = {q0}, (q2, a1) = {q1, q0}, (q1, a2) = {q1, q4, q5}, (q3, lambda) = {q5}, (q1, a1) = {q2, q4}, (q2, lambda) = {q2}, (q1, lamb...
`:=`(nfa, NFA({q1, q2, q3, q4, q5, q0}, {a1, a2, a3}, TABLE([(q0, lambda) = {q0}, (q2, a1) = {q1, q0}, (q1, a2) = {q1, q4, q5}, (q3, lambda) = {q5}, (q1, a1) = {q2, q4}, (q2, lambda) = {q2}, (q1, lamb...
 

Plot_2d
 

`:=`(nfa2, NFA({q1, q2, q3, q4, q5, q0, _qf_}, {a1, a2, a3}, TABLE([(q0, lambda) = {q0}, (q3, a2) = {q2}, (q2, a1) = {q1}, (_qf_, lambda) = {q1, q4}, (q5, a2) = {q1}, (q1, a2) = {q1, q2}, (q1, a1) = {...
`:=`(nfa2, NFA({q1, q2, q3, q4, q5, q0, _qf_}, {a1, a2, a3}, TABLE([(q0, lambda) = {q0}, (q3, a2) = {q2}, (q2, a1) = {q1}, (_qf_, lambda) = {q1, q4}, (q5, a2) = {q1}, (q1, a2) = {q1, q2}, (q1, a1) = {...
`:=`(nfa2, NFA({q1, q2, q3, q4, q5, q0, _qf_}, {a1, a2, a3}, TABLE([(q0, lambda) = {q0}, (q3, a2) = {q2}, (q2, a1) = {q1}, (_qf_, lambda) = {q1, q4}, (q5, a2) = {q1}, (q1, a2) = {q1, q2}, (q1, a1) = {...
`:=`(nfa2, NFA({q1, q2, q3, q4, q5, q0, _qf_}, {a1, a2, a3}, TABLE([(q0, lambda) = {q0}, (q3, a2) = {q2}, (q2, a1) = {q1}, (_qf_, lambda) = {q1, q4}, (q5, a2) = {q1}, (q1, a2) = {q1, q2}, (q1, a1) = {...
 

Plot_2d
 

> type(nfa,NFA);
 

true (6.9.4)
 

>