Verification-Homework1-94-95.pdf

‫درﺳﺘﻲﻳﺎﺑﻲ ﺳﻴﺴﺘﻢﻫﺎي واﻛﻨﺸﻲ‬
‫ﺗﻤﺮﻳﻦ اول‬
‫ﺗﺎرﻳﺦ ﺗﺤﻮﻳﻞ‪ 21 :‬اردﻳﺒﻬﺸﺖ‬
‫• از اﻧﺠﺎم ﺗﻜﺎﻟﻴﻒ ﺑﻪ ﺻﻮرت ﮔﺮوﻫﻲ ﺧﻮدداري ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫• ﻟﻄﻔﺎ ﭘﺎﺳﺦ ﺧﻮد را در ﻗﺎﻟﺐ ﻳﻚ ﮔﺰارش ﺑﺎ ﻓﺮﻣﺖ ‪ pdf‬ﺑﻪ ﻫﻤﺮاه ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﺳﻮال در ﻗﺎﻟﺐ ‪.pml‬‬
‫ﻓﺸﺮده ﻧﻤﻮده و ﺑﻪ آدرس ‪ [email protected]‬ارﺳﺎل ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫• از ﻗﺮار دادن ﭘﺎﺳﺦ در ﻣﺘﻦ اﻳﻤﻴﻞ ﺧﻮدداري ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫• ﺑﺮاي ارﺳﺎل اﻳﻤﻴﻞ از ﻋﻨﻮان ﺑﺎ ﻓﺮﻣﺖ ‪ StudentNo_FirstName_LastName_Ex1‬اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫• ﺳﻮاﻻت اﻳﻦ ﺗﻤﺮﻳﻦ در دو ﺑﺨﺶ ﻃﺮاﺣﻲ ﺷﺪه اﺳﺖ‪ .‬ﺑﺨﺶ اول ﺳﻮاﻻﺗﻲ اﺳﺖ ﻛﻪ ﻻزم اﺳﺖ ﭘﺎﺳﺦ آﻧﻬﺎ ﺗﺎﻳﭗ‬
‫ﺷﺪه و ﻳﺎ ﺑﻪ ﺻﻮرت ﺧﻮاﻧﺎ ﺑﺮ روي ﻛﺎﻏﺬ ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ و ﺗﺼﻮﻳﺮ آﻧﻬﺎ ﺑﺎ وﺿﻮح ﻣﻨﺎﺳﺐ در ﻓﺎﻳﻞ ﻓﺸﺮده ﺷﺪه‬
‫ارﺳﺎل ﺷﻮﻧﺪ‪ .‬ﺑﺨﺶ دوم ﺳﻮاﻻت ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﺳﺖ‪ .‬ﻧﺤﻮهي ﭘﺎﺳﺦدﻫﻲ ﺑﻪ ﻫﺮ ﺳﻮال ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت ﻣﻨﺎﺳﺐ‬
‫در ﻓﺎﻳﻞ ﮔﺰارش ارﺳﺎﻟﻲ‪ ،‬ﻣﻜﺘﻮب ﮔﺮدد‪ .‬ﺑﺮاي ﭘﺎﺳﺦ ﺑﻪ ﺳﻮاﻻت ﻻزم اﺳﺖ در اﺑﺘﺪا ﺑﺎ ﻗﻮاﻋﺪ ‪ Promela‬و‬
‫ﻧﺤﻮهي ﻛﺎر ﺑﺎ ‪ SPIN‬آﺷﻨﺎ ﺷﻮﻳﺪ‪ .‬ﺑﺮاي راﺣﺘﻲ ﺑﻬﺘﺮ اﺳﺖ ﺑﺎ ﻧﺴﺨﻪي ﮔﺮاﻓﻴﻜﻲ ‪ SPIN‬ﺑﺎ ﻧﺎم ‪ XSPIN‬آﻏﺎر ﺑﻪﻛﺎر‬
‫ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫ﺑﻨﺎﺑﺮاﻳﻦ‬
‫ﻣﻲﺷﻮد‬
‫ﺗﻮﺻﻴﻪ‬
‫در‬
‫اﺑﺘﺪا‬
‫ﺻﻔﺤﻪي‬
‫‪ http://spinroot.com/spin/Man/GettingStarted.html‬را ﻣﻄﺎﻟﻌﻪ ﻧﻤﺎﻳﻴﺪ‪ .‬در ﻗﺴﻤﺖ‬
‫"‪ "advanced options‬در ﻗﺴﻤﺖ "‪ "set verification parameters‬ﻋﻤﻖ ﺟﺴﺖوﺟﻮ را ﺗﺎ‬
‫‪ 1,000,000‬اﻓﺰاﻳﺶ دﻫﻴﺪ‪ .‬ﻣﻤﻜﻦ اﺳﺖ ﺑﻪ اﻓﺰاﻳﺶ ﻣﺎﻛﺰﻳﻤﻢ ﻣﺤﺪوده ي ﺣﺎﻓﻈﻪي ﻣﺼﺮﻓﻲ ﻧﻴﺰ ﻧﻴﺎز داﺷﺘﻪ‬
‫ﺑﺎﺷﻴﺪ‪.‬‬
‫ﺑﺨﺶ اول‪ :‬ﺳﻮاﻻت ﺣﻞﻛﺮدﻧﻲ‬
‫‪ -1‬وﻳﮋﮔﻲﻫﺎي زﻳﺮ را ﺑﺎ اﺳﺘﻔﺎده از ‪ LTL‬ﺑﻴﺎن ﻛﻨﻴﺪ‪ .‬ﻓﺮض ﺑﺮ اﻳﻦ اﺳﺖ ﻛﻪ ‪ p ،r‬و ‪ q‬ﮔﺰارهﻫﺎي اﺗﻤﻲ ﻫﺴﺘﻨﺪ‪.‬‬
‫اﻟﻒ( ‪ p‬ﺗﻨﻬﺎ ﺑﻪ ﺗﻌﺪاد دﻓﻌﺎت ﻣﺘﻨﺎﻫﻲ ﺑﺮﻗﺮار اﺳﺖ‪.‬‬
‫ب( ﻫﺮ ﮔﺎه ‪ p‬ﺑﺮﻗﺮار ﺑﺎﺷﺪ‪ ،‬آﻧﮕﺎه ‪ q‬ﺑﺎﻳﺪ ﺣﺪاﻗﻞ ﻳﻜﺒﺎر ﻗﺒﻞ از آن ﺑﺮﻗﺮار ﺑﺎﺷﺪ‪.‬‬
‫ج( ‪ p‬و ‪ q‬ﻳﻜﻲ در ﻣﻴﺎن )ﺑﻪ ﺻﻮرت ﻣﺘﻨﺎوب( ﺑﺮﻗﺮار ﻫﺴﺘﻨﺪ‪.‬‬
‫د( ﻫﺮﮔﺎه ‪ p‬ﺑﺮﻗﺮار ﺑﺎﺷﺪ‪ ،‬آﻧﮕﺎه ‪ q‬ﺑﻌﺪ از آن ﺑﻪ ﺗﻌﺪاد دﻓﻌﺎت ﻧﺎﻣﺘﻨﺎﻫﻲ ﺑﺮﻗﺮار اﺳﺖ‪.‬‬
‫‪ -2‬ﻓﺮض ﻛﻨﻴﺪ ‪ XU‬ﻋﻤﻠﮕﺮي ﺑﻪ ﻧﺎم ‪ next-until‬ﺑﺎﺷﺪ ﻛﻪ ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد‪:‬‬
‫)‪p XU q= X (p U q‬‬
‫‪١‬‬
‫درﺳﺘﻲﻳﺎﺑﻲ ﺳﻴﺴﺘﻢﻫﺎي واﻛﻨﺸﻲ‬
‫ﺗﻤﺮﻳﻦ اول‬
‫ﻧﺸﺎن دﻫﻴﺪ ﺗﻤﺎم ﻓﺮﻣﻮلﻫﺎي ‪ LTL‬ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮ ‪ ،XU‬ﻋﻤﻠﮕﺮﻫﺎي ﺑﻮﻟﻲ و ﺛﺎﺑﺖﻫﺎ ﻗﺎﺑﻞ ﺑﻴﺎن ﻫﺴﺘﻨﺪ‪ .‬ﺑﻪ‬
‫ﻋﺒﺎرت دﻳﮕﺮ ﺑﺮاي ﻫﺮ ﻳﻚ از ﻓﺮﻣﻮلﻫﺎي ‪ pUq ،Xp‬و ‪ Gp‬ﻓﺮﻣﻮل ﻣﻌﺎدﻟﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻨﻬﺎ ﺷﺎﻣﻞ ﻋﻤﻠﮕﺮ ‪،XU‬‬
‫ﻋﻤﻠﮕﺮﻫﺎي ﺑﻮﻟﻲ و ﮔﺰارهﻫﺎي اﺗﻤﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪ -3‬ﻛﺪاﻣﻴﻚ از ﻓﺮﻣﻮلﻫﺎي زﻳﺮ ﻫﻤﻮاره درﺳﺖ ﻫﺴﺘﻨﺪ‪ .‬اﮔﺮ ﻓﺮﻣﻮﻟﻲ ﻫﻤﻮاره درﺳﺖ اﺳﺖ ﺑﺮاي آن اﺛﺒﺎت و در ﻏﻴﺮ‬
‫اﻳﻦ ﺻﻮرت ﻣﺜﺎل ﻧﻘﺾ ﺑﻴﺎورﻳﺪ‪.‬‬
‫¬ ∨ ¬¬ → ∨ ‪a.‬‬
‫¬ → ¬ ‪b.‬‬
‫ → ¬ → ∨ ‪c.‬‬
‫ﺑﺨﺶ دوم‪ :‬ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﺎ ‪ Promela‬و اﺳﺘﻔﺎده از اﺑﺰار وارﺳﻲ ﻣﺪل ‪SPIN‬‬
‫‪ -1‬ﺗﻌﺪاد ﻣﺘﻨﺎﻫﻲ ﻓﺮآﻳﻨﺪ ﻳﻜﺴﺎن‪ ،‬ﺑﺎ ﺷﻨﺎﺳﻪي ﻣﻨﺤﺼﺮ ﺑﻪﻓﺮد‪ ،‬را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﻛﻪ ﺑﻪﺻﻮرت ﻣﻮازي اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﻫﺮ ﻓﺮآﻳﻨﺪ داراي ﻳﻚ ﺑﺨﺶ ﻏﻴﺮﺑﺤﺮاﻧﻲ و ﻳﻚ ﻧﺎﺣﻴﻪي ﺑﺤﺮاﻧﻲ اﺳﺖ‪ .‬در اﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬ﻫﺪف درﺳﺘﻲﻳﺎﺑﻲ ﻳﻚ‬
‫ﭘﺮوﺗﻜﻞ اﻧﺤﺼﺎر ﻣﺘﻘﺎﺑﻞ اﺳﺖ ﻛﻪ در آن در ﻫﺮ ﻟﺤﻈﻪ از زﻣﺎن ﺣﺪاﻛﺜﺮ ﻳﻚ ﻓﺮآﻳﻨﺪ در ﻧﺎﺣﻴﻪي ﺑﺤﺮاﻧﻲ ﺧﻮد‬
‫ﺣﻀﻮر دارد‪ .‬ﭘﺮوﺗﻜﻞ در ﻧﻈﺮﮔﺮﻓﺘﻪ ﺷﺪه در اﻳﻦ ﺗﻤﺮﻳﻦ ‪ Szymanski‬ﻧﺎم دارد‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﺗﻌﺪاد ﻓﺮآﻳﻨﺪﻫﺎ‬
‫ﺛﺎﺑﺖ و ﺑﺮاﺑﺮ ﺑﺎ ‪ n>0‬اﺳﺖ‪ .‬ﻳﻚ ﻣﺘﻐﻴﺮ ﺳﺮاﺳﺮي ﺑﺎ ﻃﻮل ‪ n‬ﺑﻪ ﻧﺎم ‪ flag‬وﺟﻮد دارد ﺑﻪﮔﻮﻧﻪ اي ﻛﻪ ﺑﺮاي ﻫﺮ‬
‫ < ≤ ‪ ، 0‬ﻣﻘﺪار ]‪ flag[i‬ﻣﺎﺑﻴﻦ ‪ 0‬ﺗﺎ ‪ 4‬ﺑﻮده و وﺿﻌﻴﺖ ﻓﺮآﻳﻨﺪ ‪ i‬را ﻧﺸﺎن ﻣﻲ دﻫﺪ‪ .‬ﭘﺮوﺗﻜﻞ اﺟﺮا ﺷﺪه‬
‫ﺗﻮﺳﻂ ﻓﺮآﻳﻨﺪ ‪ i‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪.‬‬
‫‪٢‬‬
‫درﺳﺘﻲﻳﺎﺑﻲ ﺳﻴﺴﺘﻢﻫﺎي واﻛﻨﺸﻲ‬
‫ﺗﻤﺮﻳﻦ اول‬
‫ﻻزم اﺳﺖ ﻗﺒﻞ از ﭘﺎﺳﺦ ﺑﻪ ﺳﻮاﻻت ﻣﻄﺮح ﺷﺪه در اﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬در اﺑﺘﺪا روﻧﺪ اﺟﺮاي ﭘﺮوﺗﻜﻞ و ﻫﻤﭽﻨﻴﻦ ﻋﻤﻠﻜﺮد‬
‫آن ﺑﺮاي ﺗﻀﻤﻴﻦ اﻧﺤﺼﺎر ﻣﺘﻘﺎﺑﻞ را ﺗﻮﺿﻴﺢ دﻫﻴﺪ‪.‬‬
‫‪ (1‬ﭘﺮوﺗﻜﻞ ﻣﺬﻛﻮر را ﺑﺎ ‪ Promela‬ﻣﺪل ﻧﻤﺎﻳﻴﺪ‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﻛﻪ ﺗﻤﺎﻣﻲ ﺗﺴﺖﻫﺎ ﺑﺮ روي ﻣﺘﻐﻴﺮ ﺳﺮاﺳﺮي‬
‫‪ ) flag‬ﻫﻤﺎﻧﻨﺪ ﺟﻤﻠﻪ ‪ 13‬در ﭘﺮوﺗﻜﻞ( ﺑﻪ ﺻﻮرت اﺗﻤﻴﻚ اﻧﺠﺎم ﻣﻲﺷﻮﻧﺪ‪ .‬ﺑﻪ اﻧﺪﻳﺲﻫﺎي ﻣﺘﻐﻴﺮ ‪ flag‬در‬
‫ﺗﺴﺖﻫﺎ دﻗﺖ ﻧﻤﺎﻳﻴﺪ‪ .‬ﭘﺮوﺗﻜﻞ را ﺑﻪ ﺻﻮرت ﭘﻴﻤﺎﻧﻪاي ﻣﺪل ﻧﻤﻮده ﺑﻪﮔﻮﻧﻪاي ﻛﻪ ﺗﻐﻴﻴﺮ ﺗﻌﺪاد ﻓﺮآﻳﻨﺪﻫﺎ در‬
‫آن ﺑﻪ ﺳﺎدﮔﻲ اﻧﺠﺎم ﭘﺬﻳﺮد‪.‬‬
‫‪ (2‬ﺑﺮاي ﺗﻌﺪادي از ﻣﻘﺎدﻳﺮ ‪ ، , 2‬ﺑﺮﻗﺮاري اﻧﺤﺼﺎر ﻣﺘﻘﺎﺑﻞ را ﺑﺮرﺳﻲ ﻧﻤﺎﻳﻴﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ﻧﺘﺎﻳﺞ ﺧﻮد را‬
‫ﺑﺮاي ‪ n=4‬ﮔﺰارش ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ (3‬ﻓﺮض ﻛﻨﻴﺪ ﻛﺪ ﭘﺮوﺗﻜﻞ‪ ،‬ﺑﻪ ﺑﺨﺶﻫﺎﻳﻲ ﺗﻘﺴﻴﻢ ﺷﻮد و ﻫﺮ ﺑﺨﺶ ﺑﺎ ﻧﺎم ذﻛﺮ ﺷﺪه در اداﻣﻪ ارﺟﺎع ﻳﺎﺑﺪ‪ .‬ﺑﻪ‪-‬‬
‫ﻋﻨﻮان ﻣﺜﺎل‪ ،‬ﺟﻤﻠﻪي ‪ 14‬ﺑﺎ ﻧﺎم راﻫﺮو‪ ،1‬ﺑﻪ ﺑﺨﺸﻲ ﻛﻪ ﺷﺎﻣﻞ ﺟﻤﻼت ‪ 16 ،15‬و ‪ 17‬اﺳﺖ ﺑﺎ ﻧﺎم اﺗﺎق‬
‫اﻧﺘﻈﺎر‪ 2‬و ﺑﻪ ﺑﺨﺶ ﻣﺘﺸﻜﻞ از ﺟﻤﻼت ‪ 18‬ﺗﺎ ‪ ) 112‬ﻛﻪ ﺷﺎﻣﻞ ﺑﺨﺶ ﻧﺎﺣﻴﻪي ﺑﺤﺮاﻧﻲ اﺳﺖ( ﺑﺎ ﻧﺎم ﺣﺮﻳﻢ‬
‫داﺧﻠﻲ‪ 3‬ارﺟﺎع ﺷﻮد‪ .‬در اﻳﻦ ﺳﻮال‪ ،‬ادﻋﺎﻫﺎي زﻳﺮ را ﺑﺎ اﺳﺘﻔﺎده از اﻇﻬﺎرﻧﺎﻣﻪ‪ 4‬ﺑﺮرﺳﻲ ﻧﻤﺎﻳﻴﺪ‪ .‬ﻻزم اﺳﺖ ﻛﺪ‬
‫ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﺳﻮال ﺑﺎ اﻳﺠﺎد ﺗﻐﻴﻴﺮ در ﻛﺪ اﺻﻠﻲ ﻫﻤﺮاه ﺑﺎ ﻧﺘﺎﻳﺞ درﺳﺘﻲﻳﺎﺑﻲ در ﮔﺰارش آورده ﺷﻮد‪ .‬در‬
‫ﺻﻮرﺗﻲ ﻛﻪ ﻧﺘﻴﺠﻪي درﺳﺘﻲﻳﺎﺑﻲ ﻣﻨﻔﻲ ﺑﻮد ﻻزم اﺳﺖ ﻣﺜﺎل ﻧﻘﺾ‪ 5‬اﻳﺠﺎد ﺷﺪه‪ ،‬در ﮔﺰارش آورده ﺷﻮد‪.‬‬
‫‪١‬‬
‫‪Doorway‬‬
‫‪٢‬‬
‫‪Waiting room‬‬
‫‪٣‬‬
‫‪Inner sanctum‬‬
‫‪٤‬‬
‫‪Assertion‬‬
‫‪٥‬‬
‫‪Counterexample‬‬
‫‪٣‬‬
‫درﺳﺘﻲﻳﺎﺑﻲ ﺳﻴﺴﺘﻢﻫﺎي واﻛﻨﺸﻲ‬
‫ﺗﻤﺮﻳﻦ اول‬
‫‪ (a‬ﻫﺮ زﻣﺎن ﻛﻪ ﻳﻚ ﻓﺮآﻳﻨﺪ در ﺣﺮﻳﻢ داﺧﻠﻲ ﻗﺮار دارد‪ ،‬راﻫﺮو ﻗﻔﻞ ﻣﻲﺷﻮد ﻛﻪ ﺑﻪ ﻣﻌﻨﺎي ﻋﺪم ﺣﻀﻮر ﻫﻴﭻ‬
‫ﻳﻚ از ﻓﺮآﻳﻨﺪﻫﺎ در ﻣﻜﺎن ‪ 14‬اﺳﺖ‪.‬‬
‫‪ (b‬در ﺻﻮرﺗﻲﻛﻪ ﻳﻚ ﻓﺮآﻳﻨﺪ ‪ i‬در ﻣﻜﺎن ‪ 111 ،110‬ﻳﺎ ‪ 112‬ﺑﺎﺷﺪ‪ ،‬آﻧﮕﺎه آن ﻓﺮآﻳﻨﺪ ﺣﺪاﻗﻞ اﻧﺪﻳﺲ را درﻣﻴﺎن‬
‫ﺗﻤﺎﻣﻲ ﻓﺮآﻳﻨﺪﻫﺎ در اﺗﺎق اﻧﺘﻈﺎر و ﺣﺮﻳﻢ داﺧﻠﻲ دارد‪.‬‬
‫‪ (c‬اﮔﺮ ﻓﺮآﻳﻨﺪي در ﻣﻜﺎن ‪ 112‬ﺣﻀﻮر دارد‪ ،‬آﻧﮕﺎه ﻣﻘﺪار ‪ flag‬ﻫﻤﻪي ﻓﺮآﻳﻨﺪﻫﺎ در اﺗﺎق اﻧﺘﻈﺎر و ﺣﺮﻳﻢ‬
‫ﺧﺼﻮﺻﻲ ﺑﺮاﺑﺮ ﺑﺎ ‪ 4‬اﺳﺖ‪.‬‬
‫) اﻳﻦ ﺳﻮال روﻧﻮﺷﺘﻲ از ﺗﻤﺮﻳﻦ ‪ 5.25‬ﻛﺘﺎب اﺳﺖ‪(.‬‬
‫‪ -2‬ﻳﻚ ﺳﻴﺴﺘﻢ ﺳﺎدهي ﻣﺨﺰن آب را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬اﻳﻦ ﺳﻴﺴﺘﻢ ﻣﺘﺸﻜﻞ از ﺳﻨﺴﻮر‪ ،‬ﻳﻚ ﻛﺎرﺑﺮ‪ ،‬وﺳﻴﻠﻪاي ﺑﺮاي‬
‫ﻛﻨﺘﺮل دﻫﺎﻧﻪي ورودي‪ 6‬و وﺳﻴﻠﻪاي ﺑﺮاي ﻛﻨﺘﺮل دﻫﺎﻧﻪي ﺧﺮوﺟﻲ‪ 7‬اﺳﺖ‪ .‬ﺳﻨﺴﻮر ﺳﻄﺢ آب درون ﻣﺨﺰن را‬
‫اﻧﺪازه ﮔﻴﺮي ﻣﻲﻛﻨﺪ‪ .‬وﺳﻴﻠﻪي ﻛﻨﺘﺮل دﻫﺎﻧﻪي ﺧﺮوﺟﻲ‪ ،‬آب را ﺑﺮاي ﻛﺎرﺑﺮ ﻓﺮآﻫﻢ ﻣﻲآورد‪ .‬ﺗﻘﺎﺿﺎي آب ﺗﻮﺳﻂ‬
‫ﻛﺎرﺑﺮ ﺛﺎﺑﺖ ﻧﺒﻮده و در ﻫﺮ ﻟﺤﻈﻪ از زﻣﺎن ﻛﺎرﺑﺮ ﺑﻪ ﺻﻮرت ﺗﺼﺎدﻓﻲ‪ ،‬ﺗﺼﻤﻴﻢ ﻣﻲﮔﻴﺮد ﻛﻪ درﺧﻮاﺳﺖ آب دﻫﺪ و‬
‫ﻳﺎ ﻧﺪﻫﺪ‪ .‬ﻫﺮﮔﺎه ﺳﻄﺢ آب ﻣﺨﺰن ﺑﻪ ‪ 20‬واﺣﺪ ﺑﺮﺳﺪ‪ ،‬ﺣﺴﮕﺮ دﻫﺎﻧﻪي ﺧﺮوﺟﻲ را ﺑﺴﺘﻪ و دﻫﺎﻧﻪي ورودي را ﺑﺎز‬
‫ﻣﻲﻧﻤﺎﻳﺪ‪ .‬اﻳﻦ اﻣﺮ ﻣﻮﺟﺐ اﻓﺰاﻳﺶ ﺳﻄﺢ آب درون ﻣﺨﺰن ﻣﻲﺷﻮد‪ .‬زﻣﺎﻧﻲ ﻛﻪ ﺳﻄﺢ آب ﺑﻪ ﻣﻘﺪار ‪ 30‬واﺣﺪ‬
‫ﺑﺮﺳﺪ‪ ،‬دﻫﺎﻧﻪي ورودي ﺑﺴﺘﻪ ﻣﻲﺷﻮد و دﻫﺎﻧﻪي ﺧﺮوﺟﻲ ﺑﺎز ﻣﻲﮔﺮدد‪ .‬ﺳﻴﺴﺘﻢ ﻣﺨﺰن آب را ﺑﺎ اﺳﺘﻔﺎده از‬
‫ﻓﺮآﻳﻨﺪﻫﺎﻳﻲ ﺑﺮاي ﺳﻨﺴﻮر‪ ،‬ﻛﺎرﺑﺮ‪ ،‬ﻛﻨﺘﺮلﻛﻨﻨﺪهي دﻫﺎﻧﻪي ورودي و ﻫﻤﭽﻨﻴﻦ ﺧﺮوﺟﻲ ﻣﺪل ﻧﻤﺎﻳﻴﺪ‪ .‬ﻣﺪل ﺷﻤﺎ‬
‫ﺑﺎﻳﺪ ﺷﺎﻣﻞ ﻳﻚ اﻇﻬﺎرﻧﺎﻣﻪ ﺟﻬﺖ ﺑﺮرﺳﻲ اﻳﻦ ﻣﺴﺎﻟﻪ ﺑﺎﺷﺪ ﻛﻪ ﺳﻄﺢ آب درون ﻣﺨﺰن ﻫﻤﻴﺸﻪ در ﻣﺤﺪودهي ‪20‬‬
‫ﺗﺎ ‪ 30‬واﺣﺪ اﺳﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﺮرﺳﻲ ﻧﻤﺎﻳﻴﺪ ﻛﻪ آﻳﺎ ﻛﺎرﺑﺮ "ﻫﻤﻴﺸﻪ ﺑﺎﻻﺧﺮه" درﺧﻮاﺳﺖ آب ﻣﻲدﻫﺪ؟‪ .‬در اﻳﻦ‬
‫ﺳﻮال در ﺻﻮرﺗﻲ ﻛﻪ ﺑﻪ ﻓﺮآﻳﻨﺪ دﻳﮕﺮ و ﻳﺎ ﻓﺮﺿﻴﻪي ﺧﺎﺻﻲ ﻧﻴﺎزﻣﻨﺪ ﺑﻮدﻳﺪ آن را ﺧﻮد اﻋﻤﺎل ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -3‬در اﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬درﺳﺘﻲ ﻳﻚ ﭘﺮوﺗﻜﻞ ﺗﻮﻛﻦ رﻳﻨﮓ ﺳﺎده ﺑﺮرﺳﻲ ﻣﻲﺷﻮد‪ .‬در ﭘﺮوﺗﻜﻞ ﺗﻮﻛﻦ رﻳﻨﮓ ﺑﺮاي ﺣﻞ‬
‫ﻣﺴﺎﻟﻪي اﻧﺤﺼﺎر ﻣﺘﻘﺎﺑﻞ‪ ،‬ﻓﺮآﻳﻨﺪﻫﺎي ‪ 0…N‬در ﻳﻚ ﺣﻠﻘﻪ ﺳﺎزﻣﺎﻧﺪﻫﻲ ﻣﻲﺷﻮﻧﺪ و ﻳﻚ ﺗﻮﻛﻦ در ﻃﻮل ﺣﻠﻘﻪ و‬
‫در ﻳﻚ ﺟﻬﺖ ﺛﺎﺑﺖ ﻣﺎﺑﻴﻦ ﻓﺮآﻳﻨﺪﻫﺎ در ﮔﺮدش اﺳﺖ‪ .‬ﻫﺮ ﻓﺮآﻳﻨﺪ } … ‪ {0‬داراي ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ‬
‫داﻣﻨﻪي }⊥ ‪ {0,1,‬اﺳﺖ ﻛﻪ در آن ⊥ ﻧﺸﺎندﻫﻨﺪهي ﻣﻘﺪار ﺧﺮاب اﺳﺖ‪ .‬ﻓﺮآﻳﻨﺪ < ≤ ‪ , 0‬داراي‬
‫ﺗﻮﻛﻦ اﺳﺖ و ﻣﻲﺗﻮاﻧﺪ وارد ﻧﺎﺣﻴﻪي ﺑﺤﺮاﻧﻲ ﺷﻮد اﮔﺮ و ﺗﻨﻬﺎ اﮔﺮ ﺑﺎ ﻣﻘﺪار ﻣﺘﻔﺎوت ﺑﺎﺷﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ‬
‫ﻓﺮآﻳﻨﺪ داراي ﺗﻮﻛﻦ اﺳﺖ اﮔﺮ و ﺗﻨﻬﺎ اﮔﺮ ﺑﺎ ﻣﻘﺪار ﻓﺮآﻳﻨﺪ ﺑﻌﺪي در ﺣﻠﻘﻪ ﻳﻌﻨﻲ ﻳﻜﺴﺎن ﺑﺎﺷﺪ‪ .‬ﻳﻚ‬
‫ﻓﺮآﻳﻨﺪ ﻳﻚ ﺗﻮﻛﻦ را از ﻓﺮآﻳﻨﺪ ﻣﺎﻗﺒﻠﻲ ﺧﻮد در ﺻﻮرﺗﻲ درﻳﺎﻓﺖ ﻣﻲﻧﻤﺎﻳﺪ ﻛﻪ ﻓﺮآﻳﻨﺪ ﻣﺎﻗﺒﻠﻲ ﺻﺎﺣﺐ ﺗﻮﻛﻦ ﺑﻮده‬
‫‪٦‬‬
‫‪Inlet‬‬
‫‪٧‬‬
‫‪Outlet‬‬
‫‪۴‬‬
‫درﺳﺘﻲﻳﺎﺑﻲ ﺳﻴﺴﺘﻢﻫﺎي واﻛﻨﺸﻲ‬
‫ﺗﻤﺮﻳﻦ اول‬
‫و ﻣﺘﻐﻴﺮ ‪ x‬آن ⊥ ﻧﺒﺎﺷﺪ‪ .‬ﺧﻄﺎﻫﺎ ﻣﻲﺗﻮاﻧﻨﺪ ﻣﻘﺪار ‪ x‬ﻳﻚ ﻓﺮآﻳﻨﺪ را ﺧﺮاب ﻧﻤﺎﻳﻨﺪ اﮔﺮ ﺣﺪاﻗﻞ دو ﻓﺮآﻳﻨﺪ ﺑﺎ ﻣﻘﺎدﻳﺮ‬
‫ﻏﻴﺮﺧﺮاب وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬
‫در اﻳﻦ ﺗﻤﺮﻳﻦ ﭘﺮوﺗﻜﻞ ذﻛﺮ ﺷﺪه را ﺑﺎ ‪ Promela‬ﺑﺮاي ‪ N=4‬و ﻣﻄﺎﺑﻖ ﺑﺎ ﻃﺮاﺣﻲ ﺧﻮد و ﺑﻪ ﺻﻮرت ﭘﻴﻤﺎﻧﻪاي‬
‫ﻣﺪل ﻧﻤﻮده ﺑﻪﮔﻮﻧﻪاي ﻛﻪ ﺑﺘﻮاﻧﻴﺪ درﺳﺘﻲ وﻳﮋﮔﻲ زﻳﺮ را ﺑﺮرﺳﻲ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪□ ◊Q‬‬
‫ﻛﻪ در آن ‪ Q‬ﮔﺰارهاي اﺳﺖ ﻛﻪ ﻋﺒﺎرت ﻣﻨﻈﻢ ﺑﺮ روي ﻣﻘﺎدﻳﺮ‪ x‬ﻓﺮآﻳﻨﺪﻫﺎ ﺑﻪ ﻓﺮم ‪0# 1$# ∪ 1# 0$#‬‬
‫را ارﺿﺎ ﻣﻲﻧﻤﺎﻳﺪ‪.‬‬
‫ﻣﻮﻓﻖ و ﺷﺎد ﺑﺎﺷﻴﺪ‪.‬‬
‫‪۵‬‬