-calculus প্রতিফলন সঙ্গে


23

আমি একটি সাধারণ ক্যালকুলাস খুঁজছি যা প্রতিবিম্ব সম্পর্কে যুক্তি সমর্থন করে , যথা, চলমান প্রোগ্রামগুলির অন্তর্মুখী এবং হেরফের।

এমন কোনও টাইপযুক্ত- ক্যালকুলাস এক্সটেনশন রয়েছে যা একজনকে স্টার্মগুলিকে এমন একটি রূপে রূপান্তর করতে সক্ষম করে যা সিনট্যাকটিকালি ম্যানিপুলেটেড এবং তারপরে মূল্যায়ন করা যায়?λλ

আমি কল্পনা করি যে ক্যালকুলাসের দুটি প্রধান অতিরিক্ত শর্ত রয়েছে:

  • reflect v : লাগে এবং একটি প্রতিনিধিত্ব উৎপন্ন অন্বিত ম্যানিপুলেশন amendable।vvv
  • eval v : একটি পদটির সিনট্যাকটিক উপস্থাপনা নেয় এবং তা মূল্যায়ন করে।

প্রতিবিম্ব সমর্থন করার জন্য, পদগুলির একটি সিনট্যাকটিক উপস্থাপনা প্রয়োজন required এটি দেখতে কিছু হবে:

  • λx.e একটি শব্দ হিসাবে প্রতিনিধিত্ব করা হবে(LAM R(e)) , যেখানে R(e) এর প্রতিফলিত সংস্করণe ,
  • e e শব্দটি হিসাবে প্রতিনিধিত্ব করা হবে(APP R(e) R(e)) এবং
  • ( V A R x )x হিসাবে উপস্থাপন করা হবে।(VAR x)

এই উপস্থাপনার সাথে, প্যাটার্ন মেলানো শর্তগুলি ম্যানিপুলেট করতে ব্যবহৃত হতে পারে।

তবে আমরা একটি সমস্যায় পড়েছি। reflect এবং eval কে শর্তাদি হিসাবে এনকোড করা দরকার, যেমন প্যাটার্ন মেলানো। এটির সাথে লেনদেন করা সহজ বলে মনে হচ্ছে, REFLECT , EVAL এবং MATCH , তবে এগুলির হেরফেরকে সমর্থন করার জন্য আমার কি অন্যান্য শর্ত যুক্ত করার দরকার আছে?

ডিজাইনের পছন্দগুলি করা দরকার। কি করা উচিত R() ফাংশন উপরে উল্লিখিত লাশ না reflect এবং eval ? উচিত R() শরীর রুপান্তর কি না?

যেহেতু আমি নিজেই প্রতিচ্ছবি অধ্যয়নের বিষয়ে তেমন আগ্রহী নই - ক্যালকুলাস অন্যান্য গবেষণার বাহন হিসাবে কাজ করবে - আমি চাকাটি পুনরায় উদ্ভাবন করতে চাই না।

আমি স্রেফ বর্ণিত হিসাবে মেলে এমন কোনও ক্যালকুলি আছে কি?

আমি যতদূর বলতে পারি, একটি মন্তব্যে প্রস্তাবিত মেটাএমএল-এর মতো ক্যালকুলি অনেক দূর এগিয়ে যান, তবে তারা ইতিমধ্যে নির্মিত হয়েছে এমন কোডের খণ্ডগুলি মেলে এবং ডিকনস্ট্রাক্ট করার ক্ষমতা অন্তর্ভুক্ত করে না।

আমি করতে সক্ষম হতে চাই একটি জিনিস নিম্নলিখিত:

  • let x=λy.y in reflect x(LAM (VAR y) (VAR y))

এবং তারপরে সম্পূর্ণ আলাদা এক্সপ্রেশন তৈরি করতে ফলাফলের সাথে প্যাটার্ন মেলানো সম্পাদন করুন।

