Constraint Handling Rules



Website: constraint-handling-rules.org

Proiectat de: Thom Frühwirth

Paradigme de programare: Constraint logic, declarative


Regulile de gestionare a constrângerilor (CHR) este un limbaj de programare declarativ, bazat pe reguli, introdus în 1991 de Thom Frühwirth la acea vreme cu Centrul de Cercetare a Industriei Computerului European (ECRC) din Munchen, Germania.

Inițial destinată programării constrângerii, CHR găsește aplicații în inducție gramaticală, sisteme de tip, raționament abductiv, sisteme multi-agent, procesare a limbajului natural, compilare, planificare, raționament spațial-temporal, testare și verificare.

Un program CHR, numit uneori manipulator de constrângeri, este un set de reguli care mențin un magazin de constrângeri, un set de formule logice.

Executarea regulilor poate adăuga sau elimina formulele din magazin, schimbând astfel starea programului.

Ordinea în care regulile „incendiul” pe un magazin de constrângeri dat este nedeterministă, în conformitate cu semantica sa abstractă și deterministă (aplicarea regulii de sus în jos), în conformitate cu semantica sa rafinată.

Deși ChR este complet complet, nu este utilizat în mod obișnuit ca limbaj de programare la propriu.

Mai degrabă, este utilizat pentru a extinde un limbaj gazdă cu constrângeri.

Prolog este de departe cel mai popular limbaj gazdă și CHR este inclus în mai multe implementări Prolog, inclusiv Sicstus și SWI-Prolog, deși există implementări CHR pentru Haskell, Java, C, SQL și JavaScript.

Spre deosebire de Prolog, regulile CHR sunt cu mai multe capete și sunt executate într-o manieră de alegere angajată folosind un algoritm de înlănțuire înainte.