Semntyk i Weryfikj Progrmów - Lortorium 7 Weryfikj twierdzeń logiznyh Cel. Celem ćwizeni jest zpoznnie się z metodą utomtyznego dowodzeni twierdzeń, tzn. weryfikji, zy dne twierdzenie jest tutologią (twierdzenie prwdziwe nzyw się tutologią). Przykłdmi tkih prolemów są: - dowodzenie twierdzeń w klsyznym ujęiu, tzn. zy z złożeni wynik tez (implikj) - dnie równowżnośi wyrżeń (np. wzory uprszzjąe) - weryfikj, zy progrm dje wynik zgodny ze swą speyfikją - weryfikj, zy shemt elektronizny, n którym m yć wzorowny progrm, relizuje wymgną funkję. Podstwowy progrm utomtyznego weryfiktor tutologii zprezentowno n wykłdzie 5 i nstępnyh. Poniżej podno wersję zmodyfikowną, wygodniejszą w użyiu i optymlniejszą pod względem zsu olizeń. Niżej omówiono jedynie różnie w stosunku do wersji oryginlnej oprogrmowni. Deklrj typu dnyh prop Wprowdzono infiksowe konstruktory typu i zdefiniowno ih priorytety, Uzupełniono typ prop o symolizną prwdę i fłsz. Ułtwi to symolizne zpisywnie wyrżeń rhunku zdń. infix 6 **; infix 5 ++; dttype prop = At of string (* tom *)!! of prop (* negj *) ++ of prop * prop (* lterntyw - sum *) ** of prop * prop (* koniunkj - ilozyn *) T F; (* symolizne prwd i flsz *) Przykłd Poniżej zdefiniowno tomy i zpisno symoliznie wyrżenie p or q nd r. vl p = At "p"; vl q = At "q"; vl r = At "r"; vl wyrz = p ++ q ** r; (* uzyie nwisow nie jest koniezne *) Implikj i równowżność. Zdefiniowno je infiksowo jko funkje o odpowiednih prioryteth: infix 4 --> ; fun p --> q =!!p ++ q; infix 4 <=> ; fun p<=>q = p ** q ++!!p **!! q; Przeksztłenie do normlnej formy negyjnej. Funkję nnf weryfiktor uzupełniono o nowe wrinty z wprowdzonymi konstruktormi T i F. fun nnf (At ) = At nnf (!!(At )) =!!(At ) nnf (!!T) = F (* zprzezenie prwdy jest flszem *) nnf (!!F) = T nnf T = T (* rk negji, konstruktor pozostje *) nnf F = F nnf (!!(!! p)) = nnf p (* podwojn negj *) nnf (!!((p++q))) = nnf (!!p **!!q) (* negj sumy,ilozyn negji *) nnf (!!((p**q)) = nnf (!!p ++!!q) nnf (p**q) = (nnf p) ** (nnf q) nnf (p++q) = (nnf p) ++ (nnf q); - -
Knonizn form koniunkyjn. Przytozone niżej funkje roz i nf nie wymgją wprowdzeni zmin. fun roz(p,q**r) = roz(p,q) ** roz(p,r) (* p+q*r = (p+q)*(p+r) *) roz(q**r,p) = roz(q,p) ** roz(r,p) (* q*r+p = (q+p)*(r+p) *) roz(p,q) = p ++ q ; (* zden skldnik nie jest koniunkj *) fun nf (p ++ q) = roz(nf p, nf q) (* Alt zstpione przez roz (j.w.) *) nf (p ** q) = (nf p) ** (nf q) (* rozkld skldnikow ilozynu *) nf p = p; (* pojedynzy tom lu stl *) Przeieg weryfikji. W lterntywh opróz tomów i ih negji występują terz konstruktor T i F. Sprwdznie poprwnośi wykonuje się w dwóh etph:. Sprwdzenie z pomoą podnej niżej funkji hk_lt, zy w lterntywie znjduje się T (wtedy jest on tutologią). (* sprwdzenie, zy w lterntywie znjduje się T *) fun hk_lt (T) = true (* tk, lterntyw jest tutologi *) hk_lt(p++q) = (hk_lt p) orelse (hk_lt q) hk_lt _ = flse;. Wyznzenie zęśi wspólnej list tomów znegownyh i nieznegownyh, podonie jk w dotyhzsowym weryfiktorze. Funkje neg i pos uzupełniono o wrinty z nowymi konstruktormi T i F (le są one pomijne). exeption NieCNF; (* wyrzenie nie przeksztlone do CNF *) fun pos (At ) = [] pos (!! (At _)) = [] pos (p++q) = pos p @ pos q pos T = [] pos F = [] pos _ = rise NieCNF; fun neg (At _) = [] neg (!! (At )) = [] neg (p ++ q) = neg p @ neg q neg T = [] neg F = [] neg _ = rise NieCNF; infix mem; fun x mem [] = flse x mem (y::l) = (x=y) orelse (x mem l); (* zes wspoln dwu list *) fun inter ([],ys)=[] inter (x::xs,ys) = if x mem ys then x::inter(xs,ys) else inter(xs,ys); Funkj sprwdzją (* funkj sprwdzj *) fun tut (p**q) = tut p ndlso tut q(* p,q - zynniki Kon *) tut p = (hk_lt p) orelse ([] <> inter(pos p, neg p)); fun hek(s) = tut (nf (nnf (s))); (* ziorz funkj *) Cły przedstwiony wyżej progrm znjduje się w złązonym pliku l_5.sml. - -
Przykłdy P.. Dowód twierdzeni Prwdziwość koniunkji implikuje prwdziwość lterntywy, tzn. p q ( p + q) vl p = At "p" nd q = At "q"; (* deklrje symoli jko tomy *) vl tw = p ** q --> (p ++ q); (* symolizny zpis twierdzeni *) hek tw; (* utomtyzn weryfikj *) P.. Równowżność wzorów A. Wykznie, że wyrżenie p + p p + q jest prwdziwe (true) dl dowolnyh p, q vl wyr = p ++!! (p **!!(p ++ q)); (* zpis wyrżeni *) hek wyr; (* weryfikj *) B. Sprwdzenie, że wyrżeni p q i ( p q) ( q p) są równowżne. vl wz = p <=> q; (* pierwszy wzor *) vl wz = (p-->q) ** (q-->p); (* drugi *) vl tw = wz <=> wz; (* twierdzenie o ih rownowznośi *) hek tw; (* weryfikj *) P.. Sterownie logizne Dny jest mikrokomputerowy ukłd START-STOP włązni i wyłązni pewnej mszyny. s t r t s t n s t o p µ P o u t M s t n Speyfikj progrmu m postć: OUT = ( START + STAN) STOP Sterownie jest relizowne przez progrm mikroproesor w dziedzinie oolowskiej. Jego zpis zgodny z metodą FBD (zo. wykł. 6) jest reprezentowny w posti rmek AND, OR, NOT (loków funkyjnyh) w posti ukłdu s t r t s t n O R y A N D o u t s t o p N O T y Niżej podno przykłdowy progrm relizująy tkie sterownie (wrtość logizn true, flse). (* funkje iliotezne występująe n shemie *) fun OR(x,x) = x orelse x; fun AND(x,x) = x ndlso x; fun NOT(x) = not x; (* funkj steruj *) fun strt_stop(strt, stn, stop) = let vl y = OR(strt,stn) (* wyjśie loku pierwszego *) vl y = NOT(stop) (* wyjśie loku drugiego *) vl y = AND(y,y); (* wyjśie loku trzeiego *) in y end; (* olizenie wyjsi ukldu - sterowni *) vl out = strt_stop(true, flse, flse); (* rezultt ool *) - -
Weryfikj progrmu sterująego Relizj i weryfikj w dziedzinie symoliznej jest nstępują: (* definij tomów reprezentujyh sygnly *) vl START = At "strt" nd STOP = At "stop" nd STAN = At "stn"; (* funkje symolizne *) fun OR_S(X,X) = X++X; fun AND_S(X,X) = X**X; fun NOT_S(X) =!!X; (* symolizne wykonnie odpowidje funkji strt_stop*) vl Y = OR_S(START,STAN); vl Y = NOT_S(STOP); vl Y = AND_S(Y,Y); vl OUT = Y; (* symolizny rezultt wykonni progrmu *) vl SPEC_OUT = (START ++ STAN) **!! STOP; (* speyfikj symolizn *) (* twierdzenie o rownowznosi speyfikji i wyniku *) vl tw = SPEC_OUT <=> OUT; hek tw; (* weryfikj - rezulttem jest true *) P. 4. Shemty elektronizne Progrmy relizująe funkje zezpiezeń są zęsto wzorowne n sprwdzonyh rozwiąznih sprzętowyh. N poniższyh rysunkh pokzno kolejno: ) ideę funkjonowni multiplekser 4: (4WE, WY) ) symol logizny multiplekser ) relizję funkji y = + + 4) relizję funkji y = d + d + d + d + d + d + d + d () () out S S () (4) S S MUX out S S MUX S S MUX y d y - 4 -
Speyfikj i relizj multiplekser Speyfikję możn zpisć jko y=!s!s x +!s s x +!s s x + s s x. Relizj multiplekser w dziedzinie oolowskiej jest nstępują: fun mux4(s,s,x,x,x,x) = if not s ndlso not s then x else if s ndlso not s then x else if not s ndlso s then x else x; Speyfikję możn zpisć symoliznie stosują pomonize wielowejśiowe funkje koniunkji i lterntywy. (* relizj symolizn funkji wielowejsiowyh *) fun OR4_S(X,X,X,X4) = X ++ X ++ X ++ X4; fun AND_S(X,X,X) = X ** X ** X; fun MUX4_S(S,S,X,X,X,X) = OR4_S( AND_S(!! S,!!S, X), AND_S( S,!!S, X), AND_S(!! S, S, X), AND_S( S, S, X) ); Sprwdzenie relizji funkji z rys. (* relizj symolizn funkji z rys. *) vl A = At "A" nd B = At "B" nd C = At "C"; vl ukld = MUX4_S(B, A, F, T, C,!!C); (* speyfikj *) vl spe = A ** B **!!C ++ A **!!B ** C ++!!A ** B; (* twierdzenie *) vl tw = ukld <=> spe; (* sprwdzenie *) hek tw; Rezulttem jest true, o potwierdz poprwność relizji. Sprwdzenie relizji funkji z rys. 4 (* relizj symolizn funkji z rys.4 *) vl A = At "A" nd B = At "B" nd C = At "C" nd D = At "D"; fun NAND_S(X,X) =!! (X ** X); (* definij funkji NAND *) vl Y = NAND_S(!!C,D); vl Y = MUX4_S(B, A, F, Y,!!C, Y); (* speyfikj *) vl spe = A ** B ** C ** D ++!!A ** B ** C ** D ++!!A ** B **!!C **!!D ++!!A ** B ** C **!!D ++ A **!!B **!!C **!!D ++ A **!!B **!!C ** D ++ A ** B **!!C **!!D ++ A ** B ** C **!!D ; (* twierdzenie *) vl tw = Y <=> spe; hek tw; (* sprwdzenie - trw dlugo ok. sekund!!!*) Poleeni - 5 -
. Zweryfikuj formlnie podne niżej równowżnośi: d + d = d + d + d = d. Zrelizuj (nrysuj shemt) i zweryfikuj formlnie ukłd multiplekser zudownego wyłąznie z wielowejśiowyh rmek NAND. Wskzówki. Wykorzystj speyfikję ukłdu w posti lterntywy koniunkji. Skorzystj z tożsmośi:!( ) =! Zstosuj w prktye przeksztłeni: + =!(!(+)) =!(!!) - 6 -
Zdni do smodzielnego rozwiązni. Udowodnij, że z złożeni ( + ) ) wynik tez (implikj).. Sprwdź formlnie, zy prwdziwe są nstępująe wzory? ) + + = ) + = ) + = +. Jką funkję relizuje przedstwiony n poniższym rysunku ukłd? Wykż formlnie. S S MUX f 4. Sprwdź formlnie które z poniższyh wzorów są prwdziwe? ) [( p q) r] [ p ( q r)] ) [( p q) r] [( p q) q r)] 5. Sprwdź formlnie które z poniższyh wzorów są prwdziwe? ) ( p + q) p + r) q + r) ( p + q) p + r) ) q [( p + q) p] 6. Dekoder jest ukłdem o n wejśih i n wyjśih. Do dekoder :4 dołązono sygnły A, B. Zproponuj ukłd, który dołązony do wyjść dekoder odtworzy sygnły A,B. Wykż formlnie poprwność dziłni. 7. Wykż słuszność nstępująego rozumowni: DX A? B A B Jeśli student nie złoży projektu, to nie zlizy przedmiotu X. Jeśli student nie zlizy przedmiotu X, to nie przejdzie n nstępny rok. Ztem jeśli student przeszedł n nstępny rok, to znzy, że musił złożyć projekt z przedmiotu X. Wskzówk. Jko tomy możn przyjąć nstępująe zdni logizne: ) student skłd projekt, ) przedmiot X zlizony, ) student przehodzi n nstępny rok. - 7 -
8. Zproponuj ukłd, który 4-itowe słowo uzupełni 5-tym item przystośi (even), tzn. słowo oryginlne słowo z item przystośi Jką funkję logizną relizuje ukłd? Podj speyfikję i zweryfikuj formlnie. Wsk.: Użyj rmek EXOR 9. Wykż, że poniższy ukłd relizuje podną funkję. x = ( + d) x d. Koder m zmienić kod unitrny z n kod BCD. Jeżeli wyjśiom,,, d przyporządkowć wgi =, =, =4, d=8, to otrzymuje się nstępująe wyrżeni logizne =x +x +x 5 +x 7 +x 9 =x +x +x 6 +x 7 =x 4 +x 5 +x 6 +x 7 d=x 8 +x 9 x x x... x 9 d Zproponuj progrmową relizję koder i wykż, że odpowid on speyfikji. - 8 -
. Dw spośród sześiu sygnłów sterująyh odłąznikmi trnsformtorów i odłąznikiem sekyjnym w stji dwutrnsformtorowej mją postć x = +, z = e + + + + d + + d gdzie:, stny przekźników podnpięiowyh ( jest npięie (true)), d stny odłązników trnsformtorów ( zmknięty) e stn odłąznik sekyjnego ( zmknięty) x z sygnł otwierni odłąznik trnsformtor I ( otwiernie) sygnł zmykni odłąznik sekyjnego ( zmyknie). Nrysuj shemt złożony z dowolnyh rmek i zweryfikuj go.. Udowodnij formlnie, że nstępująe dw ukłdy kominyjnie nie generują identyznyh wyjść. Y Y d. Górny moduł wyświetlz 7-segmentowego jest zplny zgodnie z funkją x = d + d + d + Zproponuj ukłd złożony z multiplekser 4: i rmek, który zrelizuje tką funkję. Wykż formlnie jego poprwność. - 9 -