तार्किक संबंधों और सिमुलेशन के बीच अंतर क्या हैं?


29

मैं एक शुरुआत हूँ, जो प्रोग्राम की समानता को साबित करने वाले तरीकों पर काम कर रहा है। मैंने तार्किक संबंधों को परिभाषित करने के लिए कुछ कागजात पढ़े हैं या दो कार्यक्रमों को साबित करने के लिए सिमुलेशन बराबर हैं। लेकिन मैं इन दोनों तकनीकों के बारे में काफी उलझन में हूं।

मैं केवल यह जानता हूं कि तार्किक संबंध समान रूप से परिभाषित होते हैं जबकि सिमुलेशन सहसंबंध पर आधारित होते हैं। उन्हें इस तरह से परिभाषित क्यों किया जाता है? उनके पेशेवरों और विपक्ष क्रमशः क्या हैं? मुझे विभिन्न स्थितियों में किसे चुनना चाहिए?


1
आप अपने द्वारा पढ़े गए इन कागजात के लिंक प्रदान करना चाह सकते हैं। इससे यह स्पष्ट हो जाएगा कि कौन से विशिष्ट उदाहरण आपको भ्रमित कर रहे हैं।
मार्क हमन

1
तार्किक संबंधों के लिए, मैंने हर् और ड्रेयर के हालिया पेपर "ए क्रिपके लॉजिकल रिलेशन फॉर एमएल एंड असेंबली" (POPL'11) पढ़ा है। इसके अलावा मैंने पियर्स की पुस्तक "एडवांस्ड टॉपिक्स इन टाइप्स एंड प्रोग्रामिंग लैंग्वेजेस" में शास्त्रीय अध्याय पढ़ा है। मुझे लगता है कि तार्किक संबंध भाषा के प्रकार की संरचना पर सम्मिलित रूप से परिभाषित होते हैं, लेकिन क्या होगा यदि भाषा में एक प्रकार की संरचना (जैसे सी) नहीं है? (यह एक और सवाल लगता है, मुझे लगता है।)
हांगजिन लियांग

1
सिमुलेशन के लिए, मैंने हेनेसी और मिलनर द्वारा मूल पेपर "नॉन्डेटेरमिनिज्म और संगामिति के लिए बीजगणितीय कानून" पढ़ा है। Koutavas और Wand के "उच्च-क्रम अनिवार्य कार्यक्रमों के बारे में तर्क के लिए छोटे द्विमासिक" (POPL'06) मेरे लिए समझ से बाहर हैं और मुझे यकीन नहीं है कि उन्होंने अपने तरीके को "बिसिमुलेशन" क्यों कहा।
हांगजिन लियांग

3
बेहतर होगा कि आप पोस्ट में दी गई जानकारी को टिप्पणी में शामिल करें। आप प्रश्न के तहत संपादित लिंक पर क्लिक करके अपने प्रश्न को संपादित कर सकते हैं।
केव

1
@HongjinLiang: यदि आपके पास एक प्रकार की संरचना नहीं है (या यदि आपके पास पुनरावर्ती प्रकार हैं), तो आप चरण-अनुक्रमित तार्किक संबंधों का उपयोग कर सकते हैं - तार्किक संबंधों के साथ आप प्रकारों पर प्रेरण का उपयोग करते हैं, चरण-अनुक्रमण के साथ आप अवलोकन चरणों पर प्रेरण करते हैं। आपको अमल अहमद के शोध वक्तव्य: ccs.neu.edu/home/amal/ahmed-research.pdf में संकेत मिलेंगे । (तार्किक संबंधों पर शोध का एक और अवलोकन यह बात डेरेक ड्रेयर से और उनके शोध कथन में है: mpi-sws.org/~dreyer/research.pdf )।
ब्लेज़ोरब्लेड

जवाबों:


20

मेरे पास इस सवाल का जवाब है जो संभवतः उपन्यास है। वास्तव में, मैं अभी भी पिछले 6 महीनों से इसके माध्यम से सोच रहा हूं, और यह अभी तक कागजों में नहीं लिखा गया है।

सामान्य थीसिस यह है कि "तार्किक संबंधों", "सिमुलेशन" और यहां तक ​​कि "अपरिवर्तनीय" जैसे संबंधपरक तर्क सिद्धांत डेटा एब्सट्रैक्शन या सूचना छिपाने की अभिव्यक्तियां हैं। जहां कहीं भी सूचना छिपी होती है, ये सिद्धांत फसल बनाते हैं।

इसे खोजने वाले पहले लोग ऑटोमेटा सिद्धांतकार थे। ऑटोमेटा में छिपी अवस्था है। इसलिए आपको उनके समतुल्यता के बारे में बात करने के लिए संबंधपरक तर्क की आवश्यकता है। ऑटोमेटा सिद्धांतकारों ने कुछ समय के लिए होमोमोर्फिज्म के साथ संघर्ष किया, त्याग दिया और "रिलेशनल कवरिंग" नामक एक धारणा के साथ आए, जो सिमुलेशन संबंधों का एक रूप है।

मिलनर ने इस विचार को 1971 में " कार्यक्रमों के बीच अनुकरण की एक बीजगणितीय धारणा " कहा जाता है। होरे को यह पता था और 1972 में " डेटा निरूपण का प्रमाण " के साथ आने में इसका इस्तेमाल किया (लेकिन इस्तेमाल किया गया) संबंधों के बजाय अमूर्त कार्य करता है क्योंकि उसने सोचा कि वे "सरल" थे)। बाद में उन्होंने सादगी के दावे को वापस ले लिया और " डेटा शोधन परिष्कृत " में संबंधों का उपयोग करने के लिए वापस चले गए । रेनॉल्ड्स ने " क्राफ्ट ऑफ़ प्रोग्रामिंग " में संबंधपरक तर्क का इस्तेमाल किया", अध्याय 5 (1981)। उन्होंने सोचा कि रिश्ते अमूर्त कार्यों की तुलना में अधिक प्राकृतिक और सामान्य थे। यदि आप वापस जाते हैं और इस अध्याय को पढ़ते हैं, तो आप संबंधपरक परिकल्पना के विचारों को पा लेंगे, जो खोजा जा रहा है, खोजा जा रहा है। दो साल बाद। रेनॉल्ड्स ने "प्रकार, अमूर्त और पैरामीट्रिक बहुरूपता" (1983) प्रकाशित किया।

ऐसा लगता है कि इन सभी विचारों का प्रकारों से कोई लेना-देना नहीं है, लेकिन वे वास्तव में करते हैं। स्टेटफुल लैंग्वेज और मॉडल्स में बिल्ट-इन डेटा एब्सट्रैक्ट है। जानकारी छिपाने के लिए आपको "सार डेटा प्रकार" को परिभाषित करने की आवश्यकता नहीं है। आप बस एक स्थानीय चर घोषित करते हैं और इसे छिपाते हैं। हम इसे पहले कुछ हफ्तों में जावा कक्षाओं में प्रथम वर्ष के छात्रों को पढ़ा सकते हैं। पसीनारहित।

दूसरी ओर, कार्यात्मक भाषाओं और मॉडलों को अपनी जानकारी को प्रकारों के माध्यम से छुपाना पड़ता है । कार्यात्मक मॉडल में अंतर्निहित डेटा अमूर्तता नहीं होती है। हम स्पष्ट रूप से उस पर जोड़ने के लिए, का उपयोग कर या । इसलिए, यदि आप किसी राज्य भाषा को एक कार्यात्मक भाषा में अनुवाद करते हैं, तो आप सभी स्थानीय राज्य को टाइप चर में अनुवादित होने पर ध्यान देंगे। यह कैसे काम करता है, इसके एक स्पष्ट विवरण के लिए, मेरे पेपर " ऑब्जेक्ट्स और क्लासेस को अल्गोल जैसी भाषाओं में " देखें, लेकिन विचार वास्तव में रेनॉल्ड्स 1981 ("एस्सेन्स ऑफ अल्गोल") से आते हैं। हम अभी उन क्लासिक विचारों को बेहतर तरीके से समझ रहे हैं।

दो मशीनों लो और एम ' आप बराबर साबित करने के लिए चाहते हैं। मिलनर 1971 कहते हैं, के राज्यों के बीच एक रिश्ता परिभाषित एम और एम ' और बताते हैं कि दो मशीनों संबंध बनाए रखने के। रेनॉल्ड्स पैरामीट्रिकिटी कहती है, मशीनों के राज्यों के बारे में सोचें जैसे कि X और X ity । उनके बीच एक रिश्ता आर परिभाषित करें। मशीनों प्रकार के होते हैं, तो एफ ( एक्स ) और एफ ( एक्स ' ) , अपने राज्यों के प्रकार के द्वारा parameterized, तो जांच कर लें कि दो मशीनों संबंध से संबंधित हैं एफएमएम'एमएम'एक्सएक्स'आरएफ(एक्स)एफ(एक्स')एफ(आर)

तो, सिमुलेशन और संबंधपरक समरूपता अनिवार्य रूप से एक ही विचार है । यह महज सतही समानता नहीं है। पूर्व राज्य भाषाओं के लिए बनाया गया है जहाँ अंतर्निहित डेटा अमूर्तता है। उत्तरार्द्ध स्टेटलेस भाषाओं के लिए बना है, जहाँ डेटा एब्स्ट्रेक्शन टाइप वेरिएबल्स के माध्यम से प्राप्त किया जाता है।

फिर तार्किक संबंधों के बारे में क्या? सतह पर, तार्किक संबंध अधिक सामान्य विचार प्रतीत होते हैं। जहां एक ही मॉडल में टाइप वैरिएबल को कैसे संबंधित किया जाता है, इस बारे में पैरामीट्रिकिटी बात करती है, लॉजिकल रिलेशन विभिन्न मॉडलों में टाइप से संबंधित होते हैं। (डेव क्लार्क ने इससे पहले एक शानदार प्रदर्शनी लिखी।) लेकिन मेरी भावना यह है (और इसे अभी भी प्रदर्शित करने की आवश्यकता है) कि यह उच्च-प्रकार के कुछ प्रकार के पैरामीट्रिकिटी का एक उदाहरण है जिसे अभी तक तैयार नहीं किया गया है। उस मोर्चे पर और अधिक प्रगति के लिए बने रहें।


[नोट जोड़ा गया] तार्किक संबंधों और सिमुलेशन के बीच संबंध की चर्चा हमारे हालिया पेपर लॉजिकल रिलेशनशिप और पैराएरिमेंटी में की गई है: श्रेणी थ्योरी और प्रोग्रामिंग भाषाओं के लिए रेनॉल्ड्स प्रोग्राम


मैं सोच रहा था कि क्या यह कहना है कि संबंध सच होगा उपरोक्त तथाकथित संबंध उठाने है आर दी एफ मशीन का वर्णन। एफ(आर)आरfunctor एफ
डेव क्लार्क

@DaveClarke हाँ, यह एक ही विचार है। परिभाषा के रेनॉल्ड्स शैली में, प्रत्येक प्रकार के निर्माता एक से सुसज्जित है संबंध कार्रवाई है कि सहयोगियों, प्रत्येक संबंध के लिए आर : एक्स एक्स ' , एक इसी संबंध एफ ( आर ) : एफ ( एक्स ) एफ ( एक्स ' ) कुछ संतोषजनक सूक्तियों। कुछ अन्य समुदायों में, वे एफ ( आर ) को अन्य सिद्धांतों से प्राप्त करना चाहेंगे , जहां वे उन्हें संबंध लिफ्टिंग कहते हैं । द एफ (एफआर:एक्सएक्स'एफ(आर):एफ(एक्स)एफ(एक्स')एफ(आर) वे इस प्रक्रिया के द्वारा रेनॉल्ड्स अर्थ में एक संबंध कार्रवाई करेंगे। एफ(आर)
उदय रेड्डी

14

प्रमुख अंतरों में से एक यह है कि तार्किक संबंधों को एक तकनीक के रूप में उपयोग किया जाता है ताकि यह दिखाया जा सके कि कार्यक्रमों का एक वर्ग (उदाहरण के लिए, एक संकलक के लिए इनपुट) कार्यक्रमों के दूसरे वर्ग (जैसे, संकलक का उत्पादन) के अनुरूप है, जबकि सिमुलेशन संबंधों का उपयोग किया जाता है दो कार्यक्रमों के बीच पत्राचार दिखाने के लिए।

दो धारणाओं के बीच समानता यह है कि वे दोनों एक संबंध को दो अलग-अलग संस्थाओं के बीच पत्राचार को दर्शाने के लिए इस्तेमाल करते हैं। कुछ अर्थों में, एक तार्किक संबंध को एक सिमुलेशन संबंध के रूप में देखा जा सकता है जो कि प्रकारों के सिंटैक्स पर व्यक्तिगत रूप से परिभाषित होता है। लेकिन विभिन्न प्रकार के सिमुलेशन संबंध मौजूद हैं।

तार्किक संबंध का उपयोग किसी भाषा के बीच पत्राचार जैसे कि एमएल और उसके अनुवाद को असेंबली भाषा में दिखाने के लिए किया जा सकता है, जैसा कि आप पढ़े गए पेपर में करते हैं। एक तार्किक संबंध को संरचना के प्रकार पर सम्मिलित रूप से परिभाषित किया गया है। तार्किक संबंध दिखाने के लिए एक संरचनागत साधन प्रदान करता है, उदाहरण के लिए, कि अनुवाद सही है, यह दिखा कर कि अनुवाद प्रत्येक प्रकार के निर्माता के लिए सही है। फ़ंक्शन प्रकारों में शुद्धता स्थिति की स्थिति कुछ इस तरह कहेगी, इस फ़ंक्शन का अनुवाद अच्छी तरह से अनुवादित आउटपुट को अच्छी तरह से अनुवादित इनपुट लेता है।

लॉम्बडा कैलकुलस पर आधारित भाषाओं के लिए तार्किक संबंध एक बहुमुखी तकनीक है। तार्किक संबंधों के अन्य अनुप्रयोगों में ( यहाँ से ) शामिल हैं: लैम्ब्डा निश्चितता को चिह्नित करना, डिमोनेटिक सिमेंटिक परिभाषाओं से संबंधित, पैरामीट्रिक बहुरूपता को चिह्नित करना, सार व्याख्या की व्याख्या करना, डेटा अभ्यावेदन को सत्यापित करना, पूरी तरह से अमूर्त शब्दार्थ को परिभाषित करना और उच्चतर भाषाओं में स्थानीय राज्य को मॉडलिंग करना।

सिमुलेशन संबंधों का उपयोग आम तौर पर दो कार्यक्रमों की समानता दिखाने के लिए किया जाता है। आमतौर पर इस तरह के कार्यक्रम कुछ प्रकार का अवलोकन करते हैं, जैसे कि चैनलों पर संदेश भेजना। एक प्रोग्राम P दूसरे Q का अनुकरण करता है यदि P वह सब कुछ कर सकता है जो Q कर सकता है, हालाँकि शायद अधिक।

Bisimulation, मोटे तौर पर, दो सिमुलेशन संबंधों को एक साथ रखा गया है। आप उस प्रोग्राम P को दिखाते हैं और प्रोग्राम Q को अनुकरण करते हैं और वह प्रोग्राम Q प्रोग्राम P को अनुकरण कर सकता है और आपके पास एक बाइसीमुलेशन है, हालांकि अतिरिक्त स्थितियां आमतौर पर मौजूद हैं। बिसिमुलेशन पर विकिपीडिया का प्रवेश एक अच्छा (अधिक सटीक) शुरुआती बिंदु है। विचार के हजारों प्रकार मौजूद हैं, लेकिन यह एक मौलिक विचार है जिसे कमोबेश एक ही रूप में कंप्यूटर विज्ञान, मोडल लॉजिक और मॉडल सिद्धांत में पुनर्निवेशित किया गया है। Sangiorgi का लेख विचार का एक अद्भुत इतिहास देता है।

दो धारणाओं के बीच संबंध स्थापित करने वाला एक पेपर एंडी पिट्स द्वारा शब्दार्थ और वाक्यविन्यास के बीच तार्किक संबंध पर एक नोट है जो तार्किक संबंधों का उपयोग करता है, अंततः एक शब्दार्थिक धारणा को वाक्यविन्यास के रूप में परिभाषित किया गया है , जो आवेदक द्विगुणन के बारे में एक निश्चित संपत्ति साबित करने के लिए है , जो विशुद्ध रूप से वाक्यगत धारणा है।


आपके विस्तृत विवरण के लिए बहुत बहुत धन्यवाद! मैं आपके संदर्भों को पढ़ूंगा और दोनों के बीच गहरे संबंध / मतभेद का पता लगाने का प्रयास करूंगा।
हांगजिन लियांग

क्या आप इस कथन के बारे में निश्चित हैं कि "आप उस प्रोग्राम P को दिखाते हैं और प्रोग्राम Q को अनुकरण करते हैं और वह प्रोग्राम Q प्रोग्राम P को अनुकरण कर सकता है और आपके पास एक द्वि-अनुकरण है?" A = (a (? (B + c)) + (a.b + ac) और B = a.b + ac जब तक मैं A को B के समान बता सकता हूं, B A के समान है, लेकिन A और B बिसमिलर नहीं हैं।
आंद्र सलामॉन

@ एंड्रस: आप सही हैं। मेरा कथन पर्याप्त सटीक नहीं है। यह अंतर "कुछ अतिरिक्त स्थितियां हो सकती हैं" वाक्यांश से दूर है।
डेव क्लार्क

हेनेसी और मिलनर ने बिसिमुलेशन के लिए अपने मूल पेपर में तीन प्रकार के समतुल्य संबंधों को परिभाषित किया और उनके अंतर को स्पष्ट करने के लिए कुछ उदाहरण दिए। आपका मूल कथन वास्तव में उनके पेपर में एक माध्यम है, जो द्विभाजन से कमजोर है और ट्रेस तुल्यता से अधिक मजबूत है। मुझे यकीन नहीं है कि कौन सी समानता बेहतर है। शायद यह व्यावहारिक उपयोग पर निर्भर करता है।
हांगजिन लियांग

सिमुलेशन को दो डेटा प्रकारों के बीच डेटा शोधन स्थापित करने के लिए एक प्रमाण तकनीक के रूप में भी उपयोग किया जाता है। उन सिमुलेशन प्रूफों में से हर एक कार्यक्रम के पूरे वर्गों से संबंधित है। विवरण के लिए देखें [1]। इससे पता चलता है कि दो अवधारणाओं के बीच का अंतर भी धुंधला है। [१]: कार होरे, हे J, और JW सैंडर्स। डेटा शोधन में पूर्व-निर्धारण। सूचना प्रसंस्करण पत्र , 25: 71-76, 1987.
काई

8

दो प्रकार के संबंध विभिन्न संदर्भों में उपयोग किए जाते हैं। टंकण भाषाओं और सिमुलेशन संबंधों के लिए तार्किक सिमुलेशन, जब प्रक्रिया कैलकुली या मोडल लॉजिक्स से संक्रमण प्रणालियों पर व्याख्या की जाती है। डेव क्लार्क ने बहुत सहज स्पष्टीकरण प्रदान किया है, इसलिए मैं बस कुछ संकेत जोड़ूंगा जो मदद कर सकते हैं।

अमूर्त व्याख्या का उपयोग करते हुए दोनों धारणाओं को चिह्नित करने पर काम किया गया है। यह वह नहीं हो सकता जो आप चाहते हैं, लेकिन कम से कम दोनों धारणाओं को एक ही गणितीय ढांचे में माना जाता है।

सैमसन अब्रामस्की ने आलसी लैम्बडा कैलकुलस ( अमूर्त व्याख्या, तार्किक संबंध और कान एक्सटेंशन ) के लिए ध्वनि विश्लेषण और कठोरता विश्लेषण की समाप्ति को साबित करने के लिए तार्किक संबंधों का इस्तेमाल किया । उन्होंने यह भी दिखाया कि तार्किक संबंध अमूर्त व्याख्या के गैलोज कनेक्शन अर्थ में अमूर्त कार्यों को परिभाषित करते हैं। हाल ही में, बैकहाउस और बैकहाउस ने दिखाया कि कैसे आधार प्रकारों के लिए गैलोज़ कनेक्शन से उच्च-क्रम के प्रकारों के लिए गैलोज़ कनेक्शन का निर्माण किया जाता है और इन निर्माणों को तार्किक संबंधों ( लॉजिकल रिलेशन और गैलोज कनेक्शन ) का उपयोग करके समान रूप से वर्णित किया जा सकता है । इस प्रकार, टाइप की गई कार्यात्मक भाषाओं के विशिष्ट संदर्भ में, दो धारणाएं समान हैं।

सिमुलेशन संबंध विभिन्न मोडल और लौकिक लॉजिक्स के लिए क्रिप्के संरचनाओं के बीच संपत्ति संरक्षण की विशेषता है। प्रकारों के बजाय, हमारे पास एक तर्क में तौर-तरीके हैं। सिमुलेशन संबंध गैलोइस कनेक्शन और इसलिए, सार को परिभाषित करते हैं। कोई यह पूछ सकता है कि क्या इन सार तत्वों में विशेष गुण हैं। इसका उत्तर यह है कि मानक सार ध्वनि हैं और सिमुलेशन संबंध-आधारित सार पूर्ण हैं। संपूर्णता की धारणा गैलोज कनेक्शन के संबंध में है, जो सहज व्याख्या के साथ नहीं हो सकती है। डेविड श्मिड्ट ( प्रोग्राम एब्स्ट्रक्शन के लिए स्ट्रक्चर- प्रिजर्विंग बाइनरी रिलेशन्स ), और फ्रांसेस्को रैनज़ातो और फ्रांसेस्को तप्पारो ( अमूर्त व्याख्या द्वारा सामान्यीकृत मजबूत संरक्षण ) द्वारा काम की इस पंक्ति को विकसित किया गया है ।


आपका उत्तर बहुत मददगार है जो अवधारणाओं को अमूर्त व्याख्या के साथ जोड़ता है। धन्यवाद!
हांगजिन लियांग

एक ईमानदार सवाल: मैं कोई विशेषज्ञ नहीं हूं, लेकिन रेनॉल्ड्स (1983, "प्रकार, अमूर्त और पैरामीट्रिक बहुरूपता") पहले से ही तार्किक संबंधों को परिभाषित नहीं करता है जो गैलोज़ कनेक्शन (सेक। 6) हैं? एकमात्र अंतर जो मैंने देखा है: वह "गलाइस कनेक्शन" शब्द नहीं कहता है, लेकिन केवल "समान श्रेणी के रूप में माने जाने वाले आदेशों के बीच सहायक समरूपता", और वह डोमेन के लिए प्रतिबंधित करता है। ओटोह, बैकहाउस और बैकहाउस रेनॉल्ड्स का हवाला देते हैं लेकिन इस दावे पर चर्चा नहीं करते हैं, एक तरीका या दूसरा।
ब्लिसॉर्बलेड

6

मैं कहूँगा कि दो अवधारणाएँ कुछ अस्पष्ट हैं। दोनों कम्प्यूटेशनल तंत्रों के द्विआधारी संबंधों के बारे में हैं जो किसी भी तरह समानता की धारणा को मूर्त रूप देते हैं। तार्किक संबंध प्रकार-संरचना के प्रेरण द्वारा परिभाषित किए गए हैं, जबकि सिमुलेशन को आप चाहते हैं, लेकिन परिभाषित किया जा सकता है, लेकिन सह-संबंध के लिए शब्द।

π


आपका संदर्भ वास्तव में अच्छा है! मैंने पहले समवर्ती कार्यक्रमों के लिए तार्किक संबंध नहीं सुने हैं। धन्यवाद! मुझे लगता है कि तार्किक संबंध को परिभाषित करने की कठिनाई प्रकार की संरचना को खोजने में है। एक ही प्रकार की संरचना के साथ, विभिन्न प्रोग्रामिंग भाषाओं के बीच एक तार्किक संबंध को परिभाषित किया जा सकता है। दूसरी ओर, एक सिमुलेशन को एक राज्य संक्रमण प्रणाली द्वारा मॉडलिंग कार्यक्रमों की आवश्यकता होती है, जो कि विभिन्न राज्य मॉडल के लिए लिखे जाने पर असहज हो सकते हैं।
हांगजिन लियांग

हैलो! हां, एक उपयुक्त प्रकार-संरचना खोजना हमेशा आसान नहीं हो सकता है। आप जिन दो गणनाओं की तुलना करना चाहते हैं, उनके लिए विभिन्न संक्रमण प्रणालियों का उपयोग करके सिमुलेशन को परिभाषित कर सकते हैं। कोई यह तर्क दे सकता है कि कमजोर अनुकरण की परिभाषा बस यही करती है। आपको वास्तव में सिमुलेशन को परिभाषित करने की आवश्यकता है जो संक्रमण लेबल की तुलना करने के लिए एक संबंध है।
मार्टिन बर्जर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.