Là âm thanh bảo tồn ngữ nghĩa (hoặc chính xác) hoặc tính đầy đủ


7

Khi chuyển đổi các thuật ngữ từ ngôn ngữ này sang ngôn ngữ khác, thuộc tính mong muốn theo trực giác là việc duy trì ngữ nghĩa (như được sử dụng ở đây để chuyển đổi CPS):

svc(s)c(v)

Tôi có một chút rắc rối, tuy nhiên, bằng cách dung hòa điều này với tính chính xác của thuật ngữ cổ điển (hoặc âm thanh) và tính đầy đủ của các hệ thống logic. Thông thường, tôi sẽ xem xét tuyên bố trên là thuộc tính hoàn chỉnh của (và ngược lại định nghĩa về tính chính xác).c

Tuy nhiên, theo trực giác, một trình biên dịch nên chính xác thay vì hoàn thành (ví dụ như kiểm tra kiểu thường loại trừ các chương trình chính xác). Điều ngược lại của câu lệnh trên chỉ đúng nếu là nội dung: Nếu ngôn ngữ nguồn chứa các booleans chẳng hạn và các thao tác trên chúng và phần biên dịch thay thế chúng thông qua mã hóa Church, ngôn ngữ đích có thể đánh giá các phép toán boolean theo các thuật ngữ được biên dịch từ các chữ boolean và tóm tắt lambda, mà ngôn ngữ nguồn không thể đánh giá.c

  1. Tôi có đúng không khi cho rằng tuyên bố trên là thuộc tính hoàn chỉnh của (vì vậy yêu cầu trực quan thực sự có tên phản trực giác)?c
  2. Tôi cũng đúng trong kết luận của tôi rằng một trình biên dịch không tiêm sau đó thường không đúng?

Câu trả lời:


3

Đây thực sự là một câu hỏi về khái niệm tương ứng hoạt động .

Bài viết hướng tới một cách tiếp cận thống nhất về tính linh hoạt và kết quả phân tách cho tính toán quá trình của Daniele Gorla ( http://wwwusers.di.uniroma1.it/~gorla/ con / G-CAUR08.pdf ) liên quan đến các tiêu chí chính xác cho các bản dịch giữa quá trình tính toán.

Trong tác phẩm của mình, Gorla đưa ra một khái niệm về sự tương đương hành vi; Tôi sẽ để nó ở đây để không làm phức tạp quá nhiều lời giải thích.

Hãy là một mã hóa, hãy để là mối quan hệ chuyển tiếp được xác định cho ngôn ngữ nguồn và hãy để là mối quan hệ chuyển tiếp được xác định cho ngôn ngữ đích. Nếu chúng ta có điều đó[[]]12

  • Nếu thì , chúng tôi nói rằng mã hóa đã hoàn tấtS1S[[S]]2[[S]]
  • Nếu , sau đó tồn tại một sao cho[[S]]2TSS1ST2[[S]], chúng tôi nói rằng mã hóa là âm thanh .

Vì vậy, có, khái niệm được đề cập trong các câu hỏi thực sự là sự hoàn chỉnh. Khái niệm về âm thanh được hình thành bởi thực tế là ngôn ngữ đích thường sẽ phong phú hơn ngôn ngữ đích hoặc chứa các cấu trúc cú pháp có hành vi không tương ứng với bất cứ điều gì trong ngôn ngữ nguồn. Điều này giải thích tại sao chúng ta nói về cấu hình trung gianT trong định nghĩa thay vì yêu cầu tiêm.


Bạn có chắc chắn về đạo hàm một bước S1STôi vừa đào tờ giấy lên, và sau một thoáng, họ dường như sử dụng đạo hàm đa cấp. Điều này cũng làm cho âm thanh khó hiểu: Tại sao cần phải có chính xác một Bước từ S đến S 'trong tài sản đó?
choeger

Không, thực sự nên có một chuỗi giảm trong định nghĩa của âm thanh. Giải thích dự định là mã hóa[[S]] có thể mô phỏng trung thực các tuyên bố ban đầu S; bất cứ khi nào[[S]] thực hiện một chuỗi giảm, nó có thể hoàn thành theo cách mà các kết quả tương ứng với một mô phỏng của chuỗi giảm được thực hiện bởi S. Tôi đã cập nhật câu trả lời của tôi.
Hans Hüttel

2

Nói một cách trực giác, thuộc tính chính xác cho một phép biến đổi ngôn ngữ mà theo đó một khái niệm đánh giá được xác định rằng nếu một thuật ngữ có một ngữ nghĩa nhất định thì hình ảnh của thuật ngữ đó sẽ biến đổi thành hình ảnh của ngữ nghĩa nói trên. Nói cách khác, một trình biên dịch đúng là một trình biến đổi một chương trình thành một chương trình khác có cùng hành vi (được thể hiện bằng ngôn ngữ đích).

Ở đây, tôi suy luận từ các ký hiệu của bạn rằng ngôn ngữ nguồn là ngôn ngữ của các thuật ngữ s với một khái niệm đánh giá : sv có nghĩa là s giảm (trong bất kỳ số bước nào) xuống giá trị v. Một trình biên dịch đúngc là một chương trình biến đổi bất kỳ chương trình nào s vào một chương trình biên dịch c(s) ước tính giá trị trình biên dịch tương ứng c(v).

Điều này tương ứng với định nghĩa trên Wikipedia nếu các giá trị tự biên dịch: ifs có tài sản v sau đó cũng vậy c(s).

Một trình biên dịch âm thanh không cần phải truyền tải: điều đó là có thể và cực kỳ phổ biến đối với các chương trình nguồn khác nhau có cùng ngữ nghĩa được biên dịch cho cùng một chương trình được biên dịch.

Trình biên dịch thường không đầy đủ : như bạn lưu ý, thông thường có các thuật ngữ trong ngôn ngữ được biên dịch không thể là đầu ra của trình biên dịch, tức là trình biên dịch không phải là tính từ.


Vì vậy, bạn đang nói chính xác câu trả lời của Hans? Nó thật thú vị. Giải thích của bạn về ký hiệu của tôi là chính xác, nhưng để làm cho mọi thứ rõ ràng: Bạn xem xét tuyên bố đó là chính xác (và do đó điều ngược lại sẽ là hoàn chỉnh)?
choeger

@choeger Nói đúng ra, tôi sẽ định nghĩa sự đúng đắn là tất cả sv, nếu c(s) tồn tại và sv sau đó c(v) tồn tại và sc(v)Mùi. Cho rằng ngôn ngữ nguồn là ngôn ngữ xác định ngữ nghĩa, tôi không thấy cách nào để định lượngsvc(s)c(v)để làm cho nó một tài sản đầy đủ.
Gilles 'SO- ngừng trở nên xấu xa'
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.