presented at event 31st International Colloquium on Automata, Languages and Programming (ICALP 2004) Conference