Программирование с помощью троичной логики

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Троичный ПРОЛОГ

Post by Mac Buster »

Ronin wrote: а может мне в аспирантуру эту тему взять, а ;)
Дело стоящее, но сильно зависит от лояльности научного руководителя ;)
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Троичный ПРОЛОГ

Post by Mac Buster »

Кстати, посмотреть бы на реализацию Пролога...
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Проверил практическую возможность реализации "чистого" Пролога без встроенной арифметики (т.е. арифметика реализована средствами самого Пролога). С помошью gprolog написал программку, которая раскладывает целые числа произвольной длины в списки цифр и производит над ними простейшие операции - сложение и вычитание (ни одного вызова "is"). Точно также можно реализовать арифметику в нашем ТРИЛОГе-ПРОТЕРЛОГе - с описанием предиката is на самом языке (языковом псевдокоде).
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Mac Buster wrote: Кстати, посмотреть бы на реализацию Пролога...
Какую реализацию ты имеешь ввиду?
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Троичный ПРОЛОГ

Post by Mac Buster »

Shaos wrote: С помошью gprolog написал программку
Это гнутый Пролог ?
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Троичный ПРОЛОГ

Post by Mac Buster »

Shaos wrote: Какую реализацию ты имеешь ввиду?
Это я про исходник Пролога написал.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Mac Buster wrote:
Shaos wrote: С помошью gprolog написал программку
Это гнутый Пролог ?
Угу - вполне стандартная реализация:

http://gnu-prolog.inria.fr
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Mac Buster wrote:
Shaos wrote: Какую реализацию ты имеешь ввиду?
Это я про исходник Пролога написал.
Да их много - какие-то более полные, какие-то менее полные. Даже на джаве есть. Я вот хочу на RW1 написать реализацию ;)
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Троичный ПРОЛОГ

Post by Mac Buster »

Shaos wrote: Да их много - какие-то более полные, какие-то менее полные. Даже на джаве есть. Я вот хочу на RW1 написать реализацию ;)
Я тут подумал и пришёл к выводу, что мне даже не столько исходник нужен, сколько описание того, как реализовать Пролог (или какой-нибудь другой декларативный язык). Говорят, есть старая переводная книжка, где рассматриваются вопросы реализации. Пока не нашёл.
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Троичный ПРОЛОГ

Post by Mac Buster »

Что-то обсуждение затихло. Надо так понимать, что все усердно трудятся гоняя гнутый пролог ? :)
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Mac Buster wrote: Что-то обсуждение затихло. Надо так понимать, что все усердно трудятся гоняя гнутый пролог ? :)
А чего обсуждать то? Делать надо :hammer:

Но мне одному не справиться...
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Троичный ПРОЛОГ

Post by Mac Buster »

Shaos wrote: А чего обсуждать то? Делать надо :hammer:

Но мне одному не справиться...
Ты хоть план работ набросай, я посмотрю чем могу помочь. Хочу посмотреть на реализацию машины вывода ;)
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Shaos wrote:
В данном случае нам проще раздать значения таким образом:
P - истина (true в терминах Пролога)
O - неизвестно (unknown)
N - ложь (fail в терминах Пролога)

Мы можем ввести оператор \ обозначающий отрицание, который превращал бы истину в ложь, ложь в истину, а неизвестность оставлял бы неизвестностью

Запятая (,) обозначающая в обычном Прологе И в нашем случае не может быть заменена на троичный эквивалент MIN, вместо этого предлагается следующая таблица истинности для И в ПРОТЕРЛОГе:
\ N O P
N N O N
O O O O
P N O P
расшифровывается так - если хотя бы один из аргументов неизвестность, то результат неизвестен и если все аргументы истина, то результат - истина

Точка с запятой (;) обозначающая в обычном Прологе ИЛИ в нашем случае не может быть заменена на троичный эквивалент MAX, вместо этого предлагается следующая таблица истинности для ИЛИ в ПРОТЕРЛОГе:
\ N O P
N N N P
O N O P
P P P P
расшифровывается так - если хотя бы один из аргументов правда, то результат считать правдой, если аргументы принимают значения ложь и неизвестность, то результат - ложь, и, наконец, если все аргументы неизвестность, то результат неизвестен (неопределен)
На странице http://xyzzy.freeshell.org/trinary/ таблицы истинности троичной логики для И и ИЛИ совершенно иные:

Code: Select all

 A  B  and  or
 F  F   F   F 
 F  ?   F   ? 
 F  T   F   T 
 ?  F   F   ? 
 ?  ?   ?   ? 
 ?  T   ?   ? 
 T  F   F   T 
 T  ?   ?   ? 
 T  T   T   T 
И судя по всему они правильные - посыпаю голову пеплом :oops:
Last edited by Shaos on 20 Sep 2012 20:38, edited 1 time in total.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Shaos wrote:
На странице http://xyzzy.freeshell.org/trinary/ таблицы истинности троичной логики для И и ИЛИ совершенно иные:

Code: Select all

 A  B  and  or
 F  F   F   F 
 F  ?   F   ? 
 F  T   F   T 
 ?  F   F   ? 
 ?  ?   ?   ? 
 ?  T   ?   ? 
 T  F   F   T 
 T  ?   ?   ? 
 T  T   T   T 
И судя по всему они правильные - посыпаю голову пеплом :oops:
AND вроде правильно нарисовано, а вот с OR у меня чего-то не срастается - вроде как должно быть так:

Code: Select all

 A  B  and  or
 F  F   F   F 
 F  ?   F   ? 
 F  T   F   T 
 ?  F   F   ? 
 ?  ?   ?   ? 
 ?  T   ?   [b]T[/b] 
 T  F   F   T 
 T  ?   ?   [b]T[/b]
 T  T   T   T 
И тогда AND превращается в MIN, а OR - в MAX...
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Троичный ПРОЛОГ

Post by Shaos »

Хотя всё не так... Здесь надо забыть про T и F и думать про положительный или отрицательный факт...