आपका स्वयंसिद्ध वास्तव में स्वयंसिद्ध नहीं है, यह परिकल्पना गायब है। होरे तर्क की सरल प्रस्तुतियों ने फॉर्मूले के फॉर्मूले में हेरफेर किया जहां और तार्किक सूत्र हैं और एक कमांड है। आपको यह सुनिश्चित करने की आवश्यकता है कि अच्छी तरह से गठित है । सरल भाषाओं में जैसे कि अक्सर होरे तर्क के पहले परिचय के लिए उपयोग किया जाता है, अच्छी तरह से गठन वाक्यविन्यास है: यह आम तौर पर उस की जांच का विषय{P}C{P′}PP′CCCएक संदर्भ-मुक्त व्याकरण के अनुरूप है, और संभवत: मुक्त चर एक अनुमत सेट के भीतर हैं। यदि भाषा में वे शब्द शामिल हैं जिनमें अर्थ संबंधी शुद्धता है, जैसे कि सरणी तत्वों तक पहुंच, तो आपको इस शब्दार्थ शुद्धता को व्यक्त करने के लिए परिकल्पना जोड़ने की आवश्यकता है।
औपचारिक रूप से, आप अभिव्यक्तियों और आदेशों के सुधार को व्यक्त करने के लिए निर्णय जोड़ सकते हैं। यदि अभिव्यक्तियों का कोई दुष्प्रभाव नहीं है, तो उन्हें बिना किसी पूर्व शर्त के, केवल पूर्व शर्त की आवश्यकता होती है। उदाहरण के लिए, आप अच्छी तरह से गठित नियम लिख सकते हैं जैसे कि
और केवल आदेशों में अच्छी तरह से निर्मित अभिव्यक्तियों की अनुमति देते हैं:
{P}E wf{P∧0≤E<length(A)}A[E] wf{P}E1 wf{P}E2 wf{P}E1+E2 wf
{P[x←E]}E wf{P[x←E]}x:=E{P}
एक अलग दृष्टिकोण सभी अभिव्यक्तियों को अच्छी तरह से निर्मित करने के लिए है, लेकिन किसी भी अभिव्यक्ति को बनाने के लिए एक बीमार-गठन गणना में एक विशेष मूल्य । रन-टाइम सीमा की जाँच करने वाली भाषाओं में, अर्थ है "इस प्रोग्राम ने एक घातक अपवाद उठाया"। फिर आप इस बात पर नज़र रखेंगे कि क्या एक लॉजिकल प्रेडिक्टेट माध्यम से प्रोग्राम को गलत किया गया है ; एक कार्यक्रम केवल तभी मान्य होता है जब आप यह साबित कर सकते हैं कि इसके उत्तरार्ध का अर्थ _ _ _bbf ।
errorerrorError¬Error
{P[x←E]}x:=E{P∨Error}P[x←E]⟹E↛error{P[x←E]}x:=E{P}
फिर भी एक और तरीका यह है कि कार्यक्रम को सही ढंग से समाप्त करने के लिए एक होरे ट्रिपल पर विचार किया जाए। यह नॉन-डेमिनेटिंग प्रोग्राम्स के लिए सामान्य दृष्टिकोण है: पोस्टकंडिशन तब होता है जब कमांड समाप्त हो जाती है, जो हमेशा नहीं हो सकती है। यदि आप रन-टाइम त्रुटियों को गैर-समाप्ति के रूप में मानते हैं, तो आप हुड के तहत सभी शुद्धता के मुद्दों को मिटा देते हैं। आपको अभी भी किसी भी तरह कार्यक्रम की शुद्धता को साबित करने की आवश्यकता होगी, लेकिन यह उस कार्य में कुछ अन्य औपचारिकता पसंद करने पर होरे तर्क में नहीं होना चाहिए।
वैसे, ध्यान दें कि जब एक यौगिक चर जैसे कि संशोधित किया जाता है, तो व्यक्त करना अधिक शामिल होता है कि आपने क्या लिखा है। मान लीजिए था कहते हैं, : प्रतिस्थापन नहीं बदलेगा , फिर भी काम अमान्य हो । यहां तक कि अगर आप परमाणुओं के बारे में केवल बात करने के लिए विधेय की वाक्य रचना को प्रतिबंधित, असाइनमेंट पर विचार पूर्व शर्त के तहत : आप सही पोस्टकांड प्राप्त करने के लिए एक साधारण प्रतिस्थापन नहीं कर सकते , आपको का मूल्यांकन करने की आवश्यकता हैPIsSorted(A)A[i]←EPA[i]←PPA[A[0]−1]:=A[0]A[0]=2∧A[1]=3A[0]=1∧A[1]=1A[0](जो सामान्य रूप से मुश्किल हो सकता है, क्योंकि पूर्व शर्त लिए एक भी संभव मान निर्दिष्ट नहीं कर सकती है )। आपको सरणी पर ही प्रतिस्थापन करने की आवश्यकता है: । माइक गॉर्डन के व्याख्यान नोट्स में सरणियों के साथ एक अच्छी प्रस्तुति होरे तर्क है (लेकिन त्रुटि जाँच के बिना)।A[0]A←A[i←E]
length
हैंA
?