Documentation

Mathlib.Data.Stream.Defs

Definition of Stream' and functions on streams #

A stream Stream' α is an infinite sequence of elements of α. One can also think about it as an infinite list. In this file we define Stream' and some functions that take and/or return streams. Note that we already have Stream to represent a similar object, hence the awkward naming.

def Stream' (α : Type u) :

A stream Stream' α is an infinite sequence of elements of α.

Equations
Instances For
    def Stream'.cons {α : Type u} (a : α) (s : Stream' α) :

    Prepend an element to a stream.

    Equations
    Instances For

      Prepend an element to a stream.

      Equations
      Instances For
        def Stream'.get {α : Type u} (s : Stream' α) (n : ) :
        α

        Get the n-th element of a stream.

        Equations
        • s.get n = s n
        Instances For
          @[reducible, inline]
          abbrev Stream'.head {α : Type u} (s : Stream' α) :
          α

          Head of a stream: Stream'.head s = Stream'.get s 0.

          Equations
          • s.head = s.get 0
          Instances For
            def Stream'.tail {α : Type u} (s : Stream' α) :

            Tail of a stream: Stream'.tail (h :: t) = t.

            Equations
            • s.tail i = s.get (i + 1)
            Instances For
              def Stream'.drop {α : Type u} (n : ) (s : Stream' α) :

              Drop first n elements of a stream.

              Equations
              Instances For
                def Stream'.All {α : Type u} (p : αProp) (s : Stream' α) :

                Proposition saying that all elements of a stream satisfy a predicate.

                Equations
                Instances For
                  def Stream'.Any {α : Type u} (p : αProp) (s : Stream' α) :

                  Proposition saying that at least one element of a stream satisfies a predicate.

                  Equations
                  Instances For
                    instance Stream'.instMembership {α : Type u} :

                    a ∈ s means that a = Stream'.get n s for some n.

                    Equations
                    def Stream'.map {α : Type u} {β : Type v} (f : αβ) (s : Stream' α) :

                    Apply a function f to all elements of a stream s.

                    Equations
                    Instances For
                      def Stream'.zip {α : Type u} {β : Type v} {δ : Type w} (f : αβδ) (s₁ : Stream' α) (s₂ : Stream' β) :

                      Zip two streams using a binary operation: Stream'.get n (Stream'.zip f s₁ s₂) = f (Stream'.get s₁) (Stream'.get s₂).

                      Equations
                      Instances For
                        def Stream'.enum {α : Type u} (s : Stream' α) :

                        Enumerate a stream by tagging each element with its index.

                        Equations
                        • s.enum n = (n, s.get n)
                        Instances For
                          def Stream'.const {α : Type u} (a : α) :

                          The constant stream: Stream'.get n (Stream'.const a) = a.

                          Equations
                          Instances For
                            def Stream'.iterate {α : Type u} (f : αα) (a : α) :

                            Iterates of a function as a stream.

                            Equations
                            Instances For
                              def Stream'.corec {α : Type u} {β : Type v} (f : αβ) (g : αα) :
                              αStream' β
                              Equations
                              Instances For
                                def Stream'.corecOn {α : Type u} {β : Type v} (a : α) (f : αβ) (g : αα) :
                                Equations
                                Instances For
                                  def Stream'.corec' {α : Type u} {β : Type v} (f : αβ × α) :
                                  αStream' β
                                  Equations
                                  Instances For
                                    def Stream'.corecState {σ α : Type u_1} (cmd : StateM σ α) (s : σ) :

                                    Use a state monad to generate a stream through corecursion

                                    Equations
                                    Instances For
                                      @[reducible, inline]
                                      abbrev Stream'.unfolds {α : Type u} {β : Type v} (g : αβ) (f : αα) (a : α) :
                                      Equations
                                      Instances For
                                        def Stream'.interleave {α : Type u} (s₁ s₂ : Stream' α) :

                                        Interleave two streams.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For

                                          Interleave two streams.

                                          Equations
                                          Instances For
                                            def Stream'.even {α : Type u} (s : Stream' α) :

                                            Elements of a stream with even indices.

                                            Equations
                                            Instances For
                                              def Stream'.odd {α : Type u} (s : Stream' α) :

                                              Elements of a stream with odd indices.

                                              Equations
                                              • s.odd = s.tail.even
                                              Instances For
                                                def Stream'.appendStream' {α : Type u} :
                                                List αStream' αStream' α

                                                Append a stream to a list.

                                                Equations
                                                Instances For

                                                  Append a stream to a list.

                                                  Equations
                                                  Instances For
                                                    def Stream'.take {α : Type u} :
                                                    Stream' αList α

                                                    take n s returns a list of the n first elements of stream s

                                                    Equations
                                                    Instances For
                                                      def Stream'.cycleF {α : Type u} :
                                                      α × List α × α × List αα

                                                      An auxiliary definition for Stream'.cycle corecursive def

                                                      Equations
                                                      Instances For
                                                        def Stream'.cycleG {α : Type u} :
                                                        α × List α × α × List αα × List α × α × List α

                                                        An auxiliary definition for Stream'.cycle corecursive def

                                                        Equations
                                                        Instances For
                                                          def Stream'.cycle {α : Type u} (l : List α) :
                                                          l []Stream' α

                                                          Interpret a nonempty list as a cyclic stream.

                                                          Equations
                                                          Instances For
                                                            def Stream'.tails {α : Type u} (s : Stream' α) :

                                                            Tails of a stream, starting with Stream'.tail s.

                                                            Equations
                                                            Instances For
                                                              def Stream'.initsCore {α : Type u} (l : List α) (s : Stream' α) :

                                                              An auxiliary definition for Stream'.inits.

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                def Stream'.inits {α : Type u} (s : Stream' α) :

                                                                Nonempty initial segments of a stream.

                                                                Equations
                                                                Instances For
                                                                  def Stream'.pure {α : Type u} (a : α) :

                                                                  A constant stream, same as Stream'.const.

                                                                  Equations
                                                                  Instances For
                                                                    def Stream'.apply {α : Type u} {β : Type v} (f : Stream' (αβ)) (s : Stream' α) :

                                                                    Given a stream of functions and a stream of values, apply n-th function to n-th value.

                                                                    Equations
                                                                    • (f s) n = f.get n (s.get n)
                                                                    Instances For

                                                                      Given a stream of functions and a stream of values, apply n-th function to n-th value.

                                                                      Equations
                                                                      Instances For

                                                                        The stream of natural numbers: Stream'.get n Stream'.nats = n.

                                                                        Equations
                                                                        Instances For