Diagnosis plugin

The diagnosis plugin extends the PySAT metamodel with conflict detection and diagnosis capabilities, explaining why a configuration is inconsistent with a feature model.

Table of contents

  1. pysat_diagnosis metamodel plugin of flamapy framework
    1. Features of the Diagnosis Metamodel Plugin
    2. Installation instructions
    3. Links
  2. Operations
  3. Transformations supported
    1. Model to model transformations

Official repository

https://www.github.com/flamapy/pysat_metamodel

pysat_diagnosis metamodel plugin of flamapy framework

The pysat_diagnosis_metamodel plugin builds on top of the PySAT metamodel to support automated debugging of feature models and configurations. Given a configuration and a test case, it computes conflict sets (minimal subsets of constraints that are inconsistent) and diagnoses (minimal sets of constraints whose removal restores consistency). It is shipped together with the flamapy-sat package.

Features of the Diagnosis Metamodel Plugin

  1. Conflict and Diagnosis Algorithms
    • Implements QuickXPlain for computing minimal conflict sets.
    • Implements FastDiag for computing minimal diagnoses.
    • Uses an HSDAG (Hitting Set Directed Acyclic Graph) to enumerate multiple conflicts/diagnoses.
  2. Metamodel Classes
    • Provides the DiagnosisModel (extension pysat_diagnosis) to represent the knowledge base, the constraints set, and the diagnosis task.
  3. Operations
    • Conflict detection and diagnosis given a configuration and a test case.
  4. Transformations
    • Model-to-Model (M2M): Transforms feature models (fm) into the diagnosis model (pysat_diagnosis).

Installation instructions

The diagnosis metamodel is distributed together with the PySAT plugin:

  1. Install Python: Ensure that Python 3.9 or later is installed on your system.

  2. Install the PySAT Metamodel Plugin (which includes the diagnosis metamodel):

    pip install flamapy-sat
    

Operations

Currently, this plugin enables the following operations:

Transformations supported

Model to model transformations