এটি অবশ্যই ক্যালকুলাসে রক্ষণশীল এক্সটেনশন নয় এবং মেটা-তত্ত্বটি কুৎসিত হওয়ার সম্ভাবনা রয়েছে তবে এটি আমার আবেদনের জন্য বিন্দু জাতীয় of আমি বিরতি চান λ পৃথক্ -abstractions।λλ


মেটাএমএল হ'ল একটি টাইপযুক্ত প্রতিফলনযোগ্য ভাষা যা ব্র্যাককেটিংয়ের অপারেটর আপনার REFLECT সম্পাদন করে এবং EVAL খালি বন্ধ করে দেয় with টাইপিং বেসিক, তবে আপনি এই কাগজের মতো কাজের ক্ষেত্রে মডেল এস 4 থেকে উত্তরাধিকার সূত্রে পাওয়া খণ্ডটি দেখতে পারেন যা আপনাকে সহায়তা করতে পারে।
ex0du5

@ ex0du5: ধন্যবাদ, তবে যতদূর আমি বলতে পারি এটি যথেষ্ট পরিমাণে যায় না। অবশ্যই, আমি বিভিন্ন ধাপে কোড তৈরি করতে পারি, তবে আমি শর্তগুলি আলাদা করতে সক্ষম হবে বলে মনে হয় না। (আমি আরও নিবিড়ভাবে পড়ব, আমি কিছু মিস করেছি কিনা তা দেখার জন্য।)
ডেভ ক্লার্ক

প্রকল্প (পরিবর্তন এবং অন্যান্য জটিলতা ছাড়াই)?
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস: স্কিম একটি ক্যালকুলাস নয়, একটি প্রোগ্রামিং ভাষা। তদুপরি, আমি মনে করি না এটি আমার যা করতে পারে তা করতে পারে।
ডেভ ক্লার্ক

@ ডেভ ক্লার্ক একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ অনেকগুলি ওয়ার্সযুক্ত একটি ক্যালকুলাস। একটি স্কিম কোর প্রথম নজরে উপযুক্ত বলে মনে হচ্ছে, তবে আমি আপনার প্রয়োজনীয়তাগুলি নিশ্চিত হওয়ার জন্য পর্যাপ্ত চিন্তা সরবরাহ করি নি। আপনার কি মনে হয় কাজ করবে না? (আপনি চাইলে চ্যাট করতে যান))
গিলস 'অশুভ হওয়া বন্ধ করুন'

উত্তর:


15

জাঁ লুই ক্রাইভাইন একটি বিমূর্ত ক্যালকুলাস প্রবর্তন করেছিলেন যা "ক্রিভাইন মেশিন "টিকে খুব অ-তুচ্ছ উপায় হিসাবে প্রসারিত করে (নোট করুন যে ক্রাইভাইন মেশিন ইতিমধ্যে লিসপ থেকে কল / সিসি নির্দেশকে সমর্থন করে):

তিনি একটি "কোট" অপারেটর প্রবর্তন এই নিবন্ধটি নিম্নলিখিত পদ্ধতিতে সংজ্ঞায়িত যদি একটি হল λ -term, নোট এন φ ভাবমূর্তি φ কিছু bijection দ্বারা π : Λ এন প্রাকৃতিক নম্বরে ল্যামডা পদ থেকে। দ্রষ্টব্য ¯ n গির্জার সংখ্যা যা n N এর সাথে মিলে যায় । Krivine অপারেটর সংজ্ঞায়িত χ মূল্যায়ন নিয়ম দ্বারা: χ φ φ ¯ এন φϕλnϕϕπ:ΛNn¯nNχ

χ ϕϕ nϕ¯
আমি বিশ্বাস করি ক্লেইন উইজার্ডারি দেখিয়ে দেবে যে আপনি যা চান তা করতে এটি যথেষ্ট: যেমন একটি কোট এবং বিভাজনকারী অপারেটরগুলি সংজ্ঞায়িত করুন, যদি comp গুণযোগ্য হয়।π

