  This paper develops data-driven methods to identify eigenfunctions of the
Koopman operator associated to a dynamical system and subspaces that are
invariant under the operator. We build on Extended Dynamic Mode Decomposition
(EDMD), a data-driven method that finds a finite-dimensional approximation of
the Koopman operator on the span of a predefined dictionary of functions. We
propose a necessary and sufficient condition to identify Koopman eigenfunctions
based on the application of EDMD forward and backward in time. Moreover, we
propose the Symmetric Subspace Decomposition (SSD) algorithm, an iterative
method which provably identifies the maximal Koopman-invariant subspace and the
Koopman eigenfunctions in the span of the dictionary. We also introduce the
Streaming Symmetric Subspace Decomposition (SSSD) algorithm, an online
extension of SSD that only requires a small, fixed memory and incorporates new
data as is received. Finally, we propose an extension of SSD that approximates
Koopman eigenfunctions and invariant subspaces when the dictionary does not
contain sufficient informative eigenfunctions.
