Làm thế nào có thể có thông số quan hệ?


15

Có một số cách tự nhiên để hiểu bản chất của ngữ nghĩa quan hệ cho đa hình tham số?

Tôi mới bắt đầu đọc về khái niệm tham số quan hệ, "Các loại, trừu tượng và đa hình tham số" của John la, và tôi gặp khó khăn trong việc hiểu ngữ nghĩa quan hệ được thúc đẩy như thế nào. Đặt ngữ nghĩa có ý nghĩa hoàn hảo với tôi và tôi nhận ra rằng ngữ nghĩa tập hợp là không đủ để mô tả đa hình tham số, nhưng bước nhảy vọt đến ngữ nghĩa quan hệ dường như là ma thuật, hoàn toàn không xuất hiện.

Có cách nào để giải thích nó dọc theo dòng "Giả sử quan hệ về các loại và thuật ngữ cơ bản, và sau đó việc giải thích các thuật ngữ xuất phát chỉ là mối quan hệ tự nhiên giữa ... như vậy và một điều tự nhiên ... trong ngôn ngữ lập trình của bạn "? Hoặc một số lời giải thích tự nhiên khác?

Câu trả lời:


22

Chà, tham số quan hệ là một trong những ý tưởng quan trọng nhất được giới thiệu bởi John Reynold, vì vậy không nên quá ngạc nhiên khi nó trông giống như ma thuật. Đây là một câu chuyện cổ tích về cách anh ta có thể đã phát minh ra nó.

Giả sử bạn đang cố gắng chính thức hóa ý tưởng rằng các chức năng nhất định (nhận dạng, bản đồ, gấp, đảo ngược danh sách) hoạt động "theo cùng một cách trên nhiều loại", tức là bạn có một số ý tưởng trực quan về đa hình tham số và bạn đã hình thành một số quy tắc để tạo bản đồ như vậy, tức là, đa hình λ -calculus hoặc một số biến thể đầu của nó. Bạn nhận thấy rằng ngữ nghĩa tập hợp ngây thơ không hoạt động.

Chẳng hạn, chúng ta nhìn chằm chằm vào loại

X:Type.XX,
chỉ nên chứa bản đồ nhận dạng, nhưng ngữ nghĩa lý thuyết tập hợp ngây thơ cho phép các chức năng không mong muốn như
λX:Type.λa:X.if (X={0,1}) then 0 else a.
Để loại bỏ loại điều này, chúng ta cần áp đặt một số điều kiện tiếp theo cho các chức năng. Chẳng hạn, chúng ta có thể thử một số lý thuyết miền: trang bị cho mỗi bộ X một thứ tự một phần X và yêu cầu tất cả các hàm phải đơn điệu. Nhưng điều đó không hoàn toàn cắt nó bởi vì chức năng không mong muốn ở trên là hằng số hoặc danh tính, tùy thuộc vào X và đó là các bản đồ đơn điệu.

Một lệnh phần là relfexive, bắc cầu và antisymmetric. Chúng ta có thể cố gắng thay đổi cấu trúc, ví dụ, chúng ta có thể cố gắng sử dụng một thứ tự từng phần nghiêm ngặt, hoặc một trật tự tuyến tính, hoặc một mối quan hệ tương đương, hoặc chỉ là một mối quan hệ đối xứng. Tuy nhiên, trong mỗi trường hợp, một số ví dụ không mong muốn leo vào. Ví dụ, các quan hệ đối xứng loại bỏ chức năng không mong muốn của chúng tôi nhưng cho phép các chức năng khác (bài tập).

Và sau đó bạn nhận thấy hai điều:

  1. Các muốn ví dụ không bao giờ loại bỏ, bất cứ điều gì quan hệ bạn sử dụng ở vị trí của đơn đặt hàng một phần .
  2. Đối với mỗi ví dụ không mong muốn cụ thể mà bạn nhìn vào, bạn có thể tìm thấy một mối quan hệ loại bỏ nó, nhưng không có mối quan hệ nào loại bỏ tất cả chúng.

