min
thường được xác định trên giải tích lambda untyped như (sử dụng Caramel's syntax):Có thể thực hiện `max` hiệu quả trên phép tính lambda chưa được phân loại không?
sub a b = (b pred a)
<= a b = (is_zero (sub b a))
min a b = (<= a b a b)
Đây là khủng khiếp không hiệu quả. Sub
là bậc hai, vì nó áp dụng pred
(tuyến tính) b
lần. Có một thực hiện nhiều hiệu quả hơn min
như:
min a b succ zero = (a a_succ (const zero) (b b_succ (const zero))))
a_succ pred cont = (cont pred)
b_succ pred cont = (succ (cont pred))
này kéo khóa thông qua cả hai con số trong một phong cách tiếp nối-qua cho đến khi không đầu tiên là đạt. Bây giờ, tôi đang cố gắng để tìm thấy một max
đó là hiệu quả như min
, có các thuộc tính sau:
a
vàb
được sử dụng cùng một lúc nhất trên cơ thể của hàm.Biểu mẫu có dạng beta bình thường (tức là, không sử dụng bộ phối hợp điểm cố định đang chuẩn hóa mạnh).
Định nghĩa max
này tồn tại?
Tôi nhớ Loic Colson đã điều tra loại vấn đề này: Hệ thống T, gọi theo giá trị và vấn đề tối thiểu, TCS 206, 1998. Tôi đã có một cái nhìn nhưng không thể tìm thấy bất cứ điều gì cụ thể về tối đa. –
@AndreaAsperti ah hóa ra vấn đề không phải là khó khăn, hãy để tôi trả lời nó – MaiaVictor
@AndreaAsperti oh chỉ nhận thấy tôi đã hỏi 'a' và' b' chỉ được sử dụng một lần. Chết tiệt tôi và những câu hỏi đòi hỏi của tôi. – MaiaVictor