% the number of terminals takes into account of s
cfg(4,2,[[cf_rule1(p1,a)],[cf_rule1(p2,b)], [cf_rule1(p3,b)],[cf_rule2(s,p1,p2)],[cf_rule2(p2,s,p3)]]). % a^n b^n
cfg(5,2,[[cf_rule2(s,s1,s2)],[cf_rule2(s2,s,s1)],[cf_rule2(s,s3,s4)],[cf_rule2(s4,s,s3)],[cf_rule1(s1,a)],[cf_rule1(s2,a)],[cf_rule1(s3,b)],[cf_rule1(s4,b)],[cf_rule1(s,a)]]). % palindromes

cfg(6,2,[[cf_rule2(s,s1,s2)],[cf_rule2(s2,s,s3)],[cf_rule2(s3,s1,s1)],[cf_rule2(s2,s4,s3)],[cf_rule2(s4,s5,s4)],[cf_rule1(s1,b)],[cf_rule1(s5,a)],[cf_rule1(s4,a)]]). % b^(n)a^(m)b^(2n)



/*
cfg(5,2,[[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p4,b)],[cf_rule2(s,p4,p3)],[cf_rule2(p3,p1,p1)],[cf_rule2(p3,p2,p4)]]).
cfg(4,2,[[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p4,p2)],[cf_rule2(p2,p1,p1)]]).
cfg(4,2,[[cf_rule1(s,b)],[cf_rule1(p3,a)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p1,p4)],[cf_rule2(p1,p3,p4)],[cf_rule2(p1,p4,p4)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p1,p3)],[cf_rule2(s,p2,p1)],[cf_rule2(p1,p3,p4)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p3,b)],[cf_rule1(p4,b)],[cf_rule2(s,p2,p2)],[cf_rule2(s,p3,p2)],[cf_rule2(p2,p1,p4)]]).
cfg(4,2,[[cf_rule1(s,b)],[cf_rule1(p2,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p2,p3)],[cf_rule2(p3,p2,p4)],[cf_rule2(p3,p4,s)]]).
cfg(5,2,[[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p4,a)],[cf_rule2(s,p1,p1)],[cf_rule2(p1,p2,p2)],[cf_rule2(p2,p3,p4)]]).
cfg(4,2,[[cf_rule1(p2,a)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p2,s)],[cf_rule2(p2,p3,p3)],[cf_rule2(p3,p4,p2)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p1,p1)],[cf_rule2(s,p4,p2)],[cf_rule2(p1,p3,p4)]]).
cfg(5,2,[[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p2,a)],[cf_rule1(p3,a)],[cf_rule2(s,p2,p1)],[cf_rule2(p2,p3,p4)],[cf_rule2(p4,p3,p2)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p1,p4)],[cf_rule2(p1,s,p3)],[cf_rule2(p4,p2,p2)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(p1,a)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,b)],[cf_rule1(p4,b)],[cf_rule2(s,p1,p2)],[cf_rule2(p2,p4,p3)],[cf_rule2(p4,p3,p4)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,s,s)],[cf_rule2(s,p3,p4)],[cf_rule2(p4,p2,p1)]]).
cfg(4,2,[[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p2,s)],[cf_rule2(s,p3,p4)]]).
cfg(5,2,[[cf_rule1(p1,b)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p2,p3)],[cf_rule2(s,p3,p1)],[cf_rule2(s,p3,p4)]]).
cfg(5,2,[[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p1,p2)],[cf_rule2(p2,s,s)],[cf_rule2(p2,p3,p4)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p3,p1)],[cf_rule2(p2,p4,p2)],[cf_rule2(p3,p2,s)]]).
cfg(3,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p3,s)],[cf_rule2(p3,p4,p3)]]).
cfg(5,2,[[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p4,p1)],[cf_rule2(p1,p3,s)],[cf_rule2(p4,p1,p2)]]).
cfg(3,2,[[cf_rule1(s,a)],[cf_rule1(p3,a)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,s,p4)],[cf_rule2(p4,s,p3)]]).
cfg(4,2,[[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule2(s,p1,p2)],[cf_rule2(s,p3,s)]]).
cfg(4,2,[[cf_rule1(s,a)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule2(s,p3,p2)],[cf_rule2(p2,s,p1)],[cf_rule2(p2,p1,p3)]]).
cfg(4,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,b)],[cf_rule1(p3,a)],[cf_rule1(p4,a)],[cf_rule2(s,p1,p4)],[cf_rule2(p4,p3,p3)]]).
cfg(5,2,[[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,b)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p2,p4)],[cf_rule2(s,p3,s)],[cf_rule2(p4,s,p1)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p4,a)],[cf_rule1(p4,b)],[cf_rule2(s,p2,p1)],[cf_rule2(p1,p4,p1)],[cf_rule2(p1,p4,p3)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p4,b)],[cf_rule2(s,p3,p1)],[cf_rule2(p2,p4,p2)],[cf_rule2(p3,p2,s)]]).
cfg(3,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p3,a)],[cf_rule2(s,p3,p1)]]).
cfg(4,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule2(s,s,p3)],[cf_rule2(p3,p1,p2)]]).
cfg(4,2,[[cf_rule1(s,b)],[cf_rule1(p1,a)],[cf_rule1(p1,b)],[cf_rule1(p2,a)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule2(s,p1,p2)],[cf_rule2(p2,p3,p3)],[cf_rule2(p3,p2,p1)]]).
cfg(5,2,[[cf_rule1(s,a)],[cf_rule1(s,b)],[cf_rule1(p1,b)],[cf_rule1(p2,b)],[cf_rule1(p3,a)],[cf_rule1(p3,b)],[cf_rule1(p4,a)],[cf_rule2(s,p1,p4)],[cf_rule2(s,p3,p2)],[cf_rule2(s,p4,p1)]]).
*/
