একটি মোট ভাষা যা কেবলমাত্র একটি টুরিং সম্পূর্ণ ভাষা ব্যাখ্যা করতে পারে


16

টিউরিং সম্পূর্ণ নয় এমন কোনও ভাষা এটি নিজেই একজন অনুবাদক লিখতে পারে না। যেখানে আমি এটি পড়েছি সে সম্পর্কে আমার কোনও ধারণা নেই তবে আমি এটি বেশ কয়েকবার ব্যবহার করতে দেখেছি। দেখে মনে হচ্ছে এটি এক ধরণের "চূড়ান্ত" নন টিউরিং সম্পূর্ণ ভাষার জন্ম দেয়; এক (গুলি) যে পারে কেবল পারেএকটি টুরিং মেশিন দ্বারা ব্যাখ্যা করা। এই ভাষাগুলি অগত্যা প্রাকৃতিক থেকে সমস্ত প্রাকৃতিক ক্রিয়াকলাপগুলি গণনা করতে সক্ষম হয় না এবং তারা অগত্যা আইসোমর্ফিকও হয় (এটি সম্ভবত চূড়ান্ত ভাষা A এবং B বিদ্যমান রয়েছে যা একটি ফাংশন F রয়েছে যা A গণনা করতে পারে তবে B পারে না)। আগদা গোডেলের সিস্টেমে টি ব্যাখ্যা করতে পারে এবং আগদা মোটটি যাতে এইরকম চূড়ান্ত ভাষাটি আরও শক্তিশালী হওয়া উচিত যা গোডেলের সিস্টেম টি দেখে মনে হয়। আমার কাছে মনে হয় এ জাতীয় ভাষা কমপক্ষে আগদার মতো শক্তিশালী হবে (যদিও আমার কাছে কোনও প্রমাণ নেই, কেবল একটি কুঁচকির)।

এই শিরাতে কোনও গবেষণা হয়েছে? কি ফলাফল জানা (যেমন একটি "চূড়ান্ত" ভাষা জানা আছে)?

বোনাস: আমি উদ্বিগ্ন যে এমন একটি প্যাথলজিকাল কেস উপস্থিত রয়েছে যা গডেলের সিস্টেম টি এখনও একটি টুরিং মেশিন দ্বারা ব্যাখ্যা করা যেতে পারে যা এখনও কিছু বেজোড় ফাংশন গণনা করতে দেয়। এটি কি এই ঘটনা বা আমরা জানতে পারি যে এই জাতীয় ভাষা গোডেলের সিস্টেম টি যে কোনও কিছু গণনা করতে সক্ষম হবে?


2
আপনার পরিভাষাগুলি যেভাবে আপনি ব্যবহার করছেন সে কারণে আপনার বক্তব্যগুলি বিভ্রান্তিকর। পরিভাষার উপর নির্ভর করার পরিবর্তে আপনার প্রশ্নকে গাণিতিকভাবে কঠোর এবং স্পষ্ট পদ্ধতিতে বলার চেষ্টা করুন যাতে আমরা আপনার প্রশ্নটি বুঝতে পারি। গণ্যতা তত্ত্বের প্রসঙ্গে প্রোগ্রামিং ল্যাঙ্গুয়েজ বলতে কী বোঝ? আপনি কি গণনাযোগ্য ফাংশনগুলির একটি সংখ্যা বোঝাতে চান?
কাভেঃ

1
আপনি যা পড়েছেন সে সম্পর্কে আমার অনুমান: কোনও ভাষা যদি যথেষ্ট শক্তিশালী এবং অন্য শ্রেণির ক্রিয়াকলাপের সার্বজনীন ফাংশন ধারণ করে তবে এটি সেই শ্রেণীর জন্য তির্যক ক্রিয়াকে সংজ্ঞায়িত করতে পারে। এটি যদি মোট ফাংশনের শ্রেণি হয় তবে তির্যক ফাংশন শ্রেণিতে থাকতে পারে না।
কাভেঃ

এটি যেখানে পেয়েছি তা অনানুষ্ঠানিকভাবে বলা হয়েছিল। আমি এখানে যা দিয়েছি তার রেখার সাথে কিছুটা আক্ষরিক আমি জানি না কীভাবে এটি গাণিতিক উপায়ে বর্ণনা করতে হবে। কিছু পড়ার পরে আমি নিশ্চিত না "ফাংশনগুলির একটি শ্রেণির তির্যক ক্রিয়া" কী। আমি আপনার শর্তাদির সাথে আমার অর্থটি কি মনে হয় তা হ'ল "মোট ফাংশনগুলির একটি শ্রেণির নিজস্ব সার্বজনীন ফাংশন থাকতে পারে না" এবং তাই আমি মনে করি আমি জিজ্ঞাসা করছি "মোট ফাংশনগুলির কোন শ্রেণীর জন্য এটি এমন ঘটনা যা মোট ফাংশনগুলির কোনও শ্রেণীর মধ্যে নেই? সি জন্য সর্বজনীন ফাংশন "। যদি আমি বুঝতে পারি যে "সার্বজনীন ফাংশন" কী তা আমার মনে হয় যে এটি সঠিক।
জেক

