2016-01-23 1 views
0

Мне просто интересно, какая разница между разделами «факты» и «предикаты» в прологе?Разница между (факты и предикаты) && (Single and Determ)

и в чем разница между ключевым словом "single" и "define"?

+1

, что пролог вы используете? 'single',' define' не являются ключевыми словами, которые я знаю – CapelliC

+0

Visual Prolog 5.2 –

ответ

1

Просто указать на очевидное: «Раздел« Факты »- это факты, факты - предикаты, которые всегда верны, используются для описания некоторых свойств.

Single и determ являются «Режим факт», используемый при необходимости в декларации фактов, Single означает тот факт, всегда имеет одну и лишь одно значение, determ означает тот факт, может иметь ноль или одно значение.

+1

спасибо, я понял вторую часть, , но про первую часть, я просто понимаю, что я не могу использовать «Single» и «детерминировать» ключевые слова в разделе " предикаты, и я могу использовать только «неопределенное» ключевое слово в разделе «предикаты». , но в разделе «факты» я могу использовать «детермический», «одиночный», «незанятый» , поэтому, когда я буду использовать раздел предикатов, если он можно заменить секцией «факты»? –

+0

вы не можете заменить предикаты фактами, потому что, как я писал, это разные вещи, факт является предикатом, но предикат не всегда является фактом! Факт всегда прав, как 'sun (желтый) ', но предикат может быть истинным или ложным, это зависит от того, какие термины содержат, как правило, это то, что вы оцениваете, например' sun (Color) '(' Color' теперь является переменной). – rok

1

Факт в прологе является замена predicat как таблицы в БД таблице (Column1, COLUMN2, ...) действительно Facts принимает форму, как Fact(Arg1,Arg2), который дает нам {истина, ложь} значения только для определенных констант («()»

так что Факт является сложным термином или предикатом аргументов, действительно, Args не являются переменными, являются отдельными константами.

Пример

father(fathername,childname). 

Правило также замены предиката принимает вид

rule_type1(+In_Args,?Out_Args) :- body . 
rule_type2(+In_Args) :- body . % (true,false) 
rule_type3 :- body . 

его заказ генерировать данные из фактов или из logique правил, полученных в тело через Querys

пример

max(X,Y,Z) :- X>=Y -> Z=X ; Z=Y . 

?- max(3,5,Z). /* give us */ Z=5 

в зрительно-прологе Facts может быть объявлен с несколькими дополнительными ключевыми словами:

Фактов объявляемых с determ ключевых слов.

Ключевое слово determ определяет, что база данных фактов может содержать только один экземпляр факта (предикат базы данных) fact_N (...), объявленного с помощью этого ключевого слова. Поэтому, если вы попытаетесь установить assert один и тот же факт в базу данных, механизм Visual Prolog создаст ошибку времени выполнения. (1041 Утверждение факту, объявленному как определение, но факт уже существует). example

Факты, указанные ключевым словом.

Ключевое слово single перед фактом fact_N декларация определяет, что один и только один экземпляр факта всегда должен существовать:

Поскольку единичные факты должны быть уже известно, когда программа вызывает цель; поэтому единичные факты должны быть инициализированы в разделе статей в исходном коде программы.

Например:

FACTS 
single singleFact(STRING, STRING) 
CLAUSES 
singleFact("",""). 

 Смежные вопросы

  • Нет связанных вопросов^_^