>>> takeWhile (\(x :: SInteger) -> x `sMod` 2 .== 0) (literal [1..10]) [] :: [SInteger] >>> takeWhile (\(x :: SInteger) -> x `sMod` 2 ./= 0) (literal [1..10]) [1] :: [SInteger]
takeWhile f xs ++ dropWhile f xs == xs
>>> runTP $ takeDropWhile @Integer (uninterpret "f") Inductive lemma: takeDropWhile Step: Base Q.E.D. Step: 1 (2 way case split) Step: 1.1.1 Q.E.D. Step: 1.1.2 Q.E.D. Step: 1.2.1 Q.E.D. Step: 1.2.2 Q.E.D. Step: 1.Completeness Q.E.D. Result: Q.E.D. [Proven] takeDropWhile :: Ɐxs ∷ [Integer] → Bool