Wiki Agenda Contact Version française

A Correct-by-Construction Checker for Constraints on a Railway-Oriented Databases

A Correct-by-Construction Checker for Constraints on a Railway-Oriented Databases. The design is detailed in the research report Design of a correct-by-construction checker for constraints on railway-oriented databases. Below in the ZIP archive we provide the code and the proof sessions that allow replaying the proofs, a Makefile that allow to build the executable, and some test files. We also give the HTML report of the proof sessions.


Authors: Claude Marché / Matteo Manighetti / Noé Canva

Topics: Inductive predicates / Semantics of languages / Graph Algorithms

Tools: Why3

see also the index (by topic, by tool, by reference, by year)


download ZIP archive

Why3 Proof Results for Project "graph_traversal"

Theory "graph_traversal.Graph": fully verified

ObligationsAlt-Ergo 2.6.2CVC4 1.8CVC5 1.2.0Z3 4.12.2Z3 4.12.2 (noBV)Z3 4.13.2
VC for graph------0.03---------
VC for path_avoiding_non_cyclic------------------
split_vc
unreachable point------0.03---------
variant decrease0.03---------------
precondition------0.03---------
precondition------0.07---------
postcondition0.05---------------
VC for path_avoiding_monotone------------------
split_vc
variant decrease------0.02---------
precondition---0.18------------
precondition0.04---------------
postcondition0.18---------------
VC for path_avoiding_split------------------
split_vc
unreachable point------0.15---------
assertion------0.07---------
assertion------0.82---------
unreachable point---0.11------------
assertion---0.20------------
variant decrease------0.04---------
precondition------0.21---------
precondition0.03---------------
precondition---------0.05------
precondition------0.20---------
postcondition------0.54---------
VC for dfs------------------
split_vc
precondition------------0.02---
variant decrease---------0.06------
precondition0.02---------------
precondition------0.18---------
precondition0.05---------------
precondition0.05---------------
precondition0.05---------------
precondition------0.05---------
precondition------0.03---------
postcondition------0.13---------
postcondition------0.18---------
VC for dfs_list------------------
split_vc
variant decrease------0.07---------
precondition------0.09---------
precondition---------------0.01
precondition---0.06------------
variant decrease0.03---------------
precondition------0.05---------
precondition---0.12------------
precondition------0.06---------
precondition0.05---------------
precondition------0.83---------
precondition0.04---------------
precondition---------0.02------
postcondition0.03---------------
postcondition------0.70---------
VC for exists_path_avoiding------------------
split_vc
precondition---0.06------------
precondition---------------0.01
precondition------------0.01---
postcondition------0.05---------

Why3 Proof Results for Project "db_engine"

Theory "db_engine.Db_engine_types": fully verified

ObligationsAlt-Ergo 2.6.2CVC5 1.2.0
VC for table0.08---
VC for empty_table---0.07

Theory "db_engine.Db_engine": fully verified

