История изменений
Исправление monk, (текущая версия) :
Как Вы их выявляете именно грамматически?
Как операции над строками. Назовём выражением любую строку, которая может быть получена как часть корректного выражения слева или справа от «=».
Корректной строкой является «0». Корректной строкой является «1».
Эквивалентными преобразованиями для a=b являются c+a=c+b, c*(a)=c*(b), где c — корректная строка
Тривиальным преобразованием строки назовём такие: a->a, (a) -> a, a -> (a), a+b -> b+a, a*b->b*a, (a+b)*c->a*c+b*c, a*c+b*c->(a+b)*c, 0*a -> 0, 0 -> 0*a, 1*a -> a, a -> 1*a, где a, b, c являются корректными строками. Любое тривиальное преобразование эквивалентно любому другому тривиальному преобразованию.
P.S. Возможно список грамматических правил не исчерпывающ
Исходная версия monk, :
Как Вы их выявляете именно грамматически?
Как операции над строками. Назовём выражением любую строку, которая может быть получена как часть корректного выражения слева или справа от «=».
Корректной строкой является «0».
Эквивалентными преобразованиями для a=b являются c+a=c+b, c*(a)=c*(b), где c — корректная строка
Тривиальным преобразованием строки назовём такие: a->a, (a) -> a, a -> (a), a+b -> b+a, a*b->b*a, (a+b)*c->a*c+b*c, a*c+b*c->(a+b)*c, где a, b, c являются корректными строками. Любое тривиальное преобразование эквивалентно любому другому тривиальному преобразованию.
P.S. Возможно список грамматических правил не исчерпывающ