Sage Math: как проверить эквивалентность двух выражений?

Как я могу определить в шалфее, эквивалентны ли два выражения? Например:

sage: var('x')
x
sage: e1 = 1 + x
sage: e2 = x + 1
sage: e3 = x + 2
sage: is_equivalent(e1, e2)
True
sage: is_equivalent(e1, e3)
False
sage: var('y')
y
sage: e4 = x * (1 + y)
sage: e5 = x + (x * y)
sage: is_equivalent(e4, e5)
True
sage: is_equivalent(e4, e1)
False
sage: assume(x, 'real')
sage: e6 = sqrt(x**2) + 1
sage: is_equivalent(e6, e1)
True

Что уже было предложено/опробовано: (sage 6.4.1 в Ubuntu Linux)

sage: e1 == e2
x + 1 == x + 1
sage: e1 is e2
False
sage: e1.match(e2) is not None
True
sage: e4.match(e5) is not None
False

person Oleg    schedule 16.01.2015    source источник


Ответы (1)


Обычный способ сделать это — составить из них уравнение и проверить, является ли оно True или False.

sage: e4 == e5
x*(y + 1) == x*y + x
sage: bool(_)
True

Однако имейте в виду, что Sage вернет False, если не сможет доказать, что это True, а это не то же самое, что быть ложным. Проверка эквивалентности двух произвольных выражений может занять сколь угодно много времени и может потребовать безумной последовательности расширений/упрощений, которые компьютер не может предсказать.

Это ответ на другой вопрос:

sage: e1 is e2
False

Это Python, и это очень сильное условие, что две вещи являются одним и тем же «объектом», что в данном случае не так.

sage: a = 1
sage: b = 1
sage: a is b
False
sage: a = 1
sage: b = a
sage: a is b
True
person kcrisman    schedule 16.01.2015
comment
Нет лучшего способа, например, который указывает, что vars являются рациональными числами? Например, почему это не работает (кажется достаточно простым): bool((x^2)^(1/2) == x) - person Oleg; 16.01.2015
comment
Я знаком с python, но пробовал в крайнем случае. Я искал документы, но получил слишком много результатов. Вы случайно не знаете, где в документах мудреца я должен был искать это? - person Oleg; 16.01.2015
comment
Ну, я должен сказать, что он есть, но не организован как можно лучше. Документация по символьным выражениям, вероятно, лучше всего изложена. - person kcrisman; 16.01.2015