Abstract
This entry presents a framework for the modular verification of DFS-based algorithms, which is described in our [CPP-2015] paper. It provides a generic DFS algorithm framework, that can be parameterized with user-defined actions on certain events (e.g. discovery of new node). It comes with an extensible library of invariants, which can be used to derive invariants of a specific parameterization. Using refinement techniques, efficient implementations of the algorithms can easily be derived. Here, the framework comes with templates for a recursive and a tail-recursive implementation, and also with several templates for implementing the data structures required by the DFS algorithm. Finally, this entry contains a set of re-usable DFS-based algorithms, which illustrate the application of the framework.
[CPP-2015] Peter Lammich, René Neumann: A Framework for Verifying Depth-First Search Algorithms. CPP 2015: 137-146
License
Topics
Session DFS_Framework
- DFS_Framework_Misc
- DFS_Framework_Refine_Aux
- Impl_Rev_Array_Stack
- On_Stack
- DFS_Chapter_Framework
- Param_DFS
- DFS_Invars_Basic
- DFS_Invars_SCC
- General_DFS_Structure
- Tailrec_Impl
- Rec_Impl
- Simple_Impl
- Restr_Impl
- DFS_Framework
- DFS_Chapter_Examples
- Cyc_Check
- DFS_Find_Path
- Reachable_Nodes
- Feedback_Arcs
- Nested_DFS
- Tarjan_LowLink
- Tarjan
- DFS_All_Examples