Remove Useless Production Rules
| > | P:=table():
P[S]:={[a,S],[A],[C]}: P[A]:={[a]}: P[B]:={[a,a]}: P[C]:={[a,C,b]}: cfg:=mkCFG({S,A,B,C},{a,b},S,op(P)); |
| (10.4.1) |
| > | removeUselessCFG(cfg); |
| (10.4.2) |
| > | cfg := mkCFG({V0, V1, V2, V3},{a1, a2},V0,table([V1 = {[V1, V3, a2, a1], [V2, a1]}, V2 = {[V3, V0]}, V0 = {[V2]}])); |
| (10.4.3) |
| > | removeUselessCFG(cfg); |
| (10.4.4) |
| > | cfg := mkCFG({V2, V1, V3, V0},{a2, a1},V0,table([V2 = {[V2, V3], [lambda], [V0], [a1, V3, V1]}, V1 = {[a1, V0]}, V3 = {[lambda]},V0 = {[V2, V3], [a1], [V0], [a1, V3, V2]}])); |
| (10.4.5) |
| > | removeUselessCFG(cfg); |
| (10.4.6) |
| > | cfg:=mkCFG({V0, V1, V2, V3, V4},{a1, a2, a3},V0,table([V4 = {[a3]}, V0 = {[V3, V0, V4, a2, V1]}, V1 = {[V1, a1, V4, a2, V2]}, V3 = {[a3, V3, a2, V4, V0]}])); |
| (10.4.7) |
| > | removeUselessCFG(cfg); |
| (10.4.8) |
| > | cfg:=mkCFG({V0, V1, V4, V2, V3},{a1, a2, a3},V0,table([V1 = {[lambda]}, V3 = {[V1, V0, V4], [a1, V4]}, V0 = {[V1, V2, a1, V0], [lambda], [V4, V1]},V4={[a1,a2]}])); |
| (10.4.9) |
| > | removeUselessCFG(cfg); |
| (10.4.10) |
| > | cfg:=mkCFG({V0, V1, V4, V2, V3},{a1, a2, a3},V0,table([V2 = {[lambda], [a2, V3]}, V3 = {[a2, V1, V0, V3]}, V4 = {[a3, a1], [lambda]}, V0 = {[lambda], [V4, V0, V3, a1]}])); |
| (10.4.11) |
| > | removeUselessCFG(cfg); |
| (10.4.12) |
| > | cfg:=mkCFG({V0, V1, V2, V3, V4},{a1, a2, a3},V0,table([V0 = {[lambda], [V2]}, V2 = {[a2, a1], [V0, V4, a1, V1, a3], [V2, V1, V3, a1, V0]}, V4 = {[lambda]}, V3 = {[lambda]}])); |
| (10.4.13) |
| > | removeUselessCFG(cfg); |
| (10.4.14) |
| > |
| > | cfg:=randomCFG(5,3); |
| (10.4.15) |
| > | removeUselessCFG(cfg); |
| (10.4.16) |
| > |
| > |