Nền tảng toán học
Logic vị từ
Logic vị từ mở rộng logic mệnh đề bằng các lượng từ ("với mọi , ") và ("tồn tại sao cho "), cho phép hình thức hóa các phát biểu về mọi phần tử hoặc một phần tử của một miền, và suy luận trên chúng bằng ngữ nghĩa thỏa mãn Tarski.
Trực giác"Với mọi" và "tồn tại"
"Mọi học sinh trong phòng này đều đỗ kỳ thi" và "có một học sinh trong phòng này đỗ kỳ thi" là hai khẳng định rất khác nhau, dù cả hai đều nói về cùng một phòng. Logic vị từ làm rõ sự khác biệt này: một vị từ là một tính chất trở thành mệnh đề đúng/sai khi được thay bằng một đối tượng cụ thể từ một miền (vũ trụ diễn ngôn) . Lượng từ phổ dụng khẳng định đúng với mọi đối tượng trong ; lượng từ tồn tại khẳng định đúng với ít nhất một đối tượng trong .
Đại họcCú pháp hình thức và phủ định lượng từ
Định nghĩa: Lượng từ và biến tự do/bị buộc
Cho miền và vị từ : ("với mọi , ") đúng trong khi đúng với mọi phần tử của ; ("tồn tại sao cho ") đúng khi đúng với ít nhất một phần tử. Một biến nằm trong phạm vi của lượng từ buộc nó là biến bị buộc; ngược lại là biến tự do. Một công thức không có biến tự do là một câu, và có giá trị chân lý xác định trong một cấu trúc cho trước.
Luật này nói: "không phải ai cũng có tính chất " nghĩa chính xác là "có ai đó thiếu ". Luật song sinh nói "không ai có tính chất " giống với "mọi người đều thiếu ". Hai luật này là phiên bản lượng từ của luật De Morgan cho , và là bước then chốt để đẩy mọi phủ định vào trong, đạt tới dạng chuẩn tắc tiền tố (prenex) — công thức có mọi lượng từ đưa ra phía trước, ví dụ với không chứa lượng từ.
| Công thức | Dạng tiền tố tương đương |
|---|---|
Đại họcCác định lý then chốt: thay thế và thứ tự lượng từ
Với mọi cấu trúc có miền , mọi phép gán , và mọi hạng tử thay thế được cho trong : nếu , thì . Dạng quy tắc: .
Vì sao đúng?
có nghĩa "dù thay bằng gì, vẫn đúng" — nên thay bằng một hạng tử cụ thể thì vẫn phải đúng. Đây là quy tắc biến luật tổng quát thành trường hợp cụ thể: từ "" ta thay thế tại để được "", tiền đề đầu của tam đoạn luận cổ điển.
Chứng minh
Ta lập luận trực tiếp từ ngữ nghĩa thỏa mãn Tarski, định nghĩa tính đúng trong một cấu trúc theo đệ quy trên cấu trúc công thức.
Theo mệnh đề ngữ nghĩa cho : . Giả sử giả thiết ; theo mệnh đề này, đúng với mọi , không ngoại lệ.
Vì khẳng định đúng với mọi , nó đúng đặc biệt với , phần tử mà hạng tử biểu thị trong dưới . Thay cụ thể này cho ta .
Theo Bổ đề Thay thế (một kết quả chuẩn liên hệ phép gán biến với phép thay thế hạng tử, chứng minh được bằng quy nạp theo cấu trúc của ): , đúng chính xác vì thay thế được cho trong (không biến tự do nào của bị buộc ngoài ý muốn). Áp dụng bổ đề biến thành .
Vì , , tùy ý, nên suy luận từ tới bảo toàn tính đúng trong mọi cấu trúc dưới mọi phép gán: quy tắc là đúng đắn.
Với mọi cấu trúc và công thức : . Mệnh đề đảo nói chung không đúng.
Vì sao đúng?
đòi hỏi một nhân chứng duy nhất dùng được cho mọi (nhân chứng "cố định"), còn chỉ đòi hỏi mỗi có một nhân chứng nào đó, có thể khác nhau với mỗi (nhân chứng "di động"). Một nhân chứng cố định tự động là nhân chứng di động (dùng lại nó), nhưng chiều ngược lại thì không — đây chính là khác biệt giữa "có người yêu tất cả mọi người" (một người yêu duy nhất) và "ai cũng được ai đó yêu" (có thể khác người mỗi lần), một nguồn mơ hồ kinh điển trong ngôn ngữ tự nhiên mà logic vị từ làm rõ.
Chứng minh
Chiều thuận. Giả sử . Theo mệnh đề ngữ nghĩa cho , ; áp dụng ở đây cho ta một với .
Áp dụng mệnh đề cho vào điều này, đúng với mọi , vì chạy khắp bất kể sau này ta chọn nào.
Bây giờ cố định một tùy ý để kiểm chứng . Từ đoạn trên, lấy cho , cho thấy chính là nhân chứng cho dưới ; do đó .
Vì tùy ý, đúng với mọi , đó chính xác là mệnh đề ngữ nghĩa cho . Điều này chứng minh .
Chiều đảo không đúng: một phản ví dụ. Cho có miền (số nguyên) và diễn giải là "". Khi đó ĐÚNG: với mọi số nguyên , lấy cho . Nhưng SAI: nó đòi hỏi một số nguyên duy nhất lớn hơn mọi số nguyên , và không tồn tại số nguyên lớn nhất như vậy (với bất kỳ ứng viên nào, số nguyên vi phạm ). Vậy đúng trong khi sai, cho thấy mệnh đề đảo nói chung là sai.
Đại họcỨng dụng thực tiễn và Ví dụ minh họa
SQL không có từ khóa "với mọi" nguyên bản, nên cơ sở dữ liệu quan hệ mã hóa bằng luật phủ định lượng từ: "" trở thành `NOT EXISTS (... WHERE NOT P ...)`, tức lập trình viên hiện thực qua phủ định kép của đúng như . Các ngôn ngữ đặc tả hình thức (ký pháp Z, tiền/hậu điều kiện Hoare logic, TLA+) dùng trực tiếp và để phát biểu tính chất đúng đắn như "mọi chỉ số mảng đều nằm trong giới hạn" hoặc "tồn tại một đường thực thi hợp lệ", mà công cụ kiểm chứng sau đó kiểm tra bằng kỹ thuật thay thế và khử lượng từ.
Ví dụ: Phép chia quan hệ: "mua mọi sản phẩm"
Cơ sở dữ liệu có bảng `Purchases(customer, product)` và `Products(product)`. Hình thức hóa "khách hàng đã mua mọi sản phẩm" bằng logic vị từ, rồi chuyển thành truy vấn SQL chỉ dùng `NOT EXISTS`.
Lời giải
Đặt là " xuất hiện trong Purchases" và là " xuất hiện trong Products". "Khách hàng mua mọi sản phẩm" là .
SQL không có , nên áp dụng luật phủ định lượng từ cho , tức viết lại lượng từ phổ dụng thành "không có sản phẩm nào mà khách KHÔNG mua": .
Dịch trực tiếp: `SELECT c FROM Customers c WHERE NOT EXISTS (SELECT FROM Products p WHERE NOT EXISTS (SELECT FROM Purchases WHERE customer = c.c AND product = p.product))` — mẫu "NOT EXISTS kép" kinh điển hiện thực phép chia quan hệ, một ứng dụng trực tiếp của luật phủ định lượng từ phổ dụng thành tồn tại.
Ví dụ: Đặc tả hình thức: bất biến sắp xếp
Hậu điều kiện của một thuật toán sắp xếp được đặc tả là trên mảng độ dài . Người kiểm chứng muốn kiểm trường hợp cụ thể tại . Quy tắc suy luận nào biện minh cho việc rút ra từ hậu điều kiện, và công thức thu được là gì?
Lời giải
Đặt là . Hậu điều kiện là .
Theo tính đúng đắn của quy tắc thay thế phổ dụng đã chứng minh ở trên, với mọi hạng tử trong miền — ở đây lấy : từ ta suy ra hợp lệ , tức .
Vì đúng khi (một điều kiện phụ mà người kiểm chứng kiểm riêng, ví dụ từ độ dài khai báo của mảng), Modus Ponens sau đó cho như mong muốn — chính là trường hợp người kiểm chứng muốn kiểm, thu được bằng cách nối quy tắc thay thế phổ dụng với Modus Ponens.
Công thức nào tương đương logic với ?
Với miền và nghĩa là "", điều nào sau đây ĐÚNG?
Mẫu `NOT EXISTS (... WHERE NOT P ...)` trong SQL hiện thực lượng từ nào trên ?
Cho đúng trong cấu trúc , kết luận nào được biện minh bởi quy tắc thay thế phổ dụng cho hạng tử ?
Tài liệu tham khảo
- Herbert B. Enderton (2001). A Mathematical Introduction to Logic
- David Hilbert, Wilhelm Ackermann (1928). Grundzüge der theoretischen Logik