নোট করুন যে ক্রিভাইন কুখ্যাতভাবে পড়তে চ্যালেঞ্জ করছে (আপনি এটি পড়েন দয়া করে পাগল হবেন না, জিন লুই!) এবং কিছু গবেষক প্রযুক্তিগত বিষয়বস্তু আরও পঠনযোগ্য উপায়ে বের করার চেষ্টা করার দাতব্য কাজটি করেছেন। আপনি ক্রিস্টোফ রাফালির এই নোটগুলি একবার দেখার চেষ্টা করতে পারেন ।

আশাকরি এটা সাহায্য করবে!


আমার কাছে এমন আরও একটি রেফারেন্স রয়েছে যা আপনার আগ্রহের সাথে প্রাসঙ্গিক হতে পারে: জে এবং কেসনার দ্বারা শুদ্ধ প্যাটার্ন ক্যালকুলাস -ক্যালকুলাসের একটি রূপকে আনুষ্ঠানিকভাবে রূপান্তরিত করে যা একটি প্যাটার্ন ক্যালকুলাস উপস্থাপন করে এমন একটি প্যাটার্নের পরিবর্তে একটি বিমূর্তে সাধারণ বিমূর্তি প্রসারিত করে নিজেই। এটি অভূতপূর্বভাবে উদ্বেগজনক এবং বিশেষত একটিকে নিজেই একটি অ্যাপ্লিকেশনটি ডিকনস্ট্রাক্ট করার অনুমতি দেয়: যদি আমার ভুল না হয় তবে শব্দটি:λ

(λ(x y).x)((λx.x x) (λy.y))

থেকে হ্রাস । আবার, আমি বিশ্বাস করি যে এই উদ্ধৃতি এবং ইওল অপারেটরগুলি প্রয়োগ করার জন্য যথেষ্ট পরিমাণের চেয়ে বেশি ।λx.x x


আমি এই আপাতদৃষ্টিতে যুক্তিসঙ্গত উত্তরটি উত্সাহিত করতে চাই, তবে এটি এমনকি প্রশ্নের উত্তর দেওয়া শুরু করে কিনা তা আমার কোনও ধারণা নেই।
রাফেল

@ রাফেল নিবন্ধগুলি পড়ুন এবং এটি সন্ধান করুন :) সত্য, এটি কেবল একটি আংশিক উত্তর: নিবন্ধগুলি ল্যাম্বডা ক্যালকুলাসে পাওয়া যায় না এমন লিস্পের একটি গুরুত্বপূর্ণ বৈশিষ্ট্যটি আনুষ্ঠানিকভাবে প্রথাগত করে: যেমন কোয়েট অপারেটর। যদিও কোনও বিস্তৃত মেটা-তাত্ত্বিক অধ্যয়ন নেই, তারা সেট তত্ত্বের জটিল অক্ষগুলি অনুধাবন করার জন্য কেবল এক ধরণের অদ্ভুত স্বচ্ছ-গণনা প্রকাশ করার মাধ্যম হিসাবে এটি উপস্থাপন করেছেন।
কোডি

1
আমি যদি সঠিকভাবে মনে রাখি, পিপিসিতে, আপনি পুনর্নির্মাণগুলির সাথে মিলের প্যাটার্ন করতে পারেন না, কারণ তারা দিয়েছেন কারণ সঙ্গমের জন্য। এছাড়াও, পিপিসিতে, প্যাটার্ন ম্যাচটি ম্যাচ করাতে কঠোর, সুতরাং অবিলম্বে λ y এ স্বাভাবিক করা হবে y , তারপরে এটি ( x y ) প্যাটার্নের সাথে মিলে যাওয়ার চেষ্টা ব্যর্থ হবে। (λx.x x) (λy.y)λy.y(x y)
দিন

