{"id":18694971,"url":"https://github.com/rybla/monadic-quicksort-verification","last_synced_at":"2026-01-24T20:54:16.198Z","repository":{"id":48893708,"uuid":"327125334","full_name":"rybla/monadic-quicksort-verification","owner":"rybla","description":"A Liquid Haskell verification of Mu and Chiang's \"Deriving Monadic Quicksort.\"","archived":false,"fork":false,"pushed_at":"2021-07-09T03:14:29.000Z","size":27436,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-18T23:34:44.310Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"SMT","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rybla.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-05T21:35:51.000Z","updated_at":"2021-10-02T20:53:08.000Z","dependencies_parsed_at":"2022-09-12T15:30:45.909Z","dependency_job_id":null,"html_url":"https://github.com/rybla/monadic-quicksort-verification","commit_stats":null,"previous_names":["rybla/monadic-quicksort-verification"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rybla/monadic-quicksort-verification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rybla%2Fmonadic-quicksort-verification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rybla%2Fmonadic-quicksort-verification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rybla%2Fmonadic-quicksort-verification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rybla%2Fmonadic-quicksort-verification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rybla","download_url":"https://codeload.github.com/rybla/monadic-quicksort-verification/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rybla%2Fmonadic-quicksort-verification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28736791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T19:23:36.361Z","status":"ssl_error","status_checked_at":"2026-01-24T19:23:28.966Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T11:13:30.403Z","updated_at":"2026-01-24T20:54:16.181Z","avatar_url":"https://github.com/rybla.png","language":"SMT","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Propositional Equality for Refinement Types\n\n## How to run\n\n```\n# install the propositional equality library\ncd propositional-equality\nstack install\n\n# run the tests/ examples in the paper\nstack test\n\n# run the case study\ncd ..\nstack install\n```\n\n# EDITS\n\nold src: \u0026 new src \u0026 paper  \nPropositionalEquality \u0026 Relation.Equality.Prop \u0026 PEqProperties \u0026\nRelation.Equality.Prop \u0026  \nEqRT \u0026 EqualProp \u0026 EqT \u0026 EqualityProp \u0026\n\nReflexivity \u0026 Redefined as empty \u0026 refl \u0026 reflexivity \u0026\n\nSymmetry \u0026 Equality sym \u0026 symmetry Transitivity \u0026 Transitivity' \u0026 trans \u0026\ntransitivity' \u0026 toSMT \u0026 concreteness \u0026 EqCtx \u0026 substitutability (+ flip args) \u0026\neqRTCtx \u0026 same EqSMT \u0026 fromEqSMT EqFun \u0026 extensionality eqSMT \u0026 reflexivity\n\n- all require importing refined unit :(\n\n# TODO\n\nSome restructuring could help. Maybe make them both top level dirsctories?\n\n# Monadic Quicksort Verification in Liquid Haskell\n\nA Liquid Haskell verification of Mu and Chiang's _[Deriving Monadic\nQuicksort][mu s, chiang t - declarative pearl- deriving monadic quicksort]_.\n\n## Tasks\n\n- [ ] remove all top-level references to infixed notation, it seems to cause\n      problems that I cannot avoid. This will take a lot of effort, but its the\n      only thing I've found to work\n\n- [ ] try `--fast` option\n\n`Placeholder.M`:\n\n- [ ] implement `interpretM`\n- [x] prove `kleisli_associativity`\n- [x] prove `bind_if`\n- [x] prove `seq_bind_associativity`\n- [x] prove `bind_associativity4`\n- [x] prove `seq_associativity4`\n- [x] prove `seq_pure_bind`\n- [x] prove `seq_if_bind`\n- [x] prove `pure_kleisli`\n- [x] prove `refinesplus_equalprop`\n- [x] prove `refinesplus_reflexivity`\n- [x] prove `refinesplus_transitivity`\n- [x] prove `refinesplus_substitutability`\n- [x] prove `writeList_append`\n- [x] prove `writeList_redundancy`\n- [x] prove `writeList_commutativity`\n\n`Sort.List`:\n\n- [ ] prove termination `permute`\n- [x] prove `pure_refines_permute`\n- [x] prove `permute_preserves_length`\n- [x] prove `bind_seq_associativity_with_permute_preserved_length`\n- [x] prove `divide_and_conquer`\n  - [x] use auxes for `divide_and_conquer_aux`\n  - [x] prove `divide_and_conquer_lemma1`:\n    - [x] use auxes for `divide_and_conquer_lemma1_aux`\n    - [x] several `bind_associativity`\n    - [x] several `guard_and`\n    - [x] rearrange `guard`s\n    - [x] uses auxes to box `divide_and_conquer_lemma1_aux`\n  - [x] prove `divide_and_conquer_lemma2`\n    - [x] prove `Cons` case\n    - [x] progress with `guard` properties\n- [x] prove `quicksort_refines_slowsort`\n  - [x] prove `Cons` case\n\n`Sort.Array`:\n\n- [x] prove `permute_kleisli_permute` in `Cons` case\n  - [x] prove `permute_kleisli_permute_lemma` in `Cons` case\n- [x] prove `ipartl_spec`\n  - [x] prove `dispatch_preserves_length_append_ys_zs`\n  - [x] prove `dispatch_commutativity_seq_bind`\n  - [x] prove `ipartl_spec_lemma1`\n    - [x] prove `ipartl_spec_lemma1_step1`\n    - [x] prove `ipartl_spec_lemma1_step1`\n    - [x] prove `ipartl_spec_lemma1_step1`\n  - [x] prove `ipartl_spec_lemma2`\n    - [x] prove `ipartl_spec_lemma2_step1`\n    - [x] prove `ipartl_spec_lemma2_step2`\n    - [x] prove `ipartl_spec_lemma2_step3`\n  - [x] prove `ipartl_spec_lemma3`\n    - [x] prove `ipartl_spec_lemma3_aux1_Nil`\n    - [x] prove `ipartl_spec_lemma3_aux2_Nil`\n    - [x] case `Cons`\n    - [x] prove `ipartl_spec_lemma3_aux1_Cons`\n    - [x] prove `ipartl_spec_lemma3_aux2_Cons`\n  - [x] prove `ipartl_spec_steps1to3`\n    - [x] prove `ipartl_spec_steps1to3_lemma`\n  - [x] prove `ipartl_spec_steps3Ato4`\n  - [x] prove `ipartl_spec_steps4to7`\n    - [x] prove `ipartl_spec_steps4to7_lemma1`\n    - [x] prove `ipartl_spec_steps4to7_lemma2`\n    - [x] prove `ipartl_spec_steps4to5`\n      - [x] prove `ipartl_spec_steps4to5_lemma1`\n      - [x] prove `ipartl_spec_steps4to5_lemma2`\n    - [x] prove `ipartl_spec_steps5to6`\n    - [x] prove `ipartl_spec_steps6to7`\n  - [x] prove `ipartl_spec_steps7to8`\n    - [x] prove `ipartl_spec_steps7to8_lemma`\n  - [x] prove `ipartl_spec_steps8to9`\n  - [x] prove `ipartl_spec_steps`\n- [ ] prove termination `iqsort`\n- [x] prove `iqsort_spec`\n  - [x] prove `iqsort_step1`\n  - [x] prove `iqsort_step2`\n  - [x] prove `iqsort_step3`\n  - [x] prove `iqsort_step4`\n\n\u003c!-- References --\u003e\n\n[mu s, chiang t - declarative pearl- deriving monadic quicksort]:\n  https://scm.iis.sinica.edu.tw/pub/2020-monadic-sort.pdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frybla%2Fmonadic-quicksort-verification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frybla%2Fmonadic-quicksort-verification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frybla%2Fmonadic-quicksort-verification/lists"}