Fril - Fril
Paradigma | Logické programování |
---|---|
Navrhl | Trevor Martin |
Poprvé se objevil | 1980 |
Stabilní uvolnění | 4. 984 / 23. srpna 2011 |
Licence | Proprietární software |
Přípony názvu souboru | .frl |
Ovlivněno | |
mikro-PROLOG |
Fril je programovací jazyk pro predikátový počet prvního řádu. Zahrnuje sémantika z Prolog jako podmnožina, ale bere její syntax z mikro-PROLOG z Logičtí programovací spolupracovníci a přidává podporu pro fuzzy množiny, logika podpory, a metaprogramování.
Fril byl původně vyvinut Trevor Martin a Jim Baldwin na University of Bristol kolem roku 1980. V roce 1986 byl převzat a dále rozvíjen společností Equipu A.I. Výzkum, který se později stal názvem Fril Systems Ltd. Fril byla původně zkratka pro Fuzzy relační odvozovací jazyk.
Porovnání Prolog a Fril
Kromě funkcí správy nejistoty Fril existují určité drobné rozdíly v implementaci Fril standardních funkcí Prolog.
Typy
Základní typy v Fril jsou podobné ti v Prologu, s jednou důležitou výjimkou: složený datový typ Prologu je období se seznamy definovanými jako vnořené výrazy pomocí .
funktor; v Fril je složeným typem samotný seznam, který tvoří základ pro většinu konstruktů. Proměnné se rozlišují pomocí identifikátory obsahující pouze velká písmena a podtržítka (vzhledem k tomu, že Prolog vyžaduje velká písmena pouze prvního znaku). Stejně jako v Prologu název _
je vyhrazeno ve smyslu „libovolná hodnota“ s více výskytem _
nahrazeny odlišnými proměnnými.
Syntax
Prolog má syntaxi s typickým množstvím interpunkce, zatímco Fril má extrémně jednoduchou syntaxi podobnou syntaxi Lisp. (Propoziční) klauzule je seznam skládající se z predikátu následovaného jeho argumenty (jsou-li nějaké). Mezi typy konstruktů nejvyšší úrovně patří pravidla a příkazy přímého režimu.
Pravidlo
Pravidlo je seznam sestávající ze závěru, za nímž následují hypotézy (cíle). Obecné formuláře vypadají takto:
(skutečnost)(závěr cíl_1 ... cíl_n)
Jedná se o ekvivalent příslušných konstrukcí Prolog:
skutečnost.závěr :- cíl_1, ..., cíl_n.
Zvažte například člen
predikát v Prologu:
člen(E, [E|_]). člen(E, [_|T]) :- člen(E, T).
Ve Fril se to stává:
((člen E (E | _))) ((člen E (_ | T)) (člen E T))
Vztah
Některá data mohou být reprezentována ve formě vztahy. Vztah je ekvivalentní množině faktů se stejným predikátovým jménem a konstantou arity kromě toho, že žádná ze skutečností nemůže být odstraněna (jinak než zabít
vztah); taková reprezentace interně spotřebovává méně paměti. Relace je psána doslovně jako seznam skládající se z predikátového jména následovaného jedním nebo více n-tice vztahu (všechny argumenty ekvivalentní skutečnosti bez predikátového názvu). Predikát lze také deklarovat jako relaci voláním def_rel
predikát; to funguje pouze v případě, že navrhovaný název již neexistuje v znalostní báze. Jakmile je predikát relací, cokoli, co by normálně přidalo pravidlo (a neporušilo omezení vztahů), automaticky přidalo do relace n-tici.
Zde je příklad. Následující soubor faktů:
((my-less-than 2 3)) ((my-less-than 8 23)) ((my-less-than 42 69))
lze přepsat jako vztah:
(my-less-than (2 3) (8 23) (42 69))
Přímý režim
Predikát lze volat přesně jedním argumentem pomocí syntaxe:
predikát argument
Dotazy se zadávají pomocí této syntaxe, s predikát bytost ?
(nebo jeden z dalších predikátů souvisejících s dotazy).
Fuzzy množiny
Fril podporuje spojité i diskrétní fuzzy množiny, z nichž každá má své vlastní speciální syntaxe. Diskrétní sada (dtype) uvádí diskrétní hodnoty a jejich stupně členství s touto syntaxí:
{hodnota:dom hodnota:dom ... hodnota:dom}
hodnota je atom nebo číslo a dom je hodnota v intervalu [0, 1].
Souvislá sada (píši) seznamy reálná čísla a jejich stupně členství; funkce míry členství je lineární interpolace přes tato zobrazení. Syntaxe je tedy:
[hodnota:dom hodnota:dom ... hodnota:dom]
kde hodnoty musí být uvedeny v neklesajícím pořadí.
Každý dtype a itype může být omezen na a vesmír (sada povolených hodnot). Fril má predikáty pro operace fuzzy množiny (ale přímo nepodporuje ovládání prostřednictvím fuzzy logika ). Je dokonce možné kombinovat dtypy a itypy prostřednictvím některých operací, pokud dtypy obsahují pouze reálná čísla.
Podpůrné páry
K jakémukoli pravidlu může být přidružen interval pravděpodobnosti (nazývaný podpůrný pár) :(min max)
k tomu, kde min a max jsou minimální a maximální pravděpodobnost. Fril obsahuje predikáty, které vypočítávají podporu pro daný dotaz.
Disjunkce
Zatímco Prolog používá interpunkci - jmenovitě ;
- pro disjunkci v klauzích má Fril místo toho zabudovaný predikát orr
.
Zásluhy
Tato jednodušší syntaxe má své výhody i nevýhody. Pozitivní je, že vykresluje predikáty, jako je Prolog =..
(který mapuje mezi seznamy a klauzulemi) zbytečné, jako klauzule je seznam. Na druhou stranu je těžší číst.
Chování
Jako prostředí logického programování je Fril velmi podobný Prologu. Zde jsou některé z rozdílů:
- Jak Prolog, tak Fril skořápka aplikace, které slouží jako standardní způsob interakce s nimi. Prolog čte příkazy ve dvou režimech: v režimu čtení zdrojových souborů přijímá směrnice a klauzule; v režimu interakce s uživatelem přijímá pouze dotazy (i když je možné říci Prologu, aby četl směrnice a klauzule z standardní vstup používáním
konzultovat (uživatele).
). Fril nerozlišuje: všechny typy příkazů lze zadávat jak ze zdrojových souborů, tak na příkazovém řádku. - Prostředí Prolog automaticky vytiskne hodnoty všech instančních proměnných, které se objeví v dotazu, spolu s a Ano nebo Ne Odpovědět. Fril shell dává pouze odpověď; je odpovědností uživatele tisknout proměnné, pokud je to požadováno.
Reference
- Martin, T. P. (elektronická pošta M. Kantrowitzi, 10. března 1994). Re: FRIL. Citováno 18. října 2005. Archivovaná kopie 27. listopadu 2014
- Pilsworth, B. W. (n.d.). Programovací jazyk Fril. Citováno 18. října 2005.
- Fril Systems Ltd (1999). Fril - Online referenční příručka - předběžná verze (neúplná). Získaný 20. října 2005.
externí odkazy
- Fril - zdroje ke stažení, oficiální web ke stažení pro Fril
- [Logické programování (Fril) a laboratoř umělé inteligence], Zengchang Qin