Giải thích trực quan về dạng trung tính / bình thường trong phép tính lambda


7

Có thể phân biệt các thuật ngữ Bình thường không chứa beta redex dưới dạng biểu thức phụ, với các thuật ngữ khác như vậy

data WithBound a = Var | Other a

data Normal a
  = Neutral (Neutral a)
  | Abstract (Normal (WithBound a))

data Neutral a
  = Variable a
  | Apply (Neutral a) (Normal a)

Có bất kỳ lời giải thích trực quan về lý do tại sao tài sản này sẽ giữ? Nó có thể hoàn toàn rõ ràng bằng cách nào đó sau khi bạn nhìn vào nó đủ lâu nhưng nó không nhắc nhở tôi ngay bây giờ.

Câu trả lời:


6

Tôi có thể trấn an bạn rằng tài sản này không phải là hiển nhiên ngay lập tức. Khi cố gắng mô tả / liệt kê tập hợp các hình thức bình thường, quan sát chính cần có là:

  • Trừu tượng duy trì các hình thức bình thường: nếu là bình thường, thì .tλx.t

  • Ứng dụng không bảo tồn các hình thức bình thường: nếu và bình thường, có thể chứa một redex!tut bạn

Chúng tôi muốn mô tả các hình thức thông thường mà chúng tôi không thể tạo ra các bản đỏ khi thực hiện các ứng dụng . Rõ ràng, điều này xảy ra nếu nó là một ứng dụng . Đặc biệt, chúng ta có thể coi là bất cứ điều gì chúng ta muốn, miễn là nó ở dạng bình thường.tλbạn

Đối với , chúng ta cần một biến hoặc một ứng dụng, bản thân nó đã ở dạng bình thường. Điều này cho phép định nghĩa đệ quy thuận tiện cho , mà chúng ta sẽ gọi là trung tính : hoặc với bất kỳ dạng bình thường nào và cũng ở dạng bình thường, tức là cũng là một thuật ngữ trung tính.tt

t= =x
t= =t1 t2
t2t1 t2t1

Nhưng đây chính xác là định nghĩa của bạn về Neutral!

Người ta có thể thực hiện quá trình này hơn nữa để mô tả chính xác các điều khoản chuẩn hóa (tương ứng bình thường hóa mạnh mẽ), nếu chúng ta tiếp tục cho phép mở rộng đầu yếu .

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.