morfizm (morfizm) wrote,
morfizm
morfizm

Логика и язык

Интересную тему поднял muharred в комментах к посту о тесте по логике.

"Фразы "Я давно там был" и "Я давно там не был" - вроде бы по законам логики должны быть прямым отрицанием друг друга. Но чисто с точки зрения русского языка обе фразы несут одинаковый смысл."

Чтобы разобраться в ситуации, я предложил перейти к более строгим формулировкам:

Пусть f(t) - логическая функция, означающая, что в момент времени t "я там был", и g(t) - означающая, что t случилось "давно".

Тогда получается, что "я давно там был" = "самая поздняя точка, когда я там был, была давно" = g(min{ t | !f(t)})

При этом "я давно там не был" = "самая давняя точка, когда я там всё ещё не был, была давно" = g(max{ t | f(t)}).

Вопрос #1: эквивалентны ли эти формулы? Мне думается, что нет: например, если в последний раз, когда я там был, случился "давно", но непосредственно следующий момент времени уже классифицируется как "недавно", то "я давно там был" будет истиной, а "я давно там не был" - ложью.

Вопрос #2: изменится ли ответ на вопрос #1, если перейти к непрерывным определениям (на множестве действительных чисел?). Я думаю, что нет. Но сейчас поясню.

В случае действительных чисел, max и min могут не существовать, поэтому нужно переформулировать без них:

"Я давно там был" = для каждого раза, когда я там был, это было давно = ∀ t: f(t)->g(t)

"Я давно там не был" = существует момент, который произошёл "давно", после которого я там никогда не был = ∃ t1: g(t1) & (∀ t > t1: !f(t))

Мне сложно представить себе, как можно определить функцию "давно", чтобы эти выражения были эквивалентны. Простые определения (с открытым и закрытым непрерывным интервалом) допускают краевый случай, когда формулы будут отличаться.

Интересно, что psilogic на это скажет :)

Update: на самом деле, у меня закралась ошибка (я её специально не буду исправлять, для иллюстрации) - если логике следовать строго, то про момент времени t1 не сказано, был ли я там или нет (вполне может быть f(t1)=true). Таким образом, выражения "я давно там был" и "я давно там не был" получаются абсолютно эквивалентными. Если же заменить t > t1 на t >= t1, то, по сути, добавляется условие !f(t1), что создаёт возможность краевого случая неэквивалентности. Наверное, правильно будет строгое равенство, пусть уж лучше они будут эквивалентны эти выражения :)

Update: on the second thought, я немного запутался. Надо будет подумать над этим ещё раз, после работы.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 10 comments