Chomsky Normal Form 

> cfg5:=mkCFG({V, A},{a, b},V,table([V = {[A, V], [a, b, V], [a, b]}, A = {[A, V], [a, b, V], [a, b]}]));
 

`:=`(cfg5, CFG({A, V}, {a, b}, V, TABLE([V = {[A, V], [a, b, V], [a, b]}, A = {[A, V], [a, b, V], [a, b]}]))) (10.7.1)
 

> cfg5b:=CFG2CNF(cfg5);
 

`:=`(cfg5b, CFG({A, V1a, V1b, V_2, V, V_1}, {a, b}, V, TABLE([V_1 = {[V1b, V]}, V_2 = {[V1b, V]}, V1b = {[b]}, V = {[A, V], [V1a, V_1], [V1a, V1b]}, A = {[A, V], [V1a, V_2], [V1a, V1b]}, V1a = {[a]}])...
`:=`(cfg5b, CFG({A, V1a, V1b, V_2, V, V_1}, {a, b}, V, TABLE([V_1 = {[V1b, V]}, V_2 = {[V1b, V]}, V1b = {[b]}, V = {[A, V], [V1a, V_1], [V1a, V1b]}, A = {[A, V], [V1a, V_2], [V1a, V1b]}, V1a = {[a]}])...
(10.7.2)
 

> cfg6:=mkCFG({V, C},{a, b},V,table([C = {[a, b], [a, b, C]}, V = {[a, b], [a, b, C]}]));
 

`:=`(cfg6, CFG({C, V}, {a, b}, V, TABLE([V = {[a, b], [a, b, C]}, C = {[a, b], [a, b, C]}]))) (10.7.3)
 

> cfg6b:=CFG2CNF(cfg6);
 

`:=`(cfg6b, CFG({C, V, V_1, V1a, V1b, V_2}, {a, b}, V, TABLE([V_1 = {[V1b, C]}, V = {[V1a, V1b], [V1a, V_1]}, V1b = {[b]}, C = {[V1a, V1b], [V1a, V_2]}, V1a = {[a]}, V_2 = {[V1b, C]}])))
`:=`(cfg6b, CFG({C, V, V_1, V1a, V1b, V_2}, {a, b}, V, TABLE([V_1 = {[V1b, C]}, V = {[V1a, V1b], [V1a, V_1]}, V1b = {[b]}, C = {[V1a, V1b], [V1a, V_2]}, V1a = {[a]}, V_2 = {[V1b, C]}])))
(10.7.4)
 

> cfg7:=mkCFG({S,A,B},{a,b,c},S,table([S={[A,B,a]},A={[a,a,b]},B={[A,c]}]));
 

`:=`(cfg7, CFG({A, B, S}, {a, b, c}, S, TABLE([B = {[A, c]}, A = {[a, a, b]}, S = {[A, B, a]}]))) (10.7.5)
 

> cfg7b:=CFG2CNF(cfg7);
 

`:=`(cfg7b, CFG({A, B, S, S_1, S_2, S1a, S1b, S1c}, {a, b, c}, S, TABLE([S_1 = {[S1a, S1b]}, S1b = {[b]}, S1c = {[c]}, B = {[A, S1c]}, A = {[S1a, S_1]}, S_2 = {[B, S1a]}, S1a = {[a]}, S = {[A, S_2]}])...
`:=`(cfg7b, CFG({A, B, S, S_1, S_2, S1a, S1b, S1c}, {a, b, c}, S, TABLE([S_1 = {[S1a, S1b]}, S1b = {[b]}, S1c = {[c]}, B = {[A, S1c]}, A = {[S1a, S_1]}, S_2 = {[B, S1a]}, S1a = {[a]}, S = {[A, S_2]}])...
(10.7.6)
 

> t:=subs({A=S_1,B=S2a},[S={[a,b,A,B]},A={[b,A,B],[\lambda]},B={[B,A,a],[A],[\lambda]}]):
cfg8:=mkCFG(op(map(x->subs({A=S_1,B=S2a},x),[{S,A,B},{a,b},S,table(t)])));
 

`:=`(cfg8, CFG({S, S2a, S_1}, {a, b}, S, TABLE([S2a = {[S2a, S_1, a], [S_1], [lambda]}, S_1 = {[b, S_1, S2a], [lambda]}, S = {[a, b, S_1, S2a]}])))
`:=`(cfg8, CFG({S, S2a, S_1}, {a, b}, S, TABLE([S2a = {[S2a, S_1, a], [S_1], [lambda]}, S_1 = {[b, S_1, S2a], [lambda]}, S = {[a, b, S_1, S2a]}])))
(10.7.7)
 

> printlevel:=0:cfg8b:=CFG2CNF(cfg8);
 

`:=`(cfg8b, CFG({S, S2a, S_1, S_2, S1a, S1b, S_3, S_4, S_5, S_6, S_7, S_8}, {a, b}, S, TABLE([S2a = {[S_1, S1a], [S2a, S1a], [S1b, S_1], [S1b, S2a], [S1b, S_2], [S2a, S_3], [b], [a]}, S_1 = {[S1b, S_1...
`:=`(cfg8b, CFG({S, S2a, S_1, S_2, S1a, S1b, S_3, S_4, S_5, S_6, S_7, S_8}, {a, b}, S, TABLE([S2a = {[S_1, S1a], [S2a, S1a], [S1b, S_1], [S1b, S2a], [S1b, S_2], [S2a, S_3], [b], [a]}, S_1 = {[S1b, S_1...
`:=`(cfg8b, CFG({S, S2a, S_1, S_2, S1a, S1b, S_3, S_4, S_5, S_6, S_7, S_8}, {a, b}, S, TABLE([S2a = {[S_1, S1a], [S2a, S1a], [S1b, S_1], [S1b, S2a], [S1b, S_2], [S2a, S_3], [b], [a]}, S_1 = {[S1b, S_1...
`:=`(cfg8b, CFG({S, S2a, S_1, S_2, S1a, S1b, S_3, S_4, S_5, S_6, S_7, S_8}, {a, b}, S, TABLE([S2a = {[S_1, S1a], [S2a, S1a], [S1b, S_1], [S1b, S2a], [S1b, S_2], [S2a, S_3], [b], [a]}, S_1 = {[S1b, S_1...
`:=`(cfg8b, CFG({S, S2a, S_1, S_2, S1a, S1b, S_3, S_4, S_5, S_6, S_7, S_8}, {a, b}, S, TABLE([S2a = {[S_1, S1a], [S2a, S1a], [S1b, S_1], [S1b, S2a], [S1b, S_2], [S2a, S_3], [b], [a]}, S_1 = {[S1b, S_1...
(10.7.8)
 

>