Chính xác thì sự khác biệt về ngữ nghĩa giữa bộ và loại là gì?


33

EDIT: Bây giờ tôi đã hỏi một câu hỏi tương tự về sự khác biệt giữa các danh mục và bộ.

Mỗi lần tôi đọc về lý thuyết loại (mà phải thừa nhận là khá không chính thức), tôi thực sự không thể hiểu nó khác với lý thuyết tập hợp một cách cụ thể như thế nào .

Tôi hiểu rằng có một sự khác biệt về khái niệm giữa việc nói "x thuộc về một tập X" và "x là loại X", bởi vì theo trực giác, một tập hợp chỉ là một tập hợp các đối tượng, trong khi một loại có "thuộc tính" nhất định. Tuy nhiên, các bộ thường được định nghĩa theo các thuộc tính, và nếu có, thì tôi gặp khó khăn trong việc hiểu sự khác biệt này quan trọng như thế nào.

Vì vậy, theo cách cụ thể nhất có thể, chính xác nó ngụ ý gì vềx để nói rằng nó thuộc loại , so với việc nói rằng nó là một phần tử trong tập ?STS

(Bạn có thể chọn bất kỳ loại nào và thiết lập để làm cho sự so sánh rõ ràng nhất).


Bối cảnh bạn đang sử dụng / nghe từ "loại" là gì? Có phải, như tên của bạn cho thấy, ngôn ngữ lập trình? Bởi vì tôi nghĩ rằng các câu trả lời dưới đây giả sử khác.
einpoklum - phục hồi Monica

@einpoklum, tôi không chắc chắn 100% làm thế nào để mô tả "bối cảnh" là gì, nhưng về cơ bản là: Tôi đang cố gắng hiểu vai trò của các loại trong toán học. Về cơ bản, các tập hợp (như tôi thấy) có hai bối cảnh: thứ nhất chúng được sử dụng làm tập hợp các đối tượng để làm toán học hàng ngày. Thứ hai, chúng là các đối tượng trong lý thuyết tập hợp tiên đề, trong đó chúng chủ yếu được sử dụng như một công cụ rất kỳ lạ nhưng hữu ích để nói về toán học theo logic thứ tự đầu tiên, bằng cách cho các tập hợp tương ứng với các hàm và số, v.v. Tôi chủ yếu quan tâm đến mối quan hệ giữa "thiết lập" theo nghĩa đầu tiên và "loại".
dùng56834

Vai trò của loại nào? Các loại bạn nhìn thấy trong các bài báo / sách giáo khoa toán học, hoặc các loại biến trong các chương trình máy tính?
einpoklum - phục hồi Monica

1
@einpoklum, câu hỏi này là về những cái trong bài toán. (Mặc dù tôi thực sự cũng muốn biết sự khác biệt cơ bản giữa các loại trong toán học và các loại trong ngôn ngữ lập trình, nếu có. Nhưng đó không phải là câu hỏi này là gì).
dùng56834

Câu trả lời:


29

Để hiểu được sự khác biệt giữa các bộ và các loại, chúng phải quay trở lại các ý tưởng tiền thuật toán của "bộ sưu tập" và "xây dựng", và xem cách các bộ và loại toán hóa chúng.

Có một phổ các khả năng về những gì toán học là về. Hai trong số này là:

  1. Chúng tôi nghĩ toán học là một hoạt động trong đó các đối tượng toán học được xây dựng theo một số quy tắc (nghĩ về hình học là hoạt động xây dựng các điểm, đường và vòng tròn bằng thước kẻ và la bàn). Do đó, các đối tượng toán học được tổ chức theo cách chúng được xây dựng , và có các loại xây dựng khác nhau . Một đối tượng toán học luôn được xây dựng theo một cách duy nhất, xác định loại duy nhất của nó.

  2. Chúng tôi nghĩ về toán học như một vũ trụ rộng lớn chứa đầy các đối tượng toán học có sẵn (nghĩ về mặt phẳng hình học như đã cho). Chúng tôi khám phá, phân tích và suy nghĩ về những vật thể này (chúng tôi quan sát thấy có những điểm, đường thẳng và đường tròn trong mặt phẳng). Chúng tôi thu thập chúng thành bộ . Thông thường chúng ta thu thập các phần tử có điểm chung (ví dụ: tất cả các dòng đi qua một điểm nhất định), nhưng về nguyên tắc, một tập hợp có thể kết hợp một lựa chọn các đối tượng tùy ý. Một tập hợp được chỉ định bởi các phần tử của nó và chỉ bởi các phần tử của nó. Một đối tượng toán học có thể thuộc về nhiều bộ.

Chúng tôi không nói rằng các khả năng trên là hai khả năng duy nhất, hoặc bất kỳ một trong số chúng mô tả hoàn toàn toán học là gì. Tuy nhiên, mỗi cái có thể xem có thể đóng vai trò là điểm khởi đầu hữu ích cho một lý thuyết toán học chung mô tả một cách hữu ích một loạt các hoạt động toán học.

Đó là tự nhiên để có một loại và tưởng tượng bộ sưu tập của tất cả những điều mà chúng ta có thể xây dựng bằng cách sử dụng quy tắc của T . Đây là phần mở rộng của T , và bản thân nó không phảiT. Chẳng hạn, đây là hai loại có quy tắc xây dựng khác nhau, nhưng chúng có cùng phần mở rộng:TTT T

  1. Loại cặp trong đó n được xây dựng dưới dạng số tự nhiên và p được xây dựng như một bằng chứng chứng minh rằng n là số nguyên tố chẵn lớn hơn 3 .(n,p)npn3

  2. Loại cặp trong đó m được xây dựng như một số tự nhiên và q được xây dựng như một bằng chứng chứng minh rằng m là một số nguyên tố lẻ nhỏ hơn 2 .(m,q)mqm2

Vâng, đây là những ví dụ tầm thường ngớ ngẩn, nhưng quan điểm: cả hai loại không có gì trong phần mở rộng của chúng, nhưng chúng có các quy tắc xây dựng khác nhau . Ngược lại, bộ { m N | m  là một số nguyên tố lẻ nhỏ hơn  2 } bình đẳng vì họ có những yếu tố tương tự.

{nN|n là một số nguyên tố thậm chí lớn hơn 3}
{mN|m là một số nguyên tố lẻ nhỏ hơn 2}

Lưu ý rằng lý thuyết loại không phải là về cú pháp. Nó là một lý thuyết toán học về các công trình, giống như lý thuyết tập hợp là một lý thuyết toán học của các bộ sưu tập. Nó chỉ xảy ra rằng các bài thuyết trình thông thường của lý thuyết loại nhấn mạnh cú pháp, và do đó mọi người kết thúc lý thuyết kiểu suy nghĩ cú pháp. Đây không phải là trường hợp. Để nhầm lẫn một đối tượng toán học (xây dựng) với một biểu thức cú pháp đại diện cho nó (một thuật ngữ trước đây) là một lỗi thể loại cơ bản đã khiến các nhà logic học bối rối trong một thời gian dài, nhưng không còn nữa.


1
Đẹp, cảm ơn bạn! Bạn có thể làm rõ một chi tiết? khi bạn liệt kê hai loại có phần mở rộng đều trống, bạn nói rằng "loại có phần tử là ...". Hoàn toàn cho sự rõ ràng của tôi, đây có phải là một cách nói đúng 100% không? Bạn đã nói trong câu trước rằng một loại không phải là một bộ sưu tập, vì vậy có vẻ như nó không thể có "các phần tử" (mà tôi liên kết với các bộ). Về cơ bản, cách bạn viết nó bây giờ, như thể bạn đang xác định Loại theo tập hợp đó là phần mở rộng của nó. Nếu bạn không có ý định này, bạn có thể viết lại chúng chính xác hơn để nắm bắt ý tưởng của họ dưới dạng các loại không?
dùng56834

Phần mở rộng của một loại là một khái niệm rất hữu ích và vì nó là một loại bộ sưu tập, chúng ta có thể nói "phần tử của phần mở rộng của một loại". Điều này là cồng kềnh nên nó thường được viết tắt thành "phần tử của một loại". Tôi đã loại bỏ cụm từ để giảm khả năng nhầm lẫn, nhưng hãy cẩn thận, đó là thuật ngữ phổ biến.
Andrej Bauer

Cảm ơn bạn, điều này làm rõ. Vì vậy, để theo dõi, nó là chính xác để nói sau đây? Để nói rằng một đối tượng là "loại T" có nghĩa tương tự như, đối tượng là "một phần tử của phần mở rộng của T", do đó có sự từ chối tự nhiên từ các loại sang các tập hợp. Nhưng điều ngược lại không giữ được, bởi vì bất kỳ tập hợp nào cũng có thể được xây dựng theo nhiều cách. Về cơ bản, sự khác biệt giữa tập và kiểu không quan trọng theo quan điểm của một đối tượng cụ thể , theo nghĩa là x : Tx X T (trong đó X T là phần mở rộng của T ) cung cấp cho chúng ta thông tin chính xác về x . Tuy nhiên,xx:TxXTXTTx
người dùng56834

Sự khác biệt có liên quan khi chúng ta muốn nói về các loại và bộ, và các thuộc tính và quan hệ của chúng. Vì vậy, nói cách khác, những thông tin mà chúng ta mất đi khi chúng ta nói chứ không phải là x : T không cho chúng tôi bất cứ điều gì có liên quan về x , nhưng cùng có thể không giữ nếu chúng ta như muốn nói về siêu-tập hợp con hoặc loại- quan hệ phụ? Đúng không? xXTx:Tx
dùng56834

4
Vâng, người ta tự hỏi những cuốn sách này ở đâu. Ai đó nên viết chúng.
Andrej Bauer

11

Để bắt đầu, bộ và loại thậm chí không trong cùng một đấu trường. Các bộ là các đối tượng của một lý thuyết bậc nhất, chẳng hạn như lý thuyết tập hợp ZFC. Trong khi các loại giống như các loại phát triển quá mức. Nói một cách khác, một lý thuyết tập hợp là một lý thuyết bậc nhất trong logic thứ nhất. Một lý thuyết loại là một phần mở rộng của chính logic. Chẳng hạn, Lý thuyết loại Martin-Löf không được trình bày như một lý thuyết bậc nhất trong logic thứ nhất. Nó không phải là phổ biến để nói về bộ và loại cùng một lúc.

Khi các trạng thái thằn lằn rời rạc, các loại (và sắp xếp) phục vụ một chức năng cú pháp. Một loại / loại hành xử như một thể loại cú pháp . Nó cho chúng ta biết những biểu thức nào được hình thành tốt. Đối với một ví dụ đơn giản sử dụng các loại, giả sử chúng ta đã mô tả lý thuyết về không gian vectơ trên một trường tùy ý là một lý thuyết được sắp xếp 2. Chúng tôi có một loại cho vô hướng, , và một loại cho vectơ, V . Trong số nhiều thứ khác, chúng tôi muốn có một hoạt động cho tỉ lệ: s c một l e : S × VV . Điều này cho chúng tôi biết rằng s c a l e ( s c a l eSVScmộttôie:S×VV đơn giản không phải là một thuật ngữ được hình thành tốt. Trong một loại bối cảnh lý thuyết, một biểu hiện như f ( x ) đòi hỏi e phải có một loại X Y đối với một số loại X Y . Nếu f không có loại hàm, thì f ( x ) đơn giản không phải là biểu thức được định dạng tốt. Cho dù một biểu thức thuộc loại nào đó hoặc có một số loại là một câu lệnh siêu logic. Thật vô nghĩa khi viết một cái gì đó như: ( x : X )Scmộttôie(Scmộttôie(S,v),v)f(x)fXYXYff(x) . Thứ nhất, x : X đơn giản không phải là một công thức, và thứ hai, nó thậm chí không có ý nghĩa về mặt khái niệm vì các loại / loại là những gì cho chúng ta biết công thức nào được hình thành tốt. Chúng tôi chỉ xem xét giá trị thật của các công thức được hình thành tốt, vì vậy vào thời điểm chúng tôi xem xét liệu một số công thức có được giữ hay không, chúng tôi đã biết rằng nó được hình thành tốt!(x:X)y= =3x:X

Trong lý thuyết tập hợp, và đặc biệt là ZFC, biểu tượng chỉ phi logic ở tất cả là biểu tượng liên quan cho bộ hội viên, . Vì vậy, x y là một công thức được hình thành tốt với giá trị thật. Không có thuật ngữ nào khác ngoài các biến. Tất cả các ký hiệu thông thường của lý thuyết tập hợp là một phần mở rộng xác định cho điều này. Ví dụ: một công thức như f ( x ) = y thường được sử dụng để viết tắt cho ( x , y ) f mà chính nó có thể được coi là tốc ký cho p . p f p = ( xxyf(x)= =y(x,y)f là tốc ký chop . p f ( z . z pp.pfp= =(x,y) Ở mức nào,bất kỳ tập thể chiếm chỗ của f và tất cả mọi thứ là một tập hợp! Như tôi đã chỉ ra trongmột câu hỏi khácgần đây, π ( 7 ) = 3 trong đó π

p.pf(z.zp[z= =x(w.wzw= =y)])
fπ(7)= =3πlà số thực là một biểu thức lý thuyết tập hợp hoàn toàn hợp pháp và có ý nghĩa (và thậm chí có thể đúng). Về cơ bản, bất cứ điều gì bạn viết mà phân tích cú pháp trong lý thuyết tập hợp đều có thể được đưa ra một số ý nghĩa. Nó có thể là một ý nghĩa hoàn toàn giả, nhưng nó có một. Các bộ cũng là các đối tượng "hạng nhất" trong lý thuyết tập hợp. (Chúng tốt hơn vì chúng là các đối tượng duy nhất thường.) Một hàm như
f(x)= ={N,nếu x= =17,nếu x= =QxRR,nếu x= =(Z,N)
là một chức năng hoàn toàn hợp pháp trong lý thuyết tập hợp. Không có gì thậm chí từ xa tương tự như vậy trong lý thuyết loại. Gần nhất sẽ là sử dụng mã cho vũ trụ Tarskian. Bộ là đối tượng của lý thuyết tập hợp; loại không phải là đối tượng của lý thuyết loại.

Một loại không phải là một tập hợp các thứ (cũng không phải là một tập hợp cho vấn đề đó ...) và nó không được xác định bởi một thuộc tính. Một loại là một loại cú pháp cho phép bạn biết các hoạt động nào có thể áp dụng cho các điều khoản của loại đó và các biểu thức nào được định dạng tốt. Từ góc độ mệnh đề-loại, loại nào được phân loại là bằng chứng hợp lệ của mệnh đề mà loại tương ứng. Đó là, các thuật ngữ được định dạng tốt (nghĩa là được đánh máy tốt) của một loại nhất định tương ứng với các bằng chứng hợp lệ (cũng là các đối tượng cú pháp) của mệnh đề tương ứng. Không có gì như thế này đang xảy ra trong lý thuyết tập hợp.

Đặt lý thuyết và lý thuyết loại thực sự không giống nhau.


1
Đó là sai rằng các loại chỉ là thực thể cú pháp.
Andrej Bauer

1
Điều này rất hữu ích, nhưng một điểm chính trong câu trả lời của bạn làm tôi khó chịu. Dường như với tôi đó là một sai lầm (mà nhiều người mắc phải, hoặc thay vào đó, đó không phải là một sai lầm và tôi đã sai), để nói rằng "một bộ không phải là một bộ sưu tập của mọi thứ". Tôi muốn nói rằng một bộ IS là một bộ sưu tập các thứ. Đó là tài sản thiết yếu cơ bản nhất của một bộ. Trong thực tế, làm thế nào chúng ta có thể biết rằng, ví dụ ZFC là các tiên đề phù hợp để chọn (chứ không phải là các công thức hoàn toàn tùy ý), mà không thể nói rằng chúng có đúng khi các tập hợp là các tập hợp các đối tượng? Tất nhiên, tôi hiểu rằng ...
user56834


1
@ Lập trình2134 Để trả lời điều đó, chúng ta sẽ phải đi vào ý nghĩa ngữ nghĩa của từ "bộ sưu tập". Chúng tôi không thể chắc chắn họ "đúng" trừ khi bạn dành thời gian để xác định chính xác "đúng" nghĩa là gì. Tuy nhiên, những gì chúng ta có thể nói là "tập hợp" là kết quả của hơn một trăm năm các nhà toán học đánh bại khái niệm về một bộ sưu tập, tìm kiếm một hệ thống nhất quán phù hợp với khái niệm trực quan của một bộ sưu tập. Để đạt được sự nhất quán đó, họ đã phải đưa ra quyết định. Ví dụ, tập hợp không phải là bộ sưu tập duy nhất trong toán học. Một "lớp" cũng mô tả một bộ sưu tập.
Cort Ammon - Tái lập lại

1
xTxT

9

xT xS

Một ví dụ

Để làm rõ sự khác biệt này, tôi sẽ sử dụng ví dụ được đưa ra trong các ghi chú bài giảng của Herman Geuvers . Đầu tiên, chúng ta xem xét một ví dụ về việc sinh sống một loại:

3+(7*số 8)5:Nmộtt,
3{nN|x,y,zN+(xn+ynzn)}

Sự khác biệt chính ở đây là để kiểm tra xem biểu thức đầu tiên có phải là số tự nhiên hay không, chúng ta không phải tính toán một số ý nghĩa ngữ nghĩa, chúng ta chỉ phải 'đọc ra' thực tế là tất cả các chữ đều thuộc loại Nat và tất cả các toán tử đều đóng trên loại Nat.

33

Thuật toán vs Bằng chứng

Tóm lại, các loại thường được sử dụng cho các yêu cầu 'đơn giản' theo cú pháp của một số biểu thức, sao cho có thể kiểm tra tư cách thành viên của một loại bằng thuật toán , trong khi để kiểm tra tư cách thành viên của một tập hợp, chúng ta thường sẽ cần một bằng chứng .

Để xem tại sao sự khác biệt này hữu ích, hãy xem xét một trình biên dịch của ngôn ngữ lập trình được gõ. Nếu trình biên dịch này phải tạo một bằng chứng chính thức để 'kiểm tra các loại', trình biên dịch được yêu cầu thực hiện một nhiệm vụ gần như không thể (nói chung, chứng minh định lý tự động là khó). Mặt khác, trình biên dịch có thể chỉ cần chạy một thuật toán (hiệu quả) để kiểm tra các loại, thì nó thực sự có thể thực hiện nhiệm vụ.

Một động lực cho một giải thích (er) nghiêm ngặt

Có nhiều cách hiểu về ý nghĩa ngữ nghĩa của các bộ và loại. Mặc dù dưới sự phân biệt được thực hiện ở đây các loại và loại mở rộng với kiểm tra loại không thể giải quyết được (chẳng hạn như các loại được sử dụng trong NuPRL, như được đề cập trong các nhận xét) sẽ không phải là 'loại', những người khác tất nhiên gọi miễn phí chúng như vậy (chỉ miễn phí vì họ muốn gọi họ là cái gì khác, miễn là định nghĩa của họ phù hợp).

Tuy nhiên, chúng tôi (Herman Geuvers và tôi), không muốn ném giải thích này ra khỏi cửa sổ, mà tôi (không phải Herman, mặc dù anh ấy có thể đồng ý) có động lực sau:

Trước hết, ý định của việc giải thích này không quá xa so với Andrej Bauer. Mục đích của cú pháp thường là mô tả cách xây dựng một cái gì đó và có một thuật toán để thực sự xây dựng nó thường hữu ích. Hơn nữa, các tính năng của một bộ thường chỉ cần thiết khi chúng ta muốn một mô tả ngữ nghĩa, cho phép tính không ổn định được cho phép.

Vì vậy, lợi thế của mô tả chặt chẽ hơn của chúng tôi là giữ cho sự phân tách đơn giản hơn , để có được sự khác biệt liên quan trực tiếp hơn đến việc sử dụng thực tế phổ biến. Điều này hoạt động tốt, miễn là bạn không cần hoặc muốn nới lỏng việc sử dụng của bạn, như bạn muốn, ví dụ như NuPRL.


3
Kiểm tra loại không cần phải có thể quyết định (mặc dù điều đó chắc chắn là mong muốn). Chẳng hạn, NuPRL yêu cầu người dùng cung cấp bằng chứng cho thấy một thuật ngữ có một loại.
Derek Elkins

3
3...

1
@DerekElkins Tôi không quen thuộc với NuPRL, nhưng ví dụ: trợ lý chứng minh Coq chắc chắn tự kiểm tra kiểu (nghĩa là thuật ngữ được cung cấp của 'loại định lý của tôi'). Làm thế nào để NuPRL xác minh bằng chứng nếu người dùng phải 'chứng minh' thực tế là một thuật ngữ của một loại nhất định? (nói cách khác, điều này nghe có vẻ như NuPRL không sử dụng sự tương ứng của Curry-Howard, vậy nó sử dụng cái gì?)
Thằn lằn rời rạc

1
@Discretelizard Tôi không nói NuPRL là điển hình. Đây chắc chắn là trường hợp thông thường để kiểm tra loại có thể quyết định được. Tôi thực sự khuyên bạn nên làm quen với nó chỉ vì nó có một con đường khá khác nhau. NuPRL là một tính toán theo phong cách Curry chứ không phải theo kiểu Church, làm cho nó trở thành một hệ thống sàng lọc kiểu hơn. Ở bất kỳ giá nào, thay vì chỉ viết các thuật ngữ (hoặc chiến thuật tạo ra các thuật ngữ), về cơ bản, bạn có một hệ thống bằng chứng kiểu LCF để tự nhập các đạo hàm. Có thể cho rằng, các công cụ phái sinh là những gì quan trọng, và đó là một chút "sáo rỗng" mà chúng ta có thể suy ra chúng từ các điều khoản.
Derek Elkins

3

4

Tôi tin rằng một trong những khác biệt cụ thể nhất về bộ và loại là sự khác biệt trong cách "những thứ" trong tâm trí bạn được mã hóa thành ngôn ngữ chính thức.

Cả bộ và loại cho phép bạn nói về mọi thứ và bộ sưu tập của sự vật. Sự khác biệt chính là với các bộ, bạn có thể hỏi bất kỳ câu hỏi nào bạn muốn về mọi thứ và nó có thể đúng, có thể không; trong khi với các loại, trước tiên bạn phải chứng minh rằng câu hỏi có ý nghĩa.

B= ={thật,sai}N= ={0,1,Giáo dục}thật= =1

0[0]= ={}n+1[n+1]= ={[n]}[n]thậtsaithật= =1thật1

một= =bmộtbthật= =1SBNιB:BSιN:NSιB(thật)= =ιN(1)

(nếurất_hard_questionsau đó1khácthật)= =1

Tóm lại, các bộ cho phép bạn hỏi bất kỳ câu hỏi nào bạn muốn, nhưng các loại buộc bạn phải mã hóa rõ ràng khi câu trả lời có thể phụ thuộc vào chúng.


Rtội(2)

@AndrejBauer Phải. Bạn có đồng ý rằng câu trả lời này đưa ra sự khác biệt giữa các lý thuyết được sắp xếp đơn (bao gồm hầu hết các lý thuyết tập hợp, hoặc ít nhất là các lý thuyết phổ biến nhất) và các lý thuyết đa sắp xếp (bao gồm tất cả các lý thuyết loại (?))?
xavierm02

Ngay cả trong một lý thuyết được sắp xếp đơn lẻ, bạn phải phân biệt các thuật ngữ với các công thức ...
Andrej Bauer

@AndrejBauer Tôi không hiểu bình luận thứ hai của bạn.
xavierm02

(xX.φ(x))N
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.