Довідковий асистент з написання математики


12

Я хотів би написати математичні докази, використовуючи якийсь асистент. Все буде написано, використовуючи логіку першого порядку (з рівністю) та природну дедукцію. Фоном є теорія множин (ZF). Наприклад, як я можу написати наступний доказ?

Аксіома:xy(x=yz(zxzy))

Теорема:xy(z(zx)z(zy)x=y)

Тобто порожній набір унікальний.

Мені банально досягти цього, використовуючи папір та ручку, але те, що мені справді потрібно, - це програмне забезпечення, яке допоможе мені перевірити доказ на правильність.

Дякую.


11
Спочатку потрібно вибрати корекційного помічника. Coq - це те, чим я користуюся, але є багато інших . Деякі з них ґрунтуються на логіці першого порядку, тому будуть більше відповідати вашим потребам. Тоді потрібно взяти на себе зобов’язання вивчити асистента. Протягом декількох днів ви повинні мати можливість кодувати прості теореми, такі як вище, і доводити їх. Не сподівайтесь, що ми зробимо це за вас. Ти нічого такого не навчиш.
Дейв Кларк

5
Якщо вас цікавить теорія множин, а не теорія типів, то, мабуть, Ізабел - це найпростіша система. Кок здасться дивним і заплутаним.
Марк Рейтблат

2
Я думаю, що аксіома, яку ви написали, - це не логіка першого порядку, а логіка другого порядку. Це пояснюється тим, що в першому змінні мають місце лише над індивідами, тоді як в другому змінні можуть бути в межах як індивідів, так і множин. Мабуть, у даній аксіомі і є множинами, тоді як - індивідуальність. y zxyz
MS Dousti

9
@Sadeq: У ZF взагалі не встановлені основні елементи Всесвіту? Таким чином, ви повинні мати можливість сказати такі речі, як "для всіх наборів" в логіці першого порядку, що і робиться в цій аксіомі.
Робін Котарі

9
ZFZF

Відповіді:


13

І Кок, і Ізабел можуть це зробити.

[Coq] Ось стаття, що обговорює, як кодувати ZFC в CIC, на якій базується Coq.

Бенджамін Вернер: Набори в типах, типи в наборах (1997). http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1709

[Ізабель] Є бібліотека для ZF.

http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/ZF/index.html


3
Хоча цей документ є досить приємним, я думаю, що було б більш прагматичним просто додавати види (змінні типу) та аксіоми, щоб безпосередньо кодувати аксіоматичну теорію ZF, а потім робити докази, прямим зверненням до цих аксіом. Кодування більше свідчить про те, що теорії пов'язані між собою виразною силою.
Коді

2
Хочу додати, що існує реалізація цих ідей, але Бруно Баррас: lix.polytechnique.fr/~barras/proofs/sets/index.html
cody

9

Перенесено з коментаря на пропозицію Каве

Спочатку потрібно вибрати корекційного помічника. Coq - це те, чим я користуюся, але є багато інших . Coq заснований на логіці вищого порядку (так званий обчислення індуктивних конструкцій). Інші помічники доказування базуються на логіці першого порядку, тому вони можуть бути більш підходящими для ваших потреб (модуль коментарів вище).

Тоді потрібно взяти на себе зобов’язання вивчити асистента. Пов'язаний документ є навчальним посібником для отримання землі з Coq. Щоб стати експертом Coq, потрібні роки відданості та практики, але прості теореми можна довести в другій половині дня. Ключовим моментом у навчанні Coq або будь-якого іншого помічника є тестування доказів, таких як ті, що містяться у зв'язаному документі. Просто читання документа допоможе дуже мало, тому що весь досвід взаємодії з кореспондентом не може бути добре переданий на папері.

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

Коли вам вдасться довести ці теореми, не соромтесь розмістити свої відповіді тут і, можливо, залиште кілька коментарів щодо свого досвіду.

Ви готові до виклику?


4
Кок - розумний вибір; однак, якщо xddz5 дуже хоче працювати в теорії множин ZF, а не в теорії типів, то, можливо, Mizar є більш підходящим.
Тімоті Чоу


5

Дейв Кларк пропонує Кок, але насправді Ізабел здається набагато кращою ідеєю, оскільки в ній є бібліотека для ZF . Ізабель також дуже зріла і включає в себе найрізноманітніші тактики та розширення.

Я особисто не використовував Mizar, але це може бути добре.


2

як я міг написати наступний доказ?

В Isabelle / ZF ви можете написати щось подібне

theory csthquestion imports Main

begin

theorem empty_unique:
shows "\<forall> x.\<forall>y.(\<forall>z. (z\<notin>x)) \<and> (\<forall>z.(z\<notin>y)) \<longrightarrow> x=y"
    by auto

end

Як бачимо, Ізабель доводить це автоматично. Звичайно, ви можете написати докладніший доказ, якщо дуже хочете.


2

Ця сама теорема є відпрацьованим прикладом (див. Приклад 11) у підручнику, що входить до мого програмного забезпечення DC Proof 2.0. Завантажте його безкоштовно на моєму веб-сайті http://www.dcproof.com


1
Це невеликий розпродаж для цього сайту. Чи можете ви представити певну інформацію рівномірно, щоб сказати, яким чином ваше програмне забезпечення добре підходить до проблеми? Можливо, здійснюється посилання на відео чи скріншот цього виведення?
Чарльз Стюарт

1
Ось доказ: dcproof.com/EmptySetUnique.htm На моєму веб-сайті є відео, яке показує, як працює система.
Дан Крістенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.