A negáció és megvalósítása vágóval, feltételes kifejezéssel ELL

A VIK Wikiből
(PrologElm15 szócikkből átirányítva)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


  • fejezetek: 5.2-ben
  • fóliák: I.97-98, I.102, II.31

Negációra a \+ hívás használható (meghiúsulásos negáció), ami pont akkor fut le sikeresen, ha a hívás meghiúsul. Pl.:

	 | ?- X = 1. \+ X = 2.
	 X = 1 ?

A \+ hívás nem helyettesít be változót, és futása során legfeljebb egy megoldás áll elő. Viszont a "zárt világ feltételezés" miatt gondjaink támadhatnak a használatával. Ugyanis ami nem bizonyítható, azt úgy veszi, mintha nem lenne igaz. Pl. a családfás példában a \+ szuloje('Géza', X). hívással nem tud mit kezdeni. a válasza: true ?.
Negáció vágóval:

	neg(Kif) :- call(Kif), !, false.
	neg(Kif).

Feltételes kifejezéssel a következő módon valósítható meg: ( felt -> fail ; true ). Ez ekvivalens a \+ felt negációval.