FR 2885433 A1 20061110 FR 0504487 A 20050503 INRIA45.FRD Dispositif et procédé de résolution d'équations L'invention concerne les dispositifs et procédés de résolution d'équations mathématiques et logiques. Les dispositifs connus de résolution d'équations mathématiques et logiques permettent à 10 un utilisateur d'entrer des équations de son choix, sur une interface utilisateur, pour les soumettre à un dispositif de calcul, appelé solveur. Sur les interfaces utilisateurs de tels dispositifs, l'utilisateur peut saisir directement les équations qu'il souhaite résoudre, dans des zones d'entrée prévues à cet effet. Pour construire les équations à résoudre, l'utilisateur peut également sélectionner et combiner des fonctions classiques pré-programmées accessibles dans un menu figurant sur l'interface graphique. Le résultat d'un calcul effectué par ces dispositifs de résolution est en général affiché dans 20 une ou plusieurs zones de sortie prévues sur l'interface graphique. Les fonctionnalités proposées par ces dispositifs de résolution d'équations mathématiques et logiques comprennent donc essentiellement: la construction ou la saisie directe d'équations à résoudre, dans des zones d'entrée de 25 l'interface graphique; - la résolution des équations construites ou saisies; et - l'affichage du résultat par le solveur, dans une ou plusieurs zones de sortie de l'interface graphique. Toutefois, ces dispositifs ne sont pas adaptés pour permettre à un utilisateur de spécifier un problème mathématique et/ou logique complexe avec des outils simples. En outre, les capacités de ces dispositifs de résolution sur des domaines différents sont très limitées. Ainsi, les dispositifs de résolution existants ne permettent pas de résoudre efficacement des contraintes sur des domaines composés, par exemple sur des domaines réels, des domaines discrets, finis ou encore booléens. Les équations sont généralement construites textuellement ou à l'aide de fonctions pré-programmées sur l'interface utilisateur de tels dispositifs. La construction d'équations peut donc être relativement longue et complexe. En outre, sur les interfaces utilisateur des dispositifs de résolution existants, les capacités graphiques sont souvent limitées. L'utilisateur peut donc difficilement personnaliser l'interface en fonction du problème à résoudre. Dans d'autres réalisations existantes, il est connu d'utiliser des interfaces utilisateur de type graphique pour la création d'un espace utilisateur personnalisé, au moyen d'outils graphiques. Ces outils graphiques sont en général complets et performants. Ces interfaces graphiques sont par exemple adaptées pour le positionnement d'objets graphiques, tels qu'une zone de texte. Cependant, elles sont peu adaptées pour la résolution d'équations mathématiques et logiques complexes et leurs capacités graphiques ne sont pas liées à l'état interne du solveur. On connaît également des réalisations dites "tableurs", par exemple Lotus 1, Lotus 2, Lotus 3, Excel ou encore Spreadsheet 2000, qui combinent des outils d'interfaces graphiques et 15 des outils de résolution d'équations mathématiques et/ou logiques. Cependant, leur capacité de résolution d'équations est limitée et les interfaces graphiques ne sont utilisées que pour l'affichage du résultat. Ainsi, les réalisations existantes ne permettent pas à l'utilisateur de spécifier graphiquement des problèmes mathématiques et logiques complexes tout en les résolvant. L'invention vient améliorer la situation. A cet effet, l'invention propose un dispositif informatique, du type comprenant: - un gestionnaire d'interface graphique, destiné à afficher des cellules en fonction de données stockées dans une mémoire, -un solveur capable de résoudre des systèmes d'équations mathématiques et logiques, et un gestionnaire de contraintes entre ceux-ci. Avantageusement, les données stockées dans la mémoire sont des objets, ayant chacun des attributs graphiques et un attribut de valeur, pouvant être complété par un attribut de nom. Chaque objet est associé à une cellule affichée tandis que le gestionnaire de contraintes est capable de réagir à une action de l'utilisateur sur l'interface graphique portant sur des attributs d'un objet, en formant un système de contraintes à partir de ces attributs et des attributs des objets stockés dans la mémoire, et en appliquant au solveur le système de contraintes ainsi formé. Les objets de la mémoire sont modifiés en fonction des contraintes ainsi appliquées. Des caractéristiques optionnelles du dispositif informatique selon l'invention, complémentaires ou de substitution, sont énoncées ci-après: Le dispositif comprend un gestionnaire d'objets interagissant avec le gestionnaire d'interface graphique et le gestionnaire de contraintes pour modifier les objets de la mémoire d'objets. - Chaque cellule de l'interface graphique comporte au moins une zone de valeur comprenant la valeur de l'attribut de valeur de l'objet associé à la cellule, pouvant être complétée par une zone de nom affichant le nom de l'objet associé à la cellule. - La zone de valeur d'une cellule peut comporter une formule mathématique et/ou logique comprenant l'expression d'une condition entre la valeur de l'objet associé à la cellule et les valeurs de certains au moins des objets associés à d'autres cellules de l'interface graphique. - La zone de valeur d'une cellule peut comporter une condition sur la valeur de l'objet associé à la cellule. - Le gestionnaire de contraintes est capable de former une contrainte d'égalité à partir de chaque attribut de la mémoire et de la valeur de l'attribut, et le système de contraintes est formé à partir de certaines au moins des contraintes. - Chaque objet comporte en outre un attribut de type portant sur le type de l'attribut de valeur. - Le solveur est agencé pour fournir le résultat de la résolution au gestionnaire de contraintes sous forme de contraintes et le gestionnaire d'objets est apte à tirer les attributs 25 à modifier de ces contraintes. - Le gestionnaire d'interface graphique est apte à afficher un indicateur d'entrée sortie sur l'interface graphique tant que le système de contraintes résultant de l'action de l'utilisateur n'a pas été résolu. L'invention propose en outre un procédé de résolution de contraintes, sur une interface graphique, sur laquelle des cellules sont affichées en fonction de données stockées dans une mémoire. Le procédé comprend les étapes suivantes: a) générer un affichage de départ sur une interface graphique tiré de données stockées, les données stockées étant de type objet, ayant chacun des attributs graphiques et un attribut de valeur, pouvant être complété par un attribut de nom, chaque objet étant associé à une cellule affichée sur l'interface graphique, b) en réponse à une action de l'utilisateur sur l'interface graphique portant sur des attributs d'un objet, former un système de contraintes à partir de ces attributs et des attributs des objets stockés dans la mémoire, c) résoudre le système de contraintes ainsi formé, d) modifier les données stockées, et e) modifier l'affichage de départ en fonction des données modifiées à l'étape d). D'autres caractéristiques et avantages de l'invention apparaîtront à l'examen de la description détaillée ci-après, et des dessins annexés sur lesquels: la figure 1 est un schéma bloc représentant le solveur graphique conforme à l'invention; la figure 2 est un schéma illustrant le principe de l'invention; - la figure 3 est un exemple de cellules générées sur une interface graphique conformément à l'invention; - la figure 4 est un organigramme général représentant les étapes mises en oeuvre par le solveur graphique conforme à l'invention; - la figure 5 est un exemple d'interface graphique générée par le solveur graphique conforme à l'invention; - la figure 6 est un organigramme représentant les étapes mises en oeuvre par le solveur 25 graphique conforme à l'invention, en réponse à une création de cellule par l'utilisateur; - la figure 7 représente un exemple d'interface graphique sur laquelle est créée une cellule; - la figure 8 est un organigramme représentant les étapes mises en oeuvre par le solveur 30 graphique conforme à l'invention, en réponse à la modification d'une cellule par l'utilisateur; - la figure 9 représente l'interface graphique de la figure 7, après modification de la cellule par l'utilisateur; et - les figures 10 à 13 représentent l'évolution de l'interface graphique des figures 7 et 9, suite à des actions de l'utilisateur pour spécifier et résoudre un problème mathématique et/ou logique. L'annexe A contient des exemples de code, pour la mise en oeuvre de l'invention. Cette annexe est mise à part dans un but de clarification, et pour faciliter les renvois. Elle fait partie intégrante de la description, et pourra donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. Ceci s'applique également en tous points aux dessins. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits. La figure 1 représente un dispositif de résolution d'équations 1, conforme à l'invention. Ce 15 dispositif sera désigné, ci-après, par "solveur graphique". Le solveur graphique 1 permet la résolution d'un problème mathématique et/ou logique, par exemple la simulation d'un dispositif physique, tel qu'un pendule, ou encore des calculs de prévision financière. Le solveur graphique 1 comprend une interface utilisateur 100 sur laquelle un utilisateur peut spécifier graphiquement un problème mathématique et/ou logique à résoudre. L'interface utilisateur 100 est en outre adaptée pour afficher graphiquement le résultat de la résolution. Le solveur graphique 1 comprend en outre un gestionnaire d'interface utilisateur 102 capable, d'une part, d'identifier les actions de l'utilisateur sur l'interface utilisateur 100 et, d'autre part, de générer l'affichage des résultats de la résolution sur l'interface utilisateur 100. Le gestionnaire d'interface utilisateur 102 est par exemple un gestionnaire d'interface graphique. Il permet de créer des éléments graphiques sur l'interface 100 qui peuvent être dimensionnés, placés, déplacés ou encore annotés. Par exemple, le gestionnaire d'interface graphique Spreadsheet 2000 fournit une interface complète dédiée aux graphismes. Les paramètres du graphisme tels que la position, la couleur, l'espacement, etc, sont également gérés par le gestionnaire d'interface graphique. Le gestionnaire d'interface utilisateur 102 interagit d'une part avec l'interface utilisateur 100 et d'autre part avec un gestionnaire d'objets 106. Le gestionnaire d'objets 106 est capable de créer ou de modifier des objets, en correspondance avec les actions de l'utilisateur sur l'interface utilisateur 100, après leur identification par le gestionnaire d'interface graphique 102. Le gestionnaire d'objets 106 est capable de stocker les objets créés dans une mémoire d'objets 104 et de les modifier. La mémoire d'objets 104 peut être par exemple une base de données. Le gestionnaire d'objets 106 interagit avec un gestionnaire de contraintes 108. Le gestionnaire de contraintes 108 est capable de construire et d'évaluer des contraintes résultant des actions successives de l'utilisateur sur l'interface graphique 100. Plus précisément, lorsque le gestionnaire d'objets 106 tente de créer ou de modifier un objet, en réponse à des actions de l'utilisateur sur l'interface graphique, le gestionnaire de contraintes évalue au préalable l'ensemble des contraintes correspondant aux éléments spécifiés sur l'interface graphique 100. Le résultat de l'évaluation des contraintes conditionne la création ou la modification effective d'un objet dans la mémoire d'objets 104. Le gestionnaire de contraintes 108 construit les contraintes à évaluer à partir des objets stockés dans la mémoire d'objets 104. Le gestionnaire de contraintes 108 comprend en outre au moins un solveur 110 adapté pour 25 résoudre un ensemble d'équations mathématiques et/ou logiques. Le solveur 110 est un solveur classique incorporant des capacités mathématiques, par exemple du type arithmétique d'intervalles, domaine fini, ensemble fini, calcul propositionnel, identité algébrique (associativité, commutativité, etc) et polynômes. De telles capacités existent dans des systèmes tels que Axiom, ILOG, Solver, Maple, Mathematica, Numerica, ou encore des solveurs spécialisés comme Elan. Les contraintes construites par le gestionnaire de contraintes ont un format adapté au format d'entrée du solveur 110. Le gestionnaire d'interface graphique 102 comporte des outils de génération d'entités graphiques sur l'interface graphique 100. Ces entités peuvent être par exemple des zones de texte ou encore des zones de nom. En particulier, le gestionnaire d'interface graphique 102 peut générer un menu sur l'interface utilisateur 100, par lequel l'utilisateur peut spécifier un problème mathématique et/ou logique à résoudre. Le menu peut comprendre un ensemble d'éléments relatifs à des cellules graphiques que l'utilisateur peut sélectionner, au moyen d'un dispositif de pointage, par exemple une souris et positionner à un endroit voulu de l'interface utilisateur. La cellule graphique associée est alors affichée à l'endroit indiqué par l'utilisateur. Les cellules graphiques peuvent comprendre par exemple des zones de nom ou des zones de valeur, de forme rectangulaire. L'utilisateur peut en outre adapter les dimensions des cellules sélectionnées. A chaque cellule du menu est associé un objet prédéfini par le gestionnaire d'interface 102. Chaque fois qu'une cellule graphique est créée sur l'interface graphique, une instance de l'objet associé est créée par le gestionnaire d'interface 102, ainsi qu'un ensemble d'attributs prédéfinis en fonction du type de l'objet. Cet ensemble d'attributs peut comprendre: - des attributs graphiques portant sur les caractéristiques graphiques de la cellule associée - un attribut de valeur portant sur la valeur de l'objet, et -un attribut de type portant sur la valeur de l'objet. Cet ensemble d'attributs peut être complété par un attribut de nom portant sur le nom de 25 l'objet. Ces attributs de nom permettent à l'utilisateur de manipuler les différentes variables du système de manière simple. Par exemple, l'élément sélectionné dans le menu peut être une cellule rectangulaire associée à un objet "zone de nom", comprenant les attributs graphiques "taille de cellule","couleur 30 de cellule", "position de cellule", et un attribut de valeur, par exemple égal à " prix". Une contrainte est en général l'expression d'une condition faisant intervenir une ou plusieurs variables et un ou plusieurs opérateurs mathématiques et/ou logiques. Une contrainte conformément à l'invention est associée à chaque couple {attribut, valeur d'attribut}, généré pour un objet de la mémoire d'objets, et se présente sous la forme "attribut = valeur d'attribut". Par exemple, l'objet "zone de nom" comprend les couples {attribut, valeur d'attribut} suivants: {taille de cellule;50}, - {couleur de cellule; jaune}, {position de cellule; (20,10)}, et - {attribut de valeur, prix}, Par conséquent, les contraintes associées à cet objet sont: taille de cellule = 50, l0 couleur de cellule = jaune, position de cellule = (20,10), et attribut de valeur = prix. Ainsi, un problème spécifié sur l'interface graphique 100 est traité comme un système 15 global de contraintes par le solveur graphique de l'invention. Chaque contrainte est associée à un attribut d'un objet de la mémoire d'objets 104. Les actions possibles de l'utilisateur sur l'interface graphique comprennent la création d'une nouvelle cellule qui aura pour effet la création d'un nouvel objet dans la mémoire d'objets 104 et la modification de certaines caractéristiques d'une cellule, qui aura pour effet la modification des attributs correspondants de l'objet associé à la cellule. La mémorisation d'un nouvel objet ou d'une modification portant sur un objet, dans la mémoire d'objets, est précédée d'une évaluation préalable pour vérifier si les contraintes associées à ce nouvel objet ou à cette modification ne génèrent pas de contradictions dans le système global de contraintes. Le système global de contraintes comprend: les contraintes associées aux attributs stockés dans la mémoire d'objets 104; les contraintes associées aux attributs du nouvel objet ou aux attributs à modifier, selon le cas. Le gestionnaire de contraintes 108 peut interagir directement avec la mémoire d'objets 104 pour tirer de celle-ci les contraintes associées aux attributs stockés dans la mémoire 35 d'objets. En variante, le gestionnaire de contraintes 108 peut interagir avec une mémoire de contraintes séparée, dans laquelle sont stockées ces contraintes. A chaque attribut de la mémoire d'objets 104 est alors associé une contrainte de la mémoire de contraintes. Par suite, chaque mise à jour de la mémoire de contraintes déclenche une mise à jour de la mémoire d'objets 104, et réciproquement. Dans la suite de la description, on considérera que la mémoire de contraintes est distincte 5 de la mémoire d'objets, à titre d'exemple non limitatif Il est maintenant fait référence à la figure 2 qui est un schéma illustrant le principe de l'invention. Le solveur graphique 1 conforme à l'invention comporte un espace de contraintes C qui interagit avec le gestionnaire d'interface graphique 102, le gestionnaire d'objets 106 et le gestionnaire de contraintes 108. L'espace de contraintes C correspond au système global de contraintes. Après une ou plusieurs actions de l'utilisateur sur l'interface graphique 100 pour créer, supprimer ou modifier une cellule, et après l'envoi d'un signal particulier, par exemple par la sélection d'une touche de validation par l'utilisateur, l'espace de contraintes C qui résulte de ces actions est évalué par le solveur 110. Lorsque l'évaluation indique que cet ensemble de contraintes ne présente pas de contradictions, la ou les actions de l'utilisateur sont prises en compte et l'affichage est modifié sur l'interface utilisateur 100. La figure 3 est une vue partielle d'une interface utilisateur 100 d'un solveur graphique, 25 conforme à l'invention. Les cellules que peut sélectionner l'utilisateur comprennent des cellules représentant des variables du problème, des cellules représentant une contrainte principale du problème, ou des cellules auxiliaires. Plus précisément, la spécification d'un problème sur l'interface graphique consiste en la création d'un ensemble de cellules représentant des variables du problème. En particulier, chaque cellule 303 représentant une variable du problème peut comporter: - une zone de nom 302 dans laquelle l'utilisateur peut entrer un nom d'objet pour la cellule, par exemple "prix", et - une zone de valeur 304 dans laquelle l'utilisateur peut entrer une valeur d'objet pour la cellule ou dans laquelle le gestionnaire d'interface graphique peut afficher une valeur calculée par le solveur graphique pour la cellule. La zone de valeur d'objet est donc à la fois une zone d'entrée de valeur et une zone de sortie de valeur. Les cellules auxiliaires 306 et 308 peuvent être créées pour représenter un attribut de la cellule 303. Par exemple, la cellule 306 est une cellule de type indicateur d'entrée/sortie dont la valeur est liée à l'attribut d'entrée/sortie de la cellule 303. Cet indicateur comporte deux états, par exemple un état "ombré" et un état "non ombré" indiquant selon le cas que la valeur de la zone de valeur a été entrée par l'utilisateur ou fournie par le solveur graphique. L'état de l'indicateur d'entrée/sortie peut être imposé par l'utilisateur. La cellule 308 est une cellule de type ascenseur dont la valeur est liée à la valeur affichée dans la zone de valeur 304 (attribut de valeur d'objet). Cette cellule permet à l'utilisateur de spécifier la valeur de la zone de valeur 304. Le gestionnaire d'interface graphique met à la disposition des utilisateurs des outils simples 20 pour spécifier une relation entre une cellule auxiliaire et une cellule représentant une variable 303. De même, le gestionnaire d'interface graphique met à la disposition des utilisateurs des outils simples pour spécifier une relation entre les cellules représentatives de variables 303. Ainsi, les attributs d'une cellule peuvent également être liés aux attributs d'une autre cellule de l'interface utilisateur. Par exemple, les attributs de valeur respectifs des cellules 306 et 304, sur la figure 3, sont égaux de sorte que la modification de la valeur de la cellule 306 entraîne une modification de la valeur de la cellule 304. L'utilisateur peut de cette manière spécifier des relations entre les attributs graphiques des cellules de l'interface, entre les attributs de valeurs des cellules, et même entre les attributs graphiques et les attributs de valeurs des cellules. Comme indiqué ci-dessus, chaque cellule représentant une variable est elle-même associée à un objet, auquel correspond un ensemble d'attributs. Ces attributs comprennent des attributs graphiques portant sur les caractéristiques graphiques de la cellule, et un attribut de valeur d'objet portant sur la ou les valeurs indiquées dans la cellule, dont la valeur correspond à la valeur affichée dans la zone de valeur 302. Ces attributs peuvent en outre comprendre un attribut de nom, dont la valeur correspond à la valeur affichée dans la zone de nom 304. Ces attributs peuvent également comporter un attribut d'indication d' entrée/sortie indiquant 5 si la valeur de la zone de valeur a été entrée par l'utilisateur ou affichée par le solveur graphique. Un attribut de valeur peut être spécifié par l'utilisateur dans la zone de valeur correspondante, sous la forme d'une valeur fixe, par exemple "6", ou encore sous la forme 10 d'une condition, par exemple " Une cellule peut comporter tout type de valeur par exemple une valeur de type "date", "entier", "chaîne de caractère", etc. Le type de valeur d'une cellule peut être spécifié directement par l'utilisateur ou bien être déterminé par le solveur, lors d'une résolution de contraintes. Les attributs d'une cellule représentant une variable du problème à résoudre comprennent donc généralement: - des attributs graphiques, -un attribut de valeur d'objet, par exemple "6", et - un attribut de nom d'objet, par exemple "ANNEES". Le gestionnaire d'interface utilisateur met également à la disposition de l'utilisateur des 25 cellules de contrainte principale, qui définissent des relations mathématiques et/ou logiques entre les valeurs respectives de différentes variables de l'interface graphique. De telles cellules de contrainte principale comprennent une zone de valeur dans laquelle est spécifiée une relation mathématique et/ou logique, désignée ci-après par contrainte principale. Dans les contraintes principales, les variables sont désignées par le nom qui leur a été affecté par l'utilisateur et qui correspond à l'attribut de nom de chaque cellule. Par exemple: "PRIX FUTUR = PRIX COURANT + 0,1* ANNEE", où ANNEE, PRIX FUTUR et PRIX COURANT sont les noms affectés à des cellules. Une contrainte principale peut correspondre à une formule booléenne impliquant une condition sur les variables intervenant dans la relation. Du point de vue du solveur graphique 1 de l'invention, l'interface graphique 100 apparaît donc comme une collection d'objets définissant un ensemble de contraintes. On se réfère maintenant à l'organigramme de la figure 4, qui représente les différentes 5 étapes mises en oeuvre par le solveur graphique de l'invention, à chaque action de l'utilisateur sur l'interface graphique. Les actions de l'utilisateur peuvent comprendre la création d'une nouvelle cellule, la modification des paramètres d'une cellule existante, par exemple sa taille ou sa valeur, ou 10 encore la suppression d'une cellule existante. Lorsque l'utilisateur a effectué une de ces actions, et presser une touche de validation, par exemple la touche "entrée" du clavier, le solveur graphique extrait l'ensemble des contraintes résultant de l'interface graphique, à l'étape 40. Cet ensemble de contraintes, ou système global de contraintes, comprend les contraintes tirées de la mémoire d'objets 104, ainsi que les nouvelles contraintes générées par l'action de l'utilisateur. A l'étape 42, le solveur graphique applique au solveur 110 cet ensemble de contraintes extrait, pour une évaluation. Cette évaluation permet de vérifier si l'ensemble de contraintes 20 présente des contradictions. A l'étape 44, le solveur 110 fournit le résultat de la résolution, soit sous forme de nouvelles contraintes, s'il n'y a pas de contradictions, soit sous forme d'un message d'erreur en cas de contradiction. A l'étape 46, le solveur graphique met en mémoire les attributs associés aux nouvelles contraintes dans la mémoire d'objets 104. A l'étape 48, le solveur graphique génère un affichage des objets stockés dans la mémoire 30 d'objets. La figure 5 est un exemple d'interface utilisateur sur laquelle un problème a été spécifié. Le problème spécifié dans cet exemple concerne l'évolution du prix du pain dans le temps. L'interface utilisateur de la figure 5 comporte: - quatre cellules 50, 51, 52 et 53, représentant les variables respectives "prix courant", "années", "prix futur", et "taux d'inflation" du problème, - une cellule auxiliaire 54 pour la visualisation du résultat, et une cellule de contrainte principale 55. La cellule 50 porte sur un objet, dont le nom affiché dans la zone de nom est "Prix courant" et dont la valeur affichée dans la zone de valeur est "9". La cellule 51 porte sur un objet, dont le nom affiché dans la zone de nom est "Années"et 5 dont la valeur affichée dans la zone de valeur est "9". La cellule 52 porte sur un objet, dont le nom affiché dans la zone de nom est "Prix futur" et pour lequel aucune valeur n'est affichée dans la zone de valeur. La variable "Prix futur" est donc une inconnue. La cellule 53 porte sur un objet, dont le nom affiché dans la zone de nom est "Taux d'inflation"et dont la valeur affichée dans la zone de valeur est "10". La cellule 54 est un diagramme représentant l'évolution de la variable "Prix futur" de la cellule 50 en fonction de la variable "Années" de la cellule 52. La cellule 55 est une cellule de contrainte principale dans laquelle une relation liant les différentes variables 50, 52, 51 et 53 est spécifiée. L'organigramme de la figure 6 représente de manière plus détaillée les étapes mises en oeuvre par le solveur graphique de l'invention, en réponse à la création par l'utilisateur d'une nouvelle cellule sur l'interface graphique 100. La figure 7 est un exemple d'interface graphique montrant la création d'une nouvelle cellule. La description de l'organigramme de la figure 6 sera faite en référence à cet exemple, pour plus de clarté. Sur l'interface graphique de la figure 7, l'utilisateur a sélectionné une cellule rectangulaire 45 dans le menu, comprenant une zone de nom 451 et une zone de valeur 453, puis positionné cette cellule à un emplacement (X, Y) de l'interface graphique, au moyen de la souris. Lorsque l'utilisateur a pressé une touche de validation pour évaluer les contraintes qui résultent de son action, à l'étape 402 de la figure 6, le gestionnaire d'interface graphique 102 identifie le type T de la cellule créée et son emplacement (X,Y). Le type de la cellule peut être spécifié par l'utilisateur ou déterminé par le solveur lors d'un processus de résolution de contraintes. A l'étape 404, le gestionnaire d'objets 106 génère un nouveau nom pour la cellule créée, par 5 exemple Cl. A l'étape 406, le gestionnaire d'objets définit alors une nouvelle instance de l'objet associé aux cellules de type T. Cette nouvelle instance d'objet correspond elle-même à un objet. A cette instance d'objet, sont affectés des attributs prédéfinis. Les valeurs de ces attributs peuvent être imposées par l'utilisateur ou fixées par défaut par le solveur graphique 1. Dans l'exemple de la figure 7, la valeur de l'attribut de position a été spécifiée par l'utilisateur, la valeur de l'attribut de nom reçoit la valeur Cl définie par le solveur graphique 1. Les autres attributs seront affectés par défaut après évaluation. Le gestionnaire d'objets essaie alors de créer l'objet C 1 ainsi défini. Pour cela, le gestionnaire d'objets 106 peut par exemple appliquer une méthode TryCreate, comme indiqué dans la partie Al 1 de l'annexe A. Plus précisément, à l'étape 408, le gestionnaire de contraintes 108 définit de nouvelles contraintes associées à l'objet Cl à créer. Par exemple, pour la cellule 45 de la figure 7, les nouvelles contraintes suivantes sont 25 générées, en référence à la partie A13 de l'annexe A: "Cl.Name = Name" indiquant que la valeur "Name" est affectée à l'attribut de nom "Cl.Name", "C1.Value = 0" indiquant que la valeur "Value" est affectée à l'attribut de valeur "CI.value", "Cl. Color = White" indiquant que la valeur "White" est affectée à l'attribut de couleur "CI. Color", "CI.Width = 60" indiquant que la valeur "60" est affectée à l'attribut de taille "C1.Width", "C1.Heigh = 40" indiquant que la valeur "40" est affectée à l'attribut "C1.Heigh", et "C1. Position = (a, b)" indiquant que la valeur "(a,b)" est affectée à l'attribut de position "CI. Position". Le gestionnaire de contraintes essaie ensuite d'ajouter ces contraintes à l'ensemble des contraintes courant de l'interface utilisateur. Cet ensemble de contraintes courant résulte des couples {attribut, valeur d'attribut} définis dans la mémoire d'objets 104. Pour cela, le gestionnaire de contraintes 108 peut par exemple appliquer une méthode TryAddingConstraint, appelée par la méthode TryCreate, comme indiqué dans la partie Al2 de l'annexe A. Cette méthode a pour résultat de vérifier si l'ajout des nouvelles contraintes à l'ensemble courant de contraintes ne génère pas de contradictions. Plus précisément, à l'étape 410, la méthode TryAddingConstraint définit un système de contraintes à évaluer à partir de l'ensemble de contraintes courant tiré de la mémoire d'objets et des nouvelles contraintes définies par le gestionnaire de contraintes, à l'étape 408. A l'étape 412, ce système de contraintes est appliqué au solveur 110 pour une résolution. Le solveur 110 peut appliquer une procédure de vérification de contradictions CheckSatisfiability capable de tester si le système de contraintes présente des contradictions. En effet, lorsqu'un nouvel objet tel que Cl doit être créé, le dispositif conforme à l'invention vérifie si la création de l'objet est possible. Lorsqu'il est déterminé que la création est possible, l'ensemble de contraintes est mis à jour. Cette étape de vérification peut comporter les sous-étapes suivantes: - Le gestionnaire d'objets 106 applique la méthode "TryCreate" pour générer un nom de cellule, par exemple "C 1", et affecter les valeurs spécifiées par l'utilisateur aux attributs correspondants. Le gestionnaire applique également cette méthode pour générer des valeurs par défaut pour les attributs dont la valeur n'est pas spécifiée par l'utilisateur. Par exemple, lorsque l'utilisateur spécifie une forme de cellule, mais ne spécifie pas la couleur de fond de la cellule, le gestionnaire génère une valeur par défaut pour l'attribut de couleur de fond. - Le gestionnaire d'objets applique ensuite la méthode "TryCreate" qui appelle la méthode "TryAddingConstraint" pour demander au gestionnaire de contraintes si l'ajout de la cellule associée à l'objet Cl est compatible avec l'état courant, et si tel est le cas de calculer les valeurs des contraintes à modifier pour l'ajout de la nouvelle cellule. Pour cela, la méthode "TryAddingConstraint" appelle la procédure de vérification de contradiction CheckSatisfiability du solveur 110. Si l'ajout de la cellule n'est compatible avec l'état courant, "TryAddingConstraint" retourne cette information et aucune contrainte n'est modifiée. Si l'ajout de la cellule est compatible avec l'état courant, les valeurs des contraintes à modifier pour l'ajout de la nouvelle cellule sont calculées. Lorsque la méthode "TryAddingConstraint" renvoie le résultat du calcul, la méthode "TryCreate" génère la mise à jour de la mémoire d'objets 104, en fonction du résultat. La procédure de vérification CheckSatisfiability consiste à considérer le système de contraintes comme un système d'équations mathématiques et logiques à résoudre. Elle permet de vérifier la "satisfiabilité" de l'ensemble courant de contraintes présent dans la mémoire de contraintes, à partir de l'ensemble de contraintes passés en argument par la méthode "TryAddingConstraint". Tant que la procédure de vérification n'a pas été effectuée, un indicateur peut être utilisé pour la cellule 45 de l'interface. Par exemple, le gestionnaire d'interface graphique peut faire apparaître la cellule 45 sous forme ombrée, jusqu'à ce que le solveur ait évalué le système de contraintes. Un tel indicateur définit l'état de visualisation dans lequel se trouvent des spécifications graphiques d'ajout ou de modification de l'utilisateur, tant qu'elles n'ont pas été évaluées et validées par la procédure de vérification CheckSatisfiability. Cet indicateur comporte deux états, un premier état indiquant que l'évaluation des spécifications de l'utilisateur n'a pas été achevée et un deuxième état indiquant que l'évaluation a été effectuée. Lorsque l'évaluation par la procédure de vérification CheckSatisfiability indique une incompatibilité, les spécifications graphiques de l'utilisateur disparaissent après l'évaluation et l'interface graphique revient à l'état précédent. Lorsque l'évaluation par la procédure de vérification CheckSatisfiability n'indique pas d'incompatibilité, l'indicateur passe dans le deuxième état et des éléments graphiques supplémentaires résultant du calcul peuvent être ajoutés sur l'interface. Le résultat fourni par le solveur 110 se présente sous la forme de nouvelles contraintes à ajouter. Si le système de contraintes ne présente pas de contradictions, les attributs correspondant aux nouvelles contraintes sont ajoutés dans la mémoire de contraintes. Ainsi, à l'étape 414, le gestionnaire d'objets 106 met à jour la mémoire d'objets 104 pour y ajouter les attributs, et valeurs d'attributs correspondant aux nouvelles contraintes fournies en résultat. Une méthode Update peut être utilisée pour mettre à jour la mémoire d'objets 104, désignée par DB dans la partie A14 de l'annexe A. A l'étape 416, le gestionnaire d'interface graphique 102 met à jour l'affichage de l'interface graphique en fonction du contenu de la mémoire d'objets. En particulier, la cellule 45 n'est 35 plus ombrée pour indiquer que l'action de l'utilisateur a été prise en compte. L'organigramme de la figure 8 représente de manière plus détaillée les étapes réalisées par le solveur graphique de l'invention, en réponse à la modification par l'utilisateur d'une cellule sur l'interface graphique 100. La figure 9 représente l'interface graphique de la figure 7, après modification d'un paramètre de la cellule 45. La description de l'organigramme de la figure 8 sera faite en référence à cet exemple, pour 5 plus de clarté. Comme représenté sur la figure 9, un utilisateur a modifié la zone de nom de la cellule 45 en indiquant un nouveau nom "utilisé", puis pressé la touche de validation. Le solveur évalue alors l'ensemble de contraintes qui résulte de cette action, pour vérifier s'il présente des contradictions. Un indicateur d'état d'évaluation peut être utilisé. Ainsi, tant que l'évaluation n'a pas été effectuée, l'indicateur d'état est affiché sur l'interface graphique. Par exemple, le gestionnaire d'interface graphique peut faire apparaître la zone de nom sous forme ombrée, jusqu'à ce que le solveur ait évalué l'ensemble de contraintes. A l'étape 502 de la figure 8, le gestionnaire d'interface graphique 102 identifie d'abord le champ modifié et parcourt la nouvelle valeur spécifiée par l'utilisateur. Dans l'exemple de 20 la figure 9, le champ modifié est la zone de nom de la cellule 45. A l'étape 504, le gestionnaire d'objets identifie l'objet correspondant de la mémoire d'objets 104 ainsi que les attributs de cet objet à modifier. Dans l'exemple de la figure 9, l'attribut de nom "Name" de l'objet Cl et la nouvelle valeur à affecter à cet attribut "utilisé" sont identifiés. A l'étape 506, le gestionnaire d'objets 106 définit les couples {attribut, nouvelle valeur d'attribut} de l'objet Cl à ajouter dans la mémoire d'objets. Il essaie ensuite de les ajouter dans la mémoire d'objets. Pour cela, le gestionnaire d'objets 106 peut par exemple appliquer une méthode TryUpdate, comme indiqué dans la partie A21 de l'annexe A. A l'étape 508, le gestionnaire de contraintes 108 définit un ensemble de nouvelles contraintes associées aux couples {attribut, nouvelle valeur d'attribut} de l'objet Cl à ajouter dans la mémoire d'objets. Dans l'exemple de la figure 9, cet ensemble de contraintes ne comprend que le couple {attribut de nom, 'utilisé"}, où "utilisé" est la nouvelle valeur de l'attribut de nom. Le gestionnaire de contraintes 108 peut alors appliquer la méthode TryAddingConstraint, appelée par la méthode TryUpdate, comme indiqué dans la partie A22 de l'annexe A. Cette méthode a pour but d'évaluer les contraintes à ajouter pour que le système de contraintes ne présente pas de contradictions. Plus précisément, à l'étape 510, un système de contraintes est défini par le gestionnaire de 5 contraintes à partir de l'ensemble de contraintes courant tiré de la mémoire d'objets 104, et de la nouvelle contrainte définie pour l'attribut identifié. A l'étape 512, ce système de contraintes est évalué par le solveur 110. Celui-ci peut appliquer la procédure de vérification de contradiction CheckSatisfiability capable de tester 10 si le système de contraintes de l'étape 508 présente des contradictions. La résolution par le solveur peut avoir pour résultat: - de nouvelles contraintes générées par la résolution, dont celles tirées directement de l'action de l'utilisateur, lorsque le système ne présente pas de contradictions. - un message d'erreur indiquant que les actions de l'utilisateur présentent des contradictions lorsque le système de contraintes ne peut être satisfait. Par exemple, si la valeur entrée dans la nouvelle cellule est de type chaîne de caractère et que le type de la cellule est le type entier. Si le solveur graphique n'a détecté aucune contradiction, l'attribut correspondant à la nouvelle contrainte est modifié dans la mémoire d'objets. Par exemple, pour la zone de nom de la cellule 45 de la figure 9, l'attribut de "Cl.Name" reçoit la valeur "utilisé" qui correspond à la contrainte "C1.Name = utilisé", comme indiqué dans la partie A23 de l'annexe A. Toutefois, le résultat de la procédure de vérification CheckSatisfiability peut comprendre d'autres nouvelles contraintes. Les attributs correspondant à ces nouvelles contraintes sont également modifiés dans la mémoire d'objets. Par exemple, dans l'exemple de la figure 9, le solveur graphique a calculé que l'attribut de taille de la cellule Cl doit prendre la valeur 80. Ainsi, à l'étape 512, le gestionnaire d'objets 106 met à jour la mémoire d'objets 104 pour y ajouter les modifications portant non seulement sur l'attribut de nom "Cl.name", mais aussi sur l'attribut de taille de cellule "Cl.size" de l'objet Cl, alors que seules les modifications portant sur l'attribut de nom avait été spécifiée par l'utilisateur. La méthode update peut être utilisée pour mettre à jour ces attributs dans la mémoire d'objets 104 (ou DB), comme indiqué dans la partie A24 de l'annexe A. A l'étape 514, le gestionnaire d'interface graphique 102 met à i our l'affichage de l'interface graphique en fonction du contenu de la mémoire d'objets. En particulier, la zone de valeur de la cellule 45 n'est plus ombrée pour indiquer que l'action de l'utilisateur a été évaluée et est satisfaite. Les figures 10 à 13 montrent des étapes ultérieures de la construction de l'interface graphique des figures 7 et 9 afin de spécifier un problème mathématique et/ou logique à résoudre. Sur la figure 10, l'utilisateur a entré la valeur "3" dans la zone de valeur de la cellule 45. L'organigramme de la figure 8, qui illustre les étapes mises en oeuvre par le solveur graphique pour la modification d'une cellule sur l'interface graphique, s'applique donc à l'exemple de la figure 10. Lorsque l'utilisateur a modifié la zone de valeur de la cellule 45 en indiquant une nouvelle valeur "3", puis pressé la touche de validation, le solveur graphique 1 met en oeuvre l'organigramme de la figure 8, de la manière suivante: le gestionnaire d'interaction identifie le champ modifié, et parcourt la nouvelle valeur "3" saisie par l'utilisateur (étape 502). Le gestionnaire d'interface graphique identifie en outre le type de la nouvelle valeur. Chaque objet peut en effet comprendre un attribut de type dont la valeur indique le type de l'attribut de valeur de l'objet. L'identification du type de la nouvelle valeur, par exemple entier, permet donc de vérifier si la contrainte associée au type de l'objet est satisfaite. - Le gestionnaire d'interface graphique 102 détermine ensuite l'objet Cl correspondant au champ identifié, dans la mémoire d'objets 104, ainsi que l'attribut à modifier (Etape 504). Dans l'exemple de la figure 10, le champ modifié est la zone de valeur de la cellule 45, à laquelle correspond l'objet Cl et l'attribut de valeur d'objet Value. - Le gestionnaire d'objets 106 essaie alors de modifier l'attribut de valeur d'objet Value de l'objet Cl ainsi identifié, comme indiqué dans la partie A31 de l'annexe A. Le gestionnaire d'objets définit pour cela les nouveaux couples {attribut, valeur d'attribut} à ajouter dans la mémoire de contraintes, appelle le gestionnaire de contraintes et attend sa réponse (Etape 506). - Le gestionnaire de contraintes 108 essaie d'ajouter la nouvelle contrainte "CI.Value = 3", comme indiqué dans la partie A32 de l'annexe A. Cette contrainte est formée à partir de l'attribut identifié et de la nouvelle valeur à affecter à cet attribut (Etape 508). - Le gestionnaire de contraintes définit pour cela un nouveau système de contraintes à évaluer à partir de l'ensemble des contraintes stockées dans la mémoire de contraintes et de la nouvelle contrainte définie pour l'attribut Value identifié (Etape 510). - Le solveur 110 résout ce système de contraintes (Etape 512). Dans l'exemple de la figure 10, aucune contradiction n'est détectée avec les contraintes existantes. La contrainte évaluée "CI.Value = 3" peut donc être ajoutée. - Le gestionnaire d'objets 106 met alors à jour la mémoire d'objets 104 pour y ajouter les 10 modifications portant sur l'attribut de valeur d'objet Value de l'objet Cl, comme indiqué dans la partie A34 de l'annexe A (Etape 514). - Le gestionnaire d'interface graphique 102 génère alors un affichage de la mémoire d'objets 104, et affiche en particulier la nouvelle valeur "3" dans la zone de valeur, en 15 supprimant l'ombrage (Etape 516). La figure 11 représente un stade ultérieur de l'interface utilisateur. A ce stade ultérieur, il peut être noté que deux nouvelles cellules 47 et 49, ayant comme attribut de noms respectifs "Encore Disponible" et "Total Disponible" ont été créées. Ces cellules 47 et 49 comprennent une zone de nom, respectivement 471 et 473, et une zone de valeur, respectivement 491 et 493. Les organigrammes des figures 6 et 8 ont été mis en oeuvre pour créer ces deux cellules et modifier leurs noms. Les objets C2 et C3 ont été créés dans la mémoire d'objets en correspondance avec les cellules 47 et 49 respectivement. Sur la figure 11, l'interface graphique 101 comporte donc trois cellules 45, 47 et 49. Sur la figure 12, l'utilisateur crée une quatrième cellule 51 sur l'interface graphique 101. Cette quatrième cellule 51 est une cellule de contrainte principale qui ne comporte qu'une zone de valeur. Dans cette quatrième cellule, l'utilisateur spécifie une relation mathématique qui lie les valeurs des objets 45, 47 et 49 de l'interface graphique. Plus précisément, dans la zone de valeur de cette quatrième cellule 51, l'utilisateur spécifie 35 la relation suivante: Utilisé + Encore Disponible = Total Disponible. Cette relation peut être saisie directement par l'utilisateur ou au moyen d'outils disponibles dans le menu de l'interface graphique. Par exemple, l'utilisateur peut pointer d'abord la cellule 51 avec le bouton droit de la souris, puis pointer avec le bouton gauche de la souris la zone de valeur de la cellule 45, ce qui a pour effet d'afficher le nom "Utilisé" de la cellule 45 dans la zone de valeur de la cellule 51. L'utilisateur peut alors saisir l'opérateur "+" dans la zone de valeur de la cellule 51, à la suite. Il peut ensuite procéder de même pour spécifier les autres éléments de la relation "Encore Disponible", "_", et "Total Disponible". La relation spécifiée dans la zone de valeur de la quatrième cellule 51 définit ainsi une 10 contrainte principale qui lie les différents objets de l'interface graphique. Le solveur graphique 1 conforme à l'invention crée tout d'abord un objet C4 correspondant à cette cellule 51, en mettant en oeuvre l'organigramme de la figure 6. Le solveur graphique 1 conforme à l'invention modifie ensuite cet objet C4, suite à la spécification de la contrainte principale "Utilisé + Encore Disponible = Total Disponible" par l'utilisateur. Pour cela, le solveur graphique met en oeuvre l'organigramme de la figure 8. Plus précisément, une fois que l'utilisateur a spécifié la contrainte principale dans la zone de valeur de la cellule 51 et pressé la touche de validation: - Le gestionnaire d'interaction 102 identifie le champ modifié, et parcourt la relation spécifiée par l'utilisateur "Utilisé + Encore Disponible = Total Disponible" (étape 502). Le gestionnaire d'interface graphique 102 identifie l'objet C4 correspondant à ce champ modifié ainsi que l'attribut correspondant de cet objet. Dans l'exemple de la figure 12, cet attribut correspond à l'attribut de valeur C4.Value de l'objet C4 (Etape 504). Le gestionnaire d'interface graphique 102 identifie en outre les objets Cl, C2 et C3 associés respectivement aux noms d'objets Utilisé, Encore Disponible, et Total Disponible de la contrainte principale. - Le gestionnaire d'objets 106 essaie ensuite de modifier l'attribut de valeur C4.Value de 30 l'objet C4. - Le gestionnaire d'objets 106 essaie alors de modifier l'attribut de valeur de l'objet C4 ainsi identifié. Pour cela, le gestionnaire d'objets 106 peut appliquer la méthode TryUpdate, comme indiqué dans la partie A41 de l'annexe A. Les paramètres de cette méthode comprennent le nom de l'objet C4 à modifier, l'attribut de valeur de l'objet C4 qui doit être modifié C4.Value, et la nouvelle valeur "Cl. Value + C2. Value = C3. Value" à affecter à cet attribut de valeur (Etape 506). - Le gestionnaire de contrainte 108 définit alors une nouvelle contrainte associée au couple {ATTRIBUT de valeur d'objet C4.value, nouvelle valeur "C1.Value + C2.Value = C3.Value"} de l'objet C4 et essaie de l'ajouter dans la mémoire de contraintes (Etape 508). A cet effet, le gestionnaire de contraintes peut par exemple appliquer la méthode TryAddingConstraint, appelée par la méthode TryUpdate, comme indiqué dans la partie A42 de l'annexe A. - Plus précisément, le gestionnaire de contrainte définit un nouveau système de contraintes à évaluer, à partir de l'ensemble de contraintes stockées dans la mémoire de contraintes et 10 de la nouvelle contrainte ajoutée (étape 510). - Le solveur 110 évalue alors le système de contraintes défini à l'étape 512. Pour cela, il peut appliquer la procédure de vérification de contradictions CheckSatisfiability. - Le solveur 110 transmet alors le résultat de l'évaluation du système de contraintes au gestionnaire de contraintes. Dans l'exemple de la figure 12, le résultat évalué parle solveur 110 se présente sous la forme de contraintes à ajouter pour satisfaire l'ensemble du système de contraintes. Ces contraintes obtenues en résultat comprennent: la contrainte C4. Value = (Cl.Value +C2.Value = C3.Value), qui correspond à la contrainte principale spécifiée par l'utilisateur dans la cellule 51; la contrainte C2.Value = C3.Value - 3, qui résulte de la contrainte principale et de la contrainte de valeur de l'objet Cl, pour laquelle la valeur 3 avait été spécifiée; et la contrainte C3.Value = C2.Value + 3, évaluée de la même manière. - Le gestionnaire d'objets 106 met ensuite à jour la mémoire d'objets 104 pour y ajouter les modifications correspondantes portant sur les attributs de valeur des objets C4, C3 et C2. La méthode Update peut être utilisée pour mettre à jour ces attributs dans la mémoire d'objets 104, comme indiqué dans la partie A44 de l'annexe A (Etape 514). - Le gestionnaire d'interface graphique 102 génère ensuite un affichage des objets de la mémoire d'objets sur l'interface graphique (étape 516). Les actions successives de l'utilisateur sur l'interface graphique aboutissent ainsi à la spécification d'un problème mathématique à résoudre. L'utilisateur peut ainsi calculer la valeur de l'un des objets de la contrainte principale "Utilisé", "Encore Disponible" ou "Total Disponible", en fixant la valeur des autres objets. L'utilisateur peut également évaluer le problème spécifié à plusieurs reprises et pour différents jeux de valeurs, sans avoir à spécifier à nouveau le problème. Sur la figure 14, l'utilisateur évalue le problème spécifié pour un jeu de valeurs particulier. Pour évaluer un problème spécifié par l'utilisateur, le solveur graphique conforme à l'invention met en oeuvre les mêmes mécanismes que pour la spécification d'un problème, et en particulier l'organigramme de la figure 8. l 0 Dans l'exemple de la figure 13, l'utilisateur a saisi la valeur 40 dans la zone de valeur 493 de la cellule "Total Disponible", puis pressé la touche de validation. L'utilisateur cherche de cette manière à évaluer le problème spécifié pour la valeur particulière "40". Une fois que l'utilisateur a pressé la touche de validation, le solveur graphique conforme 15 à l'invention évalue ainsi le nouveau système de contraintes qui résulte de la dernière action de l'utilisateur sur l'interface graphique. L'organigramme de la figure 8, qui représente les étapes mises en oeuvre par le solveur graphique pour modifier un objet s'applique à nouveau: - Le gestionnaire d'interface graphique identifie le champ modifié (étape 502) sur l'interface graphique et parcourt la nouvelle valeur "40" affectée par l'utilisateur. Il détermine en outre le type de cette nouvelle valeur. - Le gestionnaire d'interface graphique peut de ce fait identifier l'objet C3 correspondant, ainsi que l'attribut de valeur C3.Value à modifier (étape 504). - Le gestionnaire d'objets 106 définit alors le nouveau couple {attribut, valeur d'attribut} à ajouter dans la mémoire d'objets puis essaie de mettre à jour la mémoire d'objets (étape 506). Pour cela, le gestionnaire peut appliquer la méthode TryUpdate, comme indiqué dans la partie A51 de l'annexe A. - Le gestionnaire de contraintes 108 définit alors la nouvelle contrainte associée au couple {C3.Value, 40} de l'objet C3 (étape 508). - Le gestionnaire de contraintes essaie alors d'ajouter cette nouvelle contrainte dans la mémoire de contraintes. Pour cela, le gestionnaire de contraintes peut par exemple appliquer la méthode TryAddingConstraint, appelée par la méthode TryUpdate, comme indiqué dans la partie A52 de l'annexe A. Plus précisément, le gestionnaire de contrainte définit un nouveau système de contraintes à évaluer à partir des contraintes déjà stockées dans la mémoire de contraintes, et de la nouvelle contrainte définie pour l'attribut identifié "C3. Value = 40" (étape 510). - Le solveur 110 évalue ensuite le système de contraintes (étape 512) et renvoie un résultat comprenant la contrainte "C3.Value = 40 " portant sur la valeur de l'objet C3 et une nouvelle contrainte "C2.Value = 37" portant sur la valeur de l'objet C2. Le gestionnaire de contraintes met à jour la mémoire d'objets en fonction des contraintes calculées par le solveur (étape 514), comme indiqué dans la partie A54 de l'annexe A. Ainsi, le gestionnaire de contraintes affecte la valeur "40" à l'attribut de valeur "C3.Value" de l'objet C3. Il affecte par ailleurs la valeur "37" à l'attribut de valeur "C2.Value" de l'objet C2, en remplacement de la valeur précédente "C3. Value - 3". - Le gestionnaire d'interface graphique génère alors un affichage de la mémoire d'objets ainsi mise à jour (étape 516). Un indicateur d'entrée/sortie, comme l'indicateur d'entrée/sortie 306 décrit en référence à la figure 3 pourrait être utilisé en relation avec chaque cellule 45, 47 et 49, représentant une variable, afin de distinguer les valeurs qui sont spécifiées par l'utilisateur, par exemple les valeurs des zones de valeur 453 et 493, de celles qui sont affichées par le solveur. En effet, une zone de valeur peut être en mode "entrée", "sortie", ou encore "indéterminé". Ainsi, l'utilisateur peut exprimer si la zone de valeur d'une cellule sera fournie par l'utilisateur ou bien si elle doit être calculée par le solveur. Le solveur utilise les données relatives aux zones en mode "entrée" pour le calcul des données relatives aux zones en mode "sortie" ou "indéterminé". Ainsi, la résolution de contraintes conformément à l'invention est mise en oeuvre non seulement pour évaluer un système d'équations mathématiques et logiques spécifié, mais aussi dans toutes les phases de création et de modification de l'interface graphique, que ce soit pour créer une cellule ou modifier un simple paramètre graphique. Il en résulte un système à la fois dynamique et cohérent. La spécification de modèles de résolution est ainsi simplifiée et plus intuitive. Le dispositif de l'invention peut en outre être adapté pour résoudre des contraintes sur différents domaines, par exemple sur des domaines réels, discrets, finis et booléens. Le dispositif de l'invention comporte alors un ensemble de sous-solveurs qui interagissent, et qui sont chacunassociés à une mémoire de travail élémentaire. La mémoire de contrainte regroupe les données de ces mémoires élémentaires. En complément, le solveur graphique conforme à l'invention peut comporter un mécanisme permettant de conserver provisoirement un historique des actions antérieures de l'utilisateur dans la mémoire d'objets, ce qui permet leur restauration et évite la réévaluation de ces actions. Par ailleurs, le solveur graphique 1 peut comporter un mécanisme d'affichage d'erreurs, pour indiquer à un utilisateur qu'une action ne peut être prise en compte, parce que la contrainte qui lui est associée génère un système de contraintes incohérent. Par exemple, de telles erreurs peuvent être indiquées en affichant la zone modifiée par l'utilisateur en rouge. L'invention n'est pas limitée aux modes de réalisation décrits ci-avant, à titre illustratif, mais englobe toutes les variantes que pourra envisager l'homme du métier dans le cadre des revendications ci-après. ANNEXE A Al-Création de Cl All.TryCreate Cl:= StandardNewCell (a, b) Al2. TryAddingConstraint Cl=MakeNewCell Position:= (a,b), Width:= DefaultWidth, Heigh:= DefaultHeigh, Name:= DefaultName, Value:= 0, Color:= DefaultColor) A13. Cl.Name = "Name" C1.Value = 0 Cl.Color = White Cl. Width = 60 C1.Heigh = 40 Cl.Position = (a,b) A14. Update DB (Cl, Name, "Name"; value, 0; Color, White; heigh, 40;; position, (a,b); width, 60) 25 A2-Mise à jour du nom "naine" de Cl A21. TryUpdate (Cl, Name "utilise") A22.TryAddingConstraint (Cl.Name = "utilise") A23. C1.Name = "utilise" Cl.Width = 80 A24. Update DB (Cl, Name, "utilise", width, 80) A3- Mise à jour de la valeur "value" de Cl A31. TryUpdate (Cl, Value, 3) A32. TryAddingConstraint (Cl.Value = 3) A33. C1.Value = 3 A34. Update DB (Cl, Value, 3) A4- Mise à jour de la valeur "value" de C4 A41. TryUpdate (C4, Value, C1.Value + C2.Value = C3.Value) A42.TryAddingConstraint C4.Value = MakeConstraint C1.Value+C2.Value =C3.Value)) A43. C4.Value = (Cl.Value + C2.Value = C3.Value) C2.Value = C3.Value - 3 C3.Value =C2.Value +3 A44. Update DB (C4, (Cl.Value + C2.Value = C3.Value); C2, (C3.Value - 3); C3, (C2.Value +3)) A5- Mise à jour de la valeur "value" de C3 A51. TryUpdate (C3, Value, 40) A52.TryAddingConstraint (C3.Value = 40) A53. C2.Value = 37 C3.Value = 40 A54. Update DB (C3, Value, 40; C2, Value, 37) Revendications 1. Dispositif informatique, du type comprenant: - un gestionnaire d'interface graphique (102), destiné à afficher des cellules en fonction de 5 données stockées dans une mémoire (104), - un solveur (110) capable de résoudre des systèmes d' équations mathématiques et logiques, et un gestionnaire de contraintes (108) entre ceux-ci, caractérisé en ce que les données stockées dans la mémoire sont des objets, comprenant chacun des attributs graphiques et un attribut de valeur, pouvant être complété par un 10 attribut de nom, chaque objet étant associé à une cellule affichée (303), et en ce que le gestionnaire de contraintes (108) est capable de réagir à une action de l'utilisateur sur l'interface graphique portant sur des attributs d'un objet, en formant un système de contraintes à partir de ces attributs et des attributs des objets stockés dans la mémoire, et en appliquant au solveur (110) le système de contraintes ainsi formé, les objets de la mémoire étant modifiés en fonction des contraintes ainsi appliquées. 2. Dispositif selon la revendication 1, caractérisé en ce que le dispositif comprend un gestionnaire d'objets (106) interagissant avec le gestionnaire d'interface graphique (102) et le gestionnaire de contraintes (108) pour modifier les objets de la mémoire d'objets. 3. Dispositif selon l'une des revendications 1 et 2, caractérisé en ce que chaque cellule de l'interface graphique comporte au moins une zone de valeur comprenant la valeur de l'attribut de valeur de l'objet associé à la cellule, pouvant être complétée par une zone de nom affichant le nom de l'objet associé à la cellule. 4. Dispositif selon la revendication 3, caractérisé en ce que la zone de valeur d'une cellule peut comporter une formule mathématique et/ou logique comprenant l'expression d'une condition entre la valeur de l'objet associé à la cellule et les valeurs de certains au moins des objets associés à d'autres cellules de l'interface graphique. 5. Dispositif selon les revendications 3 et 4, caractérisé en ce que la zone de valeur d'une cellule peut comporter une condition sur la valeur de l'objet associé à la cellule. 6. Dispositif selon l'une des revendications précédentes, caractérisé en ce que le gestionnaire de contraintes est capable de former une contrainte d'égalité à partir de chaque attribut de la mémoire (104) et de la valeur dudit attribut, et en ce que le système de contraintes est formé à partir de certaines au moins desdites contraintes. 7. Dispositif selon l'une des revendications précédentes, caractérisé en ce que chaque objet comporte en outre un attribut de type portant sur le type de l'attribut de valeur. 8. Dispositif selon l'une des revendications précédentes, caractérisé en ce que le solveur (110) est agencé pour fournir le résultat de la résolution au gestionnaire de contraintes (108) sous forme de contraintes et en ce que le gestionnaire d'objets est apte à tirer les attributs à modifier de ces contraintes. 9. Dispositif selon l'une des revendications précédentes, caractérisé en ce que le gestionnaire d'interface graphique est apte à afficher un indicateur d'entrée sortie sur l'interface graphique tant que le système de contraintes résultant de l'action de l'utilisateur n'a pas été résolu. 10. Procédé de résolution de contraintes, sur une interface graphique, sur laquelle des 15 cellules sont affichées en fonction de données stockées dans une mémoire, caractérisé en ce qu'il comprend les étapes suivantes: a) générer un affichage de départ sur une interface graphique tiré de données stockées, les données stockées étant de type objet, ayant chacun des attributs graphiques et un attribut de valeur, pouvant être complété par un attribut de nom, chaque objet étant associé à une cellule affichée sur l'interface graphique, b) en réponse à une action de l'utilisateur sur l'interface graphique portant sur des attributs d'un objet, former un système de contraintes à partir de ces attributs et des attributs des objets stockés dans la mémoire, c) résoudre le système de contraintes ainsi formé, d) modifier les données stockées, e) modifier l'affichage de départ en fonction des données modifiées à l'étape d).