1
কড়া কথায় বলতে গেলে, এটি কোনও গবেষণা-স্তরের প্রশ্ন নয়। এছাড়াও, কেন এটি একটি সম্প্রদায়ের উইকি? অথবা এটা?
আন্দ্রেজ বাউয়ার

"দেখে মনে হচ্ছে এটি একধরনের" চূড়ান্ত "অবিশ্বস্ত সম্পূর্ণ ভাষার জন্ম দেয়; একমাত্র টিউরিং মেশিন দ্বারা ব্যাখ্যা করা যেতে পারে।" এটি দৃ a ়রূপে অনুভূত হয় না যে এটি একটি অনুক্রমিক বলে মনে হচ্ছে , আপনার অর্থ কী, কেন এমনটি মনে হচ্ছে?
vzn

উত্তর:


42

এটি একটি খারাপভাবে কথিত প্রশ্ন, সুতরাং আসুন প্রথমে এটি অনুধাবন করা যাক। আমি এটি গণনাযোগ্যতা তত্ত্ব স্টাইল করতে যাচ্ছি। সুতরাং আমি স্ট্রিংয়ের পরিবর্তে সংখ্যাগুলি ব্যবহার করব: সোর্স কোডের একটি টুকরা চিহ্নগুলির চেয়ে স্ট্রিংয়ের চেয়ে একটি সংখ্যা। এটি আসলে কোনও ব্যাপার নয়, আপনি কে s t r i n g দিয়ে প্রতিস্থাপন করতে পারেনNstring নিচে সর্বত্র।

যাক একটি হতে পেয়ারিং ফাংশনm,n

আসুন আমরা বলি যে একটি প্রোগ্রামিং ভাষা নিম্নলিখিত ডেটা দ্বারা দেওয়া হয়েছে:L=(P,ev)

  1. একটি নির্ধারণযোগ্য সেট PN"বৈধ প্রোগ্রাম" এর , এবং
  2. একটি গণনীয় এবং আংশিক ফাংশন ev:P×NN

সত্য যে নির্ধার্য মাধ্যম মোট গণনীয় মানচিত্র নেই বনাম একটি আমি : এন{ 0 , 1 } যেমন যে বনাম একটি আমি ( এন ) =Pvalid:N{0,1} । অনানুষ্ঠানিকভাবে, আমরা বলছি যে প্রদত্ত স্ট্রিংটি কোডের একটি বৈধ টুকরা কিনা তা বলা সম্ভব। E v ফাংশনটিআমাদের ভাষার জন্য একটি দোভাষী প্রয়োজন: e v ( m , n ) ইনপুট এন কোড কোড এম চালায়- ফলাফল অপরিবর্তিত হতে পারে।valid(n)=1nPevev(m,n)mn

আমরা এখন কিছু পরিভাষা চালু করতে পারি:

  1. একটি ভাষা মোট যদি সমস্ত m for এর জন্য মোট ফাংশন nev(m,n)mP
  2. একটি ল্যাঙ্গুয়েজ ব্যাখ্যা করে ভাষা এল 2 = ( পি 2 , ভি 2 ) অস্তিত্ব আছে যদি তোমার দর্শন লগ করা পি 1 যেমন যে বনাম 1 ( U , এন , মি ) বনাম 2 ( এন , মি ) সকলের জন্য এন for পিL1=(P1,ev1) L2=(P2,ev2)uP1ev1(u,n,m)ev2(n,m)nP এবং । এখানে তোমার দর্শন লগ করা জন্য কাল্পনিক হয় এল 2 বাস্তবায়িত এল 1 । এছাড়া হিসাবে পরিচিত হয়সার্বজনীন প্রোগ্রামজন্য এল 2mNuL2L1L2

" ব্যাখ্যা L 2 " এর অন্যান্য সংজ্ঞাও সম্ভব, তবে আমাকে এখন এটিতে getুকতে দেওয়া উচিত না।L1L2

আমরা বলি যে এবং L 2 একে অপরকে ব্যাখ্যা করলে সমান।L1L2

