(Формулы HOL для этого другого ответа на лимиты неверны. У меня нет доступа к этой учетной записи пользователя. Я отправил отредактированный ответ, но я не знаю, будет ли он отображаться. y x
вместо x y
. Я не исправить, потому что я не знаю, как это сделать. Я просто сделал несколько дополнительных замечаний в верхней части.)
(не принимайте это как ответ. Вы должны подождите, чтобы увидеть, появится ли один из экспертов. Европейцы еще не встали.)
Когда я подключаю вашу лемм, Нитчик говорит мне об этом d a встречный пример:
Auto Nitpick found a counterexample for
card "'a∷{inverse,minus,plus,ord}" = 2:
Это потому, что у меня включен режим «Авто Nitpick». Перейдите на страницу параметров, затем настройки «Изабель/Общие». Обычно я включил «Auto Nitpick», «Auto Quickcheck» и «Auto Solve Direct».
Я только что заметил, что у меня нет «Авто-методов». По какой-то причине, по-видимому, он слишком сильно всасывал слишком много CPU, но, как правило, это тоже полезно.
Если ваш процессор работает с полным отверстием, и вы не думаете, что это должно быть, тогда вы отключите «Авто методы», чтобы узнать, есть ли проблема. Я не использую «Auto Sledgehammer». Это довольно требовательно к процессору, и я запускаю его напрямую.
Auto Nitpick спасает меня от многих неприятностей. Он просто появляется, когда я этого не ожидаю. По какой-то причине я никогда не задумывался о том, чтобы запустить его прямо. Вы делаете это с nitpick
. Подробнее см. В PDF-файле.
Что касается того, почему ваша лемма терпит неудачу, я не знаю. Может быть, кто-то еще узнает.
То, что я сейчас ищу, - это сортировка для ваших переменных. В конце концов, вам нужно получить представление о типах и типах классов. Существуют различные способы получения дополнительной информации. Я использую declare
, где иногда я получаю слишком много информации:
declare[[show_sorts=true, show_consts=true]]
В панели вывода, я вижу, что он показал в контрпример. Рода вашего типа заключается в следующем:
'a :: {inverse,minus,plus,ord}
Ваши переменные, например w
, являются w :: 'a :: {inverse,minus,plus,ord}
. Эти 4 вида описывают алгебраические свойства, которые имеют ваши переменные. Вам нужно понять, какие ограничения влечет за собой использование ваших функций. Вам могут понадобиться дополнительные сорта, чтобы получить то, что вы хотите.
Спасибо Мануэль, ваш ответ очень информативен. Более конкретно, если у меня есть функция «f (w + n) - (fw/n) ≤ g (w + n)», как я могу преобразовать ее в форму «λn. F (w + n) - (fw/n) ≤ g (w + n) ", чтобы применить к нему некоторые леммы? (например, finally_def). Я изо всех сил пытаюсь это сделать. – creator22
Я не уверен, что вы подразумеваете под «трансформацией». Если вы имеете в виду «применять к нему леммы», то объединение высшего порядка должно делать это автоматически, когда вы пытаетесь применить лемму. Но я не уверен, что это то, что вы имеете в виду. Мне нужно было бы увидеть конкретный пример того, что вы пытаетесь сделать. –