Regular Expressions
Testing RE
| > |
NFA2RE
| > | nfa1:=mkNFA({q0,q1,q2,q3,q4},{"a","b"},table([(q0,"a")={q3},(q1,"a")={q2},(q2,"a")={q3,q4},(q3,"b")={q2,q4}]),q0,{q4}):
transitionGraph(nfa1); |
![]() |
| > | r1:=NFA2RE(nfa1);
r2:=NFA2RE(nfa1,result=string); |
| (8.2.1) |
| (8.2.1) |
| > | nfa2:=RE2NFA(r1);
nfa3:=RE2NFA(r2); |
| (8.2.2) |
| (8.2.2) |
| > | isEmptyNFA(intersectNFA(nfa1,complementNFA(nfa2)));
isEmptyNFA(intersectNFA(nfa2,complementNFA(nfa1))); isEmptyNFA(intersectNFA(nfa1,complementNFA(nfa3))); isEmptyNFA(intersectNFA(nfa3,complementNFA(nfa1))); |
| (8.2.3) |
| (8.2.3) |
| (8.2.3) |
| (8.2.3) |
| > | NFA2RE(nfa2,result=string); |
| (8.2.4) |
| > | nfa2:=mkNFA({q0,q1,q2},{a,b},table([(q0,a)={q1,q2},(q1,b)={q0}]),q0,{q2}):
transitionGraph(nfa2); |
![]() |
| > | NFA2RE(nfa2); |
| (8.2.5) |
| > | nfa3:=randomNFA(5,3,2);
NFA2RE(nfa3,result=string); |
| (8.2.6) |
| (8.2.6) |
| > | nfa4:=mkNFA({q0,q1,q2},{a,b},table([(q0,b)={q0},(q0,a)={q1},(q1,a)={q0},(q1,b)={q1,q2},(q2,a)={q2},(q2,b)={q2}]),q0,{q2});
NFA2RE(nfa4,result=string); |
| (8.2.7) |
| (8.2.7) |
| > | nfa5:=mkNFA({q0,q1,q2},{a,b},table([(q0,a)={q1},(q0,b)={q2},(q1,a)={q1,q2},(q1,b)={q0},(q2,b)={q1}]),q0,{q0}):
transitionGraph(nfa5); NFA2RE(nfa5); |
![]() |
| > | nfa6:=mkNFA({q0,q1,q2,q3},{a,b},table([(q0,a)={q1},(q1,b)={q0,q2},(q1,a)={q3},(q2,a)={q1}]),q0,{q2,q3}):
transitionGraph(nfa6); NFA2RE(nfa6); |
![]() |
| > |
| > |
| > |
DFA2RE
Right-Quotient Languages
| > | nfa1:=simplifyNFA(RE2NFA("(r1 + r2)*")); |
| (8.1) |
| > | nfa2:=simplifyNFA(RE2NFA("(r1*.r2*)*")); |
| (8.2) |
| > | isEmptyNFA(intersectNFA(nfa2,complementNFA(nfa1)));
isEmptyNFA(intersectNFA(nfa1,complementNFA(nfa2))); |
| (8.3) |
| (8.3) |
| > |