Coder Social home page Coder Social logo

laplacekorea / monadic-quicksort-verification Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rybla/monadic-quicksort-verification

0.0 2.0 0.0 21.78 MB

A Liquid Haskell verification of Mu and Chiang's "Deriving Monadic Quicksort."

Haskell 0.60% Makefile 0.01% HTML 7.22% SMT 92.18% CSS 0.01%

monadic-quicksort-verification's Introduction

Monadic Quicksort Verification in Liquid Haskell

A Liquid Haskell verification of Mu and Chiang's Deriving Monadic Quicksort.

Tasks

  • types synonyms (and predicates)
    • collection of type synonyms and predicates relating to reasoning about functions (Function.hs)
    • collection of type synonyms and predicates relating to reasoning about relations (functions that return Bool) (Relation.hs)
  • data classes:
    • semigroup (VSemigroup.hs)
    • functor (VFunctor.hs)
    • group (VGroup.hs)
    • monad (VMonad.hs)
      • monadic sequence right-identity (vseq_identity_right)
    • plus-monad, used for monadic nondeterminism (VMonadPlus.hs)
      • implement
      • plus-monadic refinement (RefinesPlusMonadic and RefinesPlusMonadicF)
      • plus-monadic refinement is monotic in monadic binding (bind_monotonic_refinement)
      • guarding monad-commutes with other monad elements (that have just (monadic) effect) (guard_isCommutativeMonadic)
      • guarding a conjunction is the same as the sequence of guarding each conjunct (guard_and_vseq)
      • guarding the plus-monadic sum of two monad sequence terms with head elements are guarding on disjoint conditions plus-monad refines a top-level branching by the boolean over the sequence tails (guard_disjoint_branch)
    • array-monad, used for monadic array interface (VMonadArray.hs)
      • implement
      • array-monad writing the append of two lists is the same as the sequence of array-monad writing the first list and then array-monad writing the second list ofset by the length of the first list
    • ordered (set) (VOrdered.hs)
  • data
    • identity functor (VIdentity.hs)
    • list (VList.hs)
    • natural numbers (VNat.hs)
  • SlowSort List (SlowSort.hs)
    • filter (nondeterministic) (vfilter)
    • predicate for "is sorted" (isSorted)
    • permutation (nondeterministic) (permute)
    • split (nondeterministic) (split)
    • slowsort termination
    • permute termination
    • lift of a list plus-monadically refines permutations of itself (identity_refines_permute)
    • isSorted termination
    • split termination
  • QuickSort List (QuickSortList.hs)
    • partition_correct
    • "divide and conquer" property (divide_and_conquer)
  • Partition Array (PartitionArray.hs)
    • what's the main theorem of this module?
    • mark corresponding terms in paper
    • partl_correct
    • partl_generalizes_partition
    • ipartl_specification1_correct
    • decide how to handle (get rid of / name) commented-out implementation for partl' that is given in paper but then overriden
    • ipartl_specification2_correct
    • ipartl_VCons_specification3_correct
    • ipartl_VCons_then_specification4_correct
    • ipartl_VCons_else_specification4_correct
    • refinement11
    • ipartl_VCons_specification5_correct
  • QuickSort Array (QuickSortArray.hs)
    • iqsort_specification1_correct
    • iqsort_specification2_correct
    • refinement13
    • iqsort_specification3_correct
  • QuickSort List (QuickSort.hs)
    • specify partition function (as function predicate)
    • implement partition
    • prove correctness of partition implementation
    • prove "divide and conquer" property (divide_and_conquer)

monadic-quicksort-verification's People

Contributors

rybla avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.