diff --git a/clash-prelude/clash-prelude.cabal b/clash-prelude/clash-prelude.cabal index b72b75468b..118d84c14c 100644 --- a/clash-prelude/clash-prelude.cabal +++ b/clash-prelude/clash-prelude.cabal @@ -113,6 +113,7 @@ Library Clash.Class.BitPack Clash.Class.Exp + Clash.Class.HasDomain Clash.Class.Num Clash.Class.Resize diff --git a/clash-prelude/src/Clash/Class/HasDomain.hs b/clash-prelude/src/Clash/Class/HasDomain.hs new file mode 100644 index 0000000000..9c00ddc508 --- /dev/null +++ b/clash-prelude/src/Clash/Class/HasDomain.hs @@ -0,0 +1,216 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE TypeFamilies #-} + +module Clash.Class.HasDomain (HasDomain(..)) where + +import Clash.Sized.Vector (Vec) +import Clash.Sized.RTree (RTree) +import Clash.Signal.Internal (Signal, Domain) +import Clash.Signal.Delayed.Internal (DSignal) + +class HasDomain r where + type GetDomain r :: Domain + +instance HasDomain (DSignal dom delay a) where + type GetDomain (DSignal dom delay a) = dom + +instance HasDomain (Signal dom a) where + type GetDomain (Signal dom a) = dom + +instance HasDomain a => HasDomain (a -> b) where + type GetDomain (a -> b) = GetDomain a + +instance HasDomain a => HasDomain (Vec n a) where + type GetDomain (Vec n a) = GetDomain a + +instance HasDomain a => HasDomain (RTree d a) where + type GetDomain (RTree d a) = GetDomain a + +-- Tuple instances. Generated with 'HasDomain/CodeGen.hs". +instance (HasDomain a1, HasDomain a2, GetDomain a1 ~ GetDomain a2) => HasDomain (a1, a2) where + type GetDomain (a1, a2) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3) => HasDomain (a1, a2, a3) where + type GetDomain (a1, a2, a3) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4) => HasDomain (a1, a2, a3, a4) where + type GetDomain (a1, a2, a3, a4) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5) => HasDomain (a1, a2, a3, a4, a5) where + type GetDomain (a1, a2, a3, a4, a5) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6) => HasDomain (a1, a2, a3, a4, a5, a6) where + type GetDomain (a1, a2, a3, a4, a5, a6) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7) => HasDomain (a1, a2, a3, a4, a5, a6, a7) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, HasDomain a57, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56, GetDomain a56 ~ GetDomain a57) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, HasDomain a57, HasDomain a58, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56, GetDomain a56 ~ GetDomain a57, GetDomain a57 ~ GetDomain a58) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, HasDomain a57, HasDomain a58, HasDomain a59, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56, GetDomain a56 ~ GetDomain a57, GetDomain a57 ~ GetDomain a58, GetDomain a58 ~ GetDomain a59) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, HasDomain a57, HasDomain a58, HasDomain a59, HasDomain a60, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56, GetDomain a56 ~ GetDomain a57, GetDomain a57 ~ GetDomain a58, GetDomain a58 ~ GetDomain a59, GetDomain a59 ~ GetDomain a60) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, HasDomain a57, HasDomain a58, HasDomain a59, HasDomain a60, HasDomain a61, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56, GetDomain a56 ~ GetDomain a57, GetDomain a57 ~ GetDomain a58, GetDomain a58 ~ GetDomain a59, GetDomain a59 ~ GetDomain a60, GetDomain a60 ~ GetDomain a61) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, HasDomain a57, HasDomain a58, HasDomain a59, HasDomain a60, HasDomain a61, HasDomain a62, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56, GetDomain a56 ~ GetDomain a57, GetDomain a57 ~ GetDomain a58, GetDomain a58 ~ GetDomain a59, GetDomain a59 ~ GetDomain a60, GetDomain a60 ~ GetDomain a61, GetDomain a61 ~ GetDomain a62) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, a62) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, a62) = GetDomain a1 + +instance (HasDomain a1, HasDomain a2, HasDomain a3, HasDomain a4, HasDomain a5, HasDomain a6, HasDomain a7, HasDomain a8, HasDomain a9, HasDomain a10, HasDomain a11, HasDomain a12, HasDomain a13, HasDomain a14, HasDomain a15, HasDomain a16, HasDomain a17, HasDomain a18, HasDomain a19, HasDomain a20, HasDomain a21, HasDomain a22, HasDomain a23, HasDomain a24, HasDomain a25, HasDomain a26, HasDomain a27, HasDomain a28, HasDomain a29, HasDomain a30, HasDomain a31, HasDomain a32, HasDomain a33, HasDomain a34, HasDomain a35, HasDomain a36, HasDomain a37, HasDomain a38, HasDomain a39, HasDomain a40, HasDomain a41, HasDomain a42, HasDomain a43, HasDomain a44, HasDomain a45, HasDomain a46, HasDomain a47, HasDomain a48, HasDomain a49, HasDomain a50, HasDomain a51, HasDomain a52, HasDomain a53, HasDomain a54, HasDomain a55, HasDomain a56, HasDomain a57, HasDomain a58, HasDomain a59, HasDomain a60, HasDomain a61, HasDomain a62, HasDomain a63, GetDomain a1 ~ GetDomain a2, GetDomain a2 ~ GetDomain a3, GetDomain a3 ~ GetDomain a4, GetDomain a4 ~ GetDomain a5, GetDomain a5 ~ GetDomain a6, GetDomain a6 ~ GetDomain a7, GetDomain a7 ~ GetDomain a8, GetDomain a8 ~ GetDomain a9, GetDomain a9 ~ GetDomain a10, GetDomain a10 ~ GetDomain a11, GetDomain a11 ~ GetDomain a12, GetDomain a12 ~ GetDomain a13, GetDomain a13 ~ GetDomain a14, GetDomain a14 ~ GetDomain a15, GetDomain a15 ~ GetDomain a16, GetDomain a16 ~ GetDomain a17, GetDomain a17 ~ GetDomain a18, GetDomain a18 ~ GetDomain a19, GetDomain a19 ~ GetDomain a20, GetDomain a20 ~ GetDomain a21, GetDomain a21 ~ GetDomain a22, GetDomain a22 ~ GetDomain a23, GetDomain a23 ~ GetDomain a24, GetDomain a24 ~ GetDomain a25, GetDomain a25 ~ GetDomain a26, GetDomain a26 ~ GetDomain a27, GetDomain a27 ~ GetDomain a28, GetDomain a28 ~ GetDomain a29, GetDomain a29 ~ GetDomain a30, GetDomain a30 ~ GetDomain a31, GetDomain a31 ~ GetDomain a32, GetDomain a32 ~ GetDomain a33, GetDomain a33 ~ GetDomain a34, GetDomain a34 ~ GetDomain a35, GetDomain a35 ~ GetDomain a36, GetDomain a36 ~ GetDomain a37, GetDomain a37 ~ GetDomain a38, GetDomain a38 ~ GetDomain a39, GetDomain a39 ~ GetDomain a40, GetDomain a40 ~ GetDomain a41, GetDomain a41 ~ GetDomain a42, GetDomain a42 ~ GetDomain a43, GetDomain a43 ~ GetDomain a44, GetDomain a44 ~ GetDomain a45, GetDomain a45 ~ GetDomain a46, GetDomain a46 ~ GetDomain a47, GetDomain a47 ~ GetDomain a48, GetDomain a48 ~ GetDomain a49, GetDomain a49 ~ GetDomain a50, GetDomain a50 ~ GetDomain a51, GetDomain a51 ~ GetDomain a52, GetDomain a52 ~ GetDomain a53, GetDomain a53 ~ GetDomain a54, GetDomain a54 ~ GetDomain a55, GetDomain a55 ~ GetDomain a56, GetDomain a56 ~ GetDomain a57, GetDomain a57 ~ GetDomain a58, GetDomain a58 ~ GetDomain a59, GetDomain a59 ~ GetDomain a60, GetDomain a60 ~ GetDomain a61, GetDomain a61 ~ GetDomain a62, GetDomain a62 ~ GetDomain a63) => HasDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, a62, a63) where + type GetDomain (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, a62, a63) = GetDomain a1 + + diff --git a/clash-prelude/src/Clash/Class/HasDomain/CodeGen.hs b/clash-prelude/src/Clash/Class/HasDomain/CodeGen.hs new file mode 100644 index 0000000000..af23d29c8f --- /dev/null +++ b/clash-prelude/src/Clash/Class/HasDomain/CodeGen.hs @@ -0,0 +1,22 @@ +import Data.List (intercalate) + +commas :: [String] -> String +commas = intercalate ", " + +domainEq :: String -> String -> String +domainEq a b = "GetDomain " ++ a ++ " ~ " ++ "GetDomain " ++ b + +inst :: Integer -> IO () +inst n = do + putStrLn $ "instance (" ++ constraints ++ ") => HasDomain (" ++ tup ++ ") where" + putStrLn $ " type GetDomain (" ++ tup ++ ") = GetDomain a1" + putStrLn "" + where + tup = commas vars + hasdomains = commas (map ("HasDomain "++) vars) + getdomains = commas (zipWith domainEq vars (tail vars)) + constraints = hasdomains ++ ", " ++ getdomains + vars = ['a' : show n | n <- [1..n]] + +main :: IO () +main = mapM_ inst [2..63] diff --git a/clash-prelude/src/Clash/Signal.hs b/clash-prelude/src/Clash/Signal.hs index 716c730014..b200939e5c 100644 --- a/clash-prelude/src/Clash/Signal.hs +++ b/clash-prelude/src/Clash/Signal.hs @@ -77,8 +77,6 @@ Check out 'IntelSystem' and 'XilinxSystem' too! {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} -{-# LANGUAGE FlexibleInstances #-} - {-# LANGUAGE Trustworthy #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} @@ -217,6 +215,7 @@ import Data.Maybe (isJust, fromJust) import Prelude import Test.QuickCheck (Property, property) +import Clash.Class.HasDomain (HasDomain, GetDomain) import qualified Clash.Explicit.Signal as E import Clash.Explicit.Signal (System, resetSynchronizer, systemClockGen, systemResetGen, tbSystemClockGen) @@ -416,7 +415,8 @@ type SystemClockResetEnable = --