Context Sensitive Languages 

> P:=table():P[[S]]:={[a,A,b]}: P[[a,A]]:={[a,A,b],[S,b]}:
csg:=CSG({S,A},{a,b},S,op(P));
 

`:=`(csg, CSG({S, A}, {a, b}, S, TABLE([[a, A] = {[a, A, b], [S, b]}, [S] = {[a, A, b]}]))) (14.1)
 

> gram:=[{A,B1,B2,C1,C3},{c2,d1,d2,d3,d4},A,{}]:
deri:=[[A]=[B1,B2],[[[B1]=[C1,c2],[[[C1,c2]=[d1,d2,d3],[]]]],[[B2]=[C3],[[[C3]=[d4],[]]]]]];
 

`:=`(deri, [[A] = [B1, B2], [[[B1] = [C1, c2], [[[C1, c2] = [d1, d2, d3], []]]], [[B2] = [C3], [[[C3] = [d4], []]]]]])
`:=`(deri, [[A] = [B1, B2], [[[B1] = [C1, c2], [[[C1, c2] = [d1, d2, d3], []]]], [[B2] = [C3], [[[C3] = [d4], []]]]]])
(14.2)
 

> derivationTree(gram,deri);
 

Plot_2d