ObligationsAlt-Ergo 2.6.2CVC4 1.8CVC5 1.2.0Z3 4.12.2
VC for list_nth------------
split_vc
exceptional postcondition---------0.02
postcondition0.04---------
integer overflow0.05---------
variant decrease------0.03---
postcondition------0.10---
exceptional postcondition------0.03---
exceptional postcondition0.03---0.10---
VC for list_nth_functional0.05---0.11---
VC for get_record1.69---------
VC for get_id0.07---0.05---
VC for read_field_names0.11---0.64---
VC for chop_extra_lines------0.07---
VC for read_lines------------
split_vc
precondition0.07---0.18---
exceptional postcondition0.03---------
exceptional postcondition------0.03---
variant decrease0.05---0.15---
precondition------0.05---
precondition------0.03---
precondition------------
split_vc
precondition------------
inline_goal
precondition------------
split_all_full
precondition------0.24---
precondition0.05---------
precondition------0.16---
precondition0.12---------
postcondition------0.05---
exceptional postcondition------0.03---
exceptional postcondition0.06---0.04---
exceptional postcondition------0.14---
exceptional postcondition0.03---0.02---
exceptional postcondition------0.03---
exceptional postcondition------0.03---
exceptional postcondition------0.03---
postcondition------0.14---
VC for read_table------------
split_vc
exceptional postcondition------0.03---
integer overflow------0.06---
unreachable point0.04---0.03---
precondition------0.040.02
precondition------0.14---
precondition0.10---------
precondition0.04---------
exceptional postcondition0.05---0.15---
exceptional postcondition------0.14---
exceptional postcondition------0.03---
exceptional postcondition------0.140.01
exceptional postcondition------0.02---
VC for add_table------0.11---
VC for add_fun_env------0.04---
VC for eval_expr------------
split_vc
postcondition0.05---------
postcondition------0.12---
postcondition0.13---------
postcondition0.07---------
exceptional postcondition0.04---------
loop invariant init0.08---------
loop variant decrease---------0.13
loop invariant preservation------0.11---
postcondition0.07---------
exceptional postcondition0.05---------
postcondition------0.63---
exceptional postcondition------0.10---
postcondition------0.73---
exceptional postcondition------0.06---
postcondition------0.68---
exceptional postcondition0.04---------
postcondition------0.50---
exceptional postcondition------0.10---
exceptional postcondition------0.09---
exceptional postcondition---------0.07
exceptional postcondition0.12---------
exceptional postcondition------0.14---
exceptional postcondition0.13---------
exceptional postcondition0.03---------
exceptional postcondition------0.05---
exceptional postcondition------0.06---
exceptional postcondition------0.05---
exceptional postcondition0.05---------
postcondition0.06---------
postcondition0.05---0.18---
postcondition------0.21---
exceptional postcondition------0.05---
exceptional postcondition------0.04---
exceptional postcondition0.05---------
exceptional postcondition------0.16---
exceptional postcondition------0.05---
exceptional postcondition0.15---0.04---
exceptional postcondition------0.08---
exceptional postcondition------0.07---
exceptional postcondition------0.08---
exceptional postcondition------0.07---
exceptional postcondition------0.04---
exceptional postcondition------0.04---
postcondition------0.20---
postcondition0.09---------
postcondition0.07---------
exceptional postcondition0.06---------
exceptional postcondition------0.06---
exceptional postcondition------0.05---
exceptional postcondition------0.07---
exceptional postcondition------0.04---
exceptional postcondition------0.05---
exceptional postcondition------0.05---
exceptional postcondition0.03---------
exceptional postcondition0.05---------
exceptional postcondition0.05---------
exceptional postcondition0.15---0.05---
exceptional postcondition------0.04---
postcondition0.14---------
exceptional postcondition0.14---0.06---
exceptional postcondition0.08---------
exceptional postcondition------0.05---
exceptional postcondition------0.05---
exceptional postcondition------0.04---
exceptional postcondition0.06---------
exceptional postcondition0.04---------
postcondition------0.10---
exceptional postcondition0.14---0.05---
exceptional postcondition------0.06---
exceptional postcondition------0.06---
exceptional postcondition------0.06---
exceptional postcondition0.04---0.06---
postcondition------0.10---
exceptional postcondition------0.06---
exceptional postcondition0.04---------
exceptional postcondition0.03---------
exceptional postcondition0.04---------
exceptional postcondition0.03---0.05---
exceptional postcondition------0.03---
postcondition------0.14---
exceptional postcondition0.04---0.08---
exceptional postcondition------0.06---
exceptional postcondition------0.06---
exceptional postcondition------0.04---
exceptional postcondition------0.05---
postcondition0.06---------
exceptional postcondition0.04---------
exceptional postcondition------0.06---
exceptional postcondition0.03---0.05---
exceptional postcondition------0.05---
exceptional postcondition------0.04---
exceptional postcondition------0.05---
exceptional postcondition------0.06---
exceptional postcondition0.03---0.06---
exceptional postcondition0.05---------
exceptional postcondition------0.03---
exceptional postcondition------0.04---
postcondition0.07---------
exceptional postcondition0.06---------
exceptional postcondition------0.06---
exceptional postcondition------0.16---
exceptional postcondition------0.05---
exceptional postcondition------0.07---
exceptional postcondition------0.07---
exceptional postcondition0.04---------
exceptional postcondition------0.08---
exceptional postcondition------0.09---
exceptional postcondition------0.06---
loop invariant init0.10---------
loop invariant init0.05---------
postcondition0.06---------
loop variant decrease0.07---------
loop invariant preservation1.28---------
loop invariant preservation0.07---------
loop variant decrease0.07---------
loop invariant preservation0.88---------
loop invariant preservation------0.24---
exceptional postcondition------0.06---
exceptional postcondition------0.06---
exceptional postcondition------0.06---
exceptional postcondition0.05---------
exceptional postcondition------0.05---
exceptional postcondition------0.07---
postcondition0.06---------
exceptional postcondition0.09---------
exceptional postcondition------0.07---
exceptional postcondition0.05---------
exceptional postcondition0.04---------
exceptional postcondition------0.06---
exceptional postcondition------0.05---
postcondition------0.08---
exceptional postcondition0.15---0.05---
exceptional postcondition0.04---0.07---
exceptional postcondition------0.04---
exceptional postcondition------0.06---
exceptional postcondition------0.06---
loop invariant init0.11---------
loop invariant init0.09---------
loop variant decrease------------
split_vc
loop variant decrease0.07---------
loop variant decrease0.06---------
loop invariant preservation------------
inline_goal
loop invariant preservation------------
split_vc
loop invariant preservation0.08---------
loop invariant preservation------0.52---
loop invariant preservation0.15---------
loop invariant preservation0.07---------
exceptional postcondition------0.06---
exceptional postcondition0.04---------
exceptional postcondition------0.04---
exceptional postcondition------0.04---
exceptional postcondition------0.05---
exceptional postcondition------0.06---
exceptional postcondition------0.06---
loop variant decrease------------
split_vc
loop variant decrease0.08---------
loop variant decrease0.10---------
loop invariant preservation------------
inline_goal
loop invariant preservation------------
split_all_full
VC for eval_expr------0.18---
VC for eval_expr------------
split_vc
VC for eval_expr---0.95------
VC for eval_expr------0.36---
loop invariant preservation0.09---------
exceptional postcondition------0.05---
exceptional postcondition------0.07---
exceptional postcondition0.06---0.16---
exceptional postcondition------0.05---
exceptional postcondition------0.06---
postcondition------0.12---
exceptional postcondition------0.10---
exceptional postcondition------0.06---
exceptional postcondition0.05---------
exceptional postcondition0.07---0.07---
exceptional postcondition------0.14---
exceptional postcondition0.12---------
postcondition------0.12---
exceptional postcondition0.04---0.06---
exceptional postcondition------0.05---
exceptional postcondition------0.09---
exceptional postcondition0.04---------
exceptional postcondition---------0.04
VC for eval_expr_list------------
split_vc
postcondition0.04---------
postcondition0.05---------
exceptional postcondition------0.04---
exceptional postcondition------0.07---
exceptional postcondition------0.07---
exceptional postcondition------0.16---
exceptional postcondition0.05---------
exceptional postcondition0.06---------
exceptional postcondition0.05---------
exceptional postcondition------0.04---
exceptional postcondition------0.04---
exceptional postcondition0.03---------
VC for empty_env------0.08---
VC for check_main------------
split_vc
exceptional postcondition------0.07---
postcondition0.06---------
exceptional postcondition0.04---------
exceptional postcondition0.04---------
exceptional postcondition0.06---------
exceptional postcondition0.03---0.09---
exceptional postcondition------0.04---
exceptional postcondition------0.03---
VC for optim_conj------------
split_vc
postcondition------------
split_vc
postcondition2.60---------
postcondition0.41---------
postcondition------0.93---
postcondition------0.43---
postcondition------0.12---

