![]() PROP SAT är ett litet verktyg för att testa satisfierbarheten hos en satslogisk formel. Detta kan i sin tur användas för att testa kombinatoriska kretsar eller visa att en kombinatorisk krets uppfyller en (funktionell) specikation av kretsen. Båda dessa tillämpningar beskrivs nedan. Att använda PROP SATPROP SAT kan bara användas på IDAs SUN-system. Du startar PROP SAT genom att ge shellkommandot ~TTIT32/bin/propsat. (Eventuellt måste du först skriva kommandot module add prog/sicstus.) Systemet svarar med prompten: --> Följande kommandon är nu tillgängliga (observera att alla kommandon måste avslutas med en punkt och vagnretur):
Syntaxen hos FormlerSatsparametrar skrivs som identifierare inledda med stor bokstav. Sammansatta formler skrivs enligt följande: not(_) | and(_,_) | or(_,_) | implies(_,_) | eq(_,_) T.ex. är and(not(A),B) en satslogisk formel. Att Testa en Kombinatorisk KretsPROP SAT kan användas för att testa en kombinatorisk krets. Betrakta t.ex. följande krets: Kretsen kan beskrivas med följande logiska utsaga: eq(W, and(not(and(X, Y)), Z)) Om vi vill veta utsignalen från kretsen givet att X=Z=1 och Y=0 så kan vi be PROP SAT att försöka satisfiera uttrycket: --> and( and(X,and(not(Y),Z)), eq(W,and(not(and(X,Y)),Z)) ). W = 1 X = 1 Y = 0 Z = 1 No (more) --> Det vill säga, utsignalen (W) är 1. Vi kan även testa vilka insignaler som ger utsignalen 1: --> and( W, eq(W,and(not(and(X,Y)),Z)) ). W = 1 X = 0 Y = any Z = 1 W = 1 X = any Y = 0 Z = 1 No (more) --> Att Verifiera en Kombinatorisk KretsAntag att vi istället vill visa att kretsen ovan har egenskapen att utsignalen är 0 om insignalen Z är 0 (oavsett vad X och Y har för värden). Vi vill med andra ord visa att utsagan implies(not(Z),not(W)) följer logiskt ur designen. Detta kan vi visa genom att be PROP SAT visa att följande uttryck är osatisfierbart: --> and( not(implies(not(Z),not(W))), eq(W,and(not(and(X,Y)),Z)) ). No (more) Vi negerar alltså specifikationen och konjugerar den med designen. Uttrycket är ovan är osatisfierbart vilket yttrar sig i svaret No (more).
|