Tải bản đầy đủ (.pdf) (77 trang)

Nghiên cứu cơ sở toán học lập trình hàm và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (628.49 KB, 77 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

NGÔ THỊ KIM ÁNH

NGHIÊN CỨU CƠ SỞ TOÁN HỌC
LẬP TRÌNH HÀM VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ TOÁN HỌC

HÀ NỘI, 2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

NGÔ THỊ KIM ÁNH

NGHIÊN CỨU CƠ SỞ TOÁN HỌC
LẬP TRÌNH HÀM VÀ ỨNG DỤNG
Chuyên ngành: Toán ứng dụng
Mã số: 60 46 01 12

LUẬN VĂN THẠC SĨ TOÁN HỌC

Người hướng dẫn khoa học: TS. TRẦN VĂN DŨNG

HÀ NỘI - 2015


LỜI CẢM ƠN


Luận văn được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới sự
hướng dẫn của thầy giáo TS. Trần Văn Dũng. Sự giúp đỡ và hướng dẫn tận tình,
nghiêm túc của thầy trong suốt quá trình thực hiện luận văn đã giúp tôi trưởng thành
hơn rất nhiều trong cách tiếp cận một số vấn đề mới. Tôi xin bày tỏ lòng biết ơn,
kính trọng sâu sắc nhất đối với thầy.
Tôi xin trân trọng cảm ơn Ban giám hiệu trường Đại học Sư phạm Hà Nội 2,
phòng sau đại học và các thầy cô giáo trong nhà trường đã giúp đỡ, tạo điều kiện
thuận lợi cho tôi trong suốt quá trình học tập.
Tôi xin chân thành cảm ơn gia đình, bạn bè đã luôn giúp đỡ động viên và tạo
điều kiện thuận lợi để tôi hoàn thành khóa học Thạc sĩ cũng như hoàn thành luận
văn này.
Hà Nội, ngày 10 tháng 12 năm 2015
Tác giả

Ngô Thị Kim Ánh


LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.

Tác giả luận văn ký và ghi rõ họ tên

Ngô Thị Kim Ánh


MỤC LỤC
Trang phụ bìa
Lời cảm ơn

Lời cam đoan
Mục lục
MỞ ĐẦU .....................................................................................................................1
CHƯƠNG 1: TÍNH TOÁN LAMBDA ......................................................................3
1.1 Giới thiệu chung về tính toán Lambda .............................................................3
1.1.1 Lời giới thiệu .............................................................................................3
1.1.2 Định nghĩa .................................................................................................4
1.1.3 Những số hạng λ ........................................................................................4
1.1.4 Quy ước .....................................................................................................5
1.1.5 Định nghĩa .................................................................................................5
1.1.6 Mệnh đề .....................................................................................................6
1.1.7 Nhận xét .....................................................................................................6
1.1.8 Định nghĩa Tổ hợp chuẩn ..........................................................................7
1.1.9 Định lí điểm bất động ................................................................................7
1.2 Các điều kiện, Boolean và số nguyên ...............................................................8
1.2.1 Định nghĩa .................................................................................................8
1.2.2 Định nghĩa sự kết đôi ................................................................................8
1.2.3 Định nghĩa .................................................................................................8
1.2.4 Bổ đề ..........................................................................................................8
1.2.5 Định nghĩa hàm λ-định nghĩa được ...........................................................9
1.2.6 Định nghĩa .................................................................................................9
1.2.7 Định nghĩa .................................................................................................9
1.2.8 Định nghĩa ...............................................................................................10
1.2.9 Bổ đề ........................................................................................................10
1.2.10 Bổ đề (xem [3,tr19]) ..............................................................................10
1.2.11 Bổ đề (xem [3,tr20]) ..............................................................................10


1.2.12 Bổ đề (xem [3,tr20]) ..............................................................................10
1.2.13 Định lí (xem [3,tr20]) ............................................................................10

1.2.14 Định lí ....................................................................................................11
1.3 Rút gọn tính toán biểu thức.............................................................................11
1.3.1 Các phương pháp rút gọn ........................................................................11
1.3.2 Định nghĩa ...............................................................................................11
1.3.3 Định nghĩa ...............................................................................................12
1.3.4 Ví dụ ........................................................................................................12
1.3.5 Mệnh đề: M = ᵦ N ⇔ λ ˫M = N. ............................................................13
1.3.6 Định nghĩa ...............................................................................................13
1.3.7 Bổ đề ........................................................................................................13
1.3.8 Định lí Church- Rosser ............................................................................14
1.3.9 Hệ quả ......................................................................................................14
1.4 Hệ thống kiểu ..................................................................................................15
1.4.1 Giới thiệu .................................................................................................15
1.4.2 Kiểu tự do trong tính toán Lambda .........................................................16
1.4.3 Các hệ thống λ→ -Curry .........................................................................17
1.4.4 Hệ thống λ→ - Church ..........................................................................17
CHƯƠNG 2: NGUYÊN LÝ LẬP TRÌNH HÀM .....................................................20
2.1 Đặt vấn đề .......................................................................................................20
2.2 Các nguyên lí chung .......................................................................................20
2.3 Giới thiệu ngôn ngữ lập trình ML...................................................................22
2.3.1 Mở đầu .....................................................................................................22
2.3.2 Các kiểu cơ bản – phép toán luận, số nguyên và xâu ..............................23
2.3.3 Danh sách (List) ......................................................................................25
2.3.4 Các kiểu hàm số và biểu thức ..................................................................27
2.3.5 Các hàm phủ định ....................................................................................27
2.3.6 Hàm số số chuẩn và toán tử mở rộng ......................................................28
2.3.7 Chuỗi hàm chuẩn .....................................................................................29


2.3.8 Danh sách các hàm chuẩn........................................................................30

2.4 Sự tương tự Lambda và ML ...........................................................................31
2.5 Hàm bậc cao....................................................................................................34
2.5.1 Các giá trị hàm bậc cao ...........................................................................34
2.5.2 Phép liên kết và phạm vi .........................................................................34
2.5.3 Hàm quay về ............................................................................................36
2.5.4 Dãy vô hạn ...............................................................................................39
2.5.5 Ví dụ ........................................................................................................40
CHƯƠNG 3: ỨNG DỤNG CỦA LẬP TRÌNH HÀM .............................................42
3.1 Chứng minh chương trình ...............................................................................42
3.2 Một số chương trình đệ quy ............................................................................44
3.2.1 Biện luận phương trình ............................................................................44
3.2.2 Chứng minh tính chất của hàm sử dụng phép quy nạp ..........................45
3.2.3 Hàm trên tích số.......................................................................................47
3.2.4 Phép đệ quy và số học .............................................................................49
3.3 Một số chương trình trên danh sách ...............................................................54
3.3.1 Phép quy nạp cho danh sách ....................................................................54
3.3.2 Ghép nối danh sách .................................................................................55
3.3.4 So sánh danh sách ....................................................................................56
3.3.5 Sắp xếp, chèn và phân loại ......................................................................57
3.4 Một số chương trình trên cây ..........................................................................62
3.4.1 Cây hữu hạn .............................................................................................62
3.4.2 Phép quy nạp cho Cây .............................................................................62
3.4.3 Cây nhị phân ............................................................................................64
KẾT LUẬN ...............................................................................................................69
DANH MỤC TÀI LIỆU THAM KHẢO ..................................................................70


1
MỞ ĐẦU
1. Lí do chọn đề tài

Ngành công nghệ phần mềm chuyển sang một kỉ lục mới. Lập trình trên máy
tính làm cho chương trình trở nên linh hoạt, tin cậy, dễ phát triển ứng dụng. Trong
logic học và khoa học máy tính toán Lambda (Lambda calculus) hay cũng được viết
tắt là λ_ calculus, là một hệ thống hình thức sử dụng trong định nghĩa hàm số, ứng
dụng hàm số và đệ quy là một phần của nghiên cứu về nền tảng toán học. Phép toán
Lambda sau đó đã phát triển để trở thành công cụ quan trọng trong vấn đề nghiên
cứu các vấn đề lý thuyết tính toán và lý thuyết đệ quy và hình thành nền tảng cơ bản
của lập trình hàm.
Lập trình hàm là phong cách lập trình dựa trên định nghĩa hàm sử dụng phép
toán Lambda (Lambda calculus). Lập trình hàm không sử dụng các lệnh gán biến và
khác với lập trình mệnh lệnh trong các ngôn ngữ lập trình hàm, hàm (thủ tục,
chương trình con) đóng vai trò trung tâm, thay vì thực hiện lệnh máy tính tính biểu
thức. Mục đích của việc thiết kế ngôn ngữ lập trình hàm là mô phỏng các hàm toán
học một cách nhiều nhất có thể được. Trong ngôn ngữ ra lệnh, một biểu thức được
đánh giá và kết quả của nó được lưu trữ trong ô nhớ được biểu diễn bởi một biến
trong chương trình. Ngược lại, trong ngôn ngữ lập trình hàm không sử dụng biến và
do đó không cần lệnh gán. Ðiều này giải phóng người lập trình khỏi mối quan tâm
về ô nhớ của máy tính trong khi thực hiên chương trình. Không có biến cho nên
không có cấu trúc lặp (vì cấu trúc lặp được điều khiển bởi biến). Các lệnh lặp lại sẽ
được xử lý bằng giải pháp đệ quy. Chương trình là các định nghĩa hàm và các áp
dụng hàm. Sự thực hiện là việc đánh giá các áp dụng hàm. Sự thực hiện một hàm
luôn cho cùng một kết quả khi ta cho nó cùng một đối số. Nó cho thấy rằng ngữ
nghĩa của ngôn ngữ lập trình hàm đơn giản hơn ngữ nghĩa của ngôn ngữ lập trình ra
lệnh và ngôn ngữ hàm bao gồm cả những nét đặc biệt của ngôn ngữ ra lệnh. Đã có
nhiều ngôn ngữ hàm được phát triển và ứng dụng như: Haskell, ML,... Đó là động
lực để bản thân tôi nghiên cứu đề tài “Nghiên cứu cơ sở toán học lập trình hàm
và ứng dụng”.


2

2. Mục đích nghiên cứu
Cơ sở, nguyên lý lập trình hàm và ứng dụng.
3. Nhiệm vụ nghiên cứu
Tìm hiểu cơ sở, nguyên lý lập trình hàm và ứng dụng.
4. Đối tượng nghiên cứu
Phép toán, tính toán Calculus, ngôn ngữ lập trình ML, ngôn ngữ lập trình
hàm, khả năng ứng dụng.
5. Phương pháp nghiên cứu
Thu thập, tìm hiểu và phân tích các tài liệu.
6. Dự kiến đóng góp mới
Xây dựng một số ứng dụng suy luận đẳng thức chương trình, hàm bậc cao.
NỘI DUNG
Luận văn được chia làm 3 chương, lời mở đầu, lời kết thúc và tài liệu tham
khảo. Chương 1 của luận văn nói về tính toán Lambda: khái niệm và cú pháp của
tính toán Lambda. Chương 2 của luận văn nói về nguyên lý ngôn ngữ lập trình hàm,
lập trình ML: Thủ tục và chương trình ngôn ngữ lập trình. Chương 3 của luận văn
nói về các ứng dụng của ngôn ngữ lập trình hàm.


3
CHƯƠNG 1: TÍNH TOÁN LAMBDA
1.1 Giới thiệu chung về tính toán Lambda
1.1.1 Lời giới thiệu
Ứng dụng và trừu tượng
Hoạt động cơ bản nhất của tính toán λ là ứng dụng. Biểu thức F.A hay FA
chỉ rõ dữ liệu F coi như là thuật toán áp dụng cho dữ liệu A coi như là đầu vào.
Điều này được xem bằng hai cách. Thứ nhất là quá trình tính toán FA, thứ hai là
đầu ra của quá trình. Quan điểm đầu tiên được xét đến bởi các khái niệm của
chuyển đổi và thậm chí là tốt hơn nữa là sự rút gọn; quan điểm thứ hai là khái niệm
về mô hình (ngữ nghĩa).

Lí thuyết này là kiểu viết tự do: nó được cho phép để xem xét các biểu thức
như FF có nghĩa là F áp dụng cho chính nó. Điều này sẽ kích thích sự đệ quy.
Hoạt động cơ bản khác là sự trừu tượng. Nếu M ≡ M[x] là một biểu thức
chứa (phụ thuộc vào) x. Sau đó

x. M[x] chỉ rõ hàm số x ↦ M[x]. Sự ứng dụng và

sự trừu tượng làm việc cùng nhau trong công thức sau.
(λx. 2 ∗ x + 1)3 = 2 ∗ 3 + 1 (= 7)
Có nghĩa là (λx. 2 ∗ x + 1)3 chỉ ra hàm số x ↦ 2 ∗ x + 1 đặt vào số 3 cho
2 ∗ 3 + 1 là 7. Nói chung, chúng ta có (λx. M[x])N = M[N]. Phương trình cuối
cùng này tốt nhất được viết là
(λx. M)N = M[x ≔ N]

(1)

Ở đó [x ≔ N] biểu thị thay thế của N cho x. Điều đáng chú ý là mặc dù (1) là tiên
đề cần thiết duy nhất của tính toán λ, lí thuyết nhận được sự quan tâm của nhiều nhà
khoa học.
Biến tự do và biến ràng buộc
Sự trừu tượng được cho là ràng buộc biến tự do x trong M. Chúng ta nói rằng
λx.yx có nghĩa là x là biến ràng buộc và y là biến tự do. Sự thay thế
[ ≔

] chỉ được thực hiện tại các nơi xuất hiện tự do của x
yx(λx. x)[x ≔ N] ≡ yN(λx. x)


4
Trong giải tích có một sự ràng buộc biến tương tự. Trong ∫ f(x, y)dx biến x

là bị ràng buộc và y là biến tự do.
Nó không có nghĩa khi thế 7 cho x: ∫ f(7, y)d7 ; Nhưng sự thay thế y là có
nghĩa ∫ f(x, 7)dx.
Vì lí do đó mà luôn được thừa nhận rằng những biến ràng buộc mà xuất hiện
trong một biểu thức nào đó thì khác với biến tự do. Điều này có thể được thực hiện
bằng cách đặt lại tên biến biến ràng buộc. Thí dụ λx. x trở thành λy. y. Thật vậy,
những biểu thức này thực hiện vai trò như nhau:
(λx. x)a = a = (λy. y)a
Và trên thực tế là nó chỉ rõ cùng một thuật toán. Vì vậy những biểu thức mà
khác nhau chỉ ở cái tên của biến ràng buộc thì coi như là một.
1.1.2 Định nghĩa
Tập hợp số hạng của λ (kí hiệu Ʌ) được xác định từ một tập hợp vô hạn các
biến V = {v, v᾽, v῎, … } sử dụng với ứng dụng và hàm số trừu tượng
x∊V⇒x∊Ʌ
M, N ∊ Ʌ ⇒ (MN) ∊ Ʌ
M ∊ Ʌ, x ∊ V ⇒ (λxM) ∊ Ʌ
Trong dạng chuẩn thì nó có dạng
biến ∷= ʻvʼ|biếnʻ′ʼ
Số hạng λ ∷= biến|ʻ(ʼsốhạngλsốhạngλʻ)ʼ|ʻ(λʼbiếnsốhạngλʻ)ʼ
1.1.3 Những số hạng λ
v᾽;
(v᾽v);
λv(v᾽v) ;
λv(v᾽v) v῎ ;
λv λv᾽(v᾽v)

v῎ v

;



5
1.1.4 Quy ước
i) x, y, z… ký hiệu những biến tùy ý; M, N, L…ký hiệu những số hạng λ tùy
ý. Các dấu ngoặc đơn phía ngoài cùng không được viết.
ii) M ≡ N có nghĩa là M và N là cùng số hạng hay có thể thu được từ nhau
bằng cách đổi tên những biến ràng buộc. Thí dụ:
(λxy)z ≡ (λxy)z;
(λxx)z ≡ (λyy)z;
(λxx)z ≢ z;
(λxx)z ≢ (λxy)z;
iii) Chúng ta dùng cách viết gọn:
F M … M ≡ (… ((F M )M ) … M )
λx … x . M ≡ λx (λx (… λx (M) … ))
Các số hạng trong 1.1.3 có thể được viết như sau
v᾽ ≡ y;
(v᾽v) ≡ yx;
λv(v᾽v) ≡ λx. yx;
λv(v᾽v) v῎ ≡ (λx. yx)z;
λv λv᾽(v᾽v)

