{"id":17319905,"url":"https://github.com/saransh-cpp/idrisbutnotagda","last_synced_at":"2026-02-13T05:05:20.359Z","repository":{"id":179211752,"uuid":"663140114","full_name":"Saransh-cpp/IdrisButNotAgda","owner":"Saransh-cpp","description":"Differences and similarities between Agda and Idris2 (an attempt)","archived":false,"fork":false,"pushed_at":"2024-12-19T03:27:32.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"idris-but-not-agda","last_synced_at":"2025-03-27T02:44:27.116Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"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/Saransh-cpp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-06T16:31:49.000Z","updated_at":"2024-12-19T11:05:06.000Z","dependencies_parsed_at":"2024-05-14T03:26:06.124Z","dependency_job_id":"96fb031a-2344-4320-b215-3b3041e6030b","html_url":"https://github.com/Saransh-cpp/IdrisButNotAgda","commit_stats":{"total_commits":16,"total_committers":3,"mean_commits":5.333333333333333,"dds":0.1875,"last_synced_commit":"4ec660ea473fbfe43f7ff9ec9021c43afcc01bfa"},"previous_names":["saransh-cpp/idrisbutnotagda"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Saransh-cpp/IdrisButNotAgda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saransh-cpp%2FIdrisButNotAgda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saransh-cpp%2FIdrisButNotAgda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saransh-cpp%2FIdrisButNotAgda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saransh-cpp%2FIdrisButNotAgda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Saransh-cpp","download_url":"https://codeload.github.com/Saransh-cpp/IdrisButNotAgda/tar.gz/refs/heads/idris-but-not-agda","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saransh-cpp%2FIdrisButNotAgda/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274137474,"owners_count":25228613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-10-15T13:28:02.786Z","updated_at":"2026-02-13T05:05:20.333Z","avatar_url":"https://github.com/Saransh-cpp.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"All of the \"don't exist\" things below might be wrong.\n\n- [X] [`Data.Bool.Xor`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Bool/Xor.idr)\n  - Available in agda (Bool.Properties)\n    - `xor-is-ok : ∀ x y → x xor y ≡ (x ∨ y) ∧ not (x ∧ y)`\n    - The definition of `xor` covers some idris properties (`xorFalseNeutral`, `xorTrueNot`) listed below\n      ```agda\n      _xor_ : Bool → Bool → Bool\n      true  xor b = not b\n      false xor b = b\n      ```\n  - Available in idris\n    - `xorSameFalse` :heavy_check_mark:\n    - `xorFalseNeutral` :heavy_check_mark:\n    - `xorTrueNot` :heavy_check_mark:\n    - `notXor` :heavy_check_mark:\n    - `notXorCancel` :heavy_check_mark:\n    - `xorAssociative` :heavy_check_mark:\n    - `xorCommutative` :heavy_check_mark:\n    - `xorNotTrue` :heavy_check_mark:\n   \n    [JC : The above seems to indicate that Bool w/ xor forms at least a commutative monoid, possibly 'more']\n- [X] [`Data.Bool`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Bool.idr)\n  - these properties are not covered but maybe they are too obvious and can be seen through the definitions -\n    ```agda\n    _∧_ : Bool → Bool → Bool\n    true  ∧ b = b\n    false ∧ b = false\n\n    _∨_ : Bool → Bool → Bool\n    true  ∨ b = true\n    false ∨ b = b\n    ```\n  - Associative, Commutative, Interaction, and De Morgan's laws are probably not that obvious from the definitions. [JC : some of these are most likely in there already in `Data.Bool.Properties` ; please do another pass]\n- [X] [`Data.Zippable`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Zippable.idr)\n  - `zipN` and the functions below do not exist in agda but they are not very important\n    - ~`zipWith3`~\n    - ~`zip3`~\n    - ~their `unzip` counterparts~\n- [ ] [`Data.List`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/List.idr) [JC: skipping `Data.List` on first pass]\n  - Functions\n    - `isNil` (is this really required?) [JC: no] ❎\n    - `isCons` (is this really required?) [JC: no] ❎\n    - `iterateN`\n    - `iterate` (exists for `Vec`, `replicate` exists for `List` but not `iterate`)\n    - `unfoldr` (`unfold` exists)\n    - `nub` - should be defined in terms of `deduplicate`, if defined ❎\n    - `nubBy` - should be defined in terms of `deduplicate`, if defined ❎\n    - `find` ✔️\n      - `find` exists in `Data.List.Membership.Setoid`, but it does not return `Maybe`.\n      - similarly `lookup` and `index` in `Data.List.Relation.Unary.Any` + `Data.List.Relation.Unary.First`\n    - `findIndex` ✔️\n    - `findIndices` ✔️\n    - `lookup` ✔️\n      - (`lookup` exists in `agda` but is different)\n      - should be defined in `Data.List.Association`\n    - `lookupBy` ✔️\n      - should be defined in `Data.List.Association`\n    - `insertAt` ✔️\n    - `deleteAt` ✔️\n    - `deleteBy` (almost `filterᵇ`) ❎\n    - `delete` (almost `filterᵇ`) ❎\n    - `deleteFirstsBy` ✔️\n    - `replaceAt` (exists as `_[_]∷=_`) ❎\n    - `replaceWhen` ❎\n    - `unionBy` ❎\n    - `union` ❎\n    - `span` (`spanᵇ` exists) ❎\n    - `spanBy` ❎\n    - `intersectAllBy` ❎\n    - `intersectAll` ❎\n    - `intersectBy` ❎\n    - `singleton` (`[_]`)\n    - `splitOn` ❎\n    - `replaceAt`\n    - `replaceOn`\n    - `replaceWhen`\n    - `group` (exists for `Vec`)\n    - `groupBy`\n    - `groupWith`\n    - `groupAllWith`\n    - `mergeReplicate`\n    - `mergeBy`\n    - `sortBy`\n    - `prefixOfBy`\n    - `isPrefixOf`\n    - `isPrefixOfBy`\n    - `sufficOfBy`\n    - `isSuffixOf`\n    - `isSuffixOfBy`\n    - `isInfixOf`\n    - `transpose` (exists for `Vec`)\n  - Properties\n    - `appendNilRightNeutral` (`++-identity` properties)\n    - `appendAssociative` - (a PR here - https://github.com/agda/agda-stdlib/pull/2023) (`++-assoc`)\n    - `dropFusion` ✔️\n- [ ] [`Data.List.Elem`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/List/Elem.idr)\n  - Functions\n    - `dropElem` :heavy_check_mark:\n    - `get` :heavy_check_mark:\n    - `elemToNat` [JC `Data.List.Relation.Unary.Any.index` ? ]\n    - `indexElem` [JC : I think there is a `find` somewhere like this ]\n    - `elemMap`\n  - Properties (or proofs?)\n    - `neitherHereNorThere`\n    - `isElem`\n- [ ] [`Data.List.HasLength`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/List/HasLength.idr)\n  - Properties (or proofs?)\n    - `hasLength` :x:\n    - `hasLengthUnique` :x:\n- [ ] [`Data.List.Quantifiers`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/List/Quantifiers.idr)\n  - Properties (or proofs?)\n    - `negAnyAll` :x:\n    - `anyNegAll` :x:\n    - `allNegAny` :x:\n    - `decide` :heavy_check_mark:\n    - `pushIn` :heavy_check_mark:\n    - `pullOut` :heavy_check_mark:\n    - `pushInOutInverse` :heavy_check_mark:\n    - `pushOutInInverse` :heavy_check_mark:\n    - `indexAll` :heavy_check_mark:\n- [ ] [`Data.List.Views`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/List/Views.idr)\n  - Properties\n    - `lengthSuc`\n    - `lengthLT`\n    - `smallerLeft`\n    - `smallerRight`\n    - `SplitRec`\n    - `SnocList`\n- [ ] [`Data.Vect`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Vect.idr)\n    - Functions\n      - `drop'`\n      - `allFins` \n      - `replaceAt` (can be derived using `updateAt` maybe?)\n      - `mergeBy`\n      - `merge` (exists for `List`)\n      - `intersperse` (exists for `List`)\n      - `scanr` (exists for `List`)\n      - `scanl` (exists for `List`)\n      - `lookupBy`\n      - `hasAny`\n      - `hasAnyBy`\n      - `find` (exists in `Data.Vec.Membership.Setoid`?)\n      - `findIndex`\n      - `findIndices`\n      - `elemIndexBy`\n      - `elemIndex`\n      - `elemIndicesBy`\n      - `elemIndices`\n      - `filter` (maybe a more general `filter` present somewhere else works on `Vec` too?) \n      - `nub`\n      - `nubBy`\n      - `deleteBy`\n      - `partition`\n      - `nSplits`\n      - `kSplits`\n      - `prefixOfBy`\n      - `isPrefixOf`\n      - `isPrefixOfBy`\n      - `sufficOfBy`\n      - `isSuffixOf`\n      - `isSuffixOfBy`\n      - `isInfixOf`\n      - `vectToMaybe` (`listToMaybe` exists)\n      - `maybeToVec`\n      - `permute`\n    - Properties\n      - `replaceAtSameIndex` (something like this exists for `updateAt`)\n      - `replaceAtDiffIndexPreserves` (something like this exists for `updateAt`)\n- [ ] [`Data.Vect.Elem`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Vect/Elem.idr)\n  - Functions\n    - `dropElem`\n    - `get`\n    - `elemToFin`\n    - `indexElem`\n    - `mapElem`\n    - `replaceByElem`\n    - `replaceElem`\n  - Properties (or proofs?)\n    - `neitherHereNorThere`\n    - `isElem`\n- [ ] [`Data.Vect.Quantifiers`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Vect/Quantifiers.idr)\n  - Properties (or proofs?)\n    - `negAnyAll`\n    - `notAllHere`\n    - `notAllThere`\n    - `mapProperty`\n    - `all`\n    - `zipPropertyWith`\n- [x] [`Data.Maybe`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Maybe.idr)\n  - ~`isItJust`~\n  - ~`raiseToMaybe`~\n- [ ] [`Data.String`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/String.idr)\n  - Equivalent functions don't exist\n    - `trim`, `ltrim`, `rtrim` (written in Haskell?)\n    - `stringToNatOrZ` (`primCharToNat` exists)\n    - `split`, `break`, `span`\n    - `parseInteger`, `parsePositive`, `parseNumWithoutSign`\n    - `isInfixOf`, `isSuffixOf`, `isPrefixOf`\n    - `strSubstr`\n- [ ] [`Data.Nat.Order`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Nat/Order.idr)\n  - Properties\n    - `zeroNeverGreater`\n    - `zeroAlwaysSmaller`\n      - I think they are already covered under `compare`\n        ```agda\n        compare : ∀ m n → Ordering m n\n        compare zero    zero    = equal   zero\n        compare (suc m) zero    = greater zero m\n        compare zero    (suc n) = less    zero n\n        compare (suc m) (suc n) with compare m n\n        ... | less    m k = less (suc m) k\n        ... | equal   m   = equal (suc m)\n        ... | greater n k = greater (suc n) k\n        ```\n    - `decideLTE`\n    - `decideLTBounded`\n    - `lte`\n    - `shift`\n- [ ] [`Data.Nat`](https://github.com/idris-lang/Idris2/blob/main/libs/base/Data/Nat.idr)\n  - Functions\n    - `hyper`\n  - Properties\n    - `compareNatDiag`\n    - `compareNatFlip`\n    - `NotBothZero`\n    - `LTE` (all the `LTE` stuff)\n    - `GTE` (all the `GTE` stuff)\n    - `plusZeroLeftNeutral`\n    - `plusZeroRightNeutral`\n    - `plusConstantRight`\n    - `plusConstantLeft`\n    - `plusOneSucc`\n    - `plusLeftLeftRightZero`\n    - `multLeftSuccPlus` (covered under distributive properties?)\n    - `multRightSuccPlus` (covered under distributive properties?)\n    - `multDistributesOverPlusLeft` (covered under distributive properties?)\n    - `multDistributesOverPlusRight` (covered under distributive properties?)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaransh-cpp%2Fidrisbutnotagda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaransh-cpp%2Fidrisbutnotagda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaransh-cpp%2Fidrisbutnotagda/lists"}