1
আমার জানা একমাত্র উক্তিটি হ'ল লিস্প একটি। তবে, যেমনটি আমার মনে আছে, এটি একটি সিনট্যাকটিক অবজেক্টে উদ্ধৃত সমস্ত কিছু পরিবর্তন করে। "ফাংশন" তার যুক্তিটিকে অবমূল্যায়ন করে নিয়েছে .. r e f l e c t ফাংশনটি তার তর্কটির মূল্য নেবে (এটি মূল্যায়ন করবে) এবং এটি আবার এমন কিছু সিনট্যাক্টিক এক্সপ্রেশনে পরিণত করবে যা মূল্যায়ন করে (কীভাবে ?) যে মান। তাই আপনি যদি পাতার মর্মর সঙ্গে Krivine লৌকিকতা পুলিশ কুই তোমার দর্শন লগ করা টি , আমরা কাছাকাছি কোথাও না পেয়ে কি প্রশ্নে পরামর্শ দেওয়া হয়। quotereflectquote
বাবু

8

সঙ্গম ত্যাগ না করে অসম্পূর্ণ না হলে এটি করা খুব কঠিন। যা বলা যায়, আমি সন্দেহ করি আপনি লোমশ মেটা-তত্ত্ব সম্পর্কে সঠিক। অন্যদিকে, একটি সমন্বয়কারী ক্যালকুলাস ডিজাইন করা সম্ভব যা সমস্ত টিউরিং কম্পিউটিংযোগ্য ফাংশন প্রকাশ করতে পারে এবং এর শর্তাদি পরিদর্শন করার সম্পূর্ণ ক্ষমতা রয়েছে: জে এবং গিভ-উইলসন দেখুন

আমি বিশ্বাস করি যে এই ক্ষমতা থাকা আপনার সমীকরণীয় তত্ত্বের কিছু খারাপ কাজ করে। বিশেষত আপনি দুটি মান সমান প্রমাণ করতে সক্ষম হবেন যদি আলফা সমতুল্যের সমান হয় equal

আমি এখনও ক্রিভাইন পেপার কোডের সাথে লিঙ্কটি পড়িনি, তবে আমার মনে রাখা উচিত যে শাস্ত্রীয় যুক্তিতে আপনার কাছে মূলত দুটি জিনিস থাকে: সত্য এবং মিথ্যা। সবকিছুই তাদের একটির সমান। এটি হ'ল, যাইহোক আপনার একটি ধসে পড়া সমীকরণীয় তত্ত্ব রয়েছে।


1
নোট করুন যে ক্রিভাইন ক্যালকুলাস প্রস্তাবগুলির ক্যালকুলাস নয় বরং এগুলির জন্য উপলব্ধিকারীদের তুলনায় , যা একটি অত্যন্ত অ-তুচ্ছ সমীকরণীয় তত্ত্ব রয়েছে।
কোডি

5

প্রোগ্রামিং ল্যাঙ্গুয়েজগুলির তত্ত্বে আপনি যে বৈশিষ্ট্যটির কথা বলবেন তা সাধারণত "উক্তি" হিসাবে উল্লেখ করা হয়। উদাহরণস্বরূপ, জন লংলি তাঁর কয়েকটি রচনায় এ সম্পর্কে লিখেছিলেন, এই কাগজটি দেখুন

আপনি যদি তাত্ত্বিক বিবেচনার পরে থাকেন (বাস্তবে কার্যকর প্রয়োগের বিপরীতে) তবে আপনি যুক্তিগুলির গডেল কোড ফিরিয়ে মানচিত্রগুলি quote(বা reflectআপনি যেমন এটি ডাকছেন) মানচিত্রের সংখ্যায় উল্লেখ করে জিনিসগুলিকে সহজ করতে পারেন nat। তারপরে আপনি সংখ্যাকে পচন করতে পারেন ঠিক যেমন আপনি একটি বিমূর্ত বাক্য গঠন গাছের মতো। তদ্ব্যতীত, আপনার প্রয়োজন নেই evalকারণ এটি ভাষায় প্রয়োগ করা যেতে পারে - এটি মূলত ভাষার জন্য দোভাষী।