v῎ v

≡ (λx. yx)zx;

Chú ý rằng λx. yx là (λx(yx)) chứ không phải là ((λx. y)x)
1.1.5 Định nghĩa
i) Tập hợp các biến tự do của M kí hiệu FV(M), được định nghĩa như sau:
FV(x) = {x}
FV(MN) = FV(M) ∪ FV(N)

FV(λx. M) = FV(M) − {x}
Một biến trong M là ràng buộc nếu nó không tự do. Chú ý rằng một biến bị
ràng buộc nếu nó xảy ra dưới phạm vi của một số hạng λ.


6
ii) M là một số hạng đóng (hay một tổ hợp) nếu FV(M) = ∅. Tập hợp các số
hạng đóng kí hiệu Ʌ˚.
iii) Kết quả của việc thay thế N cho mọi sự xuất hiện tự do của biến x trong
M kí hiệu M[x: = N] được định nghĩa như sau
x[x ≔ N] ≡ N;
y[x ≔ N] ≡ y, nếu x ≢ y;
(M M )[x ≔ N] ≡ (M [x ≔ N])(M [x ≔ N]);
(λy. M )[x ≔ N] ≡ λy. (M [x ≔ N]).
1.1.6 Mệnh đề
i) Kiểu chính của phép toán λ là (λx. M)N = M[x ≔ N]

