Câu trả lời:
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 }
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 Z
như Z3
từ Pos3
trê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.
Q
=?=
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.
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 -> cow
chúng tôi có thể hình thành horn c
mà 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:
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 .
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 .