Uczę się samodzielnie Automated Theorem Proving / Solver SMT / Proof Assistants i piszę serię pytań na temat tego procesu, zaczynając tutaj. Zauważ, że te tematy nie są łatwe do zrozumienia bez tła w logice (matematycznej). Jeśli masz problemy z podstawowymi terminami, przeczytaj je, na przykład Logika w informatyce M. …
Wikipedia, jak również inne źródła, które znalazłem, wskazują voidtyp C jako typ jednostki, a nie typ pusty. Uważam to za mylące, ponieważ wydaje mi się, że voidlepiej pasuje do definicji typu pustego / dolnego. voidO ile wiem, nie zamieszkują żadnych wartości . Funkcja z typem zwracanym void określa, że funkcja …
Oglądałem „ Pięć etapów akceptacji konstruktywnej matematyki ” Andreja Bauera i mówi on, że istnieją dwa rodzaje dowodów sprzeczności (lub dwie rzeczy, które matematycy nazywają dowodem sprzeczności): Załóżmy, że jest fałszywe ... bla bla bla, sprzeczność. Dlatego jest prawdziwe.P.P.PP.P.P Załóżmy, że jest prawdą ... bla bla bla, sprzeczność. Dlatego P …
Rozważ typ indukcyjny, który ma pewne rekurencyjne zdarzenia w zagnieżdżonej, ale ściśle dodatniej lokalizacji. Na przykład drzewa ze skończonymi rozgałęzieniami z węzłami używającymi ogólnej struktury danych listy do przechowywania elementów potomnych. Inductive LTree : Set := Node : list LTree -> LTree. Naiwny sposób definiowania funkcji rekurencyjnej nad tymi drzewami …
Czy ktoś kiedykolwiek napisał system (oprogramowanie lub szczegółowe wyjaśnienie na papierze z prostymi przykładami), który generuje programy komputerowe? Wprowadzam i tworzy program, który wyświetla liczby pierwsze mniejsze niż 10. P r i m e ( x ) jest po prostu zdefiniowany jako 1 < x ∧ ∄ AP.r i m …
Jestem programistą z automatami, ale nie logiką. Przeczytałem w artykułach, że te dwa są ze sobą ściśle powiązane. Deterministyczne automaty skończone (DFA), automaty drzewa i automaty z widocznym przesunięciem w dół są powiązane z logiką Monadic drugiego rzędu (MSO). Chociaż rozumiem automaty i ludzie (w dokumentach) próbowali mi wyjaśnić związek …
Zamknięte. To pytanie jest nie na temat . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było tematem dotyczącym wymiany stosów w informatyce. Zamknięte 2 lata temu . Typami AFAIU może być element, Setktórego elementami są programy, lub propositionktórego elementami są dowody. Opierając się na tym zrozumieniu: …
Obecnie muszę się nauczyć Coq i nie wiem, jak sobie radzić z or: Jako przykład, choć jest to tak proste, nie widzę, jak udowodnić: Theorem T0: x \/ ~x. Byłbym bardzo wdzięczny, gdyby ktoś mógł mi pomóc. Dla porównania używam tego ściągawki . Mam też przykład dowodu, który mam na …
Jestem stosunkowo nowy w teorii typów i programowaniu zależnym. Studiowałem rachunek różniczkowy konstrukcji (CoC) i inne systemy czystego typu. Szczególnie interesuje mnie wykorzystanie go jako pośredniej reprezentacji zabezpieczającej system kompilatora. Rozumiem, że typy (ko) rekurencyjne są reprezentatywne , obliczeniowo , przy użyciu jako jedynego konstruktora typów. Przeczytałem jednak, że nie …
Jestem ciekawy. Pracowałem nad tym typem danych w OCaml : type 'a exptree = | Epsilon | Delta of 'a exptree * 'a exptree | Omicron of 'a | Iota of 'a exptree exptree Z którymi można manipulować za pomocą jawnie wpisanych funkcji rekurencyjnych (funkcja dodana całkiem niedawno). Przykład: let …
Liczby naturalne są definiowane indukcyjnie jako (na przykładzie składni Coq) Inductive nat: Set := | O: nat | S: nat -> nat. Czy istnieje standardowy sposób konstruktywnego definiowania liczb całkowitych (a może innych zbiorów, takich jak racjonalne i rzeczywiste)?
tło Uczę się pomocy, Coq, na własną rękę. Do tej pory w pośpiechu przeczytałem Coq Yvesa Bertota . Teraz moim celem jest udowodnienie podstawowych wyników dotyczących liczb naturalnych, których zwieńczeniem jest tak zwany algorytm podziału. Jednak na drodze do tego celu napotkałem pewne niepowodzenia. W szczególności dwa następujące wyniki okazały …
Coq zawiera wyrażenia let w swoim podstawowym języku. Możemy tłumaczyć wyrażenia let na takie aplikacje: let x : t = v in b ~> (\(x:t). b) v Rozumiem, że to nie zawsze działa, ponieważ wartość vnie byłaby dostępna podczas sprawdzania typu b. Można to jednak łatwo naprawić poprzez specjalną obudowę …
Jestem na następującym ćwiczeniu w zakresie podstaw oprogramowania : (** **** Exercise: 2 stars (baz_num_elts) *) (** Consider the following inductive definition: *) Inductive baz : Type := | x : baz -> baz | y : baz -> bool -> baz. (** How _many_ elements does the type [baz] …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.