(1), ∀M, N ∈ Ʌ

ii) Logic và quy tắc
Đẳng thức M = M;
M = N ⇒ N = M;
M = N, N = L ⇒ M = L.
Các luật tương thích
M = M᾽ ⇒ MZ = M᾽Z;
M = M᾽ ⇒ ZM = ZM᾽;
M = M᾽ ⇒ λx. M = λx. M᾽.
iii) Nếu M ≡ N có thể chứng minh trong phép toán λ, khi đó chúng ta thường
viết λ ˫ M = N.
Như một kết quả của luật tương thích, có thể thay thế các số hạng bằng các số hạng

bằng nhau trong bất kì trường hợp nào
M=N⇒

…M…

= …N…

Ví dụ, (λy. yy)x = xx, vậy λ ˫ λx. x (λy. yy)x x = λx. x(xx)x.
1.1.7 Nhận xét
Chúng ta nhận biết được các số hạng mà chỉ khác nhau về cái tên của biến
ràng buộc. Một cách khác là thêm vào phép toán λ tiên đề sau đây
λx. M = λy. M[x ≔ y]

(2)

Với điều kiện là y không xuất hiện trong M


7
Chúng ta thích một cách viết khác của lí thể hiện này mà trong đó sự định
danh được thực hiện ở mức cú pháp. Sự định danh này được thực hiện trong đầu
của chúng ta và không có trên giấy. Để triển khai thành tính toán

