Đơn giản hóa tính toán Lambda


8

Dưới đây là biểu thức lambda mà tôi thấy khó giảm, tức là tôi không thể hiểu làm thế nào để giải quyết vấn đề này.

(λmn.(λsz.ms(nsz)))(λsz.sz)(λsz.sz)

Tôi bị mất với điều này.

nếu ai đó có thể dẫn tôi đi đúng hướng sẽ được đánh giá cao

Câu trả lời:


15

Các thuật ngữ Lambda được đơn giản hóa theo quy tắc giảm β :

(λx.M)NβM[x:=N]

Nó có nghĩa là, nếu bạn có một subterm trông giống như (λx.M)N(được gọi là redex ) bạn có thể thay thế nó bằngM[x:=N], đó là M với N Được thay thế cho x. Sự thay thếM[x:=N]thường được gọi là hợp đồng . (Chữ in hoa thíchMN được sử dụng để biểu thị các điều khoản.)

Trong trường hợp của bạn, mức giảm đầu tiên sẽ là:

((λmn.(λsz.ms(nsz)))(λsz.sz)redex)(λsz.sz)β(λn.(λsz.(λsz.sz)s(nsz)))contractum(λsz.sz)
nơi chúng tôi thay thế m với λsz.sz. Lưu ý rằng bây giờ chúng ta cóλsz phía trong λszmà không phải là rất thuận tiện (chưa được phép). Tốt hơn là đổi tên các biến bị ràng buộc (α-conversion) để được phân biệt, ví dụ:

(λn.(λuv.(λsz.sz)u(nuv)))(λsz.sz)

Một số lưu ý:

  • Thay thế chỉ áp dụng cho các biến miễn phí . Các biến giới hạn luôn luôn nguyên vẹn.
  • Đôi khi sự thay thế là không thể trực tiếp. Ví dụ: bạn không thể thay thếx:=y vào λy.xy bởi vì y bị ràng buộc dưới λ. Bạn sẽ nhận đượcλy.yymà sẽ thay đổi ý nghĩa của thuật ngữ. Vì vậy, trước tiên, bạn phải đổi tên biến bị ràng buộc trước, ví dụ nhưλz.xz và sau đó bạn có thể thay thế một cách an toàn x:=y để có được λz.yz. Bài viết Wikipedia đưa ra định nghĩa chính thức về sự thay thế và chỉ ra khi cần đổi tên các biến bị ràng buộc.
  • Lambda liên kết với bên phải, vì vậy λsz.szλs.(λz.sz).
  • Ứng dụng liên kết bên trái, vì vậy xyz(xy)z.

1

Một cách khác để thể hiện sự trừu tượng và giảm bớt lambda. Các chỉ mục được sử dụng thay vì các thuật ngữ chữ dựa trên thứ tự đầu vào. Trừu tượng được bao quanh bởi []

(λmn.(λsz.ms(nsz)))(λsz.sz)(λsz.sz)
m -> 1, n -> 2, s -> 3, z -> 4
(λmn.(λsz.ms(nsz))) = [1 3 (2 3 4)]
(λsz.sz) = [1 2]
[1 3 (2 3 4)][1 2][1 2]  
[[1 2] 2 (1 2 3)][1 2]   ;1 was replaced with [1 2], remaining terms decremented
[[1 2] 1 ([1 2] 1 2)]    ;1 was replaced with [1 2], remaining terms decremented
[1 ([1 2] 1 2)]          ;1 2 was replaced by 1 ([1 2] 1 2)]
[1 (1 2)]                ;1 2 was replaced by 1 2
(λmn.m(mn))

Các ký hiệu ở trên chỉ là một cách nhỏ gọn hơn và rõ ràng hơn để thể hiện trừu tượng lambda. Trừu tượng hợp chất giảm xuống một hình thức bình thường duy nhất tự động, không cần giảm alpha.

Chỉ số tích cực duy nhất được sử dụng cho các điều khoản ràng buộc. Các chỉ số tiêu cực được sử dụng cho các thuật ngữ tiêu diệt. Các chỉ số tiêu cực được đặt cuối cùng theo thứ tự độ lớn giảm dần.

I = λx.x = [1]
K = λxy.x = [1 -2]
KI = λyx.x = [2 -1]
S = λxyz.xz(yz) = [1 3 (2 3)]

Áp dụng S cho K:

[1 3 (2 3)][1 -2]
[[1 -2] 2 (1 2)]  ;1 was replaced with [1 -2], remaining terms decremented
[[.2 -1] (1 2)]   ;reducing: 1 replaced by .2*, -2 decremented (in magnitude) 
[2 -2 -1]         ;(1 2) bound terms become kill terms due to -1.
[2 -1] = KI       ;-2 kill term is void due to surviving 2 term

* the . notation signifies the bound term is from the outer abstraction 
  and must be used to prevent decrementing and double replacement of the
  term until the substitution of all terms in the abstraction is complete.

[2 -1][anything] ;applying KI to anything
[1] = I          ;yeilds I, therefor SK[anything] = [1] = I

Áp dụng K cho K:

[1 -2][1 -2]
[[1 -2] -1]  ;kill terms are absorbed and also increase the magnitude of bound terms
[2 -3 -1]    ;applying this result to anything yields K.
[2 -3 -1][anything]
[2 -1]

1
Vui lòng thêm một chút bình luận / động lực.
vonbrand

1
Câu trả lời của bạn thiếu bất kỳ mô tả nào và do đó trông giống như một số câu đố Soduko. Đại diện của bạn là gì? Các quy tắc giảm là gì?
Dave Clarke

3
Sau đó làm điều đó trong câu trả lời; bạn có thể chỉnh sửa bằng cách nhấp vào, tốt, "chỉnh sửa".
Raphael

Đây là phiên bản dựa trên web của bảng điều khiển trình thông dịch cho ký hiệu này. Nó không hiển thị các bước giảm nhưng đánh giá chính xác cho tất cả mọi thứ mà tôi có thể ném vào nó. Tôi quan tâm đến việc nhận được thông tin phản hồi về nó.
dansalmo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.