Skip to content

Saransh-cpp/IdrisButNotAgda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 

Repository files navigation

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]
  • Data.Zippable
    • zipN and the functions below do not exist in agda but they are not very important
      • zipWith3
      • zip3
      • their unzip counterparts
  • Data.List [JC: skipping Data.List on first pass]
    • Functions
      • isNil (is this really required?) [JC: no] ❎
      • isCons (is this really required?) [JC: no] ❎
      • iterateN
      • iterate (exists for Vec, replicate exists for List but not iterate)
      • unfoldr (unfold exists)
      • nub - should be defined in terms of deduplicate, if defined ❎
      • nubBy - should be defined in terms of deduplicate, if defined ❎
      • find ✔️
        • find exists in Data.List.Membership.Setoid, but it does not return Maybe.
        • similarly lookup and index in Data.List.Relation.Unary.Any + Data.List.Relation.Unary.First
      • findIndex ✔️
      • findIndices ✔️
      • lookup ✔️
        • (lookup exists in agda but is different)
        • should be defined in Data.List.Association
      • lookupBy ✔️
        • should be defined in Data.List.Association
      • insertAt ✔️
      • deleteAt ✔️
      • deleteBy (almost filterᵇ) ❎
      • delete (almost filterᵇ) ❎
      • deleteFirstsBy ✔️
      • replaceAt (exists as _[_]∷=_) ❎
      • replaceWhen
      • unionBy
      • union
      • span (spanᵇ exists) ❎
      • spanBy
      • intersectAllBy
      • intersectAll
      • intersectBy
      • singleton ([_])
      • splitOn
      • replaceAt
      • replaceOn
      • replaceWhen
      • group (exists for Vec)
      • groupBy
      • groupWith
      • groupAllWith
      • mergeReplicate
      • mergeBy
      • sortBy
      • prefixOfBy
      • isPrefixOf
      • isPrefixOfBy
      • sufficOfBy
      • isSuffixOf
      • isSuffixOfBy
      • isInfixOf
      • transpose (exists for Vec)
    • Properties
      • appendNilRightNeutral (++-identity properties)
      • appendAssociative - (a PR here - agda/agda-stdlib#2023) (++-assoc)
      • dropFusion ✔️
  • Data.List.Elem
    • Functions
      • dropElem ✔️
      • get ✔️
      • elemToNat [JC Data.List.Relation.Unary.Any.index ? ]
      • indexElem [JC : I think there is a find somewhere like this ]
      • elemMap
    • Properties (or proofs?)
      • neitherHereNorThere
      • isElem
  • Data.List.HasLength
    • Properties (or proofs?)
      • hasLength
      • hasLengthUnique
  • Data.List.Quantifiers
    • Properties (or proofs?)
      • negAnyAll
      • anyNegAll
      • allNegAny
      • decide ✔️
      • pushIn ✔️
      • pullOut ✔️
      • pushInOutInverse ✔️
      • pushOutInInverse ✔️
      • indexAll ✔️
  • Data.List.Views
    • Properties
      • lengthSuc
      • lengthLT
      • smallerLeft
      • smallerRight
      • SplitRec
      • SnocList
  • Data.Vect
    • Functions
      • drop'
      • allFins
      • replaceAt (can be derived using updateAt maybe?)
      • mergeBy
      • merge (exists for List)
      • intersperse (exists for List)
      • scanr (exists for List)
      • scanl (exists for List)
      • lookupBy
      • hasAny
      • hasAnyBy
      • find (exists in Data.Vec.Membership.Setoid?)
      • findIndex
      • findIndices
      • elemIndexBy
      • elemIndex
      • elemIndicesBy
      • elemIndices
      • filter (maybe a more general filter present somewhere else works on Vec 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 for updateAt)
      • replaceAtDiffIndexPreserves (something like this exists for updateAt)
  • Data.Vect.Elem
    • Functions
      • dropElem
      • get
      • elemToFin
      • indexElem
      • mapElem
      • replaceByElem
      • replaceElem
    • Properties (or proofs?)
      • neitherHereNorThere
      • isElem
  • Data.Vect.Quantifiers
    • Properties (or proofs?)
      • negAnyAll
      • notAllHere
      • notAllThere
      • mapProperty
      • all
      • zipPropertyWith
  • 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
  • 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
      • decideLTE
      • decideLTBounded
      • lte
      • shift
  • Data.Nat
    • Functions
      • hyper
    • Properties
      • compareNatDiag
      • compareNatFlip
      • NotBothZero
      • LTE (all the LTE stuff)
      • GTE (all the GTE 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?)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published