নেই "সবচেয়ে শক্তিশালী" ভাষা টুরিং মেশিনে যা (যা আপনি "একটি টুরিং মেশিন" পড়ুন) এন এন একটি টুরিং মেশিন এবং একজন এনকোডিং হয় φ ( এন , মি ) হয় আংশিক গণনাযোগ্য ফাংশন যা " ইনপুট এম- তে এন দ্বারা এনকোডেড টুরিং মেশিন চালায় "। এই ভাষাটি অন্য সমস্ত ভাষাগুলি ইন্টারপেট করতে পারে, স্পষ্টতই যেহেতু আমাদের ভি প্রয়োজনে গণনাযোগ্য হবে।T=(N,φ)nNφ(n,m)nmev

প্রোগ্রামিং ভাষার আমাদের সংজ্ঞাটি খুব স্বচ্ছন্দ। নীচের দিক দিয়ে যাওয়ার জন্য আমাদের আরও তিনটি শর্ত প্রয়োজন:

  • কার্যকরী উত্তরাধিকারী ফাংশন: নেই s তোমার দর্শন লগ করা পি যেমন যেবনাম ( গুলি তোমার দর্শন লগ করা , মি ) = মিLsuccP সকলের জন্য মি এন ,ev(succ,m)=m+1mN
  • কার্যকরী তির্যক ফাংশন: সেখানে হয়আমি একটি গ্রাম পি যেমন যেবনাম ( আমি একটি গ্রাম , মি ) = মি , মি সবার জন্য মি এন ,LdiagPev(diag,m)=m,mmN
  • ফাংশন রচনা অধীনে বন্ধ করা হয়: যদি এল কার্যকরী এবং তারপর এটি কার্যকরী ,LLfgfg

একটি ক্লাসিক ফলাফল এটি:

উপপাদ্য: কোনও ভাষা যদি নিজের ব্যাখ্যা করতে পারে তবে তা মোট নয়।

Proof. Suppose u is the universal program for a total langauge L implemented in L, i.e., for all mP and nN,

ev(u,m,n)ev(m,n).
As successor, diagonal, and ev(u,) are implemented in L, so is their composition kev(u,k,k)+1. There exists n0P such that ev(n0,k)ev(u,k,k)+1, but then
ev(u,n0,n0)ev(n0,n0)ev(u,n0,n0)+1
As there is no number equal its own successor, it follows that L is not total or that L does not interpret itself. QED.

Observe that we could replace the successor map with any other fixpoint-free map.

Here is a little theorem which I think will clean up a misunderstanding.

Theorem: Every total language can be interpreted by another total language.

Proof. Let L be a total language. We get a total L which interprets L by adjoining to L its evaluator ev. More precisely, let P={0,nnP}{1,0} and define ev as

ev(b,n,m)={ev(n,m)if b=0,ev(m0,m1)if b=1 and m=m0,m1
Obviously, L is total because L is total. To see that L can simulate L just take u=1,0, since then ev(u,m,n)ev(m,n), as required. QED.

Exercise: [added 2014-06-27] The language L constructed above is not closed under composition. Fix the proof of the theorem so that L satisfies the extra requirements if L does.

In other words, you never need the full power of Turing machines to interpret a total language L – a slightly more powerful total language L suffices. The language L is strictly more powerful than L because it interprets L, but L does not interpret itself.


If I checked the wiki checkbox it was unintentional.
Andrej Bauer

2
Is there any extra power in languages where you can't tell whether or not a given program is valid?
Phylliida

3
@DaniPhye: If the language syntax is not semidecidable then you can "hide" computational power in the syntax. For instance, the language rules could require that each function be equipped with a bit which tells whether the function is total. We could then implement is_total, which is otherwise non-cmputable, but couldn't implement evaluation (because you'd have to also compute the bit of the resulting function). In general I would say it's not a programming language if you can't even implement a parser for it.
Andrej Bauer

3
How does "If a language can interpret itself then it is not total" gel with this result: A Self-Interpreter for F-omega?
Cactus


18

Any language which is not Turing complete can not write an interpreter for it self.

This statement is incorrect. Consider the programming language in which the semantics of every string is "Ignore your input and halt immediately". This programming language is not Turing complete but every program is an interpreter for the language.


Ah! That is a good point. So there has to be certain requirements on what the language computes. It seems that some minimum requirement must be made on the power of the language to make that statement true. It seems like if we demand it be able to solve basic arithmetic problems then it might hold.
Jake

@Jake You might actually be able to get away with something incredibly weak like "the language defines at least one non-constant function" or "the language defines more than one function". My counterexample is clearly trivial for any reasonable definition of "trivial".
David Richerby

Sounds like an interesting problem for me to think about. If I find anything I'll reply back.
Jake
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.