Sự đảo ngược của định lượng là một tính chất quan trọng thường đứng sau các định lý nổi tiếng.
Ví dụ: trong phân tích sự khác biệt giữa và là sự khác biệt giữa liên tục theo chiều và đồng nhất . Một định lý nổi tiếng nói rằng mọi bản đồ liên tục theo chiều đều đều liên tục, với điều kiện miền là tốt, tức là nhỏ gọn .∀ ε > 0 . ∃ δ > 0 . ∀ x∀ϵ>0.∀x.∃δ>0∀ϵ>0.∃δ>0.∀x
Trong thực tế, sự nhỏ gọn là trung tâm của sự đảo ngược định lượng. Hãy xem xét hai kiểu dữ liệu và trong đó là công khai và là nhỏ gọn (xem dưới đây để giải thích về những điều khoản này), và để cho là một mối quan hệ semidecidable giữa và . Câu lệnh có thể được đọc như sau: mọi điểm trong được bao phủ bởi một số . Vì các tập hợp là "mở tính toán" (có thể bán được) vàY X Y φ ( x , y ) X Y ∀ y : Y . ∃ x : X . φ ( x , y ) y Y U x = { z : Y | φ ( x , z ) } U x Y ∀ y : Y . ∃ x : X . ϕ ( xXYXYϕ(x,y)XY∀y:Y.∃x:X.ϕ(x,y)yYUx={z:Y∣ϕ(x,z)}UxYlà nhỏ gọn có tồn tại một tiểu mục hữu hạn. Chúng tôi đã chứng minh rằng
ngụ ý
Thông thường chúng ta có thể giảm sự tồn tại của danh sách hữu hạn thành một đơn . Ví dụ: nếu được sắp xếp theo thứ tự tuyến tính và là đơn điệu theo đối với thứ tự thì chúng ta có thể lấy là số lớn nhất của .∃ x 1 , ... , x n : X . ∀ y : Y . φ ( x 1 , y ) ∨ ⋯ ∨ φ ( x n , y ) . x 1 , ... , x n x X φ x x x 1 , ... , x n
∀y:Y.∃x:X.ϕ(x,y)
∃x1,…,xn:X.∀y:Y.ϕ(x1,y)∨⋯∨ϕ(xn,y).
x1,…,xnxXϕxxx1,…,xn
Để xem nguyên tắc này được áp dụng như thế nào trong một trường hợp quen thuộc, chúng ta hãy xem câu lệnh là một hàm liên tục. Chúng tôi giữ dưới dạng biến miễn phí để không bị nhầm lẫn về một bộ định lượng phổ quát bên ngoài:
Vì nhỏ gọn và so sánh thực tế là có thể bán được, nên câu lệnh có thể bán được. Các thực dương là quá mức và là nhỏ gọn, vì vậy chúng ta có thể áp dụng nguyên tắc:
f:[0,1]→Rϵ>0
∀x∈[0,1].∃δ>0.∀y∈[x−δ,x+δ].|f(y)−f(x)|<ϵ.
[x−δ,x+δ]ϕ(x,δ)≡∀y∈[x−δ,x+δ].|f(y)−f(x)|<ϵ[0,1]φ ( δ , x ) δ δ 1 , ... , δ n δ∃δ1,δ2,…,δn>0.∀x∈[0,1].ϕ(δ1,x)∨⋯ϕ(δn,x).
Vì là antimonotone trong là nhỏ nhất trong thực hiện công việc rồi, nên chúng tôi chỉ cần một :
Những gì chúng ta có là
sự liên tục
thống nhất của .
ϕ(δ,x)δδ1,…,δnδ∃δ>0.∀x∈[0,1].∀y∈[x−δ,x+δ].|f(y)−f(x)|<ϵ.
f
Nói một cách mơ hồ, một kiểu dữ liệu là nhỏ gọn nếu nó có một bộ định lượng phổ quát tính toán và công khai nếu nó có một bộ định lượng tồn tại có thể tính toán được. Các số nguyên (không âm) bị đảo ngược vì để bán chính xác cho dù , với bán được, chúng tôi thực hiện tìm kiếm song song bằng cách khớp . Không gian Cantor nhỏ gọn và công khai, như được giải thích bởi Tóm tắt Đá kép của Paul Taylor và " Cấu trúc liên kết tổng hợp các kiểu dữ liệu và không gian cổ điển " của Martin Escardo (cũng xem khái niệm liên quan về không gian có thể tìm kiếm ).N∃n∈N.ϕ(n)ϕ(n)2N
Hãy để chúng tôi áp dụng nguyên tắc cho ví dụ bạn đề cập. Chúng tôi xem một ngôn ngữ dưới dạng bản đồ từ các từ (hữu hạn) trên một bảng chữ cái cố định đến các giá trị boolean. Vì các từ hữu hạn nằm trong sự tương ứng từ tính toán có thể tính toán với các số nguyên, chúng tôi có thể xem một ngôn ngữ dưới dạng bản đồ từ các số nguyên đến các giá trị boolean. Đó là, kiểu dữ liệu của tất cả các ngôn ngữ, theo cấu trúc đẳng cấu tính toán, chính xác là không gian Cantor nat -> bool
hoặc trong ký hiệu toán học , nhỏ gọn. Một máy Turing có thời gian đa thức được mô tả bởi chương trình của nó, đó là một chuỗi hữu hạn, do đó, không gian của tất cả (đại diện) máy Turing có thể được sử dụng để hoặc , bị lật.2Nnat
N
Cho một máy Turing và một ngôn ngữ , câu lệnh nói rằng "ngôn ngữ bị từ chối bởi " là có thể xác định được vì thực tế nó có thể quyết định được: chỉ cần chạy với đầu vào và xem những gì nó làm Các điều kiện cho nguyên tắc của chúng tôi được thỏa mãn! Câu lệnh "mọi máy tiên tri đều có ngôn ngữ sao cho không được chấp nhận " được viết một cách tượng trưng là
Sau khi đảo ngược số lượng, chúng tôi nhận được
Mcrejects(M,c)cMMcMbbMb
∀M:N.∃b:2N.rejects(Mb,b).
∃b1,…,bn:2N.∀M:N.rejects(Mb1,b1)∨⋯∨rejects(Mbn,bn).
Ok, vì vậy chúng tôi xuống rất nhiều ngôn ngữ. Chúng ta có thể kết hợp chúng thành một không? Tôi sẽ để nó như một bài tập (cho bản thân tôi và bạn!).
Bạn cũng có thể quan tâm đến câu hỏi chung chung hơn một chút về cách chuyển đổi thành một câu lệnh tương đương có dạng hoặc ngược lại. Có một số cách để làm điều này, ví dụ:∀x.∃y.ϕ(x,y)∃u.∀v.ψ(u,v)