Відмінні змінні для різних пропозицій


10

У доведенні теореми роздільної здатності зазвичай вважають, що змінні в різних застереженнях є різними. Це не те, що відбувається автоматично; для реалізації цього потрібен значний додатковий код та обчислення. Враховуючи це, я шукаю тестовий випадок для цього.

Проблема полягає в тому, що у всіх тестових випадках, які я намагався до цього часу, це не має ніякого значення. Імовірно, це має значення лише у незвичайних крайових випадках. Як стверджує Вікіпедія , "змінні в різних застереженнях відрізняються ... Тепер, об'єднуючи Q (X) у першому пункті з Q (Y) у другому, означає, що X і Y все одно стають однаковою змінною".

Чи є відомі тестові випадки, які насправді дадуть неправильну відповідь, якщо різні пропозиції використовують однакові змінні?

Відповіді:


6

Редагувати: я знайшов кращий приклад. Розглянемо ці пункти: Очевидно, цей набір пропозицій суперечливий. Але без перейменування змінних єдиним можливим роздільним рішенням єP(f(x)),і більше роздільної здатності неможливо - все призводить до заміниf(x)наx, що неможливо.

¬П(х)П(f(х))П(х)¬П(f(f(х)))
П(f(х))f(х)х

Правка: Розгляньте значення пунктів. Кожне застереження неявно універсально кількісно визначене. Тож значення його змінних не фіксується нічим. Тепер скажімо, що у вас є два пропозиції, що містять . Якщо ви виконуєте роздільну здатність без перейменування x в одному з них, тоді ви додаєте значення x, якого у нього немає: ви говорите, що x означає те саме, що в обох застереженнях, що не відповідає дійсності. Якщо у ваших застереженнях немає чітких змінних, роздільна здатність дасть вам занадто слабкі висновки.хххх


(Оригінальна відповідь.) Наприклад, давайте 4 пункти:

  1. АБ(х)
  2. ¬АС(х)
  3. ¬Б(c)
  4. ¬С(г)

де - змінні та c , d константи. Якщо ми виконаємо роздільну здатність на перших двох без перейменування x , отримаємо B ( x ) C ( x ) . Ми можемо продовжити з ¬ B ( c ), щоб отримати C ( c ), але тепер ми не можемо вирішити це з ¬ C ( d ) .х,уc,гхБ(х)С(х)¬Б(c)С(c)¬С(г)

хуБ(х)С(у)¬Б(c)¬Б(г)


Б(х)¬Б(c)А¬А

@rwallace Немає чітких змінних не означає, що ви не можете отримати порожній пункт, лише те, що методи не завершені. Якщо ви завжди перейменовуєте змінні, то не має значення, в якому порядку ви вибираєте пропозиції, ви завжди отримаєте порожнє застереження, якщо оригінальний набір незадовільний - метод завершений. Але якщо ви не перейменовуєте змінні, то (як показує приклад) порядок раптом має значення - деякі послідовності виводів не знайдуть порожній пункт. І, доказ не може "заздалегідь" сказати, яка послідовність виводів є правильною.
Петро Пудлак

Але чи не так, що повний метод повинен врешті-решт спробувати всі можливі виведення (якщо тільки спочатку він не знайде порожній пункт)? Щоб бути впевненим, що немає гарантії, він спробує похідні, про які я згадував, раніше, ніж ті, про які ви згадали, але коли ті, про яких ви згадали, не виходять через відсутність чітких змінних, ті, про які я згадував, все ще відкриті, і повний метод повинен повернутися назад і спробувати ті рано чи пізно?
rwallace

Ваше доповнення щодо значення пунктів у рефераті має сенс, але мені здається, якщо це так, то потрібно було б знайти тестовий випадок, що я можу подати у довідку і змусити його дати неправильну відповідь, якщо функція відмінних змінних відключена. Я просто не зміг знайти такий тестовий випадок досі.
rwallace

@rwallace Чому ти хочеш це робити? Резолюція - це повний метод, і ви знаєте, що за будь-яких обставин потрібно вирішувати кожну пару пунктів лише один раз. Ви пропонуєте зрештою спробувати всі можливі послідовності, як продовжити зворотний трек. Це призведе до дійсно величезного збільшення складності алгоритму, навіть не віддаленого порівняння з просто перейменуванням змінних на кожному кроці.
Петро Пудлак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.