## 7 An Application of the Model to \"Kolam\" Pattern Generation  
A \"kolam\" pattern [43] is a visually pleasing floor design, more common in South India, drawn with curly lines around points arranged in a particular pattern, resulting in the intended \"kolam\" drawing. In [43] \"kolam\" patterns were considered as picture arrays in the two-dimensional plane with the labels of the cells of the picture array representing primitive \"kolam\" patterns [56]. In fact array grammars developed in [43] were used to generate the picture arrays and the labels were replaced by the corresponding primitive patterns, thus yielding the kolam pattern composed of these primitive patterns. Here we illustrate by constructing a \(APRPS\) generating picture arrays representing a particular set of \"kolam patterns\", one member of which is shown in Figure 8. The labels of the arrays stand for the primitive kolam patterns defining the \"kolam\". An array representing this kind of a kolam is shown in Figure 9.  
Let \(L_{k}\) be the picture language consisting of \((m+2)\times(2n+3)\), \(m\geq 1,n\geq 1\) picture arrays \(p\) such that \(p(i,1)=p(i,n+2)=p(i,2n+3)=b\), for \(i\in\{1,m+2\}\), \(p(1,j)=d_{1}\) for \(2\leq j\leq n+1;n+3\leq j\leq 2n+2\), \(p(n+2,j)=d_{2}\) for \(2\leq j\leq n+1;n+3\leq j\leq 2n+2\), \(p(i,1)=d_{3}\), for \(2\leq i\leq n+1\), \(p(i,2n+3)=d_{4}\), for \(2\leq j\leq n+1\), \(p(i,n+2)=e\), for \(2\leq i\leq n+1\) and all other \(p(i,j)=d\). Here \(d_{1},d_{2},d_{3},d_{4},d,e\) stand for the \"kolam\" primitive patterns as in Figure 10 and \(b\) stands for blank.  
The picture language \(L_{k}\) is generated by the \(APRPS\) with alphabet. \(\{d_{1},d_{2},d_{3},d_{4},d,e,b\}\), membrane structure \([_{1}\,[_{2}\,[_{3}\,]_{3}\,]_{2}\,]_{1}\), axiom array \(d_{3}\)\(d\)\(e\)\(d\)\(d_{4}\) in region 1 and no axiom array \(b\)\(d_{2}\)\(b\)\(d_{2}\)\(b\)\(b\) in regions 2 and 3, with 3 as the output region. The sets \(R_{1},R_{2},R_{3}\) are the sets of tables of insertion  
Figure 8: A “Kolam” pattern.  
Figure 10: A set of primitive “Kolam” patterns.  
Figure 9: Array representing the “kolam” in Figure 8.  
rules in regions 1,2 and 3 respectively, where \(R_{1}\) contains a column insertion table \((c_{1},in)\) and a row insertion table \((r_{1},here)\), \(R_{2}\) contains two column insertion tables \((c_{2},out)\) and \((c_{3},in)\). Here  
\[c_{1}=\{(d_{1},d_{1},b),(d,d,e),(d_{2},d_{2},b)\},c_{2}=\{(b,d_{1},d_{1}),(e,d,d),(b,d_{2},d_{2})\]  
\[c_{3}=\{(d_{1},d_{1},b),(d,d,d_{4}),(d_{2},d_{2},b)\},\]  
\[r_{1}=\{(b,d_{3},d_{3}),(d_{1},d,d),(b,e,e),(b,d_{4},d_{4})\}.\]  
In a computation, the rules of table \(c_{1}\) insert a column of the form \({}^{t}d_{1}d\cdots dd_{2}\) to the left of the middle column of \(e^{\prime}s\) while the rules of table \(c_{2}\) insert a similar column to the right of the middle column of \(e^{\prime}s\). The generated array is sent to region 2 from region 1 on applying \(c_{1}\) while it is sent from region 2 to region 1 on applying \(c_{2}\). The process can repeat adding equal number of columns to the left and right of the middle column. The application of the rules of the table \(r_{1}\) inserts below the first row, a row of symbols \(d_{3}d\cdots ded\cdots dd_{4}\) as many times as needed and the generated array remains in region 1. When the rules of the table \(c_{3}\) are applied in region 2, it has the same effect as applying \(c_{2}\) but the insertion is to the left of the last column and the array is sent to the output region 3, with the computation halting. The generated arrays are the picture arrays of \(L_{k}\) and no other array is generated. On replacing the labels of the squares in a generated picture array by the corresponding primitive kolam patterns shown in Figure 10, we obtain the \"kolam\" itself. One such generated \"kolam\" is shown in Figure 8. It is interesting to note that the \"kolam\" pattern in Figure 8 has a mathematically pleasing feature of symmetrical subpatterns on the left and right of the middle line made of the primitive pattern e shown in Figure 10.