Vì vậy, bạn có suy nghĩ tuyệt vời rằng các hàm mong muốn là những hàm bảo toàn tất cả các quan hệ và mô hình quan hệ được sinh ra.


1
Cảm ơn Andrej. Điều này đặt ra câu hỏi tiếp theo: có bất kỳ lớp con quan hệ nhỏ hơn nào loại bỏ tất cả các ví dụ không mong muốn?
Tom Ellis

Chà, có lẽ chúng ta có thể hạn chế sự phức tạp logic của các mối quan hệ vì chúng ta chỉ phải lo lắng về các bản đồ tính toán. Nhưng tôi không đủ chuyên gia để trả lời. Tôi triệu tập @UdayReddy.
Andrej Bauer

2
@TomEllis. Có, trong trường hợp đặc biệt, một lớp con của quan hệ có thể đủ. Trường hợp đặc biệt nhất ngay lập tức là, nếu tất cả các hoạt động là thứ nhất, thì các hàm (tổng, quan hệ đơn giá trị) là đủ. Đối với các trường, đẳng cấu một phần là đủ. Hãy nhớ lại rằng ví dụ hàng đầu của Reynold là lĩnh vực của các số phức và mối quan hệ logic của anh ta giữa Bessel và Descartes là một sự đẳng cấu một phần.
Uday Reddy

4
@AndrejBauer. Lưu ý rằng có chính xác một yếu tố tham số, nhưng các yếu tố ad hoc quá nhiều để tạo thành một tập hợp! Vì vậy, córất nhiềucắt để làm. Một lý thuyết khác về cách Reynold có thể nhận được thông số xuất hiện trong "Tinh hoa Reynold"sắp tới của chúng tôi. X.XX
Uday Reddy

Bạn chỉ ra rằng nếu bạn diễn giải các kiểu là tập hợp thì có các hàm không mong muốn. Không áp dụng tương tự cho các mối quan hệ? \X:Type. \a:X. if X = {(0,0), (1,0), (0,1), (1,1)} then 0 else a
Jules

11

Câu trả lời cho câu hỏi của bạn thực sự có trong truyện ngụ ngôn của Reynold (Phần 1). Hãy để tôi thử và giải thích nó cho bạn.

Trong một ngôn ngữ hoặc chủ nghĩa hình thức trong đó các loại được coi là trừu tượng , một biến loại có thể đại diện cho bất kỳ khái niệm trừu tượng nào. Chúng tôi không giả định rằng các loại được tạo thông qua một số cú pháp của thuật ngữ loại hoặc một số tập hợp toán tử loại cố định hoặc chúng tôi có thể kiểm tra hai loại để tìm sự bằng nhau, v.v ... Trong một ngôn ngữ như vậy, nếu một hàm liên quan đến một biến loại thì chỉ điều mà hàm có thể làm với các giá trị của kiểu đó là xáo trộn xung quanh các giá trị mà nó đã được đưa ra. Nó không thể phát minh ra các giá trị mới của loại đó, vì nó không "biết" loại đó là gì! Đó là ý tưởng trực quan của tham số .

Sau đó Reynold nghĩ về cách nắm bắt ý tưởng trực quan này một cách toán học và chú ý đến nguyên tắc sau. Giả sử chúng ta nhanh chóng các loại biến, nói , để hai loại bê tông khác nhau, nói MộtMột ' , trong instantiations riêng biệt, và giữ trong tâm trí của chúng tôi một số thư từ R : Một Một ' giữa hai loại bê tông. Sau đó, chúng ta có thể tưởng tượng rằng, trong một trường hợp, chúng tôi cung cấp một giá trị x x ' có liên quan bởi R ). Sau đó, vì hàm không biết gì về các loại chúng tôi đang cung cấp cho t hoặc các giá trị của loại đó, nên nó phải xử lý xtAAR:AA với chức năng và, trong trường hợp khác, một giá trị tương ứng với x 'A ' (nơi"tương ứng" có nghĩa rằng xxAxAxxRtxx trong chính xác cùng một cách. Vì vậy, kết quả chúng tôi nhận được từ các chức năng một lần nữa phải tương ứng bởi các mối quan hệ , chúng tôi đã giữ trong tâm trí của chúng ta, tức là, bất cứ nơi nào các yếu tố x xuất hiện trong kết quả của một ví dụ, các yếu tố x ' phải xuất hiện trong các trường hợp khác. Do đó, một hàm đa hình tham số sẽ bảo toàn tất cả các tương ứng quan hệ có thể có giữa các lần khởi tạo có thể của các biến loại .Rxx

