Documentation

Init.Data.Fin.Basic

instance Fin.coeToNat {n : Nat} :
def Fin.elim0 {α : Sort u} :
Fin 0α
Instances For
    def Fin.succ {n : Nat} :
    Fin nFin (Nat.succ n)
    Instances For
      def Fin.ofNat {n : Nat} (a : Nat) :
      Instances For
        def Fin.ofNat' {n : Nat} (a : Nat) (h : n > 0) :
        Fin n
        Instances For
          def Fin.add {n : Nat} :
          Fin nFin nFin n
          Instances For
            def Fin.mul {n : Nat} :
            Fin nFin nFin n
            Instances For
              def Fin.sub {n : Nat} :
              Fin nFin nFin n
              Instances For

                Remark: mod/div/modn/land/lor can be defined without using (% n), but we are trying to minimize the number of Nat theorems needed to boostrap Lean.

                def Fin.mod {n : Nat} :
                Fin nFin nFin n
                Instances For
                  def Fin.div {n : Nat} :
                  Fin nFin nFin n
                  Instances For
                    def Fin.modn {n : Nat} :
                    Fin nNatFin n
                    Instances For
                      def Fin.land {n : Nat} :
                      Fin nFin nFin n
                      Instances For
                        def Fin.lor {n : Nat} :
                        Fin nFin nFin n
                        Instances For
                          def Fin.xor {n : Nat} :
                          Fin nFin nFin n
                          Instances For
                            def Fin.shiftLeft {n : Nat} :
                            Fin nFin nFin n
                            Instances For
                              def Fin.shiftRight {n : Nat} :
                              Fin nFin nFin n
                              Instances For
                                instance Fin.instAddFin {n : Nat} :
                                Add (Fin n)
                                instance Fin.instSubFin {n : Nat} :
                                Sub (Fin n)
                                instance Fin.instMulFin {n : Nat} :
                                Mul (Fin n)
                                instance Fin.instModFin {n : Nat} :
                                Mod (Fin n)
                                instance Fin.instDivFin {n : Nat} :
                                Div (Fin n)
                                instance Fin.instAndOpFin {n : Nat} :
                                instance Fin.instOrOpFin {n : Nat} :
                                OrOp (Fin n)
                                instance Fin.instXorFin {n : Nat} :
                                Xor (Fin n)
                                theorem Fin.val_ne_of_ne {n : Nat} {i : Fin n} {j : Fin n} (h : i j) :
                                i.val j.val
                                theorem Fin.modn_lt {n : Nat} {m : Nat} (i : Fin n) :
                                m > 0(Fin.modn i m).val < m
                                theorem Fin.val_lt_of_le {n : Nat} {b : Nat} (i : Fin b) (h : b n) :
                                i.val < n
                                instance instGetElemFinVal {cont : Type u_1} {elem : Type u_2} {dom : contNatProp} {n : Nat} [GetElem cont Nat elem dom] :
                                GetElem cont (Fin n) elem fun xs i => dom xs i.val