Documentation

Lilac.Vec.Basic

inductive Lilac.Vec (α : Sort u) :
NatSort (max u 1)
Instances For
    def Lilac.Vec.repr {α : Type u_1} {n : Nat} [Repr α] (v : Vec α n) (p : Nat) :
    Equations
    Instances For
      def Lilac.Vec.repr.go {α : Type u_1} {n : Nat} [Repr α] :
      Vec α nNatStd.Format
      Equations
      Instances For
        @[implicit_reducible]
        instance Lilac.instReprVec {n : Nat} {α : Type u} [Repr α] :
        Repr (Vec α n)
        Equations
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def Lilac.Fun.Vec.to {α : Sort u_1} {n : Nat} (v : Vec α n) :
              Equations
              Instances For
                @[implicit_reducible]
                instance Lilac.instCoeVecVec {α : Sort u_1} {n : Nat} :
                Coe (Fun.Vec α n) (Vec α n)
                Equations
                def Lilac.Vec.to {α : Sort u_1} {n : Nat} :
                Vec α nFun.Vec α n
                Equations
                Instances For
                  def Lilac.Vec.list {α : Type u_1} {n : Nat} :
                  Vec α nList α
                  Equations
                  Instances For
                    def Lilac.Vec.has_dec_eq {α : Sort u_1} {n : Nat} [DecidableEq α] (a b : Vec α n) :
                    Decidable (a = b)
                    Equations
                    Instances For
                      @[implicit_reducible]
                      instance Lilac.instDecidableEqVec {α : Sort u_1} {n : Nat} [DecidableEq α] :
                      Equations
                      @[reducible]
                      def Lilac.Vec.length {α : Sort u_1} {n : Nat} :
                      Vec α nNat
                      Equations
                      Instances For
                        def Lilac.Vec.head {α : Sort u_1} {n : Nat} [NeZero n] :
                        Vec α nα
                        Equations
                        Instances For
                          def Lilac.Vec.tail {α : Sort u_1} {n : Nat} [NeZero n] :
                          Vec α nVec α (n - 1)
                          Equations
                          Instances For
                            def Lilac.Vec.get {α : Sort u_1} {n : Nat} :
                            Vec α nFin nα
                            Equations
                            Instances For
                              @[implicit_reducible]
                              instance Lilac.instGetElemVecFinTrue {α : Type u_1} {n : Nat} :
                              GetElem (Vec α n) (Fin n) α fun (x : Vec α n) (x_1 : Fin n) => True
                              Equations
                              def Lilac.Vec.set {α : Sort u_1} {n : Nat} :
                              Vec α nFin nαVec α n
                              Equations
                              Instances For
                                def Lilac.Vec.foldl {α : Type u} {β : Type v} {n : Nat} (f : αβα) (init : α) :
                                Vec β nα
                                Equations
                                Instances For
                                  def Lilac.Vec.foldr {α : Type u} {β : Type v} {n : Nat} (f : αββ) (init : β) :
                                  Vec α nβ
                                  Equations
                                  Instances For
                                    def Lilac.Vec.concat {α : Sort u_1} {n : Nat} :
                                    Vec α nαVec α (n + 1)
                                    Equations
                                    Instances For
                                      def Lilac.Vec.append {α : Sort u_1} {n m : Nat} :
                                      Vec α nVec α mVec α (m + n)

                                      We intentionally flip the addition order to avoid casting and obtain better simplification

                                      Equations
                                      Instances For
                                        @[implicit_reducible]
                                        instance Lilac.instHAppendVecHAddNat {α : Type u} {n m : Nat} :
                                        HAppend (Vec α n) (Vec α m) (Vec α (m + n))
                                        Equations
                                        def Lilac.Vec.flatten {α : Type u_1} {n m : Nat} :
                                        Vec (Vec α n) mVec α (n * m)
                                        Equations
                                        Instances For
                                          def Lilac.Vec.map {α : Type u} {β : Type b} {n : Nat} (f : αβ) :
                                          Vec α nVec β n
                                          Equations
                                          Instances For
                                            @[implicit_reducible]
                                            instance Lilac.instFunctorVec {n : Nat} :
                                            Functor fun (α : Type u_1) => Vec α n
                                            Equations
                                            def Lilac.Vec.beq {α : Type u_1} {n m : Nat} [BEq α] :
                                            Vec α nVec α mBool
                                            Equations
                                            Instances For
                                              @[implicit_reducible]
                                              instance Lilac.instBEqVec {α : Type u_1} {n : Nat} [BEq α] :
                                              BEq (Vec α n)
                                              Equations
                                              def Lilac.Vec.replicate {α : Sort u_1} (n : Nat) (a : α) :
                                              Vec α n
                                              Equations
                                              Instances For
                                                @[reducible]
                                                instance Lilac.instInhabitedVecOfNatNat {α : Sort u_1} :
                                                Inhabited (Vec α 0)
                                                Equations
                                                @[reducible]
                                                instance Lilac.instInhabitedVec {α : Sort u_1} {n : Nat} [Inhabited α] :
                                                Inhabited (Vec α n)
                                                Equations
                                                def Lilac.Vec.reverse {α : Sort u_1} {n : Nat} :
                                                Vec α nVec α n
                                                Equations
                                                Instances For
                                                  def Lilac.Vec.contains {α : Type u_1} {n : Nat} [BEq α] (a : α) :
                                                  Vec α nBool
                                                  Equations
                                                  Instances For
                                                    def Lilac.Vec.take {α : Sort u_1} {m : Nat} (n : Nat) (h : n m) :
                                                    Vec α mVec α n
                                                    Equations
                                                    Instances For
                                                      def Lilac.Vec.drop {α : Sort u_1} {m : Nat} (n : Nat) (h : n m) :
                                                      Vec α mVec α (m - n)
                                                      Equations
                                                      Instances For
                                                        def Lilac.Vec.any {α : Sort u_1} {n : Nat} :
                                                        Vec α n(p : αBool) → Bool
                                                        Equations
                                                        Instances For
                                                          def Lilac.Vec.all {α : Sort u_1} {n : Nat} :
                                                          Vec α n(p : αBool) → Bool
                                                          Equations
                                                          Instances For
                                                            def Lilac.Vec.zipWith {α : Type u} {β : Type v} {γ : Type w} {n : Nat} (f : αβγ) :
                                                            Vec α nVec β nVec γ n
                                                            Equations
                                                            Instances For
                                                              def Lilac.Vec.zip {α : Type u} {β : Type v} {n : Nat} (v1 : Vec α n) (v2 : Vec β n) :
                                                              Vec (α × β) n
                                                              Equations
                                                              Instances For
                                                                def Lilac.Vec.unzip {α : Type u} {β : Type v} {n : Nat} :
                                                                Vec (α × β) nVec α n × Vec β n
                                                                Equations
                                                                Instances For
                                                                  def Lilac.Vec.range (n : Nat) (k : Nat := 0) :
                                                                  Equations
                                                                  Instances For
                                                                    def Lilac.Vec.zipIdx {α : Type u_1} {n : Nat} :
                                                                    Vec α n(k : optParam Nat 0) → Vec (α × Nat) n
                                                                    Equations
                                                                    Instances For
                                                                      def Lilac.Vec.find? {α : Type u_1} {n : Nat} (p : αBool) :
                                                                      Vec α nOption α
                                                                      Equations
                                                                      Instances For
                                                                        def Lilac.Vec.findIdx? {α : Sort u_1} {n : Nat} (p : αBool) :
                                                                        Vec α nOption (Fin n)
                                                                        Equations
                                                                        Instances For
                                                                          def Lilac.Vec.findIdx?.go {α : Sort u_1} (p : αBool) {n : Nat} :
                                                                          Vec α nNatOption (Fin n)
                                                                          Equations
                                                                          Instances For
                                                                            def Lilac.Vec.erase {α : Type u_1} [BEq α] {n : Nat} :
                                                                            Vec α nα(m : Nat) × Vec α m ×' n m + 1
                                                                            Equations
                                                                            Instances For
                                                                              def Lilac.Vec.count {α : Type u_1} {n : Nat} [BEq α] (a : α) :
                                                                              Vec α nNat
                                                                              Equations
                                                                              Instances For
                                                                                def Lilac.Vec.traverse {m : Type u_1 → Type u_2} {α : Sort u_3} {β : Type u_1} {n : Nat} [Applicative m] (f : αm β) :
                                                                                Vec α nm (Vec β n)
                                                                                Equations
                                                                                Instances For
                                                                                  def Lilac.Vec.sequence {m : Type u_1 → Type u_2} {α : Type u_1} {n : Nat} [Applicative m] :
                                                                                  Vec (m α) nm (Vec α n)
                                                                                  Equations
                                                                                  Instances For
                                                                                    def Lilac.Vec.sum {n : Nat} :
                                                                                    Vec Nat nNat
                                                                                    Equations
                                                                                    Instances For
                                                                                      inductive Lilac.Vec.Mem {α : Sort u_1} (x : α) {n : Nat} :
                                                                                      Vec α nProp
                                                                                      • head {α : Sort u_1} {x : α} {x✝ : Nat} {xs : Vec α x✝} : Mem x (x :: xs)
                                                                                      • tail {α : Sort u_1} {x : α} {x✝ : Nat} (y : α) {xs : Vec α x✝} : Mem x xsMem x (y :: xs)
                                                                                      Instances For
                                                                                        @[implicit_reducible]
                                                                                        instance Lilac.instMembershipVec {α : Type u_1} {n : Nat} :
                                                                                        Membership α (Vec α n)
                                                                                        Equations