Trong toán học, logic và khoa học máy tính, một **lý thuyết hình thái** hoặc một **hệ hình thái** là một hệ thống hình thức trong đó mọi **đối tượng** đều có một **hình thái** (hay mọi *biến* đều có một *kiểu*, mọi *từ* đều có một *loại*,...). Hình thái của một đối tượng hạn chế các *tác động* (hay *phép toán*, *cách dùng*) có thể được thực hiện trên đối tượng (hay *biến*, *từ*) ấy. Ngành nghiên cứu các hệ hình thái cũng được gọi là Lý thuyết Hình Thái.

Một số lý thuyết hình thái có thể đóng vai trò thay thế lý thuyết tập hợp để làm nền tảng cho toán học. Hai lý thuyết như vậy khá nổi tiếng là lý thuyết phép tính lambda hình thái của Alonzo và lý thuyết hình thái trực giác của Per Martin-Löf.

Giống như các lý thuyết tập hợp tiên đề, lý thuyết hình thái được tạo ra để tránh những nghịch lý trong các nền tảng trước đây của toán học như lý thuyết tập hợp ngây thơ, logic hình thức.

Lý thuyết hình thái có quan hệ chặt chẽ với, và đôi khi trùng lặp với, hệ thống kiểu trong khoa học máy tính.

Lịch sử
-------

Trong khoảng thời gian từ năm 1902 đến năm 1908, Bertrand Russell đã đề xuất nhiều "lý thuyết hình thái" khác nhau để giải quyết vấn đề mà chính ông trước đó khám phá ra: rằng phiên bản lý thuyết tập ngây thơ của Gottlob Frege bị ảnh hưởng bởi nghịch lý Russell.

Các khái niệm cơ bản
--------------------

Trong phần tiếp theo, *từ* và *đối tượng* mang cùng một nghĩa; *loại* và *hình thái* mang cùng một nghĩa.

Trong một hệ hình thái, mỗi **từ** có một **loại**. Ví dụ, {\displaystyle 4}, {\displaystyle 2+2} và {\displaystyle 2\cdot 2} là các từ phân biệt đều có loại {\displaystyle \mathrm {nat} } của các số tự nhiên. Theo truyền thống, loại của từ được viết sau dấu hai chấm, chẳng hạn như {\displaystyle 2:\mathrm {nat} } nghĩa là số {\displaystyle 2} có loại {\displaystyle \mathrm {nat} }.

Các hệ hình thái có các phép tính tường minh được thể hiện qua các luật viết lại. Các luật viết lại này được gọi là **quy tắc chuyển đổi** hoặc, nếu luật chỉ hoạt động theo một chiều, **quy tắc rút gọn**. Ví dụ, {\displaystyle 2+2} và {\displaystyle 4} là những từ khác nhau về mặt cú pháp, nhưng từ đầu tiên có thể được rút gọn thành từ thứ hai. Phép rút gọn này được viết là {\displaystyle 2+2\twoheadrightarrow 4}.

Các hàm trong hệ hình thái có một quy tắc rút gọn đặc biệt: một biến xuất hiện trong định nghĩa hàm sẽ được thay thế bởi đối số tương ứng. Giả sử hàm {\displaystyle \mathrm {double} } được định nghĩa là {\displaystyle x\mapsto x+x}. Phép gọi hàm {\displaystyle \mathrm {double} \ 2} sẽ được rút gọn bằng cách thay thế {\displaystyle 2} cho mọi x trong định nghĩa hàm. Như vậy ta có phép rút gọn {\displaystyle \mathrm {double} \ 2\twoheadrightarrow 2+2}.

Loại hàm được ký hiệu bằng một mũi tên \to  từ loại tham số đến loại trả về của hàm. Như vậy, ta viết {\displaystyle \mathrm {double} :\mathrm {nat} \to \mathrm {nat} } (tức là, {\displaystyle \mathrm {double} } là một *từ*, *loại* của nó là {\displaystyle \mathrm {nat} \to \mathrm {nat} }, tức là nó là một hàm lấy vào một từ của loại các số tự nhiên, và cho ra một từ của loại các số tự nhiên).

Khác biệt với lý thuyết tập hợp
-------------------------------

Có nhiều lý thuyết tập hợp khác nhau và nhiều hệ thống khác nhau của lý thuyết hình thái. Tuy nhiên, ta có thể nêu ra một số nhận xét chung.

* Lý thuyết tập hợp được xây dựng trên nền tảng logic. Nó đòi hỏi một hệ thống riêng như logic vị từ bên dưới nó. Trong lý thuyết hình thái, các khái niệm như "và" và "hoặc" có thể được mã hóa thành các *hình thái*. Tức là, lý thuyết hình thái có thể làm nền tảng cho logic.
* Trong lý thuyết tập hợp, một phần tử có thể là phần tử của nhiều tập hợp. Trong lý thuyết hình thái, mỗi đối tượng chỉ thuộc về một hình thái.
* Lý thuyết tập hợp thường mã hóa các số dưới dạng tập hợp. (0 là tập hợp rỗng, 1 là tập hợp chứa tập hợp rỗng, v.v.) Lý thuyết hình thái có thể mã hóa các số dưới dạng các hàm, sử dụng mã hóa Church hoặc tự nhiên hơn là các hình thái quy nạp.
* Lý thuyết hình thái có quan hệ gần với toán học xây dựng thông qua diễn giải BHK. Nó có thể được kết nối với logic bởi đẳng cấu Curry Howard. Một số lý thuyết hình thái có quan hệ chặt chẽ với lý thuyết phạm trù.

Tính chất khác
--------------

### Chuẩn hóa

Từ {\displaystyle 2+1} được rút gọn về {\displaystyle 3}. Từ {\displaystyle 3} không thể được rút gọn hơn nữa, nó được gọi là một **dạng chuẩn**. Một hệ hình thái được gọi là *chuẩn hóa mạnh* nếu tất cả các từ đều có dạng chuẩn và bất kỳ một dãy các phép rút gọn nào đều sẽ dẫn đến dạng chuẩn. Các hệ *chuẩn hóa yếu* là các hệ có dạng chuẩn, tuy nhiên các phép rút gọn có thể tạo thành vòng lặp và không dẫn đến dạng chuẩn.

Đối với một hệ chuẩn hóa, một **phần tử** là một lớp các từ có cùng một dạng chuẩn hóa. Một **từ đóng** là một từ không có tham số. (Một từ như {\displaystyle x+1} với tham số x được gọi là một **từ mở**.) Như vậy, {\displaystyle 2+1} và {\displaystyle 3+0} là hai từ khác nhau của phần tử {\displaystyle 3}.

### Các loại phụ thuộc

Một **loại phụ thuộc** là một loại mà phụ thuộc vào một từ hoặc loại khác. Ví dụ, loại trả về của một hàm có thể phụ thuộc vào đối số đưa vào hàm.

Ví dụ, một danh sách {\displaystyle \mathrm {nat} } s có độ dài 4 có thể có loại khác với một danh sách {\displaystyle \mathrm {nat} } s có độ dài 5.

### Các loại đẳng thức

Nhiều hệ hình thái có một loại đại diện cho *sự bằng nhau* của các loại và các từ. Loại này khác với quy tắc chuyển đổi, và được gọi là *đẳng thức mệnh đề*.

Trong lý thuyết hình thái trực giác, loại đẳng thức được gọi là I. Có một loại {\displaystyle I\ A\ a\ b} với A là một loại và a, b là các từ có loại A. Một từ của loại {\displaystyle I\ A\ a\ b} là một đẳng thức "a bằng b".

Trong thực tế, có thể xây dựng một loại {\displaystyle I\ \mathrm {nat} \ 3\ 4} nhưng loại đó sẽ không có từ nào cả (vì {\displaystyle 3} khác {\displaystyle 4}). Trong lý thuyết loại trực giác, ta xây dựng các từ đẳng thức bắt đầu từ các đẳng thức đồng nhất. Nếu {\displaystyle 3} là một từ loại {\displaystyle \mathrm {nat} }, tồn tại một từ với loại {\displaystyle I\ \mathrm {nat} \ 3\ 3}. Các đẳng thức phức tạp hơn có thể được tạo ra bằng cách tạo ra một từ đồng nhất rồi thực hiện rút gọn một bên. Ví dụ, nếu {\displaystyle 2+1} là một từ loại {\displaystyle \mathrm {nat} }, ta có một đẳng thức đồng nhất {\displaystyle I\ \mathrm {nat} \ (2+1)\ (2+1)}, và bằng cách rút gọn, ta có một từ mới loại {\displaystyle I\ \mathrm {nat} \ (2+1)\ 3}. Do đó, trong hệ này, loại đẳng thức thể hiện rằng hai giá trị cùng loại có thể được chuyển đổi bằng phép rút gọn.

Các lý thuyết hình thái
-----------------------

### Chính

* Phép tính lambda hình thái đơn, là một logic bậc cao;
* Lý thuyết hình thái trực giác;
* Hệ F;
* Phép tính xây dựng và các dẫn xuất

### Phụ

* Automath;
* Lý thuyết hình thái ST;

### Hiện đang được nghiên cứu

* Lý thuyết hình thái đồng luân đang được nghiên cứu.

Tham khảo
---------

* Bell, John L. (2012). "Types, Sets and Categories" (PDF). In Kanamory, Akihiro (ed.). *Sets and Extensions in the Twentieth Century* (PDF). Handbook of the History of Logic. **6**. Elsevier.
* Church, Alonzo (1940). "A formulation of the simple theory of types". *The Journal of Symbolic Logic*. **5** (2): 56–68. JSTOR 2266170.
* Farmer, William M. (2008). "The seven virtues of simple type theory". *Journal of Applied Logic*. **6** (3): 267–286.

Đọc thêm
--------

* Aarts, C.; Backhouse, R.; Hoogendijk, P.; Voermans, E.; van der Woude, J. (December 1992). "A Relational Theory of Datatypes". Technische Universiteit Eindhoven.
* Andrews B. Peter (2002). *An Introduction to Mathematical Logic and Type Theory: To Truth Through Proof* (2nd ed.). Kluwer. ISBN 978-1-4020-0763-7.
* Covers type theory in depth, including polymorphic and dependent type extensions. Gives categorical semantics.
* Cardelli, Luca (1996). "Type Systems". In Tucker, Allen B. (ed.). *The Computer Science and Engineering Handbook*. CRC Press. pp. 2208–36. ISBN 9780849329098..
* Constable, Robert L. (2012) [2002]. "Naïve Computational Type Theory" (PDF Lưu trữ 2012-02-27 tại Wayback Machine). In Schwichtenberg, H.; Steinbruggen, R. (eds.). *Proof and System-Reliability*. Nato Science Series II. **62**. Springer. pp. 213–259. ISBN 9789401004138.
* Coquand, Thierry (2018) [2006]. "Type Theory". *Stanford Encyclopedia of Philosophy*.
* Thompson, Simon (1991). *Type Theory and Functional Programming*. Addison–Wesley.
* Hindley, J. Roger (2008) [1995]. *Basic Simple Type Theory*. Cambridge University Press.
* Kamareddine, Fairouz D.; Laan, Twan; Nederpelt, Rob P. (2004). *A modern perspective on type theory: from its origins until today*. Springer.
* Ferreirós, José; Domínguez, José Ferreirós (2007). "X. Logic and Type Theory in the Interwar Period". *Labyrinth of thought: a history of set theory and its role in modern mathematics* (2nd ed.). Springer.
* Laan, T.D.L. (1997). *The evolution of type theory in logic and mathematics* (PDF) (PhD). Eindhoven University of Technology.

Liên kết ngoài
--------------

### Tiếng Việt

* Bài viết trên SocialLife.
* Luận văn về tư tưởng Russel, trang 12 có nhắc tới "lý thuyết hình thái logic".

### Tiếng Anh

* Robert L. Constable (ed.). "Computational type theory". Scholarpedia.
* The TYPES Forum — moderated e-mail forum focusing on type theory in computer science, operating since 1987.
* The Nuprl Book: "Introduction to Type Theory."
* Types Project lecture notes of summer schools 2005–2008
	+ The 2005 summer school has introductory lectures