This PR adds the Lean.RArray data structure. This data structure is equivalent to `Fin n → α` or `Array α`, but optimized for a fast kernel-reduction `get` operation. It is not suitable as a general-purpose data structure. The primary intended use case is the “denote” function of a typical proof by reflection proof, where only the `get` operation is necessary, and where using `List.get` unnecessarily slows down proofs with more than a hand-full of atomic expressions. There is no well-formedness invariant attached to this data structure, to keep it concise; it's semantics is given through `RArray.get`. In that way one can also view an `RArray` as a decision tree implementing `Nat → α`. In #6068 this data structure is used in `simp_arith`.
45 lines
1.1 KiB
Text
45 lines
1.1 KiB
Text
/-
|
|
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Leonardo de Moura
|
|
-/
|
|
prelude
|
|
import Init.Data.Basic
|
|
import Init.Data.Nat
|
|
import Init.Data.Bool
|
|
import Init.Data.BitVec
|
|
import Init.Data.Cast
|
|
import Init.Data.Char
|
|
import Init.Data.String
|
|
import Init.Data.List
|
|
import Init.Data.Int
|
|
import Init.Data.Array
|
|
import Init.Data.Array.Subarray.Split
|
|
import Init.Data.ByteArray
|
|
import Init.Data.FloatArray
|
|
import Init.Data.Fin
|
|
import Init.Data.UInt
|
|
import Init.Data.SInt
|
|
import Init.Data.Float
|
|
import Init.Data.Option
|
|
import Init.Data.Ord
|
|
import Init.Data.Random
|
|
import Init.Data.ToString
|
|
import Init.Data.Range
|
|
import Init.Data.Hashable
|
|
import Init.Data.OfScientific
|
|
import Init.Data.Format
|
|
import Init.Data.Stream
|
|
import Init.Data.Prod
|
|
import Init.Data.AC
|
|
import Init.Data.Queue
|
|
import Init.Data.Channel
|
|
import Init.Data.Sum
|
|
import Init.Data.BEq
|
|
import Init.Data.Subtype
|
|
import Init.Data.ULift
|
|
import Init.Data.PLift
|
|
import Init.Data.Zero
|
|
import Init.Data.NeZero
|
|
import Init.Data.Function
|
|
import Init.Data.RArray
|