ফাইস্প্লিট এবং পাই ধরণের মেরুতা


18

একটি সাম্প্রতিক থ্রেড Agda মেইলিং তালিকা, প্রশ্নে η আইন popped আপ বানানো যা পিটার হানকোক চিন্তার উদ্দীপক মন্তব্য

আমার বোঝার যে η আইন নেতিবাচক ধরনের সঙ্গে আসা, অর্থাত্। সংযোজকগুলি যা প্রবর্তনের বিধিগুলি অবিচ্ছেদ্য। ফাংশনগুলির জন্য ta অক্ষম করতে , হ্যাঙ্ক স্বাভাবিক প্রয়োগের নিয়মের পরিবর্তে কাস্টম-মেড অ্যালিমিনেটর , ফানস্প্লিট ব্যবহার করার পরামর্শ দেয় । আমি পোলারিটির ক্ষেত্রে হ্যাঙ্কের মন্তব্যটি বুঝতে চাই।η

উদাহরণস্বরূপ, দুটি উপস্থাপনা রয়েছে টাইপস। ইতিবাচক শৈলীতে traditionalতিহ্যবাহী মার্টিন-লুফ বিভাজন নির্মূলকারী রয়েছে :Σ

Γf:(a:A)(b:Ba)C(a,b)Γp:Σa:A.BΓsplitfp:Cp

এবং নেতিবাচক সংস্করণ আছে:

Γp:Σa:A.BΓπ0p:AΓp:Σa:A.BΓπ1p:B[π0p/a]

এই উত্তরোত্তর উপস্থাপনা জন্য অর্জন করা সহজ করে , যেমন। যেকোন জুটির (যেখানে == সংজ্ঞাগত সমতার জন্য দাঁড়িয়েছে)। প্রবণতার শর্তে, এই পার্থক্যটি কোনও বিষয় নয়: স্বজ্ঞাতদৃষ্টিতে, আপনি বিভাজন বা অন্যান্য উপায়ে প্রক্ষেপণগুলি প্রয়োগ করতে পারেন।( π 0 পি , π 1 পি ) = = পি পিη(π0p,π1p)==pp

এখন, Π টাইপগুলি সাধারণত (এবং বিশ্বাসহীনভাবে বিশ্বাস করি) নেতিবাচকভাবে নেওয়া হয়:

Γf:Πa:A.BΓs:AΓfs:B[s/a]

যা আমাদের ফাংশনের জন্য ta এটা দেয় η: λx.fx==f

