Fril

Fril

Infobox programming language
name = Fril
logo =
paradigm = Logic programming
year = 1980
designer = Trevor Martin
implementations = Fril
dialects =
influenced_by =
influenced =

Fril is a programming language for first-order predicate calculus. It includes the semantics of Prolog as a subset, but takes its syntax from the micro-Prolog of Logic Programming Associates and adds support for fuzzy sets, support logic, and metaprogramming.

Fril was originally developed by Trevor Martin and Jim Baldwin at the University of Bristol around 1980. In 1986, it was picked up and further developed by Equipu A.I. Research, which later became Fril Systems Ltd. The name "Fril" was originally an acronym for "Fuzzy Relational Inference Language".

Prolog and Fril comparison

Aside from the uncertainty-management features of Fril, there are some minor differences in Fril's implementation of standard Prolog features.

Types

The basic types in Fril are similar to those in Prolog, with one important exception: Prolog's compound data type is the term, with lists defined as nested terms using the . functor; in Fril, the compound type is the list itself, which forms the basis for most constructs. Variables are distinguished by identifiers containing only uppercase letters and underscores (whereas Prolog only requires the first character to be uppercase). As in Prolog, the name _ is reserved to mean "any value", with multiple occurrences of _ replaced by unique variables.

yntax

Prolog has a syntax with a typical amount of punctuation, whereas Fril has an extremely simple syntax similar to that of Lisp. A (propositional) clause is a list consisting of a predicate followed by its arguments (if any). Among the types of top-level constructs are rules and direct-mode commands.

Rule

A rule is a list consisting of a conclusion followed by the hypotheses (goals). The general forms look like this: ("fact") ("conclusion" "goal_1" ... "goal_n")These are equivalent to the respective Prolog constructions: "fact". "conclusion" :- "goal_1", ..., "goal_n".

For example, consider the member predicate in Prolog: member(E, [E|_] ). member(E, [_|T] ) :- member(E, T).In Fril, this becomes: ((member E (E|_))) ((member E (_|T)) (member E T))

Relation

Some data can be represented in the form of relations. A relation is equivalent to a set of facts with the same predicate name and of constant arity, except that none of the facts can be removed (other than by killing the relation); such a representation consumes less memory internally. A relation is written literally as a list consisting of the predicate name followed by one or more tuples of the relation (all of the arguments of the equivalent fact without the predicate name). A predicate can also be declared a relation by calling the def_rel predicate; this only works if the proposed name does not already exist in the knowledge base. Once a predicate is a relation, anything that would ordinarily add a rule (and does not violate the restrictions of relations) automatically adds a tuple to the relation instead.

Here is an example. The following set of facts: ((less-than 2 3)) ((less-than 8 23)) ((less-than 42 69))can be rewritten as the relation: (less-than (2 3) (8 23) (42 69))

Direct mode

A predicate may be called with exactly one argument using the syntax: "predicate" "argument"Queries are submitted using this syntax, with "predicate" being ? (or one of the other query-related predicates).

Fuzzy sets

Fril supports both continuous and discrete fuzzy sets, each with their own special syntaxes. A discrete set (dtype) lists discrete values and their degrees of membership, with this syntax: {"value":"dom" "value":"dom" ... "value":"dom"}"value" is an atom or number, and "dom" is a value in the interval [0, 1] .

A continuous set (itype) lists real numbers and their degrees of membership; the degree-of-membership function is the linear interpolation over these mappings. The syntax is thus: ["value":"dom" "value":"dom" ... "value":"dom"] where the values must be given in non-decreasing order.

Each dtype and itype may be constrained to a universe (a set of allowable values). Fril has predicates for fuzzy set operations (but does not directly support control through fuzzy logic). It is even possible to combine dtypes and itypes through some operations, as long as the dtypes contain only real numbers.

upport pairs