Ý tưởng bảo quản thư tín này không phải là mới. Các nhà toán học đã biết về nó trong một thời gian dài. Trong trường hợp đầu tiên, họ nghĩ rằng các hàm đa hình nên bảo toàn các đẳng cấu giữa các kiểu khởi tạo. Lưu ý rằng đẳng cấu có nghĩa là một số ý tưởng về sự tương ứng một-một . Rõ ràng, đẳng cấu ban đầu được gọi là "đồng cấu". Sau đó, họ nhận ra rằng những gì chúng ta gọi là "đồng cấu", nghĩa là một số ý tưởng về sự tương ứng nhiều-một , cũng sẽ được bảo tồn. Bảo tồn như vậy đi theo tên của biến đổi tự nhiên trong lý thuyết thể loại. Nhưng, nếu chúng ta nghĩ về nó một cách sắc sảo, chúng ta nhận ra rằng việc bảo tồn các đồng cấu là hoàn toàn không thỏa mãn. Các loại A 'AAchúng tôi đề cập là hoàn toàn tùy ý. Nếu chúng ta chọn A A ' Một , chúng tôi sẽ nhận được tài sản tương tự. Vậy, tại sao "sự tương ứng nhiều-một", một khái niệm bất đối xứng, lại đóng một vai trò trong việc hình thành một tính chất đối xứng? Do đó, Reynold đã thực hiện một bước lớn trong việc khái quát hóa từ đồng cấu sang quan hệ logic, đó là sựtương ứng nhiều-nhiều. Tác động đầy đủ của khái quát này vẫn chưa được hiểu đầy đủ. Nhưng trực giác cơ bản là khá rõ ràng.AAA

Có một sự tinh tế hơn nữa ở đây. Trong khi các khởi tạo của các biến loại có thể được thay đổi tùy ý, các loại hằng số nên được cố định. Vì vậy, khi chúng ta xây dựng sự tương ứng quan hệ cho một biểu thức kiểu có cả loại biến và loại hằng, chúng ta nên sử dụng mối quan hệ đã chọn ở bất cứ nơi nào có biến loại xuất hiện và quan hệ nhận dạng I K ở bất cứ nơi nào có loại K không đổi xuất hiện. Chẳng hạn, biểu thức quan hệ cho kiểu t × I n t I n t × t sẽ là R × I I n tI IRIKKt×IntInt×t. Vì vậy, nếuflà một hàm của loại này, thì nên ánh xạ một cặp(x,n)và một( x ,n)có liên quanđến một số cặp(m,x)và có liên quan(m, x )R×IIntIInt×Rf(x,n)(x,n)(m,x)(m,x) . Lưu ý rằng chúng ta bắt buộc phải kiểm tra hàm bằng cách đặt các giá trị tương tự cho các loại hằng trong hai trường hợp và chúng tôi được đảm bảo nhận được các giá trị giống nhau cho các loại không đổi trong các đầu ra. Vì vậy, khi xây dựng các tương ứng quan hệ cho các biểu thức kiểu, chúng ta nên đảm bảo rằng, bằng cách cắm vào các quan hệ nhận dạng (đại diện cho ý tưởng rằng các loại đó sẽ xảy ra là người đồng ý), chúng tôi lấy lại quan hệ danh tính, tức là . Đây làphần mở rộng danh tínhquan trọngF(IA1,,IAn)=IF(A1,,An) bất động sản.

