Составители:
Рубрика:
Для отношения на можно ограничиться только-если-определением:
∀x∀y[на(x,y)→ [x=a&y=b]∨[x=d&y=a]∨[x=d&y=c]]
или
∀x∀y [¬на(x,y) ← [x≠a ∨ y≠b] & [x≠d ∨ y≠a] & [x≠d ∨ y≠c]] . (3.28)
Заметим, что выражение
[x≠a ∨ y≠b] & [x≠d ∨ y≠a] & [x≠d ∨ y≠c]]
3
=8 конъюнкций
эквивалентно дизъюнкции 2
x≠a & x≠d & x≠d ∨ x≠a & x≠d & y≠c ∨...
...∨ y≠b & y≠a & y≠c .
Тогда (3.28) можно с учетом правила (3.17) переписать в виде 8 клауз:
⎤на(x,y) ← x≠a, x≠d .
⎤на(x,y) ← x≠a, x≠d, y≠c .
...
⎤на(x,y) ← y≠b, y≠a, y≠c .
Полезной оказывается только последняя клауза. Докажем, что блок d
свободен:
← свободен(d) | свободен(y) ← ⎤на(x,y)
y=d ;
← ⎤на(x,d)
←⎤на(x,d) | ⎤на(x,y) ← y≠b, y≠a, y≠c
y=d .
← d≠b, d≠a, d≠c
Далее потребуются утверждения d≠b←, d≠a← и d≠c←:
← d≠b, d≠a, d≠c | d≠b←
;
← d≠a, d≠c
← d≠a, d≠c | d≠a←
;
← d≠c
← d≠c | d≠c ←
.
На языке Prolog задача, рассмотренная выше, может быть решена, если
определить предикат свободен (is_free) как отрицание предиката покрыт (cov):
predicates
on(symbol,symbol)
135
Страницы
- « первая
- ‹ предыдущая
- …
- 49
- 50
- 51
- 52
- 53
- …
- следующая ›
- последняя »
