Wyraźne podstawienie

W informatyce mówi się , że rachunki lambda mają jawne podstawienia , jeśli zwraca się szczególną uwagę na sformalizowanie procesu podstawienia . Kontrastuje to ze standardowym rachunkiem lambda , w którym podstawienia są wykonywane przez redukcje beta w sposób niejawny, który nie jest wyrażany w rachunku; warunki „świeżości” w takich niejawnych obliczeniach są notorycznym źródłem błędów. Koncepcja ta pojawiła się w wielu opublikowanych artykułach z zupełnie różnych dziedzin, takich jak maszyny abstrakcyjne , logika predykatów i obliczenia symboliczne .

Przegląd

Prostym przykładem rachunku lambda z wyraźnym podstawieniem jest „λx”, który dodaje jedną nową formę wyrażenia do rachunku lambda , a mianowicie postać M⟨x:=N⟩, która brzmi „M, gdzie x zostanie zastąpione przez N” . (Znaczenie nowego terminu jest takie samo, jak popularny idiom let x:=N ​​w M z wielu języków programowania.) λx można zapisać zgodnie z następującymi regułami przepisywania :

  1. (λx.M) N → M⟨x:=N⟩
  2. x⟨x:=N⟩ → N
  3. x⟨y:=N⟩ → x (x≠y)
  4. (M 1 M 2 ) ⟨x:=N⟩ → (M 1 ⟨x:=N⟩) (M 2 ⟨x:=N⟩)
  5. (λx.M) ⟨y:=N⟩ → λx.(M⟨y:=N⟩) (x≠y i x nie są wolne w N)

Chociaż podstawienie jest wyraźne, to sformułowanie nadal zachowuje złożoność „konwencji zmiennych” rachunku lambda, wymagającej arbitralnej zmiany nazw zmiennych podczas redukcji, aby zapewnić, że warunek „( x ≠ y i x nie jest wolny w N) ” w ostatniej regule jest zawsze spełnione przed zastosowaniem reguły. Dlatego wiele rachunków jawnego podstawienia całkowicie unika nazw zmiennych, używając tak zwanej „beznazwniczej” indeksu De Bruijna .

Historia

Wyraźne podstawienia zostały naszkicowane we wstępie do książki Curry'ego o logice kombinatorycznej i wyrosły z „sztuczki implementacyjnej” stosowanej na przykład przez AUTOMATH i stały się szanowaną teorią składniową w rachunku lambda i teorii przepisywania . Chociaż w rzeczywistości pochodzi od de Bruijna , pomysł specyficznego rachunku różniczkowego, w którym podstawienia są częścią języka obiektowego, a nie nieformalnej metateorii, jest tradycyjnie przypisywany Abadiemu , Cardelli , Curienowi i Lévy'emu. Ich przełomowy artykuł na temat rachunku λσ wyjaśnia, że ​​implementacje rachunku lambda muszą być bardzo ostrożne, gdy mamy do czynienia z podstawieniami. Bez wyrafinowanych mechanizmów udostępniania struktury podstawienia mogą spowodować eksplozję rozmiarów, dlatego w praktyce podstawienia są opóźniane i jawnie rejestrowane. To sprawia, że ​​zgodność między teorią a implementacją jest wysoce nietrywialna, a poprawność implementacji może być trudna do ustalenia. Jednym z rozwiązań jest uczynienie podstawień częścią rachunku różniczkowego, to znaczy posiadanie rachunku jawnych podstawień.

Jednak gdy podstawienie zostanie wyraźnie określone, podstawowe właściwości podstawienia zmieniają się z właściwości semantycznych na właściwości składniowe. Jednym z najważniejszych przykładów jest „lemat podstawienia”, który przy zapisie λx staje się

  • (M⟨x:=N⟩)⟨y:=P⟩ = (M⟨y:=P⟩)⟨x:=(N⟨y:=P⟩)⟩ (gdzie x≠y i x nie są wolne w P )

Zaskakujący kontrprzykład, dzięki Mellièsowi, pokazuje, że sposób, w jaki ta reguła jest zakodowana w oryginalnym rachunku jawnych podstawień, nie jest silnie normalizujący . Następnie opisano wiele rachunków, starając się zaoferować najlepszy kompromis między właściwościami składniowymi jawnych rachunków podstawieniowych.

Zobacz też