Привет. Встречал ли кто-то подобные правила для перевода утверждений в булевую логику? Чтобы самому не писать. Тут функции - предикаты (все возвращают True)
собака лает --> лает(собака)
каждая собака лает --> all([ лает(c) for c in Sobakas ])
сабака или лает или воет --> or(лает(собака), воет(собака))
больше половины собак лает --> len([ лает(с) for c in Собаки ]) > len(Собаки)/2
только одна собака мяукает --> len([ мяукает(с) for c in Собаки ]) == 1
Не в такой псевдопитон конечно, в какую-нибудь логику первого порядка. Не важно в общем то в каком виде результат.