Wiem, że różni autorzy używają różnych notacji do reprezentacji semantyki języka programowania. W rzeczywistości Guy Steele rozwiązuje ten problem w ciekawym filmie .
Chciałbym wiedzieć, czy ktoś wie, czy wiodący operator bramki obrotowej ma dobrze rozpoznane znaczenie. Na przykład nie rozumiem wiodącego operatora na początku mianownika:
Czy ktoś może mi pomóc zrozumieć? Dzięki.
type-theory
denotational-semantics
Jim Newton
źródło
źródło
type-checking
Odpowiedzi:
Po lewej stronie bramki znajduje się kontekst lokalny, skończona lista założeń dotyczących typów zmiennych.
Wyżej, może mieć wartość zero, co skutkuje ⊢ E : T . Oznacza to, że nie przyjęto żadnych założeń dotyczących zmiennych. Zwykle oznacza to, że E stanowi zamkniętą określenie (bez zmiennych wolnych) o typ T .n ⊢e:T e T
Często wspomniana reguła jest napisana w bardziej ogólnej formie, w której może być więcej hipotez niż wspomniana w pytaniu.
Tutaj reprezentuje dowolny kontekst, a Γ , x : T 1 reprezentuje jego rozszerzenie uzyskane przez dołączenie dodatkowej hipotezy x : T 1 do listy Γ . Często wymagane jest, aby xΓ Γ , x : T1 x : T1 Γ x nie pojawiał się w , aby rozszerzenie nie „kolidowało” z poprzednim założeniem.Γ
źródło
Jako uzupełnienie innych odpowiedzi należy zauważyć, że istnieją trzy poziomy „implikacji” w pisaniu pochodnych. Ta sama uwaga dotyczy logicznych pochodnych, ponieważ w rzeczywistości istnieje między nimi zgodność (zwana korespondencją Curry-Howarda).
Pierwszą implikacją jest strzałka pojawiająca się w formułach, która odpowiada logicznej implikacji w formule (lub typie funkcji dla kalkulatora).λ
Druga implikacja została zmaterializowana przez symbol bramki obrotowej i oznacza „przy założeniu, że każda formuła po lewej stronie ma formułę po prawej”. W szczególności reguła, którą podajesz, mówi, w jaki sposób należy udowodnić implikację: aby udowodnić , wówczas należy udowodnić B przy założeniu, że A ma. Pod względem λ- rachunek, aby udowodnić, że λ x . t ma typ A → B , należy wykazać, że t ma typ B , zakładając, że x jest zmienną typuA ⇒ B b ZA λ λ x . t A → B t b x ZA (patrz korespondencja?).
Trzeci poziom implikacji jest urzeczywistniany przez poziomy pasek i oznacza „jeśli każda przesłanka (elementy u góry) ma miejsce, wówczas wniosek (element u dołu) ma miejsce”. Możesz to powiązać z interpretacją reguły pisania dla podanego przez ciebie abstrakcji (zobacz wyjaśnienie w poprzednim akapicie).λ
źródło
W systemach kontroli typu ( ) reprezentuje trójskładnikową relację w środowiskach typów, wyrażeniach i typach: ⊢ E n v × E x p × T y p⊢ ⊢ E n v × E x p × T yp .
W twoim przykładzie wyrażenie jest wpisane jako typ T 2 wrt. w środowisku typu mającego odwzorowanie typu założeniu, T 1 do pewnego typu zmiennej xt2) T.2) T.1 x
W tym kontekście środowisko typów jest funkcją częściową, która przypisuje typy do zmiennych, zwykle oznaczonych gdzie Γ ∈ E n v : V a r ⇀ T y pΓ Tt ∈ e n v : Va r ⇀ Typ
Należy pamiętać, że operator zastrzega swoją funkcjonalność niezależnie od tego, gdzie się pojawi, zarówno w założeniu, jak i po zawarciu reguły.
źródło
W każdej sytuacji, które widziałem, oznacza, że istnieje dowód Y zakładając, że X trzyma. Jeśli X jest pusty, oznacza to, że Y jest tautologią: ma dowód bez potrzeby żadnych założeń.X⊢ Y Y X X Y
źródło