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
xor
covers 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.Zippable
zipN
and the functions below do not exist in agda but they are not very importantzipWith3
zip3
theirunzip
counterparts
-
Data.List
[JC: skippingData.List
on first pass]- Functions
isNil
(is this really required?) [JC: no] ❎isCons
(is this really required?) [JC: no] ❎iterateN
iterate
(exists forVec
,replicate
exists forList
but notiterate
)unfoldr
(unfold
exists)nub
- should be defined in terms ofdeduplicate
, if defined ❎nubBy
- should be defined in terms ofdeduplicate
, if defined ❎find
✔️find
exists inData.List.Membership.Setoid
, but it does not returnMaybe
.- similarly
lookup
andindex
inData.List.Relation.Unary.Any
+Data.List.Relation.Unary.First
findIndex
✔️findIndices
✔️lookup
✔️- (
lookup
exists inagda
but 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
❎replaceAt
replaceOn
replaceWhen
group
(exists forVec
)groupBy
groupWith
groupAllWith
mergeReplicate
mergeBy
sortBy
prefixOfBy
isPrefixOf
isPrefixOfBy
sufficOfBy
isSuffixOf
isSuffixOfBy
isInfixOf
transpose
(exists forVec
)
- Properties
appendNilRightNeutral
(++-identity
properties)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 afind
somewhere like this ]elemMap
- Properties (or proofs?)
neitherHereNorThere
isElem
- 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
lengthSuc
lengthLT
smallerLeft
smallerRight
SplitRec
SnocList
- Properties
-
Data.Vect
- Functions
drop'
allFins
replaceAt
(can be derived usingupdateAt
maybe?)mergeBy
merge
(exists forList
)intersperse
(exists forList
)scanr
(exists forList
)scanl
(exists forList
)lookupBy
hasAny
hasAnyBy
find
(exists inData.Vec.Membership.Setoid
?)findIndex
findIndices
elemIndexBy
elemIndex
elemIndicesBy
elemIndices
filter
(maybe a more generalfilter
present somewhere else works onVec
too?)nub
nubBy
deleteBy
partition
nSplits
kSplits
prefixOfBy
isPrefixOf
isPrefixOfBy
sufficOfBy
isSuffixOf
isSuffixOfBy
isInfixOf
vectToMaybe
(listToMaybe
exists)maybeToVec
permute
- Properties
replaceAtSameIndex
(something like this exists forupdateAt
)replaceAtDiffIndexPreserves
(something like this exists forupdateAt
)
- Functions
-
Data.Vect.Elem
- Functions
dropElem
get
elemToFin
indexElem
mapElem
replaceByElem
replaceElem
- Properties (or proofs?)
neitherHereNorThere
isElem
- Functions
-
Data.Vect.Quantifiers
- Properties (or proofs?)
negAnyAll
notAllHere
notAllThere
mapProperty
all
zipPropertyWith
- Properties (or proofs?)
-
Data.Maybe
isItJust
raiseToMaybe
-
Data.String
- Equivalent functions don't exist
trim
,ltrim
,rtrim
(written in Haskell?)stringToNatOrZ
(primCharToNat
exists)split
,break
,span
parseInteger
,parsePositive
,parseNumWithoutSign
isInfixOf
,isSuffixOf
,isPrefixOf
strSubstr
- Equivalent functions don't exist
-
Data.Nat.Order
- Properties
zeroNeverGreater
zeroAlwaysSmaller
- I think they are already covered under
compare
compare : ∀ 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
decideLTE
decideLTBounded
lte
shift
- Properties
-
Data.Nat
- Functions
hyper
- Properties
compareNatDiag
compareNatFlip
NotBothZero
LTE
(all theLTE
stuff)GTE
(all theGTE
stuff)plusZeroLeftNeutral
plusZeroRightNeutral
plusConstantRight
plusConstantLeft
plusOneSucc
plusLeftLeftRightZero
multLeftSuccPlus
(covered under distributive properties?)multRightSuccPlus
(covered under distributive properties?)multDistributesOverPlusLeft
(covered under distributive properties?)multDistributesOverPlusRight
(covered under distributive properties?)
- Functions