Skip to content

A verification program that proves Dijkstra's algorithm correctness written in Idris.

Notifications You must be signed in to change notification settings

EileenFeng/Verify-Dijkstras-Algorithm-in-Idris

Repository files navigation

Verification of Dijkstra's Algorithm in Idris Language

This projects provides a verification program written in Idris that proves Dijkstra's correctness, which includes:

  • A detailed mathematical proof of Dijkstra's algorithm, which includes elaborating and proving lemmas and assumptions that are generally ignored/assumed
  • An Idris implementation of Dijkstra's algorithm from scratch, including:
    • Idris implementation of all definitions used, such as graph, path, permutation, or even natural numbers.
    • Implementaiton of all data structures used, such as priority queue
  • An Idris program that verifies the correctness of the Dijkstra's algorithm, which includes
    • Proof programs that verifies the correctness of every data structures and concepts used.
      • Here are a few examples:
        • PriorityQueue.idr file provides an Idris implementation of the priority queue data structure, which is commonly used in implemeting Dijkstra's, along with code that proves the getMin function indeed returns the minimum value in the node.
        • CNat.idr, Perm.idr provides program that implements and proofs natural number and permutation properties.
    • Programs that proves all lemmas and assumptions
      • As an example, this part of the Dijkstras.idr file is a intricate, yet very interesting, implementation and proof of one of the most important lemmas in our Dijkstra's verification program.
    • Finally, an Idris program that verifies DIjkstra's correctness
  • A complete, 50+ pages write-up that provides a detailed mathematical proofs that backs up the verification program, along with elaboration on the verification program details, discussions, and future works.

About

A verification program that proves Dijkstra's algorithm correctness written in Idris.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published