NPDA 

> ## L={a^n b^n, n>0}
npda01:= mkNPDA({q0, q1, q3}, {a, b}, {A, C, B, D, Z},
table([(q1, lambda, D) = {[q1, [A, B]], [q1, [A, C]]},
(q1, b, B) = {[q1, lambda]}, (q1, a, A) = {[q1, lambda]},
(q1, lambda, C) = {[q1, [D, B]]},
(q0, lambda, Z) = {[q1, [D, Z]]},
(q1, lambda, Z) = {[q3, lambda]}]),
q0, Z, {q3});
transitionGraph(npda01);
 

`:=`(npda01, NPDA({q3, q0, q1}, {a, b}, {A, C, Z, B, D}, TABLE([(q1, a, A) = {[q1, lambda]}, (q1, lambda, C) = {[q1, [D, B]]}, (q1, lambda, Z) = {[q3, lambda]}, (q1, lambda, D) = {[q1, [A, B]], [q1, [...
`:=`(npda01, NPDA({q3, q0, q1}, {a, b}, {A, C, Z, B, D}, TABLE([(q1, a, A) = {[q1, lambda]}, (q1, lambda, C) = {[q1, [D, B]]}, (q1, lambda, Z) = {[q3, lambda]}, (q1, lambda, D) = {[q1, [A, B]], [q1, [...
`:=`(npda01, NPDA({q3, q0, q1}, {a, b}, {A, C, Z, B, D}, TABLE([(q1, a, A) = {[q1, lambda]}, (q1, lambda, C) = {[q1, [D, B]]}, (q1, lambda, Z) = {[q3, lambda]}, (q1, lambda, D) = {[q1, [A, B]], [q1, [...
 

Plot_2d
 

> stringVerificationPDA(npda01,[a,a,a,b,b,b]);
stringVerificationPDA(npda01,[a,b,a,b]);
stringVerificationPDA(npda01,[b,a,a,b]);
 

SENTENCE (11.2.1)
 

NON-SENTENCE (11.2.1)
 

NON-SENTENCE (11.2.1)
 

> [{q_f, q_1, q_0},{a, b},{S1a, S1b, S_1, z_0, S},table([(q_1, lambda, S) = {[q_1, [S1a, S_1]], [q_1, [S1a, S1b]]}, (q_1, b, S1b) = {[q_1, lambda]}, (q_1, a, S1a) = {[q_1, lambda]}, (q_1, lambda, S_1) = {[q_1, [S, S1b]]}, (q_0, lambda, z_0) = {[q_1, [S, z_0]]}, (q_1, lambda, z_0) = {[q_f, lambda]}]),q_0,z_0,{q_f}];
 

[{q_1, q_0, q_f}, {a, b}, {S1a, S1b, S_1, z_0, S}, TABLE([(q_1, lambda, S) = {[q_1, [S1a, S_1]], [q_1, [S1a, S1b]]}, (q_1, b, S1b) = {[q_1, lambda]}, (q_1, a, S1a) = {[q_1, lambda]}, (q_1, lambda, S_1...
[{q_1, q_0, q_f}, {a, b}, {S1a, S1b, S_1, z_0, S}, TABLE([(q_1, lambda, S) = {[q_1, [S1a, S_1]], [q_1, [S1a, S1b]]}, (q_1, b, S1b) = {[q_1, lambda]}, (q_1, a, S1a) = {[q_1, lambda]}, (q_1, lambda, S_1...
[{q_1, q_0, q_f}, {a, b}, {S1a, S1b, S_1, z_0, S}, TABLE([(q_1, lambda, S) = {[q_1, [S1a, S_1]], [q_1, [S1a, S1b]]}, (q_1, b, S1b) = {[q_1, lambda]}, (q_1, a, S1a) = {[q_1, lambda]}, (q_1, lambda, S_1...
(11.2.2)
 

> InternalStates:={q0,q1,q2,q3,q4}:
Alphabet:={a,b}:
StackAlphabet:={0,1}:
delta:=`delta`:
delta[(q0,a,0)]:={[q1,[1,0]],[q3,\lambda],[q4,[0]]}:
delta[(q0,\lambda,0)]:={[q3,\lambda],[q3,0]}:
delta[(q1,a,1)]:={[q1,[1,1,0]]}:
delta[(q1,b,1)]:={[q2,\lambda]}:
delta[(q2,b,1)]:={[q2,\lambda]}:
delta[(q2,\lambda,0)]:={[q3,[]]}:  ## [] is the same as \lambda
StackStartSymbol:=0:
InitialState := q0:
FinalStates:={q2,q3}:
npda01:=mkNPDA(InternalStates,Alphabet,StackAlphabet,op(delta),
 InitialState,StackStartSymbol,FinalStates);
 

`:=`(npda01, NPDA({q0, q1, q2, q3, q4}, {a, b}, {0, 1}, TABLE([(q2, b, 1) = {[q2, lambda]}, (q2, lambda, 0) = {[q3, lambda]}, (q0, a, 0) = {[q1, [1, 0]], [q4, [0]], [q3, lambda]}, (q0, lambda, 0) = {[...
`:=`(npda01, NPDA({q0, q1, q2, q3, q4}, {a, b}, {0, 1}, TABLE([(q2, b, 1) = {[q2, lambda]}, (q2, lambda, 0) = {[q3, lambda]}, (q0, a, 0) = {[q1, [1, 0]], [q4, [0]], [q3, lambda]}, (q0, lambda, 0) = {[...
`:=`(npda01, NPDA({q0, q1, q2, q3, q4}, {a, b}, {0, 1}, TABLE([(q2, b, 1) = {[q2, lambda]}, (q2, lambda, 0) = {[q3, lambda]}, (q0, a, 0) = {[q1, [1, 0]], [q4, [0]], [q3, lambda]}, (q0, lambda, 0) = {[...
(11.2.3)
 

> type(npda01,NPDA);
 

true (11.2.4)
 

> transitionGraph(npda01);
 

Plot_2d
 

> npda02:=PDA2CNF(npda01);
transitionGraph(npda02);
 

`:=`(npda02, NPDA({q0, q1, q2, q3, q4, q1_3, q3_2, q4_1, q1_5, q1_4}, {a, b}, {0, 1}, TABLE([(q1_5, lambda, 1) = {[q1, lambda]}, (q2, b, 1) = {[q2, lambda]}, (q4_1, lambda, 0) = {[q4, lambda]}, (q2, l...
`:=`(npda02, NPDA({q0, q1, q2, q3, q4, q1_3, q3_2, q4_1, q1_5, q1_4}, {a, b}, {0, 1}, TABLE([(q1_5, lambda, 1) = {[q1, lambda]}, (q2, b, 1) = {[q2, lambda]}, (q4_1, lambda, 0) = {[q4, lambda]}, (q2, l...
`:=`(npda02, NPDA({q0, q1, q2, q3, q4, q1_3, q3_2, q4_1, q1_5, q1_4}, {a, b}, {0, 1}, TABLE([(q1_5, lambda, 1) = {[q1, lambda]}, (q2, b, 1) = {[q2, lambda]}, (q4_1, lambda, 0) = {[q4, lambda]}, (q2, l...
`:=`(npda02, NPDA({q0, q1, q2, q3, q4, q1_3, q3_2, q4_1, q1_5, q1_4}, {a, b}, {0, 1}, TABLE([(q1_5, lambda, 1) = {[q1, lambda]}, (q2, b, 1) = {[q2, lambda]}, (q4_1, lambda, 0) = {[q4, lambda]}, (q2, l...
`:=`(npda02, NPDA({q0, q1, q2, q3, q4, q1_3, q3_2, q4_1, q1_5, q1_4}, {a, b}, {0, 1}, TABLE([(q1_5, lambda, 1) = {[q1, lambda]}, (q2, b, 1) = {[q2, lambda]}, (q4_1, lambda, 0) = {[q4, lambda]}, (q2, l...
 

Plot_2d
 

>
 

>