তবে, সেই মেইলে হ্যাঙ্ক ফানস্প্লিট এলিমিনেটরকে স্মরণ করে (এমএল টাইপ থিওরিয়ায় প্রোগ্রামিং, [http://www.cse.chalmers.se/research/group/logic/book/], p.56)। এটি যৌক্তিক কাঠামোয় বর্ণনা করেছেন:

fΠ(A,B)C(v)Set[vΠ(A,B)]d(y)C(λ(y))[y(x)B(x)[xA]]funsplit(f,d)C(f)

মজার বিষয় হল, নর্ডস্ট্রোম এট আল। এই সংজ্ঞাটি প্ররোচিত করুন যে "[এটি] বিকল্প অ-প্রৌ .় রূপটি কাঠামোগত আনয়ন নীতির উপর ভিত্তি করে"। এই বিবৃতিতে ইতিবাচকতার তীব্র গন্ধ রয়েছে: ফাংশনগুলি তাদের নির্মাতা , লাম্বদা দ্বারা 'সংজ্ঞায়িত' করা হবে λ

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

সুতরাং, ফানস্প্লিট টাইপসের ইতিবাচক উপস্থাপনা কি? (অননির্ভরশীল) পরের ক্যালকুলাসেও কি আমাদের অনুরূপ কিছু রয়েছে? এটি দেখতে কেমন হবে?Π

ক্ষেত্রের প্রমাণ তাত্ত্বিকদের পক্ষে এটি কতটা সাধারণ / কৌতূহল?

উত্তর:


12

ব্যবহার করে কার্যকরী নির্মূলকরণের উপস্থাপনাটি অবশ্যই তত্ত্বের বেশিরভাগ চিকিত্সার ক্ষেত্রে স্বাভাবিক ঘটনা নয়। তবে আমি বিশ্বাস করি যে এই ফর্মটি কার্যকরী ধরণের নির্মূলকরণের "ইতিবাচক" উপস্থাপনা। এখানে সমস্যাটি হ'ল আপনার উচ্চ-অর্ডার প্যাটার্ন মিলের একটি ফর্মের প্রয়োজন, উদাহরণস্বরূপ ডেল মিলার দেখুনfunsplit

আপনার নিয়মটি আমার কাছে এমনভাবে পরিষ্কার করার মঞ্জুরি দিন:

Γf:Πx:A.BΓ,z:Πx:A.BC:SetΓ,[x:A]F(x):Be:C{λx:A.F(x)/z}match f with λx:A.F(x)e:C{f/z}

কোথায় একটি হল মেটা-পরিবর্তনশীল ধরনের বি এ প্রসঙ্গে এক্স : একজনFBx:A

পুনর্লিখনের নিয়মটি তখন পরিণত হয়:

match λx:A.t with λx:A.F(x)ee{t{u/x}/F(u)}

এটি আপনাকে অ্যাপ্লিকেশনটিকে নিম্নলিখিত হিসাবে সংজ্ঞায়িত করতে দেয়:

app(t,u)=match t with λx:A.F(x)F(u)

এটিকে বৈধ হওয়ার জন্য একটি "লজিকাল ফ্রেমওয়ার্ক-স্টাইল" টাইপ-সিস্টেমের প্রয়োজনের বাইরেও, উচ্চ-অর্ডার একীকরণের ঝামেলা (এবং সীমিত প্রয়োজন) এই সূত্রটিকে অপ্রিয় করে তোলে।

যাইহোক, সাহিত্যে ইতিবাচক / নেতিবাচক পার্থক্য উপস্থিত থাকার জায়গা রয়েছে: যৌক্তিক সম্পর্ক গঠনের পূর্বাভাস দেয় । দুটি সম্ভাব্য সংজ্ঞা (একাকার ক্ষেত্রে) হয়

[[Πx:A.B]]={tu[[A]],tu[[B]]xu}

এবং

[[Πx:A.B]]={ttλx.t,u[[A]],t{u/x}[[B]]xu}

দ্বিতীয় সংস্করণটি কম সাধারণ তবে এটি পাওয়া যেতে পারে যেমন ডাউক এবং ওয়ার্নারে


1
এটি উচ্চ-আদেশ বিমূর্ত সিনট্যাক্সের সাথে সম্পর্কিত বলে মনে হচ্ছে যা লজিকাল ফ্রেমওয়ার্কে ব্যাপকভাবে ব্যবহৃত হয়। বিশেষত, এফটি মেটা-ফাংশন বলে মনে হচ্ছে। F
দিন

13

ফ্রেড্রিকের উত্তরের জন্য এখানে কিছুটা আলাদা দৃষ্টিকোণ। সাধারণভাবে ক্ষেত্রে যে ধরনের impredicative চার্চ এনকোডিং প্রাসঙ্গিক সন্তুষ্ট হবে আইন, কিন্তু সন্তুষ্ট করা হবে না η আইন।βη

সুতরাং এর অর্থ আমরা একটি নির্ভরশীল জোড়কে নিম্নলিখিত হিসাবে সংজ্ঞায়িত করতে পারি:

এখন, দয়া করে মনে রাখবেন π 1 সহজে চিহ্নিত হয়: π 1 : এক্স : এক্স

x:X.Y[x]α:.(Πx:X.Y[x]α)α
π1 তবে, আপনি দ্বিতীয় প্রক্ষেপণ ine 2 : Π p : ( x : X ) সংজ্ঞায়িত করতে পারবেন না
π1:x:X.Y[x]Xλp:(x:X.Y[x]).pX(λxy.x)
- চেষ্টা করুন! আপনি কেবল এটির জন্য একটি দুর্বল নির্মূলকারীকে সংজ্ঞায়িত করতে পারেন, এজন্যই আমি এটি অস্তিত্বের সাথে লিখেছিলাম।π2:Πp:(x:X.Y[x]).Y[π1p]

যাইহোক, দ্বিতীয় অভিক্ষেপটি উপলব্ধিযোগ্য এবং একটি প্যারাম্যাট্রিক মডেলে আপনি এটিও ঠিক আচরণ করতে পারেন তা দেখিয়ে দিতে পারেন। (এ সম্পর্কে আরও তথ্যের জন্য ক্যালকুলাস অব কনস্ট্রাকশনে প্যারামিট্রিসিটি সম্পর্কে ডেরেক ড্রেয়ারের সাথে আমার সাম্প্রতিক খসড়াটি দেখুন )) সুতরাং আমি মনে করি যে প্রজেকশনটি বোধগম্য হওয়ার জন্য মৌলিকভাবে কিছু দৃ extension় এক্সটেনসিলিটি সম্পত্তি দাবি করে।π2

পরবর্তী ক্যালকুলাসের ক্ষেত্রে, দুর্বল নির্মূলকারীটির একটি বিধি রয়েছে যা দেখতে কিছুটা দৃষ্টিনন্দন:

Γ,x:X,y:Y[x],Γe:CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C
pΓC
Γ,x:X,y:Y[x],[(x,y)/p]Γe:[(x,y)/p]CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C

1
আমি সত্যিই এই সমস্ত উত্তর উপভোগ করছি! আমি অনুভব করি যে ফ্রেড্রিকের উত্তরে "অন্তর্নিয়োগ" (একটি শব্দের একটি মূল্য রয়েছে তা জানার ক্ষমতা) এর কিছু ধারণা রয়েছে যা এটা সহ আসল সমস্যা: প্যারামিট্রিকটি ইন্ট্রোস্পেকশনকে বোঝায় ইটাকে।
কোডি

10

রিচার্ড গার্নার মার্টিন- ল্যাফ (এপাল 160 (2009)) এর টাইপ থিয়োরিতে নির্ভরশীল পণ্যগুলির শক্তির উপর অ্যাপ্লিকেশন বনাম ফানস্প্লিট সম্পর্কিত একটি নিবন্ধ লিখেছেন , যা ফানস্প্লিট বিধিটির উচ্চতর আদেশের প্রকৃতি সম্পর্কেও আলোচনা করে (একটি রেফারেন্স সহ) পিটার শ্রয়েডার-হাইস্টার এর প্রাকৃতিক ছাড়ের প্রাকৃতিক বর্ধন (জেএসএল 49 (1984))।

Π

m:Π(A,B)η(m):IdΠ(A,B)(m,λx.mx)(Π-Prop-η)
x:Af(x):B(x)η(λ(f))=refl(λ(f)):IdΠ(A,B)(λ(f),λ(f))(Π-Prop-η-Comp)

That is, if you have funsplit, you can define application and η as above so that (Π-Prop-η-Comp) holds. More interestingly, if you have application and the propositional eta rules, then you can define funsplit.

Furthermore, funsplit is strictly stronger than application: the propositional eta rules are not definable in a theory with only application -- hence funsplit is not definable, since then the propositional eta rules would be as well. Intuitively, this is because the application rules give you a little more slack: unlike funsplit (and eta), they don't tell you what functions are, only that they can be applied to arguments. I believe Richard's argument could be repeated for Σ types as well, to show the same result for split vs projections.

Note that if you had definitional eta rules, you certainly would have them propositionally as well (with η(m):=refl(m)). Thus, I think your statements "[...] which gives us η for functions" and "[...] this latter presentation makes it easy to obtain η for pairs" are wrong. Agda, however, implements η for both functions and pairs (if Σ is defined as a record), but this does not follow from just application.

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