Projet de Lo21 en A25
Mini système expert booléen (propositions vraies/fausses) avec:
- Base de connaissances (BC): liste de règles
prémisse => conclusion. - Base de faits (BF): propositions vraies connues.
- Moteur d'inférence: chaînage avant, déduit de nouveaux faits.
L'exemple fourni modélise un diagnostic auto simplifié.
cmake -S . -B build
cmake --build build -j
./build/sys_expert # mode TUI (si ncurses installé)
./build/sys_expert -t # mode texte uniquement
./build/sys_expert --text-only # idem, texte uniquementEn mode texte, le programme imprime le graphe ASCII de la base d'exemple.
Si ncurses n'est pas installé et que vous lancez sans -t/--text-only, une erreur explicite est affichée.
src/proposition.h: typeProposition(nom + négation¬).src/list_proposition.{h,c}: liste chaînée deProposition.src/regle.{h,c}: type abstraitRegleet ses opérations (création, ajout prémisse en queue, conclusion, appartenance récursive, suppression, accès tête, etc.).src/list_regle.{h,c}: liste deRegle.src/bc.{h,c}: type abstraitBC(base de connaissances), opérations (créer vide, ajouter règle en queue, accéder tête).src/inference.{h,c}:BaseFaitset moteur d'inférence par chaînage avant.src/main.c: construit l'exemple du sujet et affiche les faits avant/après inférence.
Voir src/main.c pour un exemple. Les propositions s'écrivent par nom et un indicateur de négation (1 pour ¬, 0 pour positif).
- Les opérations utilisent un TAD liste simple conforme au cours.
- Mémoire libérée dans
bc_freeetfacts_free.