যা এই বৈশিষ্ট্যগুলি আপনাকে Kleene প্রথম সমন্নয়ের বীজগণিত বিবেচনা করতে পারেন একটি কংক্রিট মডেল জন্য: একটি সংখ্যা হিসাবে সবকিছু (গোডেলের কোড হিসাবে তাদের মনে) ব্যাখ্যা Kleene আবেদন সংজ্ঞায়িত গড় থেকে φ এন ( মি ) যেখানে φ এন হয় এন - আংশিক ফাংশন। এটি আপনাকে λ -ক্যালকুলাস (আংশিক মানচিত্র সহ) এর একটি মডেল দেবে যা কেবল পরিচয়ের কাজ। ভাষায় আর কোনও বৈশিষ্ট্য যুক্ত করার দরকার নেই।nmφn(m)φnnλquote

আপনি যদি পরে আমাকে বলেন তবে আমি আপনাকে আরও নির্দিষ্ট রেফারেন্স দিতে সক্ষম হতে পারি।

যাইহোক, এখানে একটি মুক্ত সমস্যা:

λquoteξ

ξ

e1e2λx.e1λx.e2
λλquotequote
e1e2quotee1quotee2,
quote((λx.x)y)quotey.
quoteλ

βquoteλξ

ξβ

নীচের কাগজটি (ξ) সমীকরণের সাথে কিছু সমস্যা দেখায়: ল্যাম্বডা ক্যালকুলাস হ'ল বীজগণিত, পিটার সেলিনগার। আকর্ষণীয়, নতুন কিছু আমি অবগত ছিল না! কুল।
স্থানান্তরিত সংখ্যা

4

এখানে আমার নামমাত্র পদ্ধতির ব্যবহারের পরিবর্তে যা পরীক্ষামূলকভাবে এখনও পরীক্ষামূলক রয়েছে সেখানে আরও কিছু প্রতিষ্ঠিত পদ্ধতি রয়েছে যা কাগজে ফিরে আসে:

লিপ:
ইওল ও পলিমারফিজম সহ একটি ভাষা ফ্র্যাঙ্ক পেফেনিং এবং পিটার লি
https://www.cs.cmu.edu/~fp/papers/tapsoft89.pdf

কাগজ দিয়ে শুরু:

এরপরে আমাদের রেনল্ডস প্রথম উত্থাপিত প্রশ্নটির দিকে নিয়ে গিয়েছিল, দৃ strongly়ভাবে টাইপ করা ভাষাগুলি মেটাক্যারিকুলার দোভাষীকে স্বীকার করে কিনা তা নিয়ে। প্রচলিত জ্ঞানের উত্তরটি "না" বলে মনে হয়েছিল। আমাদের উত্তর "প্রায়"।

দয়া করে নোট করুন যে ওএপি যা চায় তার চেয়ে এলএইপি আরও শক্তিশালী। সবার আগে এটি টাইপ করা হয়। এবং দ্বিতীয়টি এটি metacircularity জন্য জিজ্ঞাসা করে, যার অর্থ উদাহরণস্বরূপ যে eval তার নিজস্ব সংজ্ঞা কার্যকর করতে পারে। প্রোলোগে আপনি সমাধান / 1/1 এর জন্য মেটাসের্কুলারিটি পাবেন:

solve(true).
solve((A,B)) :- solve(A), solve(B).
solve(H) :- clause(H,B), solve(B).

সমাধানের জন্য নিম্নলিখিত ধারাটি যোগ করলে / 1:

solve(clause(H,B)) :- clause(H,B).

এবং যদি আপনি এটি দেখতে পান যে ধারা / 2 এছাড়াও সমাধান / 1 এর ধারাগুলি প্রদান করে। তারপরে আপনি সমাধান কল করুন (সমাধান করুন (...)) এবং দেখুন কীভাবে সমাধানটি নিজেই কার্যকর করে utes

