Общее правило (не всегда соблюдаемое) заключается в том, что строковую форму выражения следует копировать и вставлять для воссоздания объекта. Этот случай является исключением, и может быть открыт вопрос на https://github.com/sympy/sympy/issues.
Вы можете сказать, что они не совпадают, если вы проверите формы srepr`:
>>> srepr(sigma_1)==srepr(sigma_10)
False
Кроме того, free_symbols
не показывает, что вы хотите, но разница между атомами до и после замены покажет, что было изменено:
>>> sigma_any.free_symbols
{eps}
>>> sigma_any.atoms()
{0, 1, eps, sigma_eps}
>>> sigma_1.atoms()
{0, 1, eps}
Обратите внимание, что sigma_eps
отсутствует в последнем выводе.