Projekt oddany być musi przez załączenie do niego publicznego repozytorium, wraz z pełną historią commitów wszystkich studentów w grupie. Projekt należy uzupełnić o plik README.md
w którym przedstawione zostaną pełne wymagania do uruchomienia go. Kod należy w bardzo dokładny sposób komentować.
-
Verified compilation:
- Rozdział 17 z książki (17.4) (C):
- Dane są dwa języki:
L1: Commands c :: Return v |x <- c; c|Loop i f |Read n|Write n n
L2: Expressions e :: x | n |e + e| *{e}
Statements s :: skip |x <- e |*{e} <- e | s;s |if e then s else s|while e do s
- Zdefiniować dla nich small-step semantics (patrz książka), tłumaczenie, oraz udowodnić zgodność tłumaczenia z semantyką. (rezerwacja B, KS, JS)
- Dane są dwa języki:
- Rozdział 17 z książki (17.4) (C):
-
Hoare logic (C):
- Dla imperatrywnego języka z pamięcią (patrz rodział 14):
Numbers n in N
Variables x in String
Expressions e :: n | x | e + e | e - e | e * e | *{e}
Booleanexpressions b :: e = e | e < e
Commands c :: skip | x <- e | *{e} <- e | c ; c | if b then c else c | {a}while b do c | assert(a)
- zdefiniować big-step semantics. Ponadto, wprowadzić trójki Hoare'a i udowodnić zgodność logiki Hoare'a (Tw. 14.2).
- Dla imperatrywnego języka z pamięcią (patrz rodział 14):
-
Verified compilation 2:
- Certyfikowana kompilacja z języka prostych wyrażeń arytmetycznych
U ::= n | U + U | U * U
do zabawkowego języka assambler:
Prog ::= Begin;A A ::= Opper;A | End Opper ::= Set n | Load x | Store x | Add x | Mul x
(rezerwacja SM, ZM)
- Certyfikowana kompilacja z języka prostych wyrażeń arytmetycznych
-
Certyfikowana złożoność kilku wybranych funkcji (A)
-
Safety i liveness prostych programów równoległych (A)
-
Formalizacja uproszczonego modelu sieci Bitcoin (A):
(rezerwacja JD, KL, OW)
-
Formalizacja Simplified Calculus of Communicating Systems
-
Formalizacja logiki rachunku zdań (pełność i zgodność):
- [https://akaposi.github.io/proplogic.pdf] (rezerwacja KB, AW, ZB)