{"id":297,"date":"2017-02-09T21:19:24","date_gmt":"2017-02-09T20:19:24","guid":{"rendered":"http:\/\/www2.mathnique.com\/site\/?page_id=297"},"modified":"2026-05-22T15:56:52","modified_gmt":"2026-05-22T13:56:52","slug":"la-programmation-en-logique","status":"publish","type":"page","link":"https:\/\/www.mathnique.com\/site\/la-programmation-en-logique\/","title":{"rendered":"La programmation en logique"},"content":{"rendered":"\n<p><strong>D\u00e9finition<\/strong><\/p>\n\n\n\n<p>Les langages de programmation en logique sont des langages o\u00f9 il ne s'agit pas d'\u00e9crire des instructions de r\u00e9solution d'un probl\u00e8me. <br>Il s'agit simplement d'abord de cr\u00e9er une base ce connaissances(des faits et des r\u00e8gles) et ensuite de demander \u00e0 un moteur d'inf\u00e9rences(lui r\u00e9dig\u00e9 dans un langage de programmation classique) de satisfaire un but entr\u00e9 par l'utilisateur.<br>Le plus connu est PROLOG cr\u00e9\u00e9 en 1990 par Alain COMERAUER \u00e0 L'universit\u00e9 de Marseille-Luminy et ses d\u00e9riv\u00e9s(TURBO-PROLOG, \u2026)<\/p>\n\n\n\n<p><strong>Les causes de Horn<\/strong><br>Le chercheur britannique KOWALSI a prouv\u00e9 qu'en utilisant en logique les clauses de Horn c'est-\u00e0-dire des th\u00e9or\u00e8mes de la forme \"si conditions alors .conclusion \" on peut effectivement r\u00e9soudre un certain nombre de probl\u00e8mes.<br>Une clause de HORN est de la forme $A_1 \\ et \\ A_2 \\ et \\ \\cdots \\ et \\ A_n \\longrightarrow B$ o\u00f9 les $A_i$ et $B$ sont des termes c'est-\u00e0-dire soient des constantes, soient des variables, soient des expressions de la forme $p(t_1,t_2,\\cdots,...,t_n)$ o\u00f9 $p$ est appelle un pr\u00e9dicat utilisant des termes $t_1\\cdots,t_n$<br>Par exemple, en Prolog on les \u00e9crit dans l'autre sens : <em>heureux(ti_sonson) \\longrightarrow aime(ti_sonson, la logique)<\/em><br><strong>Ce type de clause s'appelle une r\u00e8gle<\/strong> qui dispose d'<strong>une t\u00eate<\/strong> :<br> <em>heureux(ti_sonson) <\/em> <br>et d'<strong>une queue<\/strong> : <br><em>aime(ti_sonson, la logique)<\/em>.<br><strong>Une clause sans queue s'appelle un fait<\/strong>. Par exemple :<br><em>heureux(ti_bouboule).<\/em><\/p>\n\n\n\n<p><strong>Moteurs d'inf\u00e9rences<\/strong><br><strong>Le<\/strong>s moteurs d'inf\u00e9rences fonctionnent soit en cha\u00eenage avant, soit en cha\u00eenage arri\u00e8re.<\/p>\n\n\n\n<p><strong>Exemple de cha\u00eenage avant :<\/strong><\/p>\n\n\n\n<p><em>Faits :<\/em> <br>courant passe<br>lampe neuve<\/p>\n\n\n\n<p><em>R\u00e8gles <\/em>:<br>Si lampe neuve alors lampe OK<br>Si courant passe et lampe OK alors lampe s'allume<\/p>\n\n\n\n<p><em>R\u00e9ponse :<\/em><br>Lampe OK puis Lampe s'allume.<br><br><strong>Mode de fonctionnement :<\/strong><br>L'utilisateur rentre des faits dans une base.<br>Le moteur d'inf\u00e9rences d\u00e9duit de nouveaux faits qui sont de cons\u00e9quences cons\u00e9quences des r\u00e8gles agissant sur les faits initiaux.<br>Ces nouveaux faits viennent alors enrichir la base de faits.<br>D\u00e8s qu'un faits \u00e9l\u00e9mentaires entr\u00e9s par l'utilisateur dans la base de faits. <br>La cons\u00e9quence d\u00e9duite d'une r\u00e8gle vient ensuite enrichir la base de faits.<br>D\u00e8s qu'un tour complet d'examen des r\u00e8gles n'a entra\u00een\u00e9 la d\u00e9duction d'aucune nouvelle cons\u00e9quence, le fonctionnement du processus de cha\u00eenage avant s'arr\u00eate.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Exemple de chainage arri\u00e8re<\/strong><br><br><img loading=\"lazy\" decoding=\"async\" width=\"813\" height=\"194\" class=\"wp-image-3704\" style=\"width: 813px;\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-scaled.png\" alt=\"\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-scaled.png 2560w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-300x72.png 300w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-1024x244.png 1024w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-768x183.png 768w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-1536x367.png 1536w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-2048x489.png 2048w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2026\/05\/moteurinferences-1200x286.png 1200w\" sizes=\"auto, (max-width: 813px) 85vw, 813px\" \/><br><br><strong>Un exemple de langage en programmation en logique : Le langage PROLOG<\/strong><br>Le langage PROLOG est un langage de programmation d\u00e9clarative. <br>On repr\u00e9sente dans un formalisme ad\u00e9quat des connaissances (sous forme de clause de Horn : faits et r\u00e8gles) sur un sujet donn\u00e9, \u00e0 partir desquelles seront d\u00e9duites par un moteur d'inf\u00e9rences des r\u00e9ponses aux questions de l'utilisateur.<br>Le moteur d'inf\u00e9rences de la machine Prolog fonce en cha\u00eenage arri\u00e8re ou \"backtracking\"<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9finition Les langages de programmation en logique sont des langages o\u00f9 il ne s'agit pas d'\u00e9crire des instructions de r\u00e9solution d'un probl\u00e8me. Il s'agit simplement d'abord de cr\u00e9er une base ce connaissances(des faits et des r\u00e8gles) et ensuite de demander \u00e0 un moteur d'inf\u00e9rences(lui r\u00e9dig\u00e9 dans un langage de programmation classique) de satisfaire un but &hellip; <a href=\"https:\/\/www.mathnique.com\/site\/la-programmation-en-logique\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;La programmation en logique&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-297","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages\/297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/comments?post=297"}],"version-history":[{"count":12,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages\/297\/revisions"}],"predecessor-version":[{"id":3711,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages\/297\/revisions\/3711"}],"wp:attachment":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/media?parent=297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}