2014-02-11 1 views
0

Когда я смотрю только (это не указано в названии) по результатам Sledgehammer, выход попробовать часто дает различные результаты кувалды во время работы кувалда непосредственно дает нулевые (!) результаты.Isabelle: Почему я получаю совершенно разные результаты при работе попробовать против кувалды

Теперь я знаю, что цель проектирования Кувалды не была детерминизмом, as stated by Lawrence Paulson. Однако, это, казалось бы, случайные результаты, не понимая, почему немного обескураживают для новичков, не только для меня, но и для студентов, помогающих в проектах.

Возможность всегда будет запускать Кувалду и попробовать параллельно.

Мне не нужен точный ответ, но кто-нибудь знает, почему результаты могут быть разными? Два вызова кувалды с различными параметрами?

ответ

2

Во-первых, я бы рекомендовал подписаться на список рассылки пользователя Isabelle, чтобы следить за информацией об этих вещах. В частности, в течение последних шести месяцев, были темы о Sledgehammer

  • как sledgehammer связано с try,
  • как Auto methods в Isabelle/Options связано с try,
  • как многопоточность влияет try и sledgehammer,
  • , как устанавливаются опции и указатели для панели Кувалда, которые можно использовать для запуска кувалды,
  • как количество ядер ЦП влияет на то, как параметры автоматически устанавливаются для sledgehammer,
  • и вообще как для каждого из них выбраны кувшины различными способами, некоторые автоматические.

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

Ниже я приведу несколько ссылок на список рассылки, где вчерашний день М. Ванзель дал краткое объяснение автоматическим настройкам Кувалды.

Еще один ответ на ваш второй вопрос: команда try представляет собой многопоточную комбинацию из try0 и sledgehammer. Есть параметры по умолчанию sledgehammer, которые можно просмотреть с помощью sledgehammer_param. Если вы не изменили эти параметры, тогда команда sledgehammer, используемая в вашей теории, будет использовать эти параметры. Является ли try этими опциями, я не знаю, но я покажу вам, как определить, дает ли trysledgehammer провер, который не указан в параметрах по умолчанию.

Я предполагаю, что try работает для вас, как будто это работает для меня.

Сначала вставьте sledgehammer_params и посмотрите на выходную панель. Он покажет вам provers. Мое значение по умолчанию: e spass vampire z3, потому что у меня 4 ядра. Они были выбраны при запуске PIDE. Это те же самые указатели, которые будут показаны на панели Sledgehammer. Вторым важным вариантом будет timeout = 30.

Когда я вставляю try для теоремы, try0 методы не могут доказать, и который sledgehammer может, наряду с каждым by доказательством того, что перечислено в панели вывода, он сообщит мне ATP (автоматическая теорема Доказывающий), которая найдена доказательство. Например, моя показывает мне "e", "z3" и "spass", за каждым последует доказательство.

Ответ: Если try показывает АТФ, что нет в списке, когда вы используете sledgehammer_params, то try дает sledgehammer другой provers вариант, чем при запуске sledgehammer с параметрами по умолчанию.

Запуск прувер, которые пытаются перечисленным: Для того, чтобы ответить на ваш вопрос о том, можно ли получить sledgehammer дать вам то же sledgehammer доказательства того, что try дает вам, запускать отдельные прувер, что перечисленные try, например, как это:

sledgehammer[provers = "z3", timeout = 60] 

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

Если явное использование sledgehammer дает вам z3 доказательства, когда try дал вам z3 доказательства, то это говорит о том, что это варианты и многопоточность, которые влияют на различные результаты. Я определенно знаю, что выход sledgehammer и nitpick сильно различается.

Я не использую try. Я использую try0 и sledgehammer, но то, что вы говорите, показывает, что автоматически заданные параметры для автоматических методов лучше. Авто nitpick находит контрпримеры, которые nitpick не находит, потому что я изменил параметры для nitpick.

Ссылки