Định nghĩa xây dựng tiêu chuẩn của số nguyên, hợp lý và thực tế?


10

Số tự nhiên được xác định theo quy nạp là (sử dụng cú pháp Coq làm ví dụ)

Inductive nat: Set :=
| O: nat
| S: nat -> nat.

Có cách nào chuẩn để xác định số nguyên (và có thể các tập hợp khác như số hữu tỷ và số thực) một cách xây dựng không?


1
Định nghĩa xây dựng là gì?
Trismegistos

Câu trả lời:


11

Có nhiều cách để định nghĩa một cấu trúc toán học, tùy thuộc vào tính chất nào bạn coi là định nghĩa. Giữa các đặc tính tương đương, cái nào bạn coi là định nghĩa và cái nào bạn dùng để làm đặc tính thay thế không quan trọng.

Trong toán học xây dựng, tốt hơn là chọn một định nghĩa làm cho lý luận mang tính xây dựng trở nên dễ dàng. Đối với các số tự nhiên, hình thức lý luận cơ bản là cảm ứng, điều này làm cho định nghĩa zero-hoặc-kế tiếp truyền thống rất phù hợp. Các bộ số khác không có sở thích như vậy.

Khi suy luận về chỉ tiêu, trong các cài đặt không mang tính xây dựng, người ta thường nói rằng hãy chọn một thành viên của lớp tương đương. Trong một thiết lập mang tính xây dựng, cần mô tả cách chọn thành viên. Điều này làm cho nó dễ dàng hơn với các định nghĩa xây dựng một đối tượng cho mỗi thành viên của loại, thay vì xây dựng các lớp tương đương.

Ví dụ: để xác định , một nhà toán học có thể hài lòng với sự khác biệt của các số tự nhiên: Z : = N 2 / { ( ( x , y ) , ( x , y ) ) x + y = x + y }Z

