This PR introduces a new fixpoint combinator, `WellFounded.extrinsicFix`. A termination proof, if provided at all, can be given extrinsically, i.e., looking at the term from the outside, and is only required if one intends to formally verify the behavior of the fixpoint. The new combinator is then applied to the iterator API. Consumers such as `toList` or `ForIn` no longer require a proof that the underlying iterator is finite. If one wants to ensure the termination of them intrinsically, there are strictly terminating variants available as, for example, `it.ensureTermination.toList` instead of `it.toList`.
16 lines
526 B
Text
16 lines
526 B
Text
/-
|
|
Copyright (c) 2025 Lean FRO, LLC. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Paul Reichert
|
|
-/
|
|
module
|
|
|
|
prelude
|
|
public import Init.Data.Iterators.Consumers.Monadic
|
|
public import Init.Data.Iterators.Consumers.Access
|
|
public import Init.Data.Iterators.Consumers.Collect
|
|
public import Init.Data.Iterators.Consumers.Loop
|
|
public import Init.Data.Iterators.Consumers.Partial
|
|
public import Init.Data.Iterators.Consumers.Total
|
|
|
|
public import Init.Data.Iterators.Consumers.Stream
|