Theory "db_engine.Db_with_predefined": fully verified

ObligationsAlt-Ergo 2.6.2CVC5 1.2.0Z3 4.12.2Z3 4.13.2
VC for twolayer_graph0.08---------
VC for empty_graph0.07---------
VC for eval_context0.05---------
VC for try_find---0.03------
VC for try_find_ident---0.06------
VC for compute_next------------
split_vc
postcondition0.69---------
postcondition0.41---------
postcondition0.19---------
exceptional postcondition0.05---------
exceptional postcondition---0.07------
exceptional postcondition0.05---------
exceptional postcondition0.05---------
postcondition0.54---------
postcondition0.13---------
postcondition0.08---------
exceptional postcondition---0.07------
exceptional postcondition---0.04------
exceptional postcondition0.04---------
exceptional postcondition------0.03---
exceptional postcondition---0.06------
postcondition0.42---------
postcondition---0.40------
postcondition0.06---------
exceptional postcondition---0.05------
exceptional postcondition---0.07------
exceptional postcondition---0.07------
exceptional postcondition0.05---------
postcondition---0.11------
postcondition0.06---------
postcondition---0.13------
exceptional postcondition---0.07------
exceptional postcondition---0.06------
VC for compute_prev------------
split_vc
postcondition0.95---------
postcondition0.37---------
postcondition0.16---------
exceptional postcondition0.03---------
exceptional postcondition---0.07------
exceptional postcondition------0.04---
exceptional postcondition0.06---------
postcondition0.49---------
postcondition0.20---------
postcondition0.16---------
exceptional postcondition---0.08------
exceptional postcondition---0.07------
exceptional postcondition---0.07------
exceptional postcondition---0.08------
exceptional postcondition0.05---------
postcondition0.31---------
postcondition---0.47------
postcondition0.07---------
exceptional postcondition---0.07------
exceptional postcondition------0.04---
exceptional postcondition---0.07------
exceptional postcondition---0.07------
postcondition0.04---------
postcondition0.07---------
postcondition---0.10------
exceptional postcondition---0.07------
exceptional postcondition------0.03---
VC for create_graph------------
split_vc
loop invariant init0.04---------
loop invariant init0.07---------
loop invariant init0.04---------
loop invariant init---0.11------
loop invariant init0.05---------
loop invariant init0.05---------
loop invariant init0.07---------
loop invariant init---0.21------
loop variant decrease---0.25------
loop invariant preservation0.06---------
loop invariant preservation0.05---------
loop invariant preservation0.05---------
loop invariant preservation0.15---------
loop invariant preservation0.09---------
loop invariant preservation0.15---------
loop invariant preservation0.05---------
loop invariant preservation2.15---------
loop invariant init0.07---------
loop invariant init0.03---------
loop invariant init0.05---------
loop invariant init0.11---------
loop invariant init0.05---------
assertion---0.26------
precondition0.08---------
precondition0.05---------
precondition---0.05------
precondition0.13---------
precondition0.06---------
precondition0.04---------
assertion0.04---------
precondition0.04---------
precondition0.06---------
precondition---0.10------
precondition0.03---------
precondition---0.41------
precondition---0.10------
assertion---0.14------
loop variant decrease0.06---------
loop invariant preservation0.14---------
loop invariant preservation---0.08------
loop invariant preservation---0.66------
loop invariant preservation0.23---------
loop invariant preservation---1.40------
exceptional postcondition---0.06------
exceptional postcondition0.06---------
exceptional postcondition---0.06------
assertion---0.38------
precondition0.08---------
precondition---0.08------
postcondition---0.28------
exceptional postcondition0.05---------
VC for try_find_predefined---0.04------
VC for vertex_of------------
split_vc
postcondition0.06---------
postcondition0.05---------
exceptional postcondition---------0.03
VC for vertex_set_of------------
split_vc
loop invariant init0.05---------
loop invariant init0.05---------
loop invariant init0.06---------
loop variant decrease0.07---------
loop invariant preservation0.19---------
loop invariant preservation0.08---------
loop invariant preservation0.11---------
exceptional postcondition0.05---------
postcondition0.04---------
postcondition0.08---------
VC for check_exists_path_avoiding------------
split_vc
precondition---0.06------
precondition0.04---------
precondition0.04---------
postcondition0.09---------
exceptional postcondition0.06---------
exceptional postcondition0.05---------
exceptional postcondition0.05---------
VC for eval_predefined------------
split_vc
postcondition0.06---------
exceptional postcondition---0.05------
exceptional postcondition0.04---------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
postcondition0.06---------
exceptional postcondition0.04---------
exceptional postcondition---0.06------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
postcondition0.06---------
exceptional postcondition---0.07------
exceptional postcondition---0.05------
exceptional postcondition0.04---------
exceptional postcondition0.04---------
exceptional postcondition0.04---------
postcondition0.06---------
exceptional postcondition0.04---------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
postcondition0.13---------
exceptional postcondition0.04---------
exceptional postcondition0.04---------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
postcondition0.06---------
exceptional postcondition0.07---------
postcondition0.06---------
exceptional postcondition------0.01---
postcondition0.07---------
exceptional postcondition0.04---------
postcondition0.06---------
exceptional postcondition---0.07------
exceptional postcondition0.04---------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
postcondition0.06---------
exceptional postcondition---0.06------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
postcondition---0.11------
variant decrease---0.06------
postcondition---0.22------
exceptional postcondition0.05---------
exceptional postcondition0.04---------
exceptional postcondition---0.05------
exceptional postcondition0.05---------
postcondition0.06---------
exceptional postcondition---0.09------
exceptional postcondition---0.05------
precondition---0.06------
postcondition0.19---------
exceptional postcondition0.05---------
exceptional postcondition---0.05------
exceptional postcondition0.04---------
exceptional postcondition---0.06------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition------0.01---
exceptional postcondition------0.01---
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
postcondition0.08---------
exceptional postcondition---0.06------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.06------
exceptional postcondition---0.05------
postcondition0.06---------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition0.04---------
exceptional postcondition0.04---------
postcondition0.06---------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition0.04---------
postcondition0.06---------
exceptional postcondition---0.05------
exceptional postcondition---0.06------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
exceptional postcondition---0.05------
VC for eval_predefined'refn0.030.05------