Body (pseudocode)
FUNCTION enumerate_gramas():
gramas := {
'sadjagrama': {murchanas_start_order: [sa, ni, dha, pa, ma, ga, ri]},
'madhyamagrama': {murchanas_start_order: [ma, ga, ri, sa, ni, dha, pa]}
}
ASSERT pancama IN both_gramas # seated in two gramas
# melodic movement must respect grama (gramavirodhena)
RETURN gramas