Как доказать коммутативность рационального числа в Agda?

Я пытаюсь доказать коммутативность agda. Я попытался изучить стандартную библиотеку, но есть много сложных вещей, которые я не мог понять. Я так пробовал -

comm : (a b : Q) -> (a + b) === (b + a)

проблема здесь в +, который не определен над Q в библиотеке. Разве мы не можем доказать это, не указав + над Q. Пожалуйста, помогите мне.


person ajayv    schedule 26.11.2015    source источник
comment
Возможный дубликат Как сложить два рациональных элемента в agda?   -  person Mirzhan Irkegulov    schedule 31.03.2016


Ответы (2)


Вы не можете доказать это, не определив сначала +.

Если вы запутались при изучении стандартной библиотеки, я предлагаю вам сначала попытаться доказать что-то более простое, чтобы лучше познакомиться с Agda, прежде чем заниматься этим.

person Dominic Mulligan    schedule 26.11.2015

Конечно, вы не можете доказать коммутативность неопределенной функции _+_; в качестве глупого контрпримера, ожидаете ли вы, что сумеете доказать (a - b) == (b - a)? Если нет, то почему? _-_ на данном этапе является такой же неопределенной функцией, как и _+_; просто у него другое название ...

Обратите внимание, что вы можете определить сложение для , используя математику начальной школы:

n ÷ p + m ÷ q = (n * q + m * p) ÷ (p * q)

и упростив его, разделив как n * q + m * p, так и p * q их НОД. Я уже объяснил детали этого последнего шага в этом ответе.

person Cactus    schedule 27.11.2015