Để hiểu được tham số theo trực giác, tất cả những gì bạn cần làm là chọn một số loại hàm mẫu, nghĩ về các hàm có thể được biểu thị của các loại đó và suy nghĩ về cách các hàm đó hoạt động nếu bạn cắm vào các lần xuất hiện khác nhau của các biến loại và các giá trị khác nhau của các loại các loại khởi tạo. Hãy để tôi đề xuất một vài loại chức năng để giúp bạn bắt đầu: , t I n t , I n t t , t × t t × ttttIntInttt×tt×t , , ( t(tt)t .(tt)(tt)


Cuối cùng, triệu tập của tôi đã làm việc!
Andrej Bauer

2
@AndrejBauer. Hmm, tôi đã không có được một triệu tập thực sự. Có thể là câu thần chú @ UdayReddy chỉ hoạt động khi bắt đầu bình luận. Trong mọi trường hợp, không cần triệu tập. "Tham số" là một trong những bộ lọc của tôi.
Uday Reddy

"Điều duy nhất mà hàm có thể làm đối với các giá trị của loại đó là xáo trộn xung quanh các giá trị mà nó đã được đưa ra" - thực ra, ngoài việc xáo trộn, hàm có thể xóa giá trị đã cho (làm suy yếu) và sao chép nó (co lại). Vì các hoạt động này luôn có sẵn, giá trị không trừu tượng như vẻ ngoài của nó.
Łukasz Lew

@ UkaszLew, bạn nói đúng. Tôi không biết nếu điều đó có thể được mô tả là mất "trừu tượng".
Uday Reddy

@UdayReddy Tôi đã xóa phần thưởng và hỏi đây là một câu hỏi độc lập .
Łukasz Lew

3

ω

Hơn nữa, việc xác định các chức năng có cùng hành vi mở rộng là rất hấp dẫn, do đó dẫn đến một mối quan hệ tương đương. Mối quan hệ là một phần nếu chúng ta loại trừ các hàm "không xác định", đó là các hàm "lặp" cho một số đầu vào được định dạng tốt.

Các mô hình PER là một khái quát của điều này.

Một cách khác để xem các mô hình này là một trường hợp đặc biệt (rất) của các mô hình tập hợp đơn giản của Lý thuyết loại Homotopy . Trong khung đó, các loại được hiểu là (tổng quát hóa), tập hợp với các mối quan hệ và quan hệ giữa các quan hệ đó, v.v ... Ở mức thấp nhất, chúng ta chỉ cần có các mô hình PER.

Cuối cùng, lĩnh vực toán học xây dựng đã chứng kiến ​​sự xuất hiện của các khái niệm liên quan, đặc biệt là Lý thuyết tập hợp của Giám mục liên quan đến việc mô tả một tập hợp bằng cách đưa ra cả hai yếu tố và một quan hệ bình đẳng rõ ràng, phải tương đương. Thật tự nhiên khi mong đợi một số nguyên tắc của toán học xây dựng tiến vào lý thuyết loại.


1
À, nhưng các mô hình PER không đẹp lắm và có thể chứa các hàm đa hình được tạo ra. Người ta phải vượt qua các mô hình PER quan hệ để loại bỏ chúng.
Andrej Bauer

Tôi vẫn cảm thấy nó thúc đẩy cách tiếp cận quan hệ mặc dù.
cody

@cody. Tôi đồng ý. Tôi nghĩ rằng PER như một cách xây dựng các mối quan hệ thành "lý thuyết tập hợp" để chúng ta có thể có được các mô hình bắt buộc ngay từ đầu. Cảm ơn đã đề cập đến lý thuyết loại Homotopy. Tôi không biết nó có ý tưởng tương tự.
Uday Reddy

@UdayReddy: các ý tưởng rất giống nhau! Cụ thể, ý tưởng về "các triển khai phụ thuộc tương thích" liên quan đến các loại trừu tượng với các phụ thuộc có thể được hiểu thông qua lăng kính của đẳng thức thống nhất.
cody
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.