Promela
PROMELA (செயல்முறை அல்லது நெறிமுறை மெட்டா மொழி) என்பது ஜெரார்ட் ஜே. ஹோல்ஸ்மேன் அறிமுகப்படுத்திய சரிபார்ப்பு மாடலிங் மொழியாகும். எடுத்துக்காட்டாக, விநியோகிக்கப்பட்ட அமைப்புகள் மாதிரியாக ஒரே நேரத்தில் செயல்முறைகளை மாறும் வகையில் உருவாக்க மொழி அனுமதிக்கிறது. PROMELA மாதிரிகளில், செய்தி சேனல்கள் வழியாக தகவல்தொடர்புகளை ஒத்திசைவு (அதாவது, சந்திப்பு) அல்லது ஒத்திசைவற்ற (அதாவது, இடையகப்படுத்தப்பட்ட) என வரையறுக்கலாம். மாதிரியான அமைப்பு விரும்பிய நடத்தையை உருவாக்குகிறது என்பதை சரிபார்க்க, ப்ரோமெலா மாதிரிகளை ஸ்பின் மாதிரி சரிபார்ப்பவர் மூலம் பகுப்பாய்வு செய்யலாம். கம்ப்யூட்டர் எய்டட் வெரிஃபிகேஷன் ஆஃப் ஆட்டோமேட்டா (சிஏவிஏ) திட்டத்தின் ஒரு பகுதியாக இசபெல்லே/ஹோல் மூலம் சரிபார்க்கப்பட்ட ஒரு செயல்பாடும் கிடைக்கிறது. ப்ரோமெலாவில் எழுதப்பட்ட கோப்புகள் பாரம்பரியமாக. பி. எம். எல் கோப்பு நீட்டிப்பைக் கொண்டுள்ளன. PROMELA என்பது ஒரு செயல்முறை-மாடலிங் மொழியாகும், இதன் நோக்கம் இணையான அமைப்புகளின் தர்க்கத்தை சரிபார்க்க வேண்டும். PROMELA இல் ஒரு நிரலைப் பொறுத்தவரை, மாதிரியான அமைப்பின் செயல்பாட்டின் சீரற்ற அல்லது மறு செய்கை உருவகப்படுத்துதல்களைச் செய்வதன் மூலம் சரியான மாதிரியை ஸ்பின் சரிபார்க்க முடியும், அல்லது இது கணினி நிலை இடத்தின் விரைவான முழுமையான சரிபார்ப்பை செய்யும் ஒரு சி நிரலை உருவாக்க முடியும். உருவகப்படுத்துதல்கள் மற்றும் சரிபார்ப்புகளின் போது, டெட்லாக்குகள் இல்லாதது, குறிப்பிடப்படாத வரவேற்புகள் மற்றும் செயல்படுத்த முடியாத குறியீடு ஆகியவற்றை ஸ்பின் சரிபார்க்கிறது. கணினி மாறுபாடுகளின் சரியான தன்மையை நிரூபிக்க சரிபார்ப்பைப் பயன்படுத்தலாம், மேலும் இது முன்னேற்றம் இல்லாத செயலாக்க சுழற்சிகளைக் கண்டறிய முடியும். இறுதியாக, இது நேரியல் நேர தற்காலிக கட்டுப்பாடுகளின் சரிபார்ப்பை ஆதரிக்கிறது; ப்ரோமெலா ஒருபோதும் உரிமை கோரவில்லை அல்லது தற்காலிக தர்க்கத்தில் உள்ள கட்டுப்பாடுகளை நேரடியாக உருவாக்குவதன் மூலம். ஒவ்வொரு மாதிரியையும் சுற்றுச்சூழல் பற்றிய பல்வேறு வகையான அனுமானங்களின் கீழ் ஸ்பின் மூலம் சரிபார்க்க முடியும். ஒரு மாதிரியின் சரியான தன்மை ஸ்பின் மூலம் நிறுவப்பட்டவுடன், அந்த உண்மையை அடுத்தடுத்த அனைத்து மாதிரிகளின் கட்டுமானத்திலும் சரிபார்ப்பிலும் பயன்படுத்தலாம். PROMELA நிரல்கள் செயல்முறைகள், செய்தி சேனல்கள் மற்றும் மாறிகள் ஆகியவற்றைக் கொண்டுள்ளன. செயல்முறைகள் என்பது விநியோகிக்கப்பட்ட அமைப்பின் ஒருங்கிணைந்த நிறுவனங்களைக் குறிக்கும் உலகளாவிய பொருள்கள் ஆகும். செய்தி சேனல்கள் மற்றும் மாறிகள் ஒரு செயல்முறைக்குள் உலகளவில் அல்லது உள்ளூரில் அறிவிக்கப்படலாம். செயல்முறைகள் நடத்தையைக் குறிப்பிடுகின்றன, சேனல்கள் மற்றும் உலகளாவிய மாறிகள் செயல்முறைகள் இயங்கும் சூழலை வரையறுக்கின்றன. மொழி குறிப்பு தரவு வகைகள் PROMELA இல் பயன்படுத்தப்படும் அடிப்படை தரவு வகைகள் கீழே உள்ள அட்டவணையில் வழங்கப்பட்டுள்ளன. பிசி ஐ386/லினக்ஸ் இயந்திரத்திற்கு பிட்களில் அளவுகள் கொடுக்கப்பட்டுள்ளன. பிட் மற்றும் பூல் என்ற பெயர்கள் ஒரு பிட் தகவலுக்கு ஒத்த சொற்கள். ஒரு பைட் என்பது கையொப்பமிடப்படாத அளவு, இது 0 மற்றும் 255 க்கு இடையில் ஒரு மதிப்பை சேமிக்க முடியும். ஷார்ட்ஸ் மற்றும் இன்ட்ஸ் ஆகியவை கையொப்பமிடப்பட்ட அளவுகள், அவை வைத்திருக்கக்கூடிய மதிப்புகளின் வரம்பில் மட்டுமே வேறுபடுகின்றன. மாறிகள் வரிசைகளாகவும் அறிவிக்கப்படலாம். எடுத்துக்காட்டாக, பிரகடனம்ஃ வரிசை சந்தா வெளிப்பாடுகளில் அணுகக்கூடிய 10 முழு எண்களின் வரிசையை அறிவிக்கிறதுஃ x [0] = x [1] + x [2] ஆனால் வரிசைகளை உருவாக்கத்தில் கணக்கிட முடியாது, எனவே அவை பின்வருமாறு துவக்கப்பட வேண்டும்ஃ ஒரு வரிசையின் குறியீடு ஒரு தனித்துவமான முழு எண் மதிப்பை தீர்மானிக்கும் எந்த வெளிப்பாடாகவும் இருக்கலாம். வரம்பிற்கு வெளியே ஒரு குறியீட்டின் விளைவு வரையறுக்கப்படவில்லை. பல பரிமாண வரிசைகளை தட்டச்சு கட்டமைப்பின் உதவியுடன் மறைமுகமாக வரையறுக்க முடியும் (கீழே காண்க). செயல்முறைகள் ஒரு மாறி அல்லது செய்தி சேனலின் நிலை செயல்முறைகளால் மட்டுமே மாற்றப்படலாம் அல்லது பரிசோதிக்கப்படலாம். ஒரு செயல்முறையின் நடத்தை ஒரு புரோக்டைப் பிரகடனத்தால் வரையறுக்கப்படுகிறது. எடுத்துக்காட்டாக, பின்வருபவை ஒரு செயல்முறை வகை A ஐ ஒரு மாறி நிலையில் அறிவிக்கிறதுஃ புரோக்டைப் A () {பைட் நிலை; நிலை = 3;} புரோக்டைப் வரையறை செயல்முறை நடத்தையை மட்டுமே அறிவிக்கிறது, அது அதை செயல்படுத்தாது. ஆரம்பத்தில், PROMELA மாதிரியில், ஒரே ஒரு செயல்முறை செயல்படுத்தப்படும்ஃ init வகையின் ஒரு செயல்முறை, இது ஒவ்வொரு PROMELA விவரக்குறிப்பிலும் வெளிப்படையாக அறிவிக்கப்பட வேண்டும். ரன் அறிக்கையைப் பயன்படுத்தி புதிய செயல்முறைகளை உருவாக்க முடியும், இது ஒரு புரோக்டைப்பின் பெயரைக் கொண்ட ஒரு வாதத்தை எடுக்கும், இதிலிருந்து ஒரு செயல்முறை உடனடியாக உறுதிப்படுத்தப்படுகிறது. ரன் ஆபரேட்டரை ப்ராக்டைப் வரையறைகளின் உடலில் பயன்படுத்தலாம், ஆரம்ப செயல்பாட்டில் மட்டுமல்ல. இது PROMELA இல் செயல்முறைகளின் மாறும் உருவாக்கத்தை அனுமதிக்கிறது. ஒரு செயல்படுத்தும் செயல்முறை முடிவடையும் போது மறைந்துவிடும்-அதாவது, அது புரோக்டைப் வரையறையில் உடலின் முடிவை அடையும் போது, அது தொடங்கிய அனைத்து குழந்தை செயல்முறைகளும் நிறுத்தப்படும். ஒரு புரோக்டைப் செயலில் இருக்கலாம் (கீழே). அணுக் கட்டமைப்பு சுருள் பிரேஸ்களில் இணைக்கப்பட்டுள்ள அறிக்கைகளின் வரிசையை அணு என்ற முக்கிய வார்த்தையுடன் இணைப்பதன் மூலம், இந்த வரிசை ஒரு பிரிக்க முடியாத அலகாக செயல்படுத்தப்பட வேண்டும், வேறு எந்த செயல்முறைகளுடனும் இணைக்கப்படவில்லை என்பதை பயனர் குறிக்க முடியும். சரிபார்ப்பு மாதிரிகளின் சிக்கலைக் குறைப்பதில் அணு வரிசைகள் ஒரு முக்கியமான கருவியாக இருக்கலாம். அணு வரிசைகள் ஒரு விநியோகிக்கப்பட்ட அமைப்பில் அனுமதிக்கப்பட்ட இன்டர்லீவிங்கின் அளவைக் கட்டுப்படுத்துகின்றன என்பதை நினைவில் கொள்க. உள்ளூர் மாறிகளின் அனைத்து கையாளுதல்களையும் அணு வரிசைகளுடன் பெயரிடுவதன் மூலம் சிக்கலான மாதிரிகளை கையாளக்கூடியதாக மாற்றலாம். செய்தி அனுப்பும் செய்தி சேனல்கள் ஒரு செயல்முறையிலிருந்து மற்றொரு செயல்முறைக்கு தரவு பரிமாற்றத்தை மாதிரியாகப் பயன்படுத்தப்படுகின்றன. அவை உள்ளூரில் அல்லது உலகளவில் அறிவிக்கப்படுகின்றன, எடுத்துக்காட்டாக பின்வருமாறுஃ {குறுகிய} இன் chan qname = [16] இது 16 வகையான குறுகிய செய்திகளை சேமிக்கக்கூடிய ஒரு இடையக சேனலை அறிவிக்கிறது (திறன் இங்கே 16 ஆகும்). கூற்றுஃ பெயர்! எக்ஸ்பிரஸ் எக்ஸ்பிரஸின் மதிப்பை qname என்ற பெயருடன் சேனலுக்கு அனுப்புகிறது, அதாவது, அது சேனலின் வாலில் மதிப்பைச் சேர்க்கிறது. கூற்றுஃ பெயர்? எம்எஸ்ஜி; செய்தியைப் பெறுகிறது, சேனலின் தலைப்பிலிருந்து அதை மீட்டெடுக்கிறது, மேலும் அதை மாறி எம்எஸ்ஜியில் சேமிக்கிறது. சேனல்கள் முதல்-இன்-ஃபர்ஸ்ட்-அவுட் வரிசையில் செய்திகளை அனுப்புகின்றன. ஒரு சந்திப்பு துறைமுகத்தை கடையின் நீளம் பூஜ்ஜியத்துடன் ஒரு செய்தி சேனலாக அறிவிக்க முடியும். எடுத்துக்காட்டாக, பின்வருவனஃ {பைட்} இன் சான் போர்ட் = [0] பைட் வகை செய்திகளை அனுப்பக்கூடிய ஒரு சந்திப்பு துறைமுகத்தை வரையறுக்கிறது. இத்தகைய சந்திப்பு துறைமுகங்கள் வழியாக செய்தி தொடர்புகள் வரையறையின்படி ஒத்திசைவானவை, அதாவது. அனுப்புநர் அல்லது பெறுநர் (சேனலுக்கு முதலில் வருபவர்) இரண்டாவது (பெறுநர் அல்லது அனுப்புநர்) வரும் போட்டியாளரைத் தடுப்பார். ஒரு இடையக சேனல் அதன் திறனுக்கு நிரப்பப்படும்போது (அனுப்புதல் என்பது உள்ளீடுகளைப் பெறுவதற்கு முன்பு வெளியீடுகளின் "திறன்" எண்ணிக்கையாகும்), சேனலின் இயல்புநிலை நடத்தை ஒத்திசைவாக மாறும், மேலும் அனுப்புநர் அடுத்த அனுப்புதலைத் தடுப்பார். சேனல்களுக்கு இடையில் பகிரப்பட்ட பொதுவான செய்தி இடையக எதுவும் இல்லை என்பதைக் கவனியுங்கள். அதிகரித்து வரும் சிக்கலானது, ஒரு சேனலை ஒரு திசை மற்றும் பாயிண்ட் டு பாயிண்டாகப் பயன்படுத்துவதோடு ஒப்பிடும்போது, பல பெறுநர்கள் அல்லது பல அனுப்புநர்களுக்கு இடையில் சேனல்களைப் பகிர்ந்து கொள்ளவும், சுயாதீனமான தரவு-ஸ்ட்ரீம்களை ஒரே பகிரப்பட்ட சேனலில் இணைக்கவும் முடியும். இதிலிருந்து இருதரப்பு தகவல்தொடர்புக்கு ஒரு ஒற்றை சேனலும் பயன்படுத்தப்படலாம். கட்டுப்பாட்டு ஓட்ட கட்டமைப்புகள் PROMELA இல் மூன்று கட்டுப்பாட்டு ஓட்ட கட்டமைப்புகள் உள்ளன. அவை வழக்கு தேர்வு, மீண்டும் மீண்டும் செய்வது மற்றும் நிபந்தனையற்ற ஜம்ப் ஆகும். வழக்குத் தேர்வு எளிய கட்டமைப்பானது தேர்வு அமைப்பு ஆகும். எடுத்துக்காட்டாக, a மற்றும் b என்ற இரண்டு மாறிகளின் ஒப்பீட்டு மதிப்புகளைப் பயன்படுத்தி, ஒருவர் பின்வருவனவற்றை எழுதலாம்ஃ என்றால்ஃ: (a! = b)-> விருப்பம்1:: (a = = b)-> விருப்பம்2 ஃபை. பட்டியலில் இருந்து ஒரு வரிசை செயல்படுத்தப்படும். அதன் முதல் அறிக்கை செயல்படுத்தக்கூடியதாக இருந்தால் மட்டுமே ஒரு வரிசையைத் தேர்ந்தெடுக்க முடியும். ஒரு கட்டுப்பாட்டு வரிசையின் முதல் அறிக்கை காவலர் என்று அழைக்கப்படுகிறது. மேலே உள்ள எடுத்துக்காட்டில், காவலர்கள் பரஸ்பரம் பிரத்தியேகமானவர்கள், ஆனால் அவர்கள் இருக்க வேண்டியதில்லை. ஒன்றுக்கு மேற்பட்ட காவலர்கள் செயல்படுத்தக்கூடியதாக இருந்தால், அதனுடன் தொடர்புடைய வரிசைகளில் ஒன்று தீர்மானிக்கப்படாத வகையில் தேர்ந்தெடுக்கப்படுகிறது. அனைத்து காவலர்களும் செயல்பட முடியாவிட்டால், அவர்களில் ஒருவரைத் தேர்ந்தெடுக்கும் வரை செயல்முறை தடுக்கப்படும். (இதற்கு நேர்மாறாக, ஆக்சம் நிரலாக்க மொழி நிறுத்தப்படும் அல்லது செயல்படுத்தக்கூடிய காவலர்கள் இல்லாமல் தொடர முடியாது.) என்றால்ஃ: (A = = உண்மை)-> விருப்பம் 1;:: (B = = உண்மை)-> விருப்பம் 2;/* A = = உண்மை */:: இல்லையெனில்-> வீழ்ச்சி _ விருப்பம்; ஃபை எனில் இங்கு வரலாம். "பாரம்பரிய" நிரலாக்கத்தில், ஒருவர் ஒரு இஃப்-இஃப்-எல்ஸ் கட்டமைப்பை தொடர்ச்சியாகப் புரிந்துகொள்வார். இங்கே, இரட்டை பெருங்குடல்-இரட்டை பெருங்குடல் என்றால் "யாராவது தயாராக இருந்தால்" என்று புரிந்து கொள்ளப்பட வேண்டும், எதுவும் தயாராக இல்லை என்றால், அப்போதுதான் மற்றவை எடுக்கப்படும். என்றால்ஃ: மதிப்பு = 3;:: மதிப்பு = 4; ஃபை மேலே உள்ள எடுத்துக்காட்டில், மதிப்பு 3 அல்லது 4 என்ற மதிப்பை தீர்மானிக்காத வகையில் கொடுக்கப்பட்டுள்ளது. காவலர்களாக பயன்படுத்தக்கூடிய இரண்டு போலி அறிக்கைகள் உள்ளனஃ டைம்அவுட் ஸ்டேட்மென்ட் மற்றும் எல்ஸ் ஸ்டேட்மென்ட். டைம்அவுட் அறிக்கை ஒரு சிறப்பு நிபந்தனையை மாதிரியாகக் காட்டுகிறது, இது ஒருபோதும் உண்மையாகாத ஒரு நிபந்தனைக்கான காத்திருப்பதை நிறுத்த ஒரு செயல்முறையை அனுமதிக்கிறது. ஒரு தேர்வு அல்லது மறு செய்கை அறிக்கையில் கடைசி விருப்ப வரிசையின் ஆரம்ப அறிக்கையாக எல்ஸ் அறிக்கையைப் பயன்படுத்தலாம். அதே தேர்வில் உள்ள மற்ற அனைத்து விருப்பங்களும் செயல்படுத்தப்படாவிட்டால் மட்டுமே மற்றவை செயல்படுத்தப்படும். மேலும், மற்றவை சேனல்களுடன் இணைந்து பயன்படுத்தப்படாமல் போகலாம். மறுபயன்பாடு (சுழற்சி) தேர்வு கட்டமைப்பின் தர்க்கரீதியான நீட்டிப்பு என்பது மறுபயன்பாட்டு கட்டமைப்பாகும். எடுத்துக்காட்டாகஃ செய்யஃஃ எண்ணிக்கை = எண்ணிக்கை + 1:: a = b + 2:: (எண்ணிக்கை = = 0)-> இடைவெளி od என்பது PROMELA இல் மீண்டும் மீண்டும் செய்யப்படும் கட்டமைப்பை விவரிக்கிறது. ஒரு நேரத்தில் ஒரு விருப்பத்தை மட்டுமே தேர்ந்தெடுக்க முடியும். விருப்பத்தேர்வு முடிந்த பிறகு, கட்டமைப்பை செயல்படுத்துவது மீண்டும் மீண்டும் செய்யப்படுகிறது. மீண்டும் மீண்டும் கட்டமைப்பை நிறுத்துவதற்கான சாதாரண வழி ஒரு இடைவெளி அறிக்கையுடன் உள்ளது. இது கட்டுப்பாட்டை உடனடியாக மீண்டும் மீண்டும் கட்டமைப்பைப் பின்பற்றும் அறிவுறுத்தலுக்கு மாற்றுகிறது. நிபந்தனையற்ற தாவல்கள் ஒரு வளையத்தை உடைப்பதற்கான மற்றொரு வழி கோட்டோ அறிக்கை ஆகும். எடுத்துக்காட்டாக, மேலே உள்ள உதாரணத்தை பின்வருமாறு மாற்றியமைக்கலாம்ஃ செய்யுங்கள்ஃஃ எண்ணுதல் = எண்ணிக்கை + 1:: a = b + 2:: (எண்ணிக்கை = = 0)-> முடிந்தது od முடிந்ததுஃ தவிர்க்கவும்; இந்த எடுத்துக்காட்டில் உள்ள கோட்டோ முடிந்தது என்ற பெயரிடப்பட்ட லேபிளுக்கு குதிக்கிறது. ஒரு அறிக்கைக்கு முன் மட்டுமே ஒரு லேபிள் தோன்ற முடியும். நிரலின் முடிவில் குதிக்க, எடுத்துக்காட்டாக, ஒரு போலி அறிக்கையைத் தவிர்ப்பது பயனுள்ளதாக இருக்கும்ஃ இது எப்போதும் செயல்படுத்தக்கூடிய மற்றும் எந்த விளைவையும் ஏற்படுத்தாத ஒரு இடத்தை வைத்திருப்பவர். கூற்றுக்கள் PROMELA இல் ஒரு முக்கியமான மொழி கட்டமைப்புக்கு ஒரு சிறிய விளக்கம் தேவைப்படுகிறது. வடிவத்தின் அறிக்கைகள்ஃ வலியுறுத்தல் (ஏதேனும் _ பூலியன் _ நிபந்தனை) எப்போதும் செயல்படுத்தக்கூடியவை. குறிப்பிட்ட பூலியன் நிலை இருந்தால், அந்த அறிக்கை எந்த விளைவையும் ஏற்படுத்தாது. இருப்பினும், நிபந்தனை அவசியம் இல்லை என்றால், அறிக்கை ஸ்பின் உடன் சரிபார்ப்புகளின் போது ஒரு பிழையை உருவாக்கும். சிக்கலான தரவு கட்டமைப்புகள் முன் வரையறுக்கப்பட்ட அல்லது முந்தைய வரையறுக்கப்பட்ட வகைகளின் தரவு பொருட்களின் பட்டியலுக்கு ஒரு புதிய பெயரை அறிமுகப்படுத்த PROMELA வரையறையைப் பயன்படுத்தலாம். புதிய வகை பெயர் புதிய தரவு பொருள்களை அறிவிக்கவும் உடனடியாகவும் பயன்படுத்தப்படலாம், அவை எந்தவொரு சூழலிலும் வெளிப்படையான வழியில் பயன்படுத்தப்படலாம்ஃ ஒரு தட்டச்சு கட்டமைப்பில் அறிவிக்கப்பட்ட புலங்களுக்கான அணுகல் சி நிரலாக்க மொழியில் உள்ள அதே முறையில் செய்யப்படுகிறது. எடுத்துக்காட்டாகஃ MyStruct x; x.Field1 = 1; என்பது செல்லுபடியாகும் PROMELA வரிசையாகும், இது மாறி x இன் புலம் 1 க்கு மதிப்பு 1 ஐ ஒதுக்குகிறது. செயலில் உள்ள முன்னொட்டு வகைகள் செயலில் உள்ள முக்கிய வார்த்தையை எந்தவொரு முன்னொட்டு வரையறைக்கும் முன்னொட்டு வைக்கலாம். முக்கிய சொல் இருந்தால், அந்த புரோக்டைப் இன் ஒரு எடுத்துக்காட்டு ஆரம்ப அமைப்பு நிலையில் செயலில் இருக்கும். அந்த புரோக்டைப்பின் பல உடன்தொடர்களை முக்கிய வார்த்தையின் விருப்ப வரிசை பின்னொட்டு மூலம் குறிப்பிடலாம். எடுத்துக்காட்டுஃ ஆக்டிவ் ப்ராக்டைப் A () {.} ஆக்டிவ் [4] ப்ராக்டைப் B () {.} எக்ஸிக்யூடபிலிட்டி எக்ஸிக்யூடபிலிட்டி சொற்பொருள் செயல்முறை ஒத்திசைவுகளை மாடலிங் செய்வதற்கான ப்ரோமெலாவில் அடிப்படை வழிமுறைகளை வழங்குகிறது. mtype = {M _ UP, M _ DW}; chan chan _ ڊیٽا _ டவுன் = [0] ஆஃப் {mtype}; chan chan _ டேடா _ அப் = [0] ஆஃப் {mtype}; புரோக்டைப் P1 (chan chan _ டேடா _ இன், chan _ டேடா _ அவுட்) {செய்ய வேண்டியவைஃ: chan _ டேடா _ இன்? M _ UP-> தவிர்க்கவும்;:: சான் _ டேட்டா _ அவுட்! M _ DW-> ஸ்கிப்; od;}; புரோக்டைப் P2 (சான் சான் _ டேட்டா _ இன், சான் _ டேட்டா _ அவுட்) {செய்ய வேண்டியவைஃ: சான் _ டேட்டா _ இன்? M _ DW-> தவிர்க்கவும்;:: சான் _ டேட்டா _ அவுட்! எடுத்துக்காட்டில், P1 மற்றும் P2 ஆகிய இரண்டு செயல்முறைகளும் (1) மற்றொன்றிலிருந்து உள்ளீடு அல்லது (2) மற்றொன்றுக்கு வெளியீடு என்ற தீர்மானிக்கப்படாத தேர்வுகளைக் கொண்டுள்ளன. இரண்டு சந்திப்புகள் கைகுலுக்கல்கள் சாத்தியம், அல்லது செயல்படுத்தக்கூடியவை, அவற்றில் ஒன்று தேர்ந்தெடுக்கப்படுகிறது. இது என்றென்றும் மீண்டும் மீண்டும் நிகழ்கிறது. எனவே, இந்த மாதிரி முட்டுக்கட்டை போடாது. மேலே உள்ளதைப் போன்ற ஒரு மாதிரியை ஸ்பின் பகுப்பாய்வு செய்யும் போது, அது தீர்மானிக்கப்படாத வழிமுறையுடன் தேர்வுகளை சரிபார்க்கும், அங்கு அனைத்து செயல்படுத்தக்கூடிய தேர்வுகளும் ஆராயப்படும். இருப்பினும், ஸ்பினின் சிமுலேட்டர் சாத்தியமான சரிபார்க்கப்படாத தகவல்தொடர்பு வடிவங்களைக் காட்சிப்படுத்தும் போது, அது "தீர்மானிக்கப்படாத" தேர்வைத் தீர்க்க ஒரு சீரற்ற ஜெனரேட்டரைப் பயன்படுத்தலாம். எனவே, சிமுலேட்டர் ஒரு மோசமான செயல்பாட்டைக் காட்டத் தவறிவிடலாம் (எடுத்துக்காட்டாக, மோசமான பாதை இல்லை). இது சரிபார்ப்பு மற்றும் உருவகப்படுத்துதலுக்கு இடையிலான வேறுபாட்டை விளக்குகிறது. கூடுதலாக, சுத்திகரிப்பைப் பயன்படுத்தி ப்ரோமெலா மாதிரிகளிலிருந்து செயல்படுத்தக்கூடிய குறியீட்டை உருவாக்கவும் முடியும். முக்கிய வார்த்தைகள் பின்வரும் அடையாளங்காட்டிகள் முக்கிய வார்த்தைகளாக பயன்படுத்த ஒதுக்கப்பட்டுள்ளன. குறிப்புகள் வெளிப்புற இணைப்புகள் சுழல் முகப்புப்பக்கம் சுழல் பயிற்சிகள் மற்றும் ஆன்லைன் குறிப்புகள் சுருக்கமான ப்ரோமெலா குறிப்பு கணினி உதவியுடன் தானியங்கி சரிபார்ப்புஃ "தி சிஏவிஏ திட்டம்" (2010-2019) மற்றும் "சரிபார்க்கப்பட்ட மாதிரி சரிபார்ப்பவர்கள்" (2016-கர்ர்) வலைத்தள விவரக்குறிப்பு மொழிகள் மாதிரி சரிபார்ப்புகள்