*      !"#$%&'()None&(2346=HKMNat n is less than or equal to nat mW. Comes with functions to do type-directed computation for Nat-indexed datatypes.4A constrint which includes LTE k m for every k <= m.ZProof that a given type is a Nat. With this fact, you can do type-directed computation.The parameter l is fixed by any call to lteInduction, but due to the StrongLTE m l constraint, we have LTE j l for every j <= m. This allows us to implement the nontrivial case in the LTE p q => LTE p (S q)8 instance, where we need to use this function to get x :: d p and then again to get f x :: d (S p) . So long as p and S p are both less or equal to l, this can be done. *+,-./   *+,-./None!"(*=02Used to implement listToVect through natRecursion.6Nat-indexed list, where the nat determines the length.A kind of fmap for Vect.VCons to the end of a Vect.9Drop the length index from a Vect, giving a typical list.xTry to produce a Vect from a list. The nat index must be fixed somehow, perhaps with the help of ScopedTypeVariables. 012 012None!"(=Finite set datatype.)Safely index a Vect. !"#$%&'()"  !"#$%&'() !"#$%&'()  !"#$%&'()3      !"#$%&'()*+,-./01234567TypeNat-0.4.0.0Data.TypeNat.NatData.TypeNat.VectData.TypeNat.FinLTE lteInduction lteRecursion StrongLTEIsNat natRecursionTenNineEightSevenSixFiveFourThreeTwoOneZeroNatSZVectVConsVNilvectMapvectSnocshowVect vectToList listToVectFinFSFZix1ix2ix3ix4ix5ix6ix7ix8ix9ix10 safeIndex$fLTEnS$fLTEnn$fIsNatS$fIsNatZ$fOrdNat$fEqNat MaybeVectMVunMV