Electronic System Level Design and Verification: Tip bij practicum Opdracht 2d.

© Harry Broeders.

Deze pagina is bestemd voor studenten van de Haagse Hogeschool - Academie voor Technology, Innovation & Society Delft groep MNES = minor Embedded Systems.

Opdracht 2d.

Bewijs dat de deur op verdieping X altijd open gaat als de lift op deze verdieping X aankomt. Tip: Je kunt hierbij handig gebruik maken van een logische implicatie. Zie: http://nl.wikipedia.org/wiki/Logische_implicatie. Z'n implicatie kan in een LTL formule worden opgenomen. Bijvoorbeeld: []((oorzaak) -> <> (gevolg)) wat betekent: altijd als oorzaak waar is dan zal ooit/uiteindelijk gevolg waar zijn. Hierbij zijn oorzaak en gevolg proposities (formules die waar of onwaar kunnen zijn). Als je een model op deze LTL formule wilt onderzoeken moet je eerst de LTL formule invoeren in het daarvoor bestemde veld, dan op "Translate" drukken en vervolgens in de dropdownbox waarin standaard "Safety" geselecteerd staat "Acceptance" selecteren en daarna op "Verify" drukken.

Tip:

Het is het eenvoudigst om dit voor elke verdieping afzonderlijk te bewijzen. Begin bijvoorbeeld met: Bewijs dat de deur op verdieping 2 altijd open gaat als de lift op verdieping 2 aankomt.

De propositie gevolg die beschrijft of de deur op verdieping 2 open is, is natuurlijk simpel: deur_open[2]. De propositie oorzaak die alleen waar is als de lift op verdieping 2 aankomt is niet zo simpel. Je zult hiervoor een extra array in het model moeten opnemen:

bool arrive[NF];

Bij aankomst op een verdieping x (in proctype elevator) kun je dan arrive[x] true maken en meteen weer false maken. De propositie arrive[2] kan dan als oorzaak gebruikt worden.

Om te controleren of je op correcte wijze hebt bewezen dat de deur op verdieping 2 altijd open gaat als de lift op verdieping 2 aankomt kun je laten zien dat SPIN wel een fout geeft als je probeert te bewijzen dat de deur op verdieping 3 altijd open gaat als de lift op verdieping 2 aankomt.