Any rule may have a probability interval (called a support pair) associated with it by appending :("min" "max") to it, where "min" and "max" are the minimum and maximum probabilities. Fril includes predicates that calculate the support for a given query.

Disjunction

While Prolog uses punctuation — namely ; — for disjunction within clauses, Fril instead has a built-in predicate orr.

Merits

There are advantages and disadvantages to this simpler syntax. On the positive side, it renders predicates such as Prolog's =.. (which maps between lists and clauses) unnecessary, as a clause "is" a list. On the other hand, it is more difficult to read.

Behavior

As a logic programming environment, Fril is very similar to Prolog. Here are some of the differences:
* Both Prolog and Fril have shell applications, which serve as the standard way of interacting with them. Prolog reads commands in two modes: in source file-reading mode, it accepts directives and clauses; in user interaction mode, it accepts only queries (although it is possible to tell Prolog to read directives and clauses from standard input by using consult(user).). Fril makes no distinction: all types of commands can be given both from source files and on the command line.
* The Prolog shell automatically prints the values of all instantiated variables that appear in a query, along with a "yes" or "no" answer. The Fril shell only gives the answer; it is the user's responsibility to print variables if desired.

References

* Martin, T. P. (electronic mail to M. Kantrowitz, March 10 1994). " [ftp://ftp.cs.cmu.edu/user/ai/areas/fuzzy/com/fril/fril.txt Re: FRIL] ". Retrieved October 18 2005.
* Pilsworth, B. W. (n.d.). " [http://www.enm.bris.ac.uk/ai/fril.html The Programming Language Fril] ". Retrieved October 18 2005.
* Fril Systems Ltd (1999). " [http://www.enm.bris.ac.uk/ai/martin/FrilManual/index.html Fril - Online Reference Manual - Preliminary Version (incomplete)] ". Retrieved October 20 2005.

External links

* [http://www.enm.bris.ac.uk/ai/martin/downloads/FrilResources.html Fril - downloadable resources] , the official download site for Fril
* [http://www.eecs.berkeley.edu/~zqin/FrilLab/fril.htm Logic Programming (Fril) and Artificial Intelligence Lab] , Zengchang Qin


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Fril — Este artículo está huérfano, pues pocos o ningún artículo enlazan aquí. Por favor, introduce enlaces hacia esta página desde otros artículos relacionados. Fril es u …   Wikipedia Español

  • frilæsning — fri|læs|ning sb., en, i sms. frilæsnings , fx frilæsningsbog …   Dansk ordbog

  • frilægge — fri|læg|ge (el. fritlægge) vb., r, frilagde, frilagt …   Dansk ordbog

  • frilæggelse — fri|læg|gel|se (el. fritlæggelse) sb., n, r, rne …   Dansk ordbog

  • frilægning — fri|læg|ning (el. fritlægning) sb., en, er, erne …   Dansk ordbog

  • Lenguaje Fril — Saltar a navegación, búsqueda Fril es un lenguaje de programación para el cálculo de predicados de primer orden. Trabaja con un subconjunto de la semántica del lenguaje Prolog pero no del estándar ISO PROLOG, sino con la sintaxis de micro Prolog …   Wikipedia Español

  • Cathal Ó'fríl Monument National University Ireland Galway — The cathal Ó fríl monument was erected in 1992 in the NUIG(national university ireland, galway). Also known as the The yellow thing , the monument is a tribute to this great engineer. Its symbolizes his forward thinking and appreciation of modern …   Wikipedia

  • frilling — /fril ing/, n. frilled edging. [1805 15; FRILL + ING1] * * * …   Universalium

  • freelance — /ˈfrilæns / (say freelans) noun 1. a journalist, commercial artist, editor, etc., who does not work on a regular salaried basis for any one employer. 2. a mercenary soldier or military adventurer of the Middle Ages, often of knightly rank, who… …  

  • frille — fril|le sb., n, r, rne (HISTORISK elskerinde) …   Dansk ordbog

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”