All of the "don't exist" things below might be wrong.
-
Data.Bool.Xor-
Available in agda (Bool.Properties)
xor-is-ok : ∀ x y → x xor y ≡ (x ∨ y) ∧ not (x ∧ y)- The definition of
xorcovers some idris properties (xorFalseNeutral,xorTrueNot) listed below_xor_ : Bool → Bool → Bool true xor b = not b false xor b = b
-
Available in idris
xorSameFalse✔️xorFalseNeutral✔️xorTrueNot✔️notXor✔️notXorCancel✔️xorAssociative✔️xorCommutative✔️xorNotTrue✔️
[JC : The above seems to indicate that Bool w/ xor forms at least a commutative monoid, possibly 'more']
-
-
Data.Bool- these properties are not covered but maybe they are too obvious and can be seen through the definitions -
_∧_ : Bool → Bool → Bool true ∧ b = b false ∧ b = false _∨_ : Bool → Bool → Bool true ∨ b = true false ∨ b = b
- 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]
- these properties are not covered but maybe they are too obvious and can be seen through the definitions -
-
Data.ZippablezipNand the functions below do not exist in agda but they are not very importantzipWith3zip3theirunzipcounterparts
-
Data.List[JC: skippingData.Liston first pass]- Functions
isNil(is this really required?) [JC: no] ❎isCons(is this really required?) [JC: no] ❎iterateNiterate(exists forVec,replicateexists forListbut notiterate)unfoldr(unfoldexists)nub- should be defined in terms ofdeduplicate, if defined ❎nubBy- should be defined in terms ofdeduplicate, if defined ❎find✔️findexists inData.List.Membership.Setoid, but it does not returnMaybe.- similarly
lookupandindexinData.List.Relation.Unary.Any+Data.List.Relation.Unary.First
findIndex✔️findIndices✔️lookup✔️- (
lookupexists inagdabut is different) - should be defined in
Data.List.Association
- (
lookupBy✔️- should be defined in
Data.List.Association
- should be defined in
insertAt✔️deleteAt✔️deleteBy(almostfilterᵇ) ❎delete(almostfilterᵇ) ❎deleteFirstsBy✔️replaceAt(exists as_[_]∷=_) ❎replaceWhen❎unionBy❎union❎span(spanᵇexists) ❎spanBy❎intersectAllBy❎intersectAll❎intersectBy❎singleton([_])splitOn❎replaceAtreplaceOnreplaceWhengroup(exists forVec)groupBygroupWithgroupAllWithmergeReplicatemergeBysortByprefixOfByisPrefixOfisPrefixOfBysufficOfByisSuffixOfisSuffixOfByisInfixOftranspose(exists forVec)
- Properties
appendNilRightNeutral(++-identityproperties)appendAssociative- (a PR here - agda/agda-stdlib#2023) (++-assoc)dropFusion✔️
- Functions
-
Data.List.Elem- Functions
dropElem✔️get✔️elemToNat[JCData.List.Relation.Unary.Any.index? ]indexElem[JC : I think there is afindsomewhere like this ]elemMap
- Properties (or proofs?)
neitherHereNorThereisElem
- Functions
-
Data.List.HasLength- Properties (or proofs?)
hasLength❌hasLengthUnique❌
- Properties (or proofs?)
-
Data.List.Quantifiers- Properties (or proofs?)
negAnyAll❌anyNegAll❌allNegAny❌decide✔️pushIn✔️pullOut✔️pushInOutInverse✔️pushOutInInverse✔️indexAll✔️
- Properties (or proofs?)
-
Data.List.Views- Properties
lengthSuclengthLTsmallerLeftsmallerRightSplitRecSnocList
- Properties
-
Data.Vect- Functions
drop'allFinsreplaceAt(can be derived usingupdateAtmaybe?)mergeBymerge(exists forList)intersperse(exists forList)scanr(exists forList)scanl(exists forList)lookupByhasAnyhasAnyByfind(exists inData.Vec.Membership.Setoid?)findIndexfindIndiceselemIndexByelemIndexelemIndicesByelemIndicesfilter(maybe a more generalfilterpresent somewhere else works onVectoo?)nubnubBydeleteBypartitionnSplitskSplitsprefixOfByisPrefixOfisPrefixOfBysufficOfByisSuffixOfisSuffixOfByisInfixOfvectToMaybe(listToMaybeexists)maybeToVecpermute
- Properties
replaceAtSameIndex(something like this exists forupdateAt)replaceAtDiffIndexPreserves(something like this exists forupdateAt)
- Functions
-
Data.Vect.Elem- Functions
dropElemgetelemToFinindexElemmapElemreplaceByElemreplaceElem
- Properties (or proofs?)
neitherHereNorThereisElem
- Functions
-
Data.Vect.Quantifiers- Properties (or proofs?)
negAnyAllnotAllHerenotAllTheremapPropertyallzipPropertyWith
- Properties (or proofs?)
-
Data.MaybeisItJustraiseToMaybe
-
Data.String- Equivalent functions don't exist
trim,ltrim,rtrim(written in Haskell?)stringToNatOrZ(primCharToNatexists)split,break,spanparseInteger,parsePositive,parseNumWithoutSignisInfixOf,isSuffixOf,isPrefixOfstrSubstr
- Equivalent functions don't exist
-
Data.Nat.Order- Properties
zeroNeverGreaterzeroAlwaysSmaller- I think they are already covered under
comparecompare : ∀ m n → Ordering m n compare zero zero = equal zero compare (suc m) zero = greater zero m compare zero (suc n) = less zero n compare (suc m) (suc n) with compare m n ... | less m k = less (suc m) k ... | equal m = equal (suc m) ... | greater n k = greater (suc n) k
- I think they are already covered under
decideLTEdecideLTBoundedlteshift
- Properties
-
Data.Nat- Functions
hyper
- Properties
compareNatDiagcompareNatFlipNotBothZeroLTE(all theLTEstuff)GTE(all theGTEstuff)plusZeroLeftNeutralplusZeroRightNeutralplusConstantRightplusConstantLeftplusOneSuccplusLeftLeftRightZeromultLeftSuccPlus(covered under distributive properties?)multRightSuccPlus(covered under distributive properties?)multDistributesOverPlusLeft(covered under distributive properties?)multDistributesOverPlusRight(covered under distributive properties?)
- Functions