Adopt “Relational Thinking” as a method supported by model checking using the Alloy tool.
Express and reason about the key-value-pair database model in a formal way.
Carry out correctness proofs using relational algebra.
Perform formal validation of software contracts.
Program
Brief introduction to formal methods and their role in programming.
Role of binary relations in abstract problem modeling. Taxonomy and algebra of binary relations.
The motto “everything is a relation”. Model checking using the Alloy tool.
Use of abstract interpretation in complex problem modeling.
Free theorem calculation of functions with polymorphic types.
Correctness proofs using relational algebra.
Relational formalization of the key-value-pair data model.
Limits of static typing. Formal notion of contract. Weakest precondition calculation.
Hoare logic in relational format.
Bibliography
J.N. Oliveira. Program Design by Calculation, 2008. Draft of textbook in preparation, current version: October 2019. Chapters 5 to 7. Available from http://www4.di.uminho.pt/~jno/ps/pdbc.pdf. Informatics Department, University of Minho.
D. Jackson. Software abstractions: logic, language, and analysis. Revised edition, MIT Press, 2012.
C.B. Jones. Systematic Software Development Using VDM. Series in Computer Science. Prentice-Hall International, 1986.