Article de reference

Syntaxe et sémantique de la programmation logique

La programmation logique est un paradigme de programmation qui regroupe les langages basés sur la logique formelle, tels que Datalog et Prolog . Cet article décrit la syntaxe et...

La programmation logique est un paradigme de programmation qui regroupe les langages basés sur la logique formelle, tels que Datalog et Prolog . Cet article décrit la syntaxe et la sémantique du sous-ensemble purement déclaratif de ces langages. Il convient de noter que le terme « programmation logique » désigne également un langage de programmation implication :

ce qui signifie « Si chaque

De nombreuses implémentations de Datalog, Prolog et des langages apparentés ajoutent des fonctionnalités procédurales, comme l'opérateur de coupure de Prolog , ou des fonctionnalités extra-logiques, comme une interface de fonction étrangère . La sémantique formelle de ces extensions dépasse le cadre de cet article.

clauses de Horn ). Si constante et variable sont deux ensembles dénombrables de constantes et de variables respectivement, et relation un ensemble dénombrable de symboles de prédicats , alors la grammaire BNF suivante exprime la structure d'un programme Datalog :

< règle > ::= < atome > ":-" < liste-atomes > "." < atome > ::= < relation > "(" < liste-termes > ")" < liste-atomes > ::= < atome > | < atome > "," < liste-atomes > | "" < terme > ::= < constante > | < variable > < liste-termes > ::= < terme > | < terme > "," < liste-termes > | ""

Les atomes sont également appelés sucre syntaxique ) ; elles n'ont aucun impact sur la sémantique du programme.

Exemple

Le programme suivant calcule la relation path, qui est la fermeture transitive de la relation edge.

l’approche par modèle , l’approche par point fixe et l’approche par démonstration . On peut démontrer que ces trois approches sont équivalentes.

Un atome est dit fondamental si aucun de ses sous-termes n'est une variable. Intuitivement, chaque sémantique définit la signification d'un programme comme l'ensemble de tous les atomes fondamentaux qui peuvent être déduits des règles du programme, à partir des faits.

Théorie des modèles

Diagramme de Hasse des interprétations de Herbrand du programme Datalog

Une règle est dite fondamentale si tous ses atomes (tête et corps) sont fondamentaux. Une règle fondamentale R₂ est une instance fondamentale d' une autre règle R₁ si R₂ est le résultat d'une substitution de constantes pour toutes les variables de R₁ .

La base de Herbrand d'un programme Datalog est l'ensemble de tous les atomes fondamentaux pouvant être construits à partir des constantes présentes dans le programme. Une interprétation (ou instance de base de données ) est un sous-ensemble de la base de Herbrand. Un atome fondamental est vrai dans une interprétation théorique des modèles stipule que la signification d'un programme Datalog est son modèle de Herbrand minimal (ou, de manière équivalente, l'intersection de tous ses modèles de Herbrand) .

Par exemple, ce programme :

d'ensemble des parties . L' monotone par rapport à l' ordre partiel donné par l'inclusion de sous-ensembles sur théorème de Knaster-Tarski , cette application possède un plus petit point fixe ; d'après le théorème du point fixe de Kleene, ce point fixe est le supremum de la chaîne.

Théorie de la preuve

Arbre de preuve montrant la dérivation de l'atome fondamental path(x, z)à partir du programme
arbre dont la racine est étiquetée par

Autres approches

La sémantique de Datalog a également été étudiée dans le contexte des points fixes sur des semi-anneaux plus généraux .

Programmation logique

Bien que le terme « programmation logique » désigne l'ensemble du paradigme des langages de programmation, y compris Datalog et Prolog, lorsqu'on aborde la sémantique formelle, il fait généralement référence à une extension de Datalog utilisant des symboles de fonction . Les programmes logiques sont également appelés à clauses de Horn . La programmation logique présentée dans cet article est étroitement liée au sous-ensemble « pur » ou déclaratif de Prolog .

Syntaxe

La syntaxe de la programmation logique étend celle de Datalog avec des symboles de fonction. La programmation logique supprime la restriction de plage, permettant ainsi aux variables d'apparaître dans les têtes des règles sans figurer dans leur corps.

Sémantique

Du fait de la présence de symboles de fonction, les modèles de Herbrand des programmes logiques peuvent être infinis. Cependant, la sémantique d'un programme logique est toujours définie par son modèle de Herbrand minimal. De même, le point fixe de l'opérateur de conséquence immédiate peut ne pas converger en un nombre fini d'étapes (ou vers un ensemble fini). Néanmoins, tout atome fondamental du modèle de Herbrand minimal possède un arbre de preuve fini. C'est pourquoi Prolog est évalué de haut en bas. Tout comme en Datalog, l'équivalence des trois sémantiques peut être démontrée.

Négation

La programmation logique présente l'avantage que les trois principales définitions de sa sémantique concordent. En revanche, il existe de nombreuses propositions contradictoires concernant la sémantique des programmes logiques avec négation. Cette divergence provient du fait que les programmes logiques possèdent un modèle de Herbrand minimal unique, contrairement aux programmes de programmation logique (et même aux programmes Datalog) avec négation.

Syntaxe

La négation s'écrit not, et peut apparaître devant n'importe quel atome dans le corps d'une règle.

< atome > | < atome > "," < liste-atomes > | ""

Sémantique

Négation stratifiée

Sémantique bien fondée

entières (y compris DatalogZ ), des contraintes d'inégalité dans les corps des règles et des fonctions agrégées .

La programmation logique par contraintes permet d'intégrer des contraintes sur des domaines tels que les nombres réels ou les entiers dans le corps des règles.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index