máy phải đối

phó với điều này, nên được gọi là chuyển đổi (2). Một cách tốt để làm điều này
được cung cấp bởi kí hiệu tên tự do của Bruijn(1984).
1.1.8 Định nghĩa Tổ hợp chuẩn
≡ x. x;
≡ λxy. x;



≡ λxy. y;

≡ λxyz. xz(yz).
Công thức
M ≡ M;
MN ≡ M;
∗ MN

≡ N;

MNL ≡ ML(NL).
Nhờ đó ta có thể giải được những phương trình đơn giản
Ví dụ: ∃G ∀X GX = XXX tồn tại G ∈ Ʌ sao cho với mọi X ∈ Ʌ có

˫ GX = XX).

Thật vậy, cho G ≡ λx. xxx và ta đã thực hiện xong.
Phương trình đệ quy cần đến một phương pháp kĩ thuật đặc biệt. Kết quả
dưới đây cung cấp một cách để trình bày sự đệ quy trong tính toán λ.
1.1.9 Định lí điểm bất động
i) ∀F ∃X FX = X(có nghĩa là ∀F ∈ Ʌ có một X ∈ Ʌ sao cho λ ˫ FX = X).
ii) Có 1 tập hợp điểm bất động
λf. λx. f(xx) λx. f(xx) sao cho ∀F F( F) = F
Chứng minh
i) Ta có định nghĩa W ≡ λx. F(xx) và X ≡ WW.
Khi đó X ≡ WW ≡ λx. F(xx) W = F(WW) ≡ FX
ii) Chứng minh tương tự
Ví dụ:





