Inductive componentValueT : Set :=
  | ValueIntegerS8      (v : integerS8T)
  | ValueIntegerS8Vec2  (v : integerS8Vec2T)
  | ValueIntegerS8Vec3  (v : integerS8Vec3T)
  | ValueIntegerS8Vec4  (v : integerS8Vec4T)
  | ValueIntegerU8      (v : integerU8T)
  | ValueIntegerU8Vec2  (v : integerU8Vec2T)
  | ValueIntegerU8Vec3  (v : integerU8Vec3T)
  | ValueIntegerU8Vec4  (v : integerU8Vec4T)
  | ValueIntegerS16     (v : integerS16T)
  | ValueIntegerS16Vec2 (v : integerS16Vec2T)
  | ValueIntegerS16Vec3 (v : integerS16Vec3T)
  | ValueIntegerS16Vec4 (v : integerS16Vec4T)
  | ValueIntegerU16     (v : integerU16T)
  | ValueIntegerU16Vec2 (v : integerU16Vec2T)
  | ValueIntegerU16Vec3 (v : integerU16Vec3T)
  | ValueIntegerU16Vec4 (v : integerU16Vec4T)
  | ValueIntegerS32     (v : integerS32T)
  | ValueIntegerS32Vec2 (v : integerS32Vec2T)
  | ValueIntegerS32Vec3 (v : integerS32Vec3T)
  | ValueIntegerS32Vec4 (v : integerS32Vec4T)
  | ValueIntegerU32     (v : integerU32T)
  | ValueIntegerU32Vec2 (v : integerU32Vec2T)
  | ValueIntegerU32Vec3 (v : integerU32Vec3T)
  | ValueIntegerU32Vec4 (v : integerU32Vec4T)
  | ValueIntegerS64     (v : integerS64T)
  | ValueIntegerS64Vec2 (v : integerS64Vec2T)
  | ValueIntegerS64Vec3 (v : integerS64Vec3T)
  | ValueIntegerS64Vec4 (v : integerS64Vec4T)
  | ValueIntegerU64     (v : integerU64T)
  | ValueIntegerU64Vec2 (v : integerU64Vec2T)
  | ValueIntegerU64Vec3 (v : integerU64Vec3T)
  | ValueIntegerU64Vec4 (v : integerU64Vec4T)
  | ValueFloat16        (v : float16T)
  | ValueFloat16Vec2    (v : float16Vec2T)
  | ValueFloat16Vec3    (v : float16Vec3T)
  | ValueFloat16Vec4    (v : float16Vec4T)
  | ValueFloat32        (v : float32T)
  | ValueFloat32Vec2    (v : float32Vec2T)
  | ValueFloat32Vec3    (v : float32Vec3T)
  | ValueFloat32Vec4    (v : float32Vec4T)
  | ValueFloat64        (v : float64T)
  | ValueFloat64Vec2    (v : float64Vec2T)
  | ValueFloat64Vec3    (v : float64Vec3T)
  | ValueFloat64Vec4    (v : float64Vec4T)
  .
