Université e Sherrooe, Déprtement inormtique IGL50 : Méthoes ormelles en génie logiiel, Exmen inl Proesseur : Mr Frppier, Luni 6 éemre 0, 9h00 à h00, lol D-0 Doumenttion permise. Appreil életronique interit. L orretion est, entre utres, sée sur le it que hune e vos réponses soit lire, est-à-ire lisile et ompréhensile pour le leteur; préise, est-à-ire exte et sns erreur; onise, est-à-ire qu il n y it ps élément superlu; omplète, est-à-ire que tous les éléments requis sont présents. Ponértion : 5 6 7 Totl 0 0 0 0 0 0 0 0. (0 pts) Soit l spéiition B suivnte 'une ile, qui utilise une séquene pour représenter l ile. Rppel: En B, une séquene q seq(elem) est une ontion e type..r(q) à ELEM. On peut on utiliser pour une séquene tous les opérteurs es ensemles, ontions et reltions. MACHINE q SETS ELEM CONSTANTS PROPERTIES NAT VARIABLES q INVARIANT q seq(elem) INITIALISATION q := [] OPERATIONS eniler(e) = PREe ELEM r(q) < THEN q := q e END; eiler = PRE r(q) > 0 THEN q := til(q) END; r tete = PRE r(q) > 0 THEN r := irst(q) END END Complétez l'éuhe e son rinement onné à l pge suivnte. Ce rinement est sé sur le onept e liste irulire pour représenter une ile. L ile est stoée ns le veteur v e tille. L vrile inique le éut e l ile (l tête). L vrile inique l in (l queue) e l ile. L vrile n inique le nomre 'éléments ns l ile Qun on enile un élément, on l'joute à l position +. Qun on éile un élément, on inrémente simplement. Si ou tteignent l in u veteur (ie, l position ), on ontinue u éut u veteur, 'où l'ppelltion "irulire". Ainsi, on lule l position suivnte e à l'ie e l'opérteur mo. Pr exemple, l igure i-essous présente les trnsitions à prtir 'un étt où l ile [,,] est stoée ns le veteur v, ve en tête et en queue. e eniler() eiler eniler(e) [,,] [,,,] [,,] [,,,e] Solution: voir q_re.re /7
Voii quelques inies pour vous ier. Déinissez l onstnte su_, une ontion qui retourne le suesseur 'une position ns l liste; pr exemple, su_() = et su_() =. Utilisez ette ontion pour luler les vleurs e et. Déinissez l onstnte qv, une ontion qui pren en entrée, le éut e l ile ns v, et i, une position ns l ile q, et qui retourne l position orresponnte ns v; pr exemple, o qv()() = o qv()() = + o qv()() = REFINEMENT q_re REFINES q CONSTANTS su_, qv PROPERTIES su_ =... qv =... VARIABLES v,,,n INVARIANT v à ompléter /* Veteur es éléments e l ile */ à ompléter /* éut : position u premier élément e l ile */ à ompléter /* in : position u ernier élément e l ile */ n à ompléter /* n 'éléments e l ile */ /* invrint e ollge à ompléter */ à ompléter INITIALISATION OPERATIONS eniler(e) = à ompléter eiler = à ompléter r tete = à ompléter END. (0 pts) Donnez le rinement e l'opértion supprimer(e), qui supprime une ourrene e l'élément e e l ile. L'opérteur q j retourne les j premiers éléments e l séquene q. L'opérteur q j supprime les j premiers éléments e q. L'opérteur q ^ q retourne l onténtion es séquenes q et q. Inie: Utilisez l ontion su_ ve l omposition reltionnelle «;» pour éler ilement les éléments vnt ou près e. supprimer(e) = PRE e ELEM THEN IF e rn(q) THEN ANY p WHERE p om(q) q(p) = e THEN q := (q p-) ^ (q p) END END END; Solution: voir q_re.re /7
. (0 pts) () Spéiiez ve Alloy un système e ommunition sur internet similire à Sype, et qui ressemle u système téléphonique vu en lsse, mis en plus simple. Ce système se omporte omme suit. Si u est lire et si u est lire, Cll(u,u) permet à u 'ppeler u; u peut ensuite epter l'ppel, en isnt Aept(u), ou éliner, en isnt Deline(u). Qun u epte, u et u sont onnetés et peuvent se prler. Leur onverstion se termine qun l'un ou l'utre eetue un Terminte(ux). L'tion Cll(u,u) ne peut ps s'exéuter si u ou u n'est ps lire. L'ppelnt u peut nnuler un ppel qui n'est ps enore epté ou éliné, en isnt Cnel(u). Un utilisteur n'est ps lire qun il ppelle et qun il est ppelé. Il reevient lire près Deline, Cnel ou Terminte. Le igrmme étt-trnsition i-essous illustre e système. Dns l'étt initil u système, on suppose que tous les utilisteurs existent et qu'ils sont lires. On ne peut ps en jouter ou supprimer pr l suite. Deline(u) lire Cll(u,u) ppelnt Aept(u) onneté Cnel(u) Terminte(u) ou Terminte(u) () Donnez l'invrint e e système. Entre utres, ssurez-vous 'inlure les propriétés suivntes ns votre invrint. Il y en plusieurs utres. Un utilisteur ne peut ppeler ou être ppelé pr plus 'un utilisteur à l ois. Un utilisteur ne peut être onneté ve plus 'un utilisteur à l ois. Les étts lire, ppelnt et onneté sont mutuellement exlusis pour un utilisteur onné (pr exemple, un utilisteur ne peut être lire et onneté en même temps). () Prouvez ussi l propriété suivnte (qui n'est ps un invrint, on vous evez onner un he pproprié pour l prouver): Si eux utilisteurs sont lires, lors ils peuvent être onnetés (en isnt un Cll suivi 'un Aept). Utilisez les signtures suivntes pour votre spéiition. Pr souis e onision, vous n'vez ps à oer le préit Trnsition hituellement utilisé ns nos exemples (on le suppose onnu). open util/orering[stte] enum Event {init,ll,ept,eline,nel,terminte} sig User{} sig Stte { lire : set User, ppelnt : User - > User, onnete : User - > User, event : Event } Solution : voir q.ls /7
. (0 pts) Spéiiez en CSP le système érit à l question prééente, en omplétnt le oe suivnt. Vous n'vez qu'à onner le oe pour le proessus ppel. nuser = USER = {..nuser} - - tions u système hnnel ept, eline, nel, terminte : USER hnnel ll: USER.USER - - tions internes utilisées pour le ontrôle; à msquer ns le omportement inl hnnel lierer : USER.USER SYNC = { ll } CTRL = { lierer } Min = (tousappels [ union(sync,ctrl) ] ontroleappel({})) MinEnv = Min \ CTRL tousappels = n : USER @ ppel(n) ontroleappel(ppelnt) = [] n:user, n:user @ empty(inter({n,n},ppelnt)) & llnn - > ontroleappel(union(ppelnt,{n,n})) [] [] n:user, n:user @ lierernn - > ontroleappel(i(ppelnt,{n,n})) ppel(n) = à ompléter À titre e réérene, voii une ourte esriptions es ontions sur les ensemles utilisées ns le proessus ontroleappel. union(s,s) : retourne l'union es ensemles s et s. inter(s,s) : retourne l'intersetion es ensemles s et s. i(s,s) : retourne s - s. empty(s) : retourne vri ssi s est vie Solution : voir q.sp /7
5. (0 pts) Soit les opértions op et op suivntes. s op = ANY x WHERE x {,,} THEN s := x END s op = CHOICE s := OR s := END () Est-e que op op? Donnez une preuve si le rinement est vri, ou un ontre-exemple ns le s ontrire. Solution : Oui Preuve [ CHOICE s' := OR s' := END ] [ ANY x WHERE x {,,} THEN s := x END ] (s' = s) ó { éinition ANY } [ CHOICE s' := OR s' := END ] ( x. x {,,} ((s' = x)) ó { éinition CHOICE } ( x. x {,,} (( = x)) ( x. x {,,} (( = x)) ó { ré-ériture x en x } ( x. x {,,} (( = x)) ( x. x {,,} (( = x)) ó { éliminer x ve x:= pour le premier et x:= pour le euxième } = = () Est-e que op op? Donnez une preuve si le rinement est vri, ou un ontre-exemple ns le s ontrire. Solution : Fux. Contre-exemple: l sortie s:= n'est ps mise u niveu strit. Sémntique 6. (0 pts) Prouvez opértionnelle l trnsition esuivnte; CSP -utilisez règlesles inérene règles 'inérene onnées à l pge suivnte, et numérotez vos étpes e preuve. Note: P Q est noté ii P [ ] Q omme ns l version ASCII e CSP. SKIP [ ] ( STOP P 7 P STOP) \{} SKIP 7 ; STOP SKIP 7... Solution 7 P u 7 Q u P P Q 7 P 0 7 P 0 Q Q P Q 7 Q 0 7 P Q 0 P 7 P 0 6= Q 7 Q 0 6= P Q 7 P 0 P Q 7 Q 0 P 7 P 0 6= P ; Q 7 P 0 ; Q ; P 7 P 0 P ; Q 7 Q ; P 7 P 0 6 B [ {} P \ B 7 P 0 \ B P 7 P 0 \ P \ B 7 \ P 7 P 0 B P \ B 7 P 0 \ B \ 5/7 P 7 P 0 6 [ {} Q 7 Q 0 6 [ {}
SKIP [ ] ( STOP STOP) \{} ; STOP 7... SKIP 7 SKIP STOP 7 STOP STOP STOP 7 STOP SKIP [ ] ( STOP STOP) 7 SKIP [ ] STOP SKIP [ ] ( STOP STOP) \{} 7 SKIP [ ] STOP \{} SKIP [ ] ( STOP STOP) 7 SKIP [ ] STOP \{} ; STOP [ ] \ \{} ; STOP ; 7. (0 pts) Donnez le grphe e trnsition e l'expression suivnte. SKIP [ ] ( STOP STOP) \{} ; STOP 7... Solution t t 6/7
Sémntique opértionnelle e CSP - règles inérene Règles Note: 'inérene P Q est e CSP noté ii P [ ] Q omme ns l version ASCII e CSP. P 7 P SKIP 7 SKIP 7 P u 7 Q u P P Q 7 P 0 7 P 0 Q Q P Q 7 Q 0 7 P Q 0 P 7 P 0 6= Q 7 Q 0 6= P Q 7 P 0 P Q 7 Q 0 P 7 P 0 6= P ; Q 7 P 0 ; Q ; P 7 P 0 P ; Q 7 Q ; P 7 P 0 6 B [ {} P \ B 7 P 0 \ B P 7 P 0 \ P \ B 7 \ P 7 P 0 B P \ B 7 P 0 \ B \ P 7 P 0 6 [ {} P [ ] Q 7 P 0 [ ] Q [] Q 7 Q 0 6 [ {} P [ ] Q 7 P [ ] Q 0 [] P 7 P 0 Q 7 Q 0 P [ ] Q 7 P 0 [ ] Q 0 [] P 7 P 0 P [ ] Q 7 [ ] Q [] Q 7 Q 0 P [ ] Q 7 P [ ] [] 5 [ ] 7 [] 6 Deinition L ermeture trnsitive et relexive e l reltion e trnsition 7, notée 7,est un sous-ensemle e l espe BE ( ) Fin BE e l'exmen et elle est éinie omme suit. Soient B, B 0 BE es expressions e proessus, s ( ) une séquene et µ une tion.. B 7 B. B µ s 7 B 0, 9B 00 : B µ 7 B 00 ^ B 00 s 7 B 0 7/7