স্ব প্রতিনিধিত্বমূলক প্রশ্নগুলি এখনও কিছু গবেষণা উত্সাহিত করে, উদাহরণস্বরূপ দেখুন:

জিরার্ডস সিস্টেম ইউ
ম্যাট ব্রাউন, জেনস প্যালসবার্গ http://compilers.cs.ucla.edu/popl15/popl15-full.pdf এ স্ব প্রতিনিধিত্ব


3

সমস্যাটি কোক এবং ইসাবেলি / এইচএল এর মতো প্রুফ সহকারীগুলির সান্নিধ্যে চিহ্নিত করা হয়েছে। এটি সংক্ষেপে HOAS এর অধীনে যায় । Pr-প্রোলোগের আশেপাশে কিছু দাবি রয়েছে যে নতুন ∇ কোয়ানটিফায়ার মাধ্যমে এই জাতীয় জিনিসগুলি করা যেতে পারে। তবে আমি এখনও এই দাবিটি ধরে রাখতে পারি না। আমি অনুমান করি যে এখন পর্যন্ত আমি যে প্রধান অন্তর্দৃষ্টি পেয়েছি তা হ'ল কোনও সুনির্দিষ্ট দৃষ্টিভঙ্গি নেই, সম্ভাব্য পদ্ধতির কয়েকটি রয়েছে।

আমার নিজের গ্রহণ, এখনও শেষ হয়নি , গডেলসকে অসম্পূর্ণতা প্রমাণ করার বিষয়ে পলসনের একটি সাম্প্রতিক কাগজ দ্বারা অনুপ্রাণিত হয়েছে । মেটা-স্তরের নাম রয়েছে এমন কিছু ডেটা স্ট্রাকচারের সাথে আমি অবজেক্ট-স্তরের বাইন্ডার ব্যবহার করব। মূলত ওপি থেকে পাওয়া একটি অনুরূপ এখনও স্বতন্ত্র ডেটা কাঠামো এবং চার্চ কোডিং সহ যেহেতু আমি নির্ভরশীল প্রকারগুলিতে আগ্রহী:

datatype Expr = var Name                 /* written as n */
              | app Expr Expr            /* written as s t */
              | abs Name Expr Expr       /* written as λn:s.t */

মেটা স্তরের এক্সপ্রেশনগুলি অবজেক্ট স্তরের এক্সপ্রেশন থেকে আলাদা করা যায় যে আমরা নামগুলি বোঝাতে ভেরিয়েবল নামগুলি ব্যবহার করি .. যেখানে আমরা ভ্যারিয়েবলের নামগুলি x, y, .. ইত্যাদি ব্যবহার করব বস্তুর স্তরে on বস্তুর যুক্তিতে একটি মেটা শব্দের ব্যাখ্যা নীচের মত কাজ করবে। লিখতে [t] the নামমাত্র পরিপ্রেক্ষিতে নামমাত্র শব্দ টি এর ব্যাখ্যার জন্য।, যা একটি অবজেক্ট টার্ম দেয়। আমাদের তখন হবে:

 [n]σ = lookup σ n
 [s t]σ = [s]σ [t]σ
 [λn:s.t]σ = λx:[s]σ.[t]σ,n:x

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

নামমাত্র এবং অ-নামমাত্রের মধ্যে প্রাচীরটি ছিঁড়ে ফেলতে চাইলে আপনাকে প্রোলোগের মতো চূড়ান্ত দিকে যেতে হবে যেখানে কিছুই প্রসারিত হয়নি। তবে যেমন λ-প্রোলোগ সিস্টেমের উদাহরণটি দেখায়, উচ্চ-অর্ডার ক্ষেত্রে অতিরিক্ত সমস্যাগুলির লোভ রয়েছে যা উদাহরণস্বরূপ ∇ কোয়ানটিফায়ার হিসাবে নতুন উপায় প্রবর্তন করে কেবল যৌক্তিক উপায়ে কাটিয়ে উঠতে পারে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.