Remove Lambda Production Rules 

> #L={a^n b^m:n>m}
P:=table():
P[S]:=[A,S1]:
P[S1]:={[a,S1,b],[\lambda]}:
P[A]:={[a,A],[a]}:
cfg01:=mkCFG({S,S1,A},{a,b},S,op(P)):
 

> cfg01a:=removeLambdaCFG(cfg01);
 

`:=`(cfg01a, CFG({A, S, S1}, {a, b}, S, TABLE([S1 = {[a, S1, b], [a, b]}, S = {[A, S1], [A]}, A = {[a, A], [a]}])))
`:=`(cfg01a, CFG({A, S, S1}, {a, b}, S, TABLE([S1 = {[a, S1, b], [a, b]}, S = {[A, S1], [A]}, A = {[a, A], [a]}])))
(10.2.1)
 

>
 

> P:=table():
P[S]:={[A,B,a,C,A]}:
P[A]:={[B,C]}:
P[B]:={[b],[\lambda]}:
P[C]:={[D],[\lambda]}:
P[D]:={[d]}:
cfg02:=mkCFG({S,A,B,C,D},{a,b,d},S,op(P));
 

`:=`(cfg02, CFG({A, C, B, S, D}, {a, b, d}, S, TABLE([B = {[lambda], [b]}, S = {[A, B, a, C, A]}, D = {[d]}, A = {[B, C]}, C = {[lambda], [D]}])))
`:=`(cfg02, CFG({A, C, B, S, D}, {a, b, d}, S, TABLE([B = {[lambda], [b]}, S = {[A, B, a, C, A]}, D = {[d]}, A = {[B, C]}, C = {[lambda], [D]}])))
(10.2.2)
 

> type(cfg02,CFG);
 

true (10.2.3)
 

> type(cfg02,lambdaFreeCFG);
 

false (10.2.4)
 

> removeLambdaCFG(cfg02);
 

CFG({A, C, B, S, D}, {a, b, d}, S, TABLE([B = {[b]}, S = {[a, A], [a], [A, a], [A, a, C], [A, a, C, A], [a, C], [a, C, A], [A, B, a], [B, a], [A, B, a, C], [B, a, C], [A, B, a, C, A], [B, a, C, A], [A...
CFG({A, C, B, S, D}, {a, b, d}, S, TABLE([B = {[b]}, S = {[a, A], [a], [A, a], [A, a, C], [A, a, C, A], [a, C], [a, C, A], [A, B, a], [B, a], [A, B, a, C], [B, a, C], [A, B, a, C, A], [B, a, C, A], [A...
CFG({A, C, B, S, D}, {a, b, d}, S, TABLE([B = {[b]}, S = {[a, A], [a], [A, a], [A, a, C], [A, a, C, A], [a, C], [a, C, A], [A, B, a], [B, a], [A, B, a, C], [B, a, C], [A, B, a, C, A], [B, a, C, A], [A...
(10.2.5)
 

> type(%,lambdaFreeCFG);
 

true (10.2.6)
 

> cfg03 := mkCFG({V0, V1, V2, V3, V4},{a1, a2, a3},V0,table([V4 = {[lambda]}, V0 = {[lambda]}, V1 = {[lambda]}, V3 = {[lambda], [V3, V4, a3, V1, a1]}]));
 

`:=`(cfg03, CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V4 = {[lambda]}, V3 = {[lambda], [V3, V4, a3, V1, a1]}, V1 = {[lambda]}, V0 = {[lambda]}])))
`:=`(cfg03, CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V4 = {[lambda]}, V3 = {[lambda], [V3, V4, a3, V1, a1]}, V1 = {[lambda]}, V0 = {[lambda]}])))
(10.2.7)
 

> removeLambdaCFG(cfg03);
 

CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V3 = {[V3, V4, a3, V1, a1], [V3, a3, V1, a1], [V4, a3, V1, a1], [a3, V1, a1], [a3, a1], [V3, V4, a3, a1], [V4, a3, a1], [V3, a3, a1]}]))
CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V3 = {[V3, V4, a3, V1, a1], [V3, a3, V1, a1], [V4, a3, V1, a1], [a3, V1, a1], [a3, a1], [V3, V4, a3, a1], [V4, a3, a1], [V3, a3, a1]}]))
(10.2.8)
 

> cfg:=randomCFG(5,3);
 

`:=`(cfg, CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V4 = {[lambda]}, V3 = {[V4, a1, V1], [V0, V1, V4, V3, a3]}, V2 = {[lambda]}, V0 = {[lambda], [V2, a3]}])))
`:=`(cfg, CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V4 = {[lambda]}, V3 = {[V4, a1, V1], [V0, V1, V4, V3, a3]}, V2 = {[lambda]}, V0 = {[lambda], [V2, a3]}])))
(10.2.9)
 

> removeLambdaCFG(cfg);
 

CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V3 = {[V4, a1, V1], [V0, V1, V4, V3, a3], [a1, V1], [V1, V4, V3, a3], [V0, V1, V3, a3], [V1, V3, a3]}, V0 = {[a3], [V2, a3]}]))
CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V3 = {[V4, a1, V1], [V0, V1, V4, V3, a3], [a1, V1], [V1, V4, V3, a3], [V0, V1, V3, a3], [V1, V3, a3]}, V0 = {[a3], [V2, a3]}]))
(10.2.10)
 

> cfg := mkCFG({V0, V1, V2, V3, V4},{a1, a2, a3},V0,table([V4 = {[lambda]}, V0 = {[lambda]}, V1 = {[lambda], [V2]}, V2 = {[lambda], [V1], [V4, a3, V0, a1, V1]}]));
 

`:=`(cfg, CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V4 = {[lambda]}, V2 = {[lambda], [V1], [V4, a3, V0, a1, V1]}, V1 = {[lambda], [V2]}, V0 = {[lambda]}])))
`:=`(cfg, CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V4 = {[lambda]}, V2 = {[lambda], [V1], [V4, a3, V0, a1, V1]}, V1 = {[lambda], [V2]}, V0 = {[lambda]}])))
(10.2.11)
 

> removeLambdaCFG(cfg);
 

CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V2 = {[V1], [a3, a1], [V4, a3, a1], [V4, a3, V0, a1, V1], [a3, V0, a1], [a3, V0, a1, V1], [V4, a3, a1, V1], [a3, a1, V1], [V4, a3, V0, a1]}, V1 = {[V...
CFG({V1, V0, V2, V3, V4}, {a1, a2, a3}, V0, TABLE([V2 = {[V1], [a3, a1], [V4, a3, a1], [V4, a3, V0, a1, V1], [a3, V0, a1], [a3, V0, a1, V1], [V4, a3, a1, V1], [a3, a1, V1], [V4, a3, V0, a1]}, V1 = {[V...
(10.2.12)
 

>