[Next] [Previous] [Up] [Top] [Contents] [Index]
5-3 L'encodage d'un texte de loi - M-Lex
M-Lex est décrit avec plus de détails dans notre monographie Schneider (90). La structure générale de M-Lex reflète la structure de la loi: L'article 2 reflète la logique générale sous le titre §"Régime de l'autorisation": "L'acquisition d'immeubles par des personnes à l'étranger est subordonnée à une autorisation de l'autorité cantonale compétente". L'Art.3-1 complète: "l'autorisation n'est accordée que pour les motifs prévus dans la présente loi". On retrouve dans la figure 5-11 les contextes principaux de M-Lex
: "acquisition", "personne" et "motif", sur lesquels est fondée la décision: non-assujettissement et assujettissement accouplé à une autorisation ou à un refus.
Un ancien débat en informatique concerne les noms qu'il faut donner à des symboles dans un programme informatique. On peut se poser la même question au sujet des noms des règles et des paramètres. Lors de la création de M-Lex, nous nous sommes fondés sur les considérations suivantes:
En adaptant ces contraintes[72], nous avions adopté les conventions suivantes:
Voici un long extrait du système M-Lex qui montre la "hiérarchie au sommet" du système. Les lignes précédées par ";" sont des commentaires:
Les paramètres principaux guidant la décision:
;;; The top-parameter represents the four possible solutions of a case: ;;; authorization, refusal, non-subjection, non-solution (defparm *t-conc single (aut refus notsub imposs) top) ;;; The authorization regime: subjection or not (defparm *t-aut-reg yesno (yes no) top inferred) ;;; The acquisition: took place or not (defparm *t-ac yesno (yes no) top inferred) ;;; The person is foreign, or not, or something special (defparm *t-for-per single (yes no special) top inferred) ;;; the authorization grounds do exist or not (defparm *t-aut-mot yesno (yes no) top inferred)
Les règles guidant la décision:
;;; The dummy rule to start the back-chaining ;;; In order to start-up the system we tell him to find a value for ;;; the top parameter *t-conc, i.e. we simply trigger a premisse. (setq goal-rule (defrule $goal-rule (known *t-conc nil))) ;; First we decide whether somebody is subject to the authorization ;; system. If so, we check whether he will receive an ;; authorization. (defrule $t-decision-yes ;; the person is submitted to the authorization regime (defis *t-aut-reg yes) ;; and he gets an authorization (defis *t-aut-mot yes) ==> (advice-to |The acquisition will be authorized| 1.0) (*t-conc aut 1.0) ) ;; Same logic as before, but we check for refusal. ;; We will use eventually the conclusions triggered by $t-decision-yes. (defrule $t-decision-no ;; the person is submitted to the authorization regime (defis *t-aut-reg yes) ;; and doesn't get an authorization (notsame *t-aut-mot yes) ==> (advice-to |The acquisition will be refused| 1.0) (*t-conc refus 1.0) ) ;; Checks whether a person is submitted to the regime of authorization ;; cf. art 2 LFAIE ;; If the person did an acquisition (according to Art.4 and Art.7 LAIE), ;; it is checked whether if is "foreign". (defrule $t-aut-reg-yes ;; the person acquired real estate (defis *t-ac yes) ;; and it is foreign (defis *t-for-per yes) ==> (*t-aut-reg yes 1.0) (advice-to |The acquisition is subject to an authorization| 1.0) ) ;; If the person didn't acquire some real-estate, ;; we can immedialy make the general conclusion of ;; non-subjection. (defrule $t-aut-reg-no1 ;; the persone did not acquire a real estate (notsame *t-ac yes) ==> (*t-aut-reg yes -1.0) (advice-to |The acquisition is not subject to an authorization| 1.0) (*t-conc notsub 1.0) ) (defrule $t-aut-reg-no2 ;; the person acquired some real estate (defis *t-ac yes) ;; his status is known (known *t-for-per) ; simplify ? ;; but it is not foreign (or under foreign control) (notsame *t-for-per yes) ==> (*t-aut-reg yes -1.0) (advice-to |The acquisition is not subject to an authorization| 1.0) (*t-conc notsub 1.0) ) ;;; The next two rules are pessimistic about reality and our capacity (defrule $t-no-conc1 ;; It cannot be determined whether an acquisition was subject to an auth. (notknown *t-aut-reg) ==> (*t-conc imposs 1.0) (advice-to |No conclusion could be reached about the authorization regime | 1.0) ) (defrule $t-no-conc2 ;; A person is submitted to the authorization regime (defis *t-aut-reg yes) ;; ... but no motive can be found (notknown *t-aut-mot) ==> (*t-conc imposs 1.0) (advice-to |No conclusion could be reached, No authorization-motive| 1.0) )
On peut représenter ces paramètres et ces règles dans un arbre graphique de décision
qui met en valeur la complexité relative que possède déjà ce petit bout de M-Lex. Grâce aux extraits du système et à l'arbre dans la Figure 5-12: "Diagramme de la structure "top" de M-Lex" [p. 204], on peut voir comment fonctionne un système expert. Son exécution est étroitement liée à l'état de sa base de données. Le système démarre en tentant de déterminer la valeur du paramètre *t-conc, pour cela, il commence par exécuter la première règle dans la liste, soit "$t-decision-yes". Il tente de trouver d'abord une valeur pour le paramètre *t-aut-reg, à savoir s'il y a assujettissement au régime de l'autorisation. S'il trouve une valeur, le prochain paramètre ("*t-aut-mot*") est tracé. Si ces deux valeurs ne sont pas "yes" avec un CF de 1, le système essayera d'autres règles comme "$t-decision-no". Dans ce cas, il ne faut pas retracer les paramètres de cette règle car cela a déjà été fait. Le cheminement vers la décision se constitue donc d'une façon assez dynamique en fonction des besoins et des points connus.
[Next] [Previous] [Up] [Top] [Contents] [Index]
Generated with Harlequin WebMaker