Z: =N2/{((x,y),(x',y'))|x+y'= =x'+y}
Mặc dù điều này có một cảm giác gọn gàng (không có điều này hay điều đó), đối với lý luận mang tính xây dựng, sẽ đơn giản hơn nếu sự bình đẳng của các đối tượng trùng với đẳng thức biểu diễn, vì vậy chúng ta có thể định nghĩa các số nguyên tương đối là số tự nhiên hoặc âm của một số tự nhiên trừ đi một:
Inductive Z1 :=
  | Nonnegative : nat -> Z1   (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
  | Negative : nat -> Z1.     (* ⟦Negative x⟧ = -⟦x⟧-1 *)

Tuy nhiên, định nghĩa này là bất đối xứng kỳ lạ, có thể làm cho nó thích hợp hơn để thừa nhận hai biểu diễn khác nhau cho số không:

Inductive Z2 :=
  | Nonnegative : nat -> Z2   (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
  | Nonpositive : nat -> Z2.  (* ⟦Nonpostitive x⟧ = -⟦x⟧ *)

Hoặc chúng ta có thể xây dựng các số nguyên tương đối mà không cần sử dụng các khối tự nhiên như một khối xây dựng:

Inductive Pos3 :=
  | I : Pos3                  (* ⟦I⟧ = 1 *)
  | S3 : Pos3 -> Pos3         (* ⟦S3 x⟧ = ⟦x⟧+1 *)
Inductive Z3 :=
  | N3 : Pos3 -> Z3           (* ⟦N3 x⟧ = -⟦x⟧ *)
  | O3 : Z3                   (* ⟦O3⟧ = 0 *)
  | P3 : Pos3 -> Z3           (* ⟦P3 x⟧ = ⟦x⟧ *)

Thư viện chuẩn Coq sử dụng một định nghĩa khác: nó xây dựng các số nguyên dương từ ký hiệu của chúng là cơ sở 2, vì chữ số 1 theo sau là một chuỗi các chữ số 0 hoặc 1. Sau đó, nó xây dựng Znhư Z3từ Pos3trên. Định nghĩa này cũng có một đại diện duy nhất cho mỗi số nguyên. Sự lựa chọn sử dụng ký hiệu nhị phân không phải để lý luận dễ dàng hơn, mà là để tạo ra mã hiệu quả hơn khi các chương trình được trích xuất từ ​​các bằng chứng.

Dễ suy luận là một động lực trong việc chọn một định nghĩa, nhưng nó không bao giờ là một yếu tố không thể vượt qua. Nếu một số công trình làm cho một bằng chứng cụ thể dễ dàng hơn, người ta có thể sử dụng định nghĩa đó trong bằng chứng cụ thể đó và chứng minh rằng công trình đó tương đương với công trình khác được chọn làm định nghĩa ban đầu.

NQN×N*=?=Q

Số thực là một ấm cá hoàn toàn khác nhau vì chúng không thể xây dựng được. Không thể định nghĩa các số thực là một loại quy nạp (tất cả các loại quy nạp đều có thể đếm được). Thay vào đó, bất kỳ định nghĩa nào về các số thực phải là tiên đề, tức là không mang tính xây dựng. Có thể xây dựng các tập con có thể đếm được của các số thực; cách để làm điều đó phụ thuộc vào tập hợp con bạn muốn xây dựng.


1
Các số thực có thể tính toán dường như là ứng cử viên hợp lý nhất, vì hầu hết việc sử dụng các số thực được gắn với thứ tự thông thường của chúng trong một số thời trang.
dfeuer

5
"Xây dựng" có nghĩa là gì? Tôi chỉ biết về "các tập hợp có thể xây dựng" là một lý thuyết tập hợp, nhưng đó là ý của bạn. Ngoài ra, trong trường hợp thực tế là một ấm cá hoàn toàn khác nhau, thì không phải là "bất kỳ định nghĩa nào về số thực phải là tiên đề, tức là không mang tính xây dựng". Và trong lý thuyết kiểu đồng luân có một định nghĩa quy nạp-quy nạp cao hơn của thực tế.
Andrej Bauer

14

Câu trả lời của Gilles là một câu trả lời hay, ngoại trừ đoạn trên các số thực, hoàn toàn sai, ngoại trừ thực tế là các số thực thực sự là một ấm cá khác nhau. Bởi vì loại thông tin sai lệch này dường như khá phổ biến, tôi muốn ghi lại ở đây một phản bác chi tiết.

Nó không phải là sự thật rằng tất cả các loại quy nạp là không thể đếm được. Ví dụ, loại quy nạp

Inductive cow := 
   | nose : cow
   | horn : (nat -> cow) -> cow.

không thể phủ nhận, đối với bất kỳ trình tự nào, c : nat -> cowchúng tôi có thể hình thành horn cmà không theo trình tự bởi sự thành lập tốt của gia súc. Nếu bạn muốn một tuyên bố chính xác của mẫu "tất cả các loại quy nạp đều có thể đếm được", bạn phải hạn chế nghiêm ngặt các công trình được phép.

Các số thực không thể được xây dựng dễ dàng như một loại quy nạp, ngoại trừ trong lý thuyết loại đồng luân, chúng có thể được xây dựng như một loại quy nạp cao hơn , xem Chương 11 của sách HoTT . Có thể lập luận rằng đây là gian lận.

Có một số tính xây dựng định nghĩa và công trình xây dựng của tập số thực, trái với Gilles tuyên bố. Chúng có thể được chia thành hai lớp:

  1. Các cấu trúc kiểu Cauchy trong đó các số thực được xem như là một số liệu hoàn thành của các số hữu tỷ. Kiểu xây dựng này thường đòi hỏi phải có chỉ tiêu, mặc dù người ta có thể thoát khỏi định nghĩa coi thường, phụ thuộc vào cách người ta đối xử bình đẳng. Một công trình ngây thơ thường đòi hỏi sự lựa chọn có thể đếm được, nhưng Fred Richman đã đưa ra một quy trình hoàn thành hoạt động mang tính xây dựng mà không có sự lựa chọn, xem các số thực của anh ấy và các hoàn thành khác .

  2. λΣ

Về mặt triển khai, chúng tôi có nhiều hình thức thực tế mang tính xây dựng khác nhau (nhưng không phải là chính thức trong thư viện tiêu chuẩn Coq, thật tồi tệ), ví dụ như máy tính hiệu quả chính xác được chứng nhận của Robbert Krebbers và Bas Spitters trong Coq .

Để triển khai thực tế các số thực chính xác, tôi chỉ cho bạn iRRAM của Norbert Müller .

NN


Có lẽ bạn có thể tiên đoán lý thuyết về các trường kín thực sự trong Coq ...
Bút danh

Có, bạn có thể, và Cyril Cohen đã làm điều đó, xem hal.inria.fr/hal-00671809v1/document . Quan điểm của bạn là gì?
Andrej Bauer

Tôi không có một điểm, đó chỉ là một giả định.
Bút danh
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.