8
i) ∃G ∀X GX = GX. Thật vậy,
∀X DX = GX ⇐ Gx = Gx
⇐ G = λx. Gx
⇐ G = (λgx. gx)G
G ≡ (λgx. gx)
Chú ý rằng có thể cho G ≡

.

ii) ∃G ∀X GX = GG cho G ≡ (λgx. gg)
1.2 Các điều kiện, Boolean và số nguyên
1.2.1 Định nghĩa
i) true ≡ , false ≡



ii) Nếu B được coi là một Boolean, có nghĩa là một số hạng, mà không là
hằng đúng cũng không là hằng sai. Vậy if B then P else Q
có thể biểu diễn bởi: BPQ
1.2.2 Định nghĩa sự kết đôi
Cho M, N ∈ Ʌ viêt [M, N] ≡ λz. if z then M else N

(≡ λz. zMN).

Vậy[M, N] true = M

[M, N] false = N
Và do đó [M, N] có thể dùng là một cặp.
Ta có thể sử dụng cấu trúc ghép đôi này cho một sự biểu diễn của các số tự
nhiên dựa vào Barendregt(1976).
1.2.3 Định nghĩa
Với mỗi n ∈

chữ số n được định nghĩa một cách quy nạp như sau
˹0˺ ≡
˹n + 1˺ ≡ [false, ˹n˺].

1.2.4 Bổ đề
Phần tử liền sau, phần tử liền trước, tiêu chuẩn cho số 0
Tồn tại tập hợp

,

, và sô không sao cho
˹n˺ = ˹n + 1˺
˹n + 1˺ = ˹n˺


9
sô không˹0˺ = true
sô không˹n + 1˺ = false.
Chứng minh:
≡ λx[false, x],
≡ λx. x false,
sô không ≡ λx. x true.
1.2.5 Định nghĩa hàm -định nghĩa được

i) Một hàm số là một ánh xạ φ: N → N
với số p nào đó. Trong trường hợp này φ được gọi là p-

.

ii) Một hàm số p_ary φ được gọi là λ-định nghĩa được, nếu đối với một tổ
hợp F nào đó
F˹n ˺ … ˹n ˺ = ˹φ(n , … , n )˺

(3)

với mọi n , … , n ∈ N. Nếu (3) thỏa mãn, thì φ được gọi là λ-định nghĩa được bởi F.
1.2.6 Định nghĩa
Các hàm ban đầu là những hàm số U , S , Z định nghĩa bởi
U (x , … , x ) = x ; (1 ≤ i ≤ n);
S (n) = n + 1;
Z(n) = 0.
Cho P(n) là một quan hệ trên tập số nguyên. Như thông thường μm[P(m)]
với ký hiệu là số m nhỏ nhất, sao cho P(m) thỏa mãn, nếu có một số như vậy. Nếu
ngược lại thì nó không thể định nghĩa được.
1.2.7 Định nghĩa
Cho A là một lớp các hàm số trên tập số nguyên
i)

A là đóng với phép hợp hàm, nếu với mọi φ định nghĩa bởi
φ(n) = χ ψ (n), … , ψ (n)

Với χ, ψ , ψ ∈ A, ta có φ ∈ A
ii)


A là đóng với phép đệ quy nguyên thủy nếu với mọi φ định nghĩa
φ(0, n) = χ(n),


10
φ(k + 1, n) = ψ(φ(k, n), k, n)
Với χ, ψ ∈A ta có φ ∈A
iii)

A là đóng với phép lấy cực tiểu nếu với mọi φ định nghĩa bởi
φ(n) = μm[χ(n, m) = 0]

với χ ∈A sao cho ∀n ∃m χ(n, m) = 0, ta có φ ∈ A.
1.2.8 Định nghĩa
Lớp R của các hàm đệ quy là lớp nhỏ nhất của hàm số trên tập số nguyên,
mà bao gồm tất cả các hàm ban đầu và đóng với phép hàm hợp, phép đệ quy nguyên
thủy và phép lấy cực tiểu.
Vậy R là một lớp được định nghĩa đệ quy. Chứng minh rằng tất cả hàm đệ
quy là λ-định nghĩa được dựa vào quy nạp đối số tương ứng. Kết quả ban đầu thuộc
về Kleene(1936).
1.2.9 Bổ đề
Hàm ban đầu là λ-định nghĩa được
Chứng minh: Cho một số hạng xác định
U ≡ λx … x . x ;
S ≡ λx. [false, x]

(theo bổ đê1.2.4)

Z ≡ λx. ˹0˺.
1.2.10 Bổ đề (xem [3,tr19])

Hàm λ-định nghĩa được thì đóng với phép hàm hợp.
1.2.11 Bổ đề (xem [3,tr20])
Hàm λ-định nghĩa được là đóng với phép đệ quy nguyên thủy.
1.2.12 Bổ đề (xem [3,tr20])
Hàm λ-định nghĩa được là đóng với phép lấy cực tiểu.
1.2.13 Định lí (xem [3,tr20])
Tất cả các hàm đệ quy đều là λ-định nghĩa được.
Chứng minh: bằng các bổ đề 1.2.9- 1.2.12
Phần đảo cũng thỏa mãn. Vậy với hàm số trên tập số nguyên ta có φ là hàm
đệ quy khi và chỉ khi φ là λ-định nghĩa được. Hơn nữa đối với hàm bộ phận thì có


11
khái niệm của λ-định nghĩa được cũng tồn tại. Nếu φ là hàm số bộ phận trên tập số
nguyên, khi đó ta có (xem [3,tr20]).
ψlà hàm đệ quy bộ phận ⇔ ψ là λ-định nghĩa được.
1.2.14 Định lí
Đối với chữ số Church

tất cả hàm đệ quy là λ-định nghĩa được.

Chứng minh: Định nghĩa S ≡ λxyz. y(xyz),
P ≡ λxyz. x λpq. q(py) ( z) ,
0 ≡ λx. x( false)true.
Khi đó các số hạng này tương ứng với kết quả tiếp phần tử trước và phép thử
với số 0. Khi đó như trước tất cả các hàm đệ quy đều là λ-định nghĩa được.
1.3 Rút gọn tính toán biểu thức
1.3.1 Các phương pháp rút gọn
Trong mục này ta xem xét một số mô hình tính toán thay thế dựa trên việc
viết lại. Các đối tượng trong các mô hình này là những thuật ngữ được xây dựng lên

từ các
hằng số với arity trong tập số N và các biến, sử dụng ứng dụng.
Có một tính chất đối xứng đã biết trong công thức (1) cơ bản. Biểu thức
(λx. x + 1)3 = 10
Có thể được giải thích như “10 là kết quả của biểu thức (λx. x + 1)3, nhưng
ngược lại thì không đúng. Dạng tính toán này có thể biểu thị dưới dạng viết
(λx. x + 1)3 ↠ 10
Mà nói “(λx. x + 1)3 rút gọn đến 10”.
Ngoài dạng dựa trên khái niệm này, sự rút gọn cũng có ích cho giải tích với
những phép biến đổi.
1.3.2 Định nghĩa
(i) Quan hệ 2 ngôi R trên Λ được gọi là tương thích (với những phép toán),
nếu MRN⇒(ZM)R(ZN),(MZ)R(NZ) và (λx.M)R(λx.N).
(ii) Một quan hệ tương đẳng trên Λ là một mối quan hệ tương thích.


12
(iii) Một mối quan hệ rút gọn trên Λ là một mối quan hệ tương thích, phản
thân và bắc cầu.
1.3.3 Định nghĩa
Các quan hệ hai ngôi → ᵦ,↠ᵦ và = ᵦ trên Λ được định nghĩa một cách quy
nạp như sau
(i) 1. (λx. M)N → ᵦM[x ≔ N];
2. M → ᵦ N ⇒ ZM → ᵦ ZN, MZ → ᵦ NZ và λx. M → ᵦ λx. N.
(ii) 1. M ↠ ᵦ M;
2. M → ᵦ N ⇒ M ↠ ᵦ N;
3. M ↠ ᵦ N, N ↠ ᵦ L ⇒ M ↠ ᵦ L.
(iii) 1. M ↠ ᵦ N ⇒ M = ᵦ N ;
2. M = ᵦ N ⇒ N = ᵦ M;
3. M = ᵦ N, N = ᵦ L ⇒ M = ᵦ L.

Các quan hệ này được đọc như sau
M ↠ ᵦ N: M β rút gọn về N;
M → ᵦ N: M β rút gọn về N là một quan hệ;
M = ᵦ N: M là β tương thích với N.
Bằng định nghĩa → ᵦ là tương thích, ↠ᵦ là một quan hệ rút gọn và = ᵦ là
quan hệ tương đẳng.
1.3.4 Ví dụ
Ví dụ 1: Rút gọn biểu thức
a) (+ (∗ 5 6) (∗ 8 3))

→ (+ (∗ 5 6) 24)
→ (+ 30 24)
→ 54

b) (λx.+ x 1) 4

→ (+ 4 1)
→5

c) (λx.+ x x) 4

→ (+ 4 4)
→8


13

d) (λx. (λx.+ (− x 1)) x 3) 9

→ (λ x.+ (− x 1)) 9 3

→ + (− 9 1) 3
→ +8 3
→ 11

Ví dụ 2:
(i) Định nghĩa ω ≡ λx. xx, Ω ≡ ωω. Thì Ω → ᵦ Ω.
(ii) KIΩ ↠ ᵦ I.
Bằng trực giác M = ᵦ N nếu M nối với N qua mũi tên → ᵦ (không để ý đến
hướng). Điều này thể hiện qua hình vẽ như sau:

1.3.5 Mệnh đề:

=ᵦ



˫

=

.

1.3.6 Định nghĩa
(i) Một β- quy về là một số hạng của dạng (λx. M)N. Trong trường hợp này
M[x ≔ N] là một rút gọn.
(ii) Một λ-số hạng M là một β-dạng chuẩn (β-nf) nếu nó không có β-quy về
như cơ sở con.
(iii) Một số hạng M là một β-dạng chuẩn, nếu M = ᵦ N và N là một β-nf, với
một vài dạng N.
Ví dụ: (λx. xx)y không phải là một β-nf, nhưng có như β-nf số hạng yy.

Một tính chất trực tiếp của β-nf như sau.
1.3.7 Bổ đề
Giả sử M là một β-nf. Vậy M ↠ ᵦ N ⇒ N ≡ M.


14
Chứng minh: Điều này đúng nếu ↠ ᵦ được thay thế bởi → ᵦ. Vậy kết quả
dưới đây là tính chất bắc cầu.
1.3.8 Định lí Church- Rosser
Nếu M ↠ ᵦ N , M ↠ ᵦ N , thì với

nào đó ta có N ↠ ᵦ N và N ↠ ᵦ N ; Trong

lược đồ sau
M

N1

N2

N3
1.3.9 Hệ quả
Nếu M = ᵦ N, thì sẽ có một L sao cho M ↠ ᵦ L và N ↠ ᵦ L.
Chứng minh:
Phép quy nạp trên thế hệ của = ᵦ
Trường hợp 1: M = ᵦ N vì M ↠ ᵦ N. Lấy L ≡ N.
Trường hợp 2: M = ᵦ N vì N = ᵦ M.Với IH sẽ có một β- rút gọn chung L1 của N, M.
Lấy L ≡ L
Trường hợp 3: M = ᵦ N vì M = ᵦ N , N = ᵦ N. Vậy
\


M

N’
(IH)
L1

N
(IH)

(CR)

L2

L
Ý nghĩa của Định lí Church- Rosser: Nếu biểu thức M có các cách rút gọn
khác nhau nhưng kết quả rút gọn cuối cùng là giống nhau, đây là dạng chuẩn để so


15
sánh các biểu thức với nhau. Một biểu thức Lambda không thể có hai dạng chuẩn
tắc [10].
1.4 Hệ thống kiểu
1.4.1 Giới thiệu
Các phép tính Lambda ban đầu được hình thành bởi Church (1932; 1933) như
là một phần của một lý thuyết chung về hàm và logic, dự định như là một nền tảng cho
toán học. Mặc dù hệ thống hóa đầy đủ ra là không phù hợp, như trong Kleen và Rosser
(1936), các hệ thống phụ xử lí các hàm chỉ trở thành một mô hình thành công cho các
hàm có thể tính được. Hiện nay hệ thống này được gọi là các phép tính lambda. Sách
về chủ đề này ví dụ là Church (1941), Curry và FEYS (1988), Curry(1972), Barendregt

(1984), Hindley và Seldin (1986) và Krivine (1990).
Cho đến nay tính toán Lambda thường được xem như dạng lí thuyết đại số tự
do. Thật vậy, vì mỗi biểu thức (xét như hàm số) có thể được đưa vào mỗi biểu thức
khác nhau (xét như đối số). Chẳng hạn như hàm đồng nhất thức…có thể được đưa
vào bất kì đối số x nào đó để cho ra kết quả cùng với x.
Có nhiều dạng trong tính toán Lambda. Các dạng này được giới thiệu một
cách chủ yếu trong Curry(1934) (gọi là logic tổng hợp, sự biến thể khác nhau của
tính toán Lambda) và trong Church (1940). Các dạng này thường xuyên là vật thể
của cú pháp tự nhiên và có thể được giao cho số hạng Lambda. Các kiểu này thường
các đối tượng có tính chất cú pháp và có thể được gán cho các số hạng lambda. Nếu
M là một số hạng và, một kiểu A được gán cho M, vì vậy ta nói 'M có kiểu A' hoặc
'M thuộc A'; các kí hiệu sử dụng cho điều này là M: A. Ví dụ trong hầu hết các hệ
thống với một kiểu kiểu có I: A → A, có nghĩa là, các phép đồng nhất I có thể nhận
được như kiểu A → A. Điều này có nghĩa rằng nếu x là một đối số của I của kiểu A,
thì cũng là giá trị I của kiểu A. Nói chung A → B là kiểu của hàm từ A đến B.
Hai tờ gốc của Curry và Church giới thiệu các kiểu phiên bản của tính toán
Lambda đưa đến hai cách khác nhau của hệ thống. Trong tính toán Lambda Curry
các số hạng là của các lý thuyết kiểu-tự do. Trong các hệ thống Church các số hạng
là phiên bản chú thích của các số hạng kiểu-tự do. Mỗi số hạng có một kiểu mà


16
thường là duy nhất (lên đến một quan hệ tương đương) và có thể được suy ra từ
cách các số hạng được chú thích. Curry và Church gần như là tính toán Lambda
tương ứng với hai mô hình trong lập trình. Một số tác giả xác định các hệ thống
Curry là "tính toán Lambda với phép gán kiểu" và các hệ thống Church là "hệ thống
các kiểu tính toán Lambda"
Trong phần này hệ thống λ→ của tính toán Lambda đơn giản sẽ được giới
thiệu. Sự chú ý được tập trung vào sự khác biệt giữa kiểu là Curry và là Church
bằng cách giới thiệu λ→ trong cả hai cách. Một số hệ thống khác của tính toán

Lambda tồn tại cả trong phiên bản một Curry và một Church [4].
1.4.2 Kiểu tự do trong tính toán Lambda
Sự ra đời của các kiểu tự do trong tính toán Lambda là cần thiết để xác định
hệ thống của Curry phép gán kiểu trên đầu trang của nó. Hơn nữa, mặc dù kiểu
dáng Church gõ các phép tính Lambda có thể được giới thiệu trực tiếp, nó vẫn hữu
ích để có một số kiến thức về các kiểu tự do trong tính toán Lambda.
Trong mục này, các kiểu tự do trong tính toán Lambda sẽ được gọi là 'λ calculus' hoặc λ đơn giản. Bắt đầu với một mô tả chính thức.
Ứng dụng và trừu tượng
Các λ -calculus có hai hoạt động cơ bản. Hoạt động đầu tiên là ứng dụng.
Biểu thức F.A
(thường được viết là FA) biểu thị sự hợp dữ liệu F coi như như thuật toán áp dụng
cho A coi như là đầu vào. Lý thuyết λ là kiểu tự do: nó được phép xem xét các biểu
thức như FF, đó là, F được áp dụng cho chính nó. Điều này sẽ hữu ích để mô phỏng
phép đệ quy.
Hoạt động cơ bản khác là sự trừu tượng. Nếu M ≡ M[x] là một biểu thức
chứa (phụ thuộc vào) x, thì λx. M[x] định nghĩa bản đồ trực quan tức là x một phép
gán x ↦ M[x]. Các biến x không cần phải thực sự xảy ra trong M. Trong trường
hợp đó λx. M[x] là hàm liên tục với giá trị M


17
1.4.3 Các hệ thống λ→ -Curry
Ban đầu các kiểu mẫu ngầm đã được giới thiệu trong Curry (1934) cho lí
thuyết combinators. Trong Curry và FEYS (1985), Curry (1972) lý thuyết đã được
sửa đổi một cách tự nhiên để các phép gán các phần tử tính toán Lambda trong một
tập hợp T cho các số hạng Lambda tự do. Vì lý do này, những phép tính Curry đôi
khi được gọi là hệ thống kiểu gán. Nếu loại σ ∈ T được gán cho số hạng M ∈ Λ ta
viết ˫ M: σ, thường với một dạng dưới ˫ để biểu thị các hệ thống cụ thể. Thông
thường, một tập hợp các giả thuyết Γ là cần thiết để đưa ra một kiểu gán và ta viết
Γ ˫ M: σ (phát âm này là 'Γ sinh ra M trong σ'). Một hệ thống phép gán Curry riêng

biệt phụ thuộc vào hai tham số, tập hợp T và các quy tắc của kiểu gán. Ví dụ bây
giờ chúng tôi giới thiệu hệ thống λ→- Curry
Định nghĩa 1
Tập hợp các loại λ→, ký hiệu (λ→), được định nghĩa một cách quy nạp như
sau. Chúng ta viết T=kiểu (λ→).
α, α , … ∈ T(kiểu biến)
σ, τ ∈ T ⇒ (σ → τ) ∈ T (kiểu hàm không gian)
Những định nghĩa như vậy sẽ xảy ra thường xuyên hơn và thuận tiện để sử
dụng các cú pháp trừu tượng sau để tạo thành T:
T=V|T→T
với V xác định bởi
V=α|

(kiểu biến)

Ví dụ:
1) Một dạng chuẩn cho tất cả σ ∈ T
˫ (λx.x): ( → ).
2) Một ví dụ cho một cơ sở khác rỗng như sau
y: σ˫(λx. x)y: σ
1.4.4 Hệ thống λ→ - Church
Trước khi đưa ra định nghĩa chính thức, chúng ta hãy giải thích đúng cách sự
khác biệt giữa các phiên bản Church và Curry của hệ thống λ→ là những gì. Ta có


18
˫

(λx. x): (σ → σ),


Nhưng mặt khác
(λx: σ. x): (σ → σ).

˫

Đó là, số hạng λx. x được chú thích trong hệ thống Church bằng (:σ). Ý nghĩa
trực giác là λx: σ. x lấy các đối số x từ các loại (tập hợp) σ. Điều này rõ ràng đề cập
đến các loại trong một số hạng làm cho nó có thể để quyết định xem một số hạng có
một loại nhất định hay không. Đối với một số hệ thống Curry câu hỏi này là không
thể quyết định được.
Định nghĩa 1. Gọi T là một tập hợp các loại. Tập hợp của T-chú thích λ – số hạng
(cũng gọi là số hạng giả), ký hiệu Λ , được định nghĩa như sau:
Λ = V|Λ Λ |

: TΛ

V ở đây biểu thị tập hợp các biến số hạng.
Các quy ước cú pháp tương tự cho Λ được sử dụng như cho Λ. Ví dụ như
λx : σ … x σ . M ≡ (λx : σ (λx : σ … (x σ (M))))
Số hạng này có thể được viết tắt là
λx⃗: σ⃗. M
Một vài hệ thống kiểu tính toán Lambda Church bao gồm một sự lựa chọn
của tập các kiểu T và các phép gán của các loại σ ∈ T với các số hạng M ∈ Λ . Tuy
nhiên, đây không phải là trường hợp trong tất cả các hệ thống Church. Trong các hệ
thống với cái gọi là (số hạng) loại phụ thuộc vào các tập hợp và loại được xác định
cùng một lúc. Dù sao, đối với λ→ - Church định nghĩa riêng biệt của các loại và các
số hạng là có thể và ta có một sự lựa chọn như các loại cùng một tập hợp T = kiểu
(λ→) với

λ→ - Curry


Định nghĩa 2
Các loại lambda calculus λ→ - Church được định nghĩa như sau
1. Các tập các loại T= kiểu (λ→) được xác định bởi T=V|T→T
2. Một tuyên bố có dạng M: σ với M ∈ Λ và σ ∈ T
3. Một cơ sở lại là một tập hợp các báo cáo với các biến chỉ rõ khi đối tượng.


×