Последнее время заинтересовался компьютерной проверкой доказательств. Я решил взять маленькую, но, как мне кажется, самодостаточную часть - алгебру множеств. Как известно, есть определенное количество операций над множествами, которые разным образом связаны друг с другом. Эти связи можно записать в виде различных соотношений. Например, можно взять такое
(просто оно мне нравится, поэтому я его и взял). Я хочу акцентировать, что я допускаю подобные "сложные" формулы, а не просто бинарные в духе
. Есть хорошая статья в википедии
List of set identities and relations, чтобы было представление, какие формулы я имею в виду.
Так вот. Мой план максимум - сделать компьютерную программу. Программа должна уметь следующее:
1. В ней должен быть механизм определения операции. Т.е. чтобы можно было определить операции объединения, пересечения, декартова произведения, разности и т.д. Хотелось бы, чтобы механизм был универсальный и чтобы можно было определять любые операции, какие вздумается. Ну я не знаю, допустим 10-арную операцию
(где
- симметрическая разность). Думаю, что у меня получилось написать достаточно абсурдную операцию, чтобы показать, что я хочу.
2. Она должна сама уметь доказывать формулы алгебры множеств. Грубо говоря, я ей кидаю на вход любую формулу из той статьи в википедии, и она говорит мне, правильная формула или нет. Ну или любую какую-нибудь мою странную формулу.
В принципе, этих двух пунктов мне достаточно. Конечно, маловероятно, что я действительно смогу написать такую программу. Но я для начала готов просто узнать общую информацию. Я хочу узнать, а вообще, теоретически, такую программу можно сделать? Есть ли алгоритм, который будет делать то, что мне надо? (а то вдруг тут есть какие-нибудь проблемы с алгоритмической разрешимостью, хотя интуитивно кажется, что не должно)
Навскидку выглядит не очень сложно. К тому же, кажется, что я бы смог руками доказать любую такую формулу. Никакого творчества здесь не прослеживается. Так почему компьютер не сможет?
В общем, интересно все, что связано с такой задачей.