singletons-base 3.0 → 3.1
raw patch · 132 files changed
+6728/−5124 lines, 132 filesdep ~basedep ~singletonsdep ~singletons-thsetup-changed
Dependency ranges changed: base, singletons, singletons-th, template-haskell, th-desugar
Files
- CHANGES.md +42/−0
- README.md +1/−1
- Setup.hs +3/−3
- singletons-base.cabal +15/−12
- src/Control/Monad/Singletons.hs +4/−4
- src/Data/Bool/Singletons.hs +6/−0
- src/Data/Eq/Singletons.hs +1/−1
- src/Data/Foldable/Singletons.hs +2/−2
- src/Data/Functor/Compose/Singletons.hs +99/−0
- src/Data/Functor/Const/Singletons.hs +17/−4
- src/Data/Functor/Product/Singletons.hs +119/−0
- src/Data/Functor/Sum/Singletons.hs +102/−0
- src/Data/List/NonEmpty/Singletons.hs +5/−5
- src/Data/List/Singletons/Internal.hs +11/−11
- src/Data/List/Singletons/Internal/Disambiguation.hs +8/−8
- src/Data/Proxy/Singletons.hs +6/−3
- src/Data/Singletons/Base/Enum.hs +18/−10
- src/Data/Singletons/Base/TypeError.hs +16/−0
- src/GHC/Num/Singletons.hs +8/−8
- src/GHC/TypeLits/Singletons.hs +88/−40
- src/GHC/TypeLits/Singletons/Internal.hs +79/−25
- src/Text/Show/Singletons.hs +133/−33
- tests/SingletonsBaseTestSuite.hs +5/−0
- tests/SingletonsBaseTestSuiteUtils.hs +1/−0
- tests/compile-and-dump/GradingClient/Database.golden +3376/−3346
- tests/compile-and-dump/GradingClient/Database.hs +3/−3
- tests/compile-and-dump/InsertionSort/InsertionSortImp.golden +15/−8
- tests/compile-and-dump/Promote/GenDefunSymbols.golden +12/−12
- tests/compile-and-dump/Promote/Newtypes.golden +1/−1
- tests/compile-and-dump/Promote/Prelude.golden +7/−7
- tests/compile-and-dump/Promote/Prelude.hs +1/−1
- tests/compile-and-dump/Singletons/AsPattern.golden +25/−10
- tests/compile-and-dump/Singletons/BoundedDeriving.golden +19/−11
- tests/compile-and-dump/Singletons/BoxUnBox.golden +3/−2
- tests/compile-and-dump/Singletons/CaseExpressions.golden +34/−26
- tests/compile-and-dump/Singletons/Classes.golden +48/−37
- tests/compile-and-dump/Singletons/Classes2.golden +8/−7
- tests/compile-and-dump/Singletons/Contains.golden +6/−3
- tests/compile-and-dump/Singletons/DataValues.golden +26/−18
- tests/compile-and-dump/Singletons/Empty.golden +2/−2
- tests/compile-and-dump/Singletons/EmptyShowDeriving.golden +20/−19
- tests/compile-and-dump/Singletons/EnumDeriving.golden +41/−40
- tests/compile-and-dump/Singletons/EqInstances.golden +8/−10
- tests/compile-and-dump/Singletons/Fixity.golden +12/−5
- tests/compile-and-dump/Singletons/FunDeps.golden +14/−13
- tests/compile-and-dump/Singletons/FunDeps.hs +1/−1
- tests/compile-and-dump/Singletons/FunctorLikeDeriving.golden +129/−93
- tests/compile-and-dump/Singletons/HigherOrder.golden +75/−25
- tests/compile-and-dump/Singletons/LambdaCase.golden +21/−13
- tests/compile-and-dump/Singletons/Lambdas.golden +71/−40
- tests/compile-and-dump/Singletons/LambdasComprehensive.golden +2/−2
- tests/compile-and-dump/Singletons/LetStatements.golden +23/−26
- tests/compile-and-dump/Singletons/Maybe.golden +26/−27
- tests/compile-and-dump/Singletons/Nat.golden +36/−33
- tests/compile-and-dump/Singletons/NatSymbolReflexive.hs +1/−1
- tests/compile-and-dump/Singletons/Natural.golden +78/−0
- tests/compile-and-dump/Singletons/Natural.hs +13/−0
- tests/compile-and-dump/Singletons/NegativeLiterals.golden +13/−7
- tests/compile-and-dump/Singletons/NegativeLiterals.hs +2/−2
- tests/compile-and-dump/Singletons/Operators.golden +14/−4
- tests/compile-and-dump/Singletons/OrdDeriving.golden +292/−127
- tests/compile-and-dump/Singletons/PatternMatching.golden +57/−49
- tests/compile-and-dump/Singletons/PolyKinds.golden +3/−3
- tests/compile-and-dump/Singletons/PolyKindsApp.golden +3/−3
- tests/compile-and-dump/Singletons/Records.golden +11/−4
- tests/compile-and-dump/Singletons/ReturnFunc.golden +10/−4
- tests/compile-and-dump/Singletons/Sections.golden +7/−4
- tests/compile-and-dump/Singletons/ShowDeriving.golden +101/−63
- tests/compile-and-dump/Singletons/StandaloneDeriving.golden +82/−78
- tests/compile-and-dump/Singletons/Star.golden +61/−53
- tests/compile-and-dump/Singletons/T136.golden +30/−30
- tests/compile-and-dump/Singletons/T136b.golden +3/−4
- tests/compile-and-dump/Singletons/T145.golden +6/−3
- tests/compile-and-dump/Singletons/T150.golden +48/−16
- tests/compile-and-dump/Singletons/T159.golden +36/−16
- tests/compile-and-dump/Singletons/T160.golden +2/−2
- tests/compile-and-dump/Singletons/T163.golden +6/−2
- tests/compile-and-dump/Singletons/T166.golden +43/−28
- tests/compile-and-dump/Singletons/T166.hs +1/−1
- tests/compile-and-dump/Singletons/T167.golden +64/−43
- tests/compile-and-dump/Singletons/T167.hs +1/−1
- tests/compile-and-dump/Singletons/T172.golden +19/−14
- tests/compile-and-dump/Singletons/T172.hs +1/−1
- tests/compile-and-dump/Singletons/T175.golden +2/−2
- tests/compile-and-dump/Singletons/T176.golden +21/−14
- tests/compile-and-dump/Singletons/T178.golden +29/−32
- tests/compile-and-dump/Singletons/T183.golden +53/−51
- tests/compile-and-dump/Singletons/T184.golden +33/−23
- tests/compile-and-dump/Singletons/T187.golden +11/−13
- tests/compile-and-dump/Singletons/T190.golden +44/−46
- tests/compile-and-dump/Singletons/T197.golden +5/−2
- tests/compile-and-dump/Singletons/T197b.golden +18/−4
- tests/compile-and-dump/Singletons/T200.golden +38/−12
- tests/compile-and-dump/Singletons/T204.golden +18/−4
- tests/compile-and-dump/Singletons/T209.golden +13/−4
- tests/compile-and-dump/Singletons/T216.golden +8/−8
- tests/compile-and-dump/Singletons/T249.golden +9/−6
- tests/compile-and-dump/Singletons/T271.golden +30/−30
- tests/compile-and-dump/Singletons/T287.golden +11/−7
- tests/compile-and-dump/Singletons/T296.golden +2/−2
- tests/compile-and-dump/Singletons/T312.golden +23/−18
- tests/compile-and-dump/Singletons/T313.golden +2/−2
- tests/compile-and-dump/Singletons/T322.golden +5/−2
- tests/compile-and-dump/Singletons/T326.golden +7/−4
- tests/compile-and-dump/Singletons/T353.golden +15/−13
- tests/compile-and-dump/Singletons/T358.golden +3/−3
- tests/compile-and-dump/Singletons/T367.golden +5/−2
- tests/compile-and-dump/Singletons/T371.golden +40/−36
- tests/compile-and-dump/Singletons/T376.golden +5/−2
- tests/compile-and-dump/Singletons/T378a.golden +5/−2
- tests/compile-and-dump/Singletons/T378b.golden +11/−6
- tests/compile-and-dump/Singletons/T401.golden +5/−5
- tests/compile-and-dump/Singletons/T401b.golden +5/−5
- tests/compile-and-dump/Singletons/T410.golden +1/−1
- tests/compile-and-dump/Singletons/T412.golden +59/−34
- tests/compile-and-dump/Singletons/T414.golden +3/−3
- tests/compile-and-dump/Singletons/T443.golden +14/−4
- tests/compile-and-dump/Singletons/T445.golden +4/−4
- tests/compile-and-dump/Singletons/T445.hs +2/−1
- tests/compile-and-dump/Singletons/T450.golden +33/−96
- tests/compile-and-dump/Singletons/T450.hs +1/−19
- tests/compile-and-dump/Singletons/T470.golden +10/−6
- tests/compile-and-dump/Singletons/T480.golden +14/−0
- tests/compile-and-dump/Singletons/T480.hs +8/−0
- tests/compile-and-dump/Singletons/T487.golden +73/−0
- tests/compile-and-dump/Singletons/T487.hs +40/−0
- tests/compile-and-dump/Singletons/T489.golden +60/−0
- tests/compile-and-dump/Singletons/T489.hs +14/−0
- tests/compile-and-dump/Singletons/T492.golden +0/−0
- tests/compile-and-dump/Singletons/T492.hs +25/−0
- tests/compile-and-dump/Singletons/T54.golden +4/−4
- tests/compile-and-dump/Singletons/TopLevelPatterns.golden +25/−18
CHANGES.md view
@@ -1,6 +1,48 @@ Changelog for the `singletons-base` project =========================================== +3.1 [2021.10.30]+----------------+* Require building with GHC 9.2.+* `singletons-base` now supports type-level `Char`s, a feature added in+ GHC 9.2. In particular:++ * Promoting and singling character literal expressions (e.g., `f = 'a'`) is+ now supported. Promoting (but not singling) character patterns+ (e.g., `g 'a' = ()`) is also supported.+ * `GHC.TypeLits.Singletons` now offers singled versions of the `ConsSymbol`,+ `UnconsSymbol`, `CharToNat`, and `NatToChar` type families that were+ introduced to `GHC.TypeLits` in GHC 9.2.+ * `Text.Show.Singletons` now makes use of type-level `Char`s, a feature added+ in GHC 9.2. As a result, there is no longer any need for the `SChar` type+ synonym, so it has been removed.+ * The `PShow` and `SShow` instances for `Symbol` now display escape characters+ properly rather than returning the input `Symbol` unchanged.++* In GHC 9.2, `Nat` is now a synonym for `Natural`. As a result, the bogus+ `Num`, `Eq`, `Ord`, `Enum`, and `Show` instances for `Nat` in+ `GHC.TypeLits.Singletons` have been removed, as they have replaced by the+ corresponding instances for `Natural`.+* Add `Data.Functor.{Compose,Product,Sum}.Singletons`.+* The types of various entities in `Data.Functor.Const.Singletons` and+ `Data.Proxy.Singletons` have been tweaked slightly such that their+ specificities match their term-level counterparts:++ ```diff+ -SConst :: forall {k} {a} {b :: k} (x :: a). Sing x -> Sing ('Const @a @b x)+ +SConst :: forall {k} a (b :: k) (x :: a). Sing x -> Sing ('Const @a @b x)++ -type ConstSym0 :: forall k a (b :: k). a ~> Const a b+ +type ConstSym0 :: forall {k} a (b :: k). a ~> Const a b++ -type ConstSym1 :: forall k a (b :: k). a -> Const a b+ +type ConstSym1 :: forall {k} a (b :: k). a -> Const a b++ -type ProxySym0 :: forall k (t :: k). Proxy t+ +type ProxySym0 :: forall {k} (t :: k). Proxy t+ ```+* Define instances of `SingI1` and `SingI2` when possible.+ 3.0 [2021.03.12] ---------------- * The `singletons` library has been split into three libraries:
README.md view
@@ -18,7 +18,7 @@ `singletons-base` uses code that relies on bleeding-edge GHC language extensions. As such, `singletons-base` only supports the latest major version-of GHC (currently GHC 9.0). For more information,+of GHC (currently GHC 9.2). For more information, consult the `singletons` [`README`](https://github.com/goldfirere/singletons/blob/master/README.md).
Setup.hs view
@@ -3,7 +3,7 @@ import Control.Monad -import Data.List+import qualified Data.List as List import Data.String import Distribution.PackageDescription@@ -128,8 +128,8 @@ -- -- Note: we `nub`, because it's unclear if that's ok to have duplicate -- modules in the lists.- om' = nub $ mn : om- am' = nub $ mn : am+ om' = List.nub $ mn : om+ am' = List.nub $ mn : am mn = fromString buildSingletonsBaseModule
singletons-base.cabal view
@@ -1,5 +1,5 @@ name: singletons-base-version: 3.0+version: 3.1 cabal-version: 1.24 synopsis: A promoted and singled version of the base library homepage: http://www.github.com/goldfirere/singletons@@ -8,7 +8,7 @@ maintainer: Ryan Scott <ryan.gl.scott@gmail.com> bug-reports: https://github.com/goldfirere/singletons/issues stability: experimental-tested-with: GHC == 9.0.1+tested-with: GHC == 9.2.1 extra-source-files: README.md, CHANGES.md, tests/README.md, tests/compile-and-dump/GradingClient/*.hs, tests/compile-and-dump/InsertionSort/*.hs,@@ -38,7 +38,7 @@ . @singletons-base@ uses code that relies on bleeding-edge GHC language extensions. As such, @singletons-base@ only supports the latest major version- of GHC (currently GHC 9.0). For more information,+ of GHC (currently GHC 9.2). For more information, consult the @singletons@ @<https://github.com/goldfirere/singletons/blob/master/README.md README>@. .@@ -55,7 +55,7 @@ type: git location: https://github.com/goldfirere/singletons.git subdir: singletons-base- tag: v3.0+ tag: v3.1 source-repository head type: git@@ -65,20 +65,20 @@ custom-setup setup-depends:- base >= 4.15 && < 4.16,- Cabal >= 3.0 && < 3.5,+ base >= 4.16 && < 4.17,+ Cabal >= 3.0 && < 3.7, directory >= 1, filepath >= 1.3 library hs-source-dirs: src- build-depends: base >= 4.15 && < 4.16,+ build-depends: base >= 4.16 && < 4.17, pretty,- singletons == 3.0.*,- singletons-th == 3.0.*,- template-haskell >= 2.17 && < 2.18,+ singletons == 3.0.1,+ singletons-th == 3.1.*,+ template-haskell >= 2.18 && < 2.19, text >= 1.2,- th-desugar >= 1.12 && < 1.13+ th-desugar >= 1.13 && < 1.14 default-language: Haskell2010 other-extensions: TemplateHaskell exposed-modules: Data.Singletons.Base.CustomStar@@ -97,9 +97,12 @@ Data.Eq.Singletons Data.Foldable.Singletons Data.Function.Singletons+ Data.Functor.Compose.Singletons Data.Functor.Const.Singletons Data.Functor.Identity.Singletons+ Data.Functor.Product.Singletons Data.Functor.Singletons+ Data.Functor.Sum.Singletons Data.List.Singletons Data.List.NonEmpty.Singletons Data.Maybe.Singletons@@ -150,7 +153,7 @@ main-is: SingletonsBaseTestSuite.hs other-modules: SingletonsBaseTestSuiteUtils - build-depends: base >= 4.15 && < 4.16,+ build-depends: base >= 4.16 && < 4.17, bytestring >= 0.10.9, deepseq >= 1.4.4, filepath >= 1.3,
src/Control/Monad/Singletons.hs view
@@ -212,21 +212,21 @@ -- -| @'replicateM' n act@ performs the action @n@ times, -- gathering the results.- replicateM :: forall m a. (Applicative m) => Nat -> m a -> m [a]+ replicateM :: forall m a. (Applicative m) => Natural -> m a -> m [a] replicateM cnt0 f = loop cnt0 where- loop :: Nat -> m [a]+ loop :: Natural -> m [a] loop cnt | cnt <= 0 = pure [] | otherwise = liftA2 (:) f (loop (cnt - 1)) -- -| Like 'replicateM', but discards the result.- replicateM_ :: forall m a. (Applicative m) => Nat -> m a -> m ()+ replicateM_ :: forall m a. (Applicative m) => Natural -> m a -> m () replicateM_ cnt0 f = loop cnt0 where- loop :: Nat -> m ()+ loop :: Natural -> m () loop cnt | cnt <= 0 = pure () | otherwise = f *> loop (cnt - 1)
src/Data/Bool/Singletons.hs view
@@ -104,3 +104,9 @@ sing = singFun2 $ sIf (sing @c) instance (SingI c, SingI t) => SingI (IfSym2 c t) where sing = singFun1 $ sIf (sing @c) (sing @t)+instance SingI1 IfSym1 where+ liftSing s = singFun2 $ sIf s+instance SingI c => SingI1 (IfSym2 c) where+ liftSing s = singFun1 $ sIf (sing @c) s+instance SingI2 IfSym2 where+ liftSing2 s1 s2 = singFun1 $ sIf s1 s2
src/Data/Eq/Singletons.hs view
@@ -87,7 +87,7 @@ -- @ -- -- 'DefaultEq' is most suited for data types that are not inductively defined.--- Three concrete examples of this are 'Lit.Nat', 'Lit.Symbol', and+-- Four concrete examples of this are 'Natural', 'Lit.Symbol', 'Lit.Char', and -- 'Kind.Type'. One cannot implement boolean equality for these types by -- pattern matching alone, so 'DefaultEq' is a good fit instead. --
src/Data/Foldable/Singletons.hs view
@@ -351,7 +351,7 @@ -- -| Returns the size/length of a finite structure as an 'Int'. The -- default implementation is optimized for structures that are similar to -- cons-lists, because there is no general way to do better.- length :: t a -> Nat+ length :: t a -> Natural length = foldl' (\c _ -> c+1) 0 -- -| Does the element occur in the structure?@@ -466,7 +466,7 @@ -- kind-polymorphic, but Length is only defined when `a` is of kind -- `Type`! Ugh. To force GHC to come to its senses, we explicitly inform -- it that `a :: Type` through our own instance signature.- length :: forall (a :: Type). Proxy a -> Nat+ length :: forall (a :: Type). Proxy a -> Natural length _ = 0 null :: forall (a :: Type). Proxy a -> Bool
+ src/Data/Functor/Compose/Singletons.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneKindSignatures #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-}+{-# OPTIONS_GHC -Wno-orphans #-}++-----------------------------------------------------------------------------+-- |+-- Module : Data.Functor.Compose.Singletons+-- Copyright : (C) 2021 Ryan Scott+-- License : BSD-style (see LICENSE)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu)+-- Stability : experimental+-- Portability : non-portable+--+-- Exports the promoted and singled versions of the 'Compose' data type.+--+-----------------------------------------------------------------------------++module Data.Functor.Compose.Singletons (+ -- * The 'Compose' singleton+ Sing, SCompose(..), GetCompose, sGetCompose,++ -- * Defunctionalization symbols+ ComposeSym0, ComposeSym1,+ GetComposeSym0, GetComposeSym1+ ) where++import Control.Applicative+import Control.Applicative.Singletons+import Data.Foldable.Singletons+import Data.Functor.Compose+import Data.Functor.Singletons+import Data.Kind+import Data.Singletons+import Data.Singletons.TH+import Data.Traversable.Singletons++{-+In order to keep the type arguments to Compose poly-kinded and with inferred+specificities, we define the singleton version of Compose, as well as its+defunctionalization symbols, by hand. This is very much in the spirit of the+code in Data.Functor.Const.Singletons. (See the comments above SConst in that+module for more details on this choice.)+-}+infixr 9 `SCompose`+type SCompose :: Compose f g a -> Type+data SCompose :: Compose f g a -> Type where+ SCompose :: forall f g a (x :: f (g a)).+ Sing x -> SCompose ('Compose @f @g @a x)+type instance Sing = SCompose+instance SingI x => SingI ('Compose x) where+ sing = SCompose sing+instance SingI1 'Compose where+ liftSing = SCompose++infixr 9 `ComposeSym0`+type ComposeSym0 :: f (g a) ~> Compose f g a+data ComposeSym0 z+type instance Apply ComposeSym0 x = 'Compose x+instance SingI ComposeSym0 where+ sing = singFun1 SCompose++infixr 9 `ComposeSym1`+type ComposeSym1 :: f (g a) -> Compose f g a+type family ComposeSym1 x where+ ComposeSym1 x = 'Compose x++$(singletonsOnly [d|+ getCompose :: Compose f g a -> f (g a)+ getCompose (Compose x) = x++ instance (Functor f, Functor g) => Functor (Compose f g) where+ fmap f (Compose x) = Compose (fmap (fmap f) x)+ a <$ (Compose x) = Compose (fmap (a <$) x)++ instance (Foldable f, Foldable g) => Foldable (Compose f g) where+ foldMap f (Compose t) = foldMap (foldMap f) t++ instance (Traversable f, Traversable g) => Traversable (Compose f g) where+ traverse f (Compose t) = Compose <$> traverse (traverse f) t++ instance (Applicative f, Applicative g) => Applicative (Compose f g) where+ pure x = Compose (pure (pure x))+ Compose f <*> Compose x = Compose (liftA2 (<*>) f x)+ liftA2 f (Compose x) (Compose y) =+ Compose (liftA2 (liftA2 f) x y)++ instance (Alternative f, Applicative g) => Alternative (Compose f g) where+ empty = Compose empty+ Compose x <|> Compose y = Compose (x <|> y)+ |])
src/Data/Functor/Const/Singletons.hs view
@@ -68,14 +68,19 @@ Assumes that `b` is of kind Type. Until we get a more reliable story for poly-kinded Sing instances (see #150), we simply write the singleton type by-hand. Note that we cannot use genSingletons to generate this code because we+hand.++Note that we cannot use genSingletons to generate this code because we would end up with the wrong specificity for the kind of `a` when singling the Const constructor. See Note [Preserve the order of type variables during-singling] in D.S.TH.Single.Type, wrinkle 2.+singling] in D.S.TH.Single.Type, wrinkle 2. Similarly, we must define the+defunctionalization symbols for the Const data constructor by hand to get the+specificities right. -} type SConst :: Const a b -> Type data SConst :: Const a b -> Type where- SConst :: Sing a -> SConst ('Const a)+ SConst :: forall {k} a (b :: k) (x :: a).+ Sing x -> SConst ('Const @a @b x) type instance Sing = SConst instance SingKind a => SingKind (Const a b) where type Demote (Const a b) = Const (Demote a) b@@ -83,10 +88,18 @@ toSing (Const a) = withSomeSing a $ SomeSing . SConst instance SingI a => SingI ('Const a) where sing = SConst sing+instance SingI1 'Const where+ liftSing = SConst -$(genDefunSymbols [''Const])+type ConstSym0 :: a ~> Const a b+data ConstSym0 z+type instance Apply ConstSym0 x = 'Const x instance SingI ConstSym0 where sing = singFun1 SConst++type ConstSym1 :: a -> Const a b+type family ConstSym1 x where+ ConstSym1 x = 'Const x $(singletonsOnly [d| getConst :: Const a b -> a
+ src/Data/Functor/Product/Singletons.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneKindSignatures #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-}+{-# OPTIONS_GHC -Wno-orphans #-}++-----------------------------------------------------------------------------+-- |+-- Module : Data.Functor.Product.Singletons+-- Copyright : (C) 2021 Ryan Scott+-- License : BSD-style (see LICENSE)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu)+-- Stability : experimental+-- Portability : non-portable+--+-- Exports the promoted and singled versions of the 'Product' data type.+--+-----------------------------------------------------------------------------++module Data.Functor.Product.Singletons (+ -- * The 'Product' singleton+ Sing, SProduct(..),++ -- * Defunctionalization symbols+ PairSym0, PairSym1, PairSym2+ ) where++import Control.Applicative+import Control.Applicative.Singletons+import Control.Monad+import Control.Monad.Singletons+import Control.Monad.Zip+import Control.Monad.Zip.Singletons+import Data.Foldable.Singletons hiding (Product)+import Data.Function.Singletons+import Data.Functor.Product+import Data.Kind+import Data.Monoid.Singletons hiding (SProduct(..))+import Data.Singletons+import Data.Singletons.TH+import Data.Traversable.Singletons++{-+In order to keep the type arguments to Product poly-kinded and with inferred+specificities, we define the singleton version of Product, as well as its+defunctionalization symbols, by hand. This is very much in the spirit of the+code in Data.Functor.Const.Singletons. (See the comments above SConst in that+module for more details on this choice.)+-}+type SProduct :: Product f g a -> Type+data SProduct :: Product f g a -> Type where+ SPair :: forall f g a (x :: f a) (y :: g a).+ Sing x -> Sing y -> SProduct ('Pair @f @g @a x y)+type instance Sing = SProduct+instance (SingI x, SingI y) => SingI ('Pair x y) where+ sing = SPair sing sing+instance SingI x => SingI1 ('Pair x) where+ liftSing = SPair sing+instance SingI2 'Pair where+ liftSing2 = SPair++type PairSym0 :: forall f g a. f a ~> g a ~> Product f g a+data PairSym0 z+type instance Apply PairSym0 x = PairSym1 x+instance SingI PairSym0 where+ sing = singFun2 SPair++type PairSym1 :: forall f g a. f a -> g a ~> Product f g a+data PairSym1 fa z+type instance Apply (PairSym1 x) y = 'Pair x y+instance SingI x => SingI (PairSym1 x) where+ sing = singFun1 $ SPair (sing @x)+instance SingI1 PairSym1 where+ liftSing s = singFun1 $ SPair s++type PairSym2 :: forall f g a. f a -> g a -> Product f g a+type family PairSym2 x y where+ PairSym2 x y = 'Pair x y++$(singletonsOnly [d|+ instance (Functor f, Functor g) => Functor (Product f g) where+ fmap f (Pair x y) = Pair (fmap f x) (fmap f y)+ a <$ (Pair x y) = Pair (a <$ x) (a <$ y)++ instance (Foldable f, Foldable g) => Foldable (Product f g) where+ foldMap f (Pair x y) = foldMap f x `mappend` foldMap f y++ instance (Traversable f, Traversable g) => Traversable (Product f g) where+ traverse f (Pair x y) = liftA2 Pair (traverse f x) (traverse f y)++ instance (Applicative f, Applicative g) => Applicative (Product f g) where+ pure x = Pair (pure x) (pure x)+ Pair f g <*> Pair x y = Pair (f <*> x) (g <*> y)+ liftA2 f (Pair a b) (Pair x y) = Pair (liftA2 f a x) (liftA2 f b y)++ instance (Alternative f, Alternative g) => Alternative (Product f g) where+ empty = Pair empty empty+ Pair x1 y1 <|> Pair x2 y2 = Pair (x1 <|> x2) (y1 <|> y2)++ instance (Monad f, Monad g) => Monad (Product f g) where+ Pair m n >>= f = Pair (m >>= fstP . f) (n >>= sndP . f)+ where+ fstP (Pair a _) = a+ sndP (Pair _ b) = b++ instance (MonadPlus f, MonadPlus g) => MonadPlus (Product f g) where+ mzero = Pair mzero mzero+ Pair x1 y1 `mplus` Pair x2 y2 = Pair (x1 `mplus` x2) (y1 `mplus` y2)++ instance (MonadZip f, MonadZip g) => MonadZip (Product f g) where+ mzipWith f (Pair x1 y1) (Pair x2 y2) = Pair (mzipWith f x1 x2) (mzipWith f y1 y2)+ |])
+ src/Data/Functor/Sum/Singletons.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneKindSignatures #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-}+{-# OPTIONS_GHC -Wno-orphans #-}++-----------------------------------------------------------------------------+-- |+-- Module : Data.Functor.Sum.Singletons+-- Copyright : (C) 2021 Ryan Scott+-- License : BSD-style (see LICENSE)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu)+-- Stability : experimental+-- Portability : non-portable+--+-- Exports the promoted and singled versions of the 'Sum' data type.+--+-----------------------------------------------------------------------------++module Data.Functor.Sum.Singletons (+ -- * The 'Product' singleton+ Sing, SSum(..),++ -- * Defunctionalization symbols+ InLSym0, InLSym1,+ InRSym0, InRSym1,+ ) where++import Data.Foldable.Singletons hiding (Sum)+import Data.Functor.Singletons+import Data.Functor.Sum+import Data.Kind+import Data.Singletons+import Data.Singletons.TH+import Data.Traversable.Singletons++{-+In order to keep the type arguments to Sum poly-kinded and with inferred+specificities, we define the singleton version of Sum, as well as its+defunctionalization symbols, by hand. This is very much in the spirit of the+code in Data.Functor.Const.Singletons. (See the comments above SConst in that+module for more details on this choice.)+-}+type SSum :: Sum f g a -> Type+data SSum :: Sum f g a -> Type where+ SInL :: forall f g a (x :: f a).+ Sing x -> SSum ('InL @f @g @a x)+ SInR :: forall f g a (y :: g a).+ Sing y -> SSum ('InR @f @g @a y)+type instance Sing = SSum+instance SingI x => SingI ('InL x) where+ sing = SInL sing+instance SingI1 'InL where+ liftSing = SInL+instance SingI y => SingI ('InR y) where+ sing = SInR sing+instance SingI1 'InR where+ liftSing = SInR++type InLSym0 :: forall f g a. f a ~> Sum f g a+data InLSym0 z+type instance Apply InLSym0 x = 'InL x+instance SingI InLSym0 where+ sing = singFun1 SInL++type InLSym1 :: forall f g a. f a -> Sum f g a+type family InLSym1 x where+ InLSym1 x = 'InL x++type InRSym0 :: forall f g a. g a ~> Sum f g a+data InRSym0 z+type instance Apply InRSym0 y = 'InR y+instance SingI InRSym0 where+ sing = singFun1 SInR++type InRSym1 :: forall f g a. g a -> Sum f g a+type family InRSym1 x where+ InRSym1 y = 'InR y++$(singletonsOnly [d|+ instance (Functor f, Functor g) => Functor (Sum f g) where+ fmap f (InL x) = InL (fmap f x)+ fmap f (InR y) = InR (fmap f y)++ a <$ (InL x) = InL (a <$ x)+ a <$ (InR y) = InR (a <$ y)++ instance (Foldable f, Foldable g) => Foldable (Sum f g) where+ foldMap f (InL x) = foldMap f x+ foldMap f (InR y) = foldMap f y++ instance (Traversable f, Traversable g) => Traversable (Sum f g) where+ traverse f (InL x) = InL <$> traverse f x+ traverse f (InR y) = InR <$> traverse f y+ |])
src/Data/List/NonEmpty/Singletons.hs view
@@ -179,7 +179,7 @@ fmap f (x :| xs) = f x :| listmap f xs -- -| Number of elements in 'NonEmpty' list.- length :: NonEmpty a -> Nat+ length :: NonEmpty a -> Natural length (_ :| xs) = 1 + listlength xs -- -| Compute n-ary logic exclusive OR operation on 'NonEmpty' list.@@ -352,12 +352,12 @@ -} -- -| @'take' n xs@ returns the first @n@ elements of @xs@.- take :: Nat -> NonEmpty a -> [a]+ take :: Natural -> NonEmpty a -> [a] take n = listtake n . toList -- -| @'drop' n xs@ drops the first @n@ elements off the front of -- the sequence @xs@.- drop :: Nat -> NonEmpty a -> [a]+ drop :: Natural -> NonEmpty a -> [a] drop n = listdrop n . toList -- -| @'splitAt' n xs@ returns a pair consisting of the prefix of @xs@@@ -365,7 +365,7 @@ -- -- > 'splitAt' n xs == ('take' n xs, 'drop' n xs) -- > xs == ys ++ zs where (ys, zs) = 'splitAt' n xs- splitAt :: Nat -> NonEmpty a -> ([a],[a])+ splitAt :: Natural -> NonEmpty a -> ([a],[a]) splitAt n = listsplitAt n . toList -- -| @'takeWhile' p xs@ returns the longest prefix of the stream@@ -461,7 +461,7 @@ -- @n@. Note that the head of the stream has index 0. -- -- /Beware/: a negative or out-of-bounds index will cause an error.- (!!) :: NonEmpty a -> Nat -> a+ (!!) :: NonEmpty a -> Natural -> a (!!) (x :| xs) n | n == 0 = x | n > 0 = xs `listindex` (n - 1)
src/Data/List/Singletons/Internal.hs view
@@ -361,23 +361,23 @@ -- These three rely on findIndices, which does not promote. -- Since we have our own implementation of findIndices these are perfectly valid- elemIndex :: Eq a => a -> [a] -> Maybe Nat+ elemIndex :: Eq a => a -> [a] -> Maybe Natural elemIndex x = findIndex (x==) - elemIndices :: Eq a => a -> [a] -> [Nat]+ elemIndices :: Eq a => a -> [a] -> [Natural] elemIndices x = findIndices (x==) - findIndex :: (a -> Bool) -> [a] -> Maybe Nat+ findIndex :: (a -> Bool) -> [a] -> Maybe Natural findIndex p = listToMaybe . findIndices p -- Uses infinite lists and and Ints -- findIndices :: (a -> Bool) -> [a] -> [Int] -- findIndices p xs = [ i | (x,i) <- zip xs [0..], p x] - findIndices :: (a -> Bool) -> [a] -> [Nat]+ findIndices :: (a -> Bool) -> [a] -> [Natural] findIndices p xs = map snd (filter (\(x,_) -> p x) (zip xs (buildList 0 xs)))- where buildList :: Nat -> [b] -> [Nat]+ where buildList :: Natural -> [b] -> [Natural] buildList _ [] = [] buildList a (_:rest) = a : buildList (a+1) rest @@ -426,15 +426,15 @@ -- splitAt :: Int -> [a] -> ([a],[a]) -- splitAt n xs = (take n xs, drop n xs) - take :: Nat -> [a] -> [a]+ take :: Natural -> [a] -> [a] take _ [] = [] take n (x:xs) = if n == 0 then [] else x : take (n-1) xs - drop :: Nat -> [a] -> [a]+ drop :: Natural -> [a] -> [a] drop _ [] = [] drop n (x:xs) = if n == 0 then x:xs else drop (n-1) xs - splitAt :: Nat -> [a] -> ([a],[a])+ splitAt :: Natural -> [a] -> ([a],[a]) splitAt n xs = (take n xs, drop n xs) group :: Eq a => [a] -> [[a]]@@ -511,7 +511,7 @@ -- incLen :: a -> (Int# -> Int) -> Int# -> Int -- incLen _ g x = g (x +# 1#) - length :: [a] -> Nat+ length :: [a] -> Natural length [] = 0 length (_:xs) = 1 + length xs @@ -530,7 +530,7 @@ -- cycle [] = error "Data.Singletons.List.cycle: empty list" -- cycle xs = xs' where xs' = xs ++ xs' - replicate :: Nat -> a -> [a]+ replicate :: Natural -> a -> [a] replicate n x = if n == 0 then [] else x : replicate (n-1) x -- Uses partial pattern-matching in a list comprehension@@ -553,7 +553,7 @@ -- (x:_) !! 0 = x -- (_:xs) !! n = xs !! (n-1) - (!!) :: [a] -> Nat -> a+ (!!) :: [a] -> Natural -> a [] !! _ = error "Data.Singletons.List.!!: index too large" (x:xs) !! n = if n == 0 then x else xs !! (n-1) infixl 9 !!
src/Data/List/Singletons/Internal/Disambiguation.hs view
@@ -138,32 +138,32 @@ |]) $(singletonsOnly [d|- listtake :: Nat -> [a] -> [a]+ listtake :: Natural -> [a] -> [a] listtake = take - listdrop :: Nat -> [a] -> [a]+ listdrop :: Natural -> [a] -> [a] listdrop = drop - listsplitAt :: Nat -> [a] -> ([a], [a])+ listsplitAt :: Natural -> [a] -> ([a], [a]) listsplitAt = splitAt - listindex :: [a] -> Nat -> a+ listindex :: [a] -> Natural -> a listindex = (!!) listlength :: [a] -> Nat listlength = length |]) -listtake :: Nat -> [a] -> [a]+listtake :: Natural -> [a] -> [a] listtake = undefined -listdrop :: Nat -> [a] -> [a]+listdrop :: Natural -> [a] -> [a] listdrop = undefined -listsplitAt :: Nat -> [a] -> ([a], [a])+listsplitAt :: Natural -> [a] -> ([a], [a]) listsplitAt = undefined -listindex :: [a] -> Nat -> a+listindex :: [a] -> Natural -> a listindex = undefined listlength :: [a] -> Nat
src/Data/Proxy/Singletons.hs view
@@ -57,8 +57,9 @@ import Text.Show.Singletons {--In order to keep the type argument to Proxy poly-kinded, we define the-singleton version of Proxy by hand. This is very much in the spirit of the+In order to keep the type argument to Proxy poly-kinded and with an inferred+specificity, we define the singleton version of Proxy, as well as its+defunctionalization symbols, by hand. This is very much in the spirit of the code in Data.Functor.Const.Singletons. (See the comments above SConst in that module for more details on this choice.) -}@@ -73,7 +74,9 @@ instance SingI 'Proxy where sing = SProxy -$(genDefunSymbols [''Proxy])+type ProxySym0 :: Proxy t+type family ProxySym0 where+ ProxySym0 = 'Proxy instance SDecide (Proxy t) where SProxy %~ SProxy = Proved Refl
src/Data/Singletons/Base/Enum.hs view
@@ -52,6 +52,10 @@ $(singletonsOnly [d| class Bounded a where minBound, maxBound :: a++ instance Bounded Char where+ minBound = '\0'+ maxBound = '\x10FFFF' |]) $(singBoundedInstances boundedBasicTypes)@@ -62,10 +66,10 @@ succ :: a -> a -- | the predecessor of a value. For numeric types, 'pred' subtracts 1. pred :: a -> a- -- | Convert from a 'Nat'.- toEnum :: Nat -> a- -- | Convert to a 'Nat'.- fromEnum :: a -> Nat+ -- | Convert from a 'Natural'.+ toEnum :: Natural -> a+ -- | Convert to a 'Natural'.+ fromEnum :: a -> Natural -- The following use infinite lists, and are not promotable: -- -- | Used in Haskell's translation of @[n..]@.@@ -85,22 +89,22 @@ enumFromTo x y = map toEnum [fromEnum x .. fromEnum y] enumFromThenTo x1 x2 y = map toEnum [fromEnum x1, fromEnum x2 .. fromEnum y] - -- Nat instance for Enum- eftNat :: Nat -> Nat -> [Nat]+ -- Natural instance for Enum+ eftNat :: Natural -> Natural -> [Natural] -- [x1..x2] eftNat x0 y | (x0 > y) = [] | otherwise = go x0 where go x = x : if (x == y) then [] else go (x + 1) - efdtNat :: Nat -> Nat -> Nat -> [Nat]+ efdtNat :: Natural -> Natural -> Natural -> [Natural] -- [x1,x2..y] efdtNat x1 x2 y | x2 >= x1 = efdtNatUp x1 x2 y | otherwise = efdtNatDn x1 x2 y -- Requires x2 >= x1- efdtNatUp :: Nat -> Nat -> Nat -> [Nat]+ efdtNatUp :: Natural -> Natural -> Natural -> [Natural] efdtNatUp x1 x2 y -- Be careful about overflow! | y < x2 = if y < x1 then [] else [x1] | otherwise = -- Common case: x1 <= x2 <= y@@ -115,7 +119,7 @@ in x1 : go_up x2 -- Requires x2 <= x1- efdtNatDn :: Nat -> Nat -> Nat -> [Nat]+ efdtNatDn :: Natural -> Natural -> Natural -> [Natural] efdtNatDn x1 x2 y -- Be careful about underflow! | y > x2 = if y > x1 then [] else [x1] | otherwise = -- Common case: x1 >= x2 >= y@@ -129,7 +133,7 @@ | otherwise = x : go_dn (x + delta) in x1 : go_dn x2 - instance Enum Nat where+ instance Enum Natural where succ x = x + 1 pred x = x - 1 @@ -138,6 +142,10 @@ enumFromTo = eftNat enumFromThenTo = efdtNat++ instance Enum Char where+ toEnum = natToChar+ fromEnum = charToNat |]) $(singEnumInstances enumBasicTypes)
src/Data/Singletons/Base/TypeError.hs view
@@ -107,15 +107,27 @@ instance SingI t => SingI ('Text t :: PErrorMessage) where sing = SText sing+instance SingI1 ('Text :: Symbol -> PErrorMessage) where+ liftSing = SText instance SingI ty => SingI ('ShowType ty :: PErrorMessage) where sing = SShowType sing+instance SingI1 ('ShowType :: t -> PErrorMessage) where+ liftSing = SShowType instance (SingI e1, SingI e2) => SingI (e1 ':<>: e2 :: PErrorMessage) where sing = sing :%<>: sing+instance SingI e1 => SingI1 ('(:<>:) e1 :: PErrorMessage -> PErrorMessage) where+ liftSing s = sing :%<>: s+instance SingI2 ('(:<>:) :: PErrorMessage -> PErrorMessage -> PErrorMessage) where+ liftSing2 s1 s2 = s1 :%<>: s2 instance (SingI e1, SingI e2) => SingI (e1 ':$$: e2 :: PErrorMessage) where sing = sing :%$$: sing+instance SingI e1 => SingI1 ('(:$$:) e1 :: PErrorMessage -> PErrorMessage) where+ liftSing s = sing :%$$: s+instance SingI2 ('(:$$:) :: PErrorMessage -> PErrorMessage -> PErrorMessage) where+ liftSing2 s1 s2 = s1 :%$$: s2 -- | Convert an 'ErrorMessage' into a human-readable 'String'. showErrorMessage :: ErrorMessage -> String@@ -169,11 +181,15 @@ sing = singFun2 (:%<>:) instance SingI x => SingI ((:<>:@#@$$) x :: PErrorMessage ~> PErrorMessage) where sing = singFun1 (sing @x :%<>:)+instance SingI1 ((:<>:@#@$$) :: PErrorMessage -> PErrorMessage ~> PErrorMessage) where+ liftSing s = singFun1 (s :%<>:) instance SingI ((:$$:@#@$) :: PErrorMessage ~> PErrorMessage ~> PErrorMessage) where sing = singFun2 (:%$$:) instance SingI x => SingI ((:$$:@#@$$) x :: PErrorMessage ~> PErrorMessage) where sing = singFun1 (sing @x :%$$:)+instance SingI1 ((:$$:@#@$$) :: PErrorMessage -> PErrorMessage ~> PErrorMessage) where+ liftSing s = singFun1 (s :%$$:) instance SingI TypeErrorSym0 where sing = singFun1 sTypeError
src/GHC/Num/Singletons.hs view
@@ -17,7 +17,7 @@ -- "GHC.Num". -- -- Be warned that some of the associated type families in the 'PNum' class--- (@(+)@, @(-)@, and @(*)@) clash with their counterparts for 'Nat' in the+-- (@(+)@, @(-)@, and @(*)@) clash with their counterparts for 'Natural' in the -- "GHC.TypeLits" module. ---------------------------------------------------------------------------- @@ -66,8 +66,8 @@ -- For real numbers, the 'signum' is either @-1@ (negative), @0@ (zero) -- or @1@ (positive). signum :: a -> a- -- Conversion from a 'Nat'.- fromInteger :: Nat -> a+ -- Conversion from a 'Natural'.+ fromInteger :: Natural -> a x - y = x + negate y @@ -88,22 +88,22 @@ |]) -- PNum instance-type SignumNat :: Nat -> Nat+type SignumNat :: Natural -> Natural type family SignumNat a where SignumNat 0 = 0 SignumNat x = 1 -instance PNum Nat where+instance PNum Natural where type a + b = a TN.+ b type a - b = a TN.- b type a * b = a TN.* b- type Negate (a :: Nat) = Error "Cannot negate a natural number"- type Abs (a :: Nat) = a+ type Negate (a :: Natural) = Error "Cannot negate a natural number"+ type Abs (a :: Natural) = a type Signum a = SignumNat a type FromInteger a = a -- SNum instance-instance SNum Nat where+instance SNum Natural where sa %+ sb = let a = fromSing sa b = fromSing sb
src/GHC/TypeLits/Singletons.hs view
@@ -11,20 +11,23 @@ -- Stability : experimental -- Portability : non-portable ----- Defines and exports singletons useful for the Nat and Symbol kinds.+-- Defines and exports singletons useful for the Natural, Symbol, and Char+-- kinds. -- ---------------------------------------------------------------------------- {-# OPTIONS_GHC -Wno-orphans #-} module GHC.TypeLits.Singletons (- Nat, Symbol,- Sing, SNat(..), SSymbol(..), withKnownNat, withKnownSymbol,+ Natural, Symbol, Char,+ Sing, SNat(..), SSymbol(..), SChar(..),+ withKnownNat, withKnownSymbol, withKnownChar, Error, sError, ErrorWithoutStackTrace, sErrorWithoutStackTrace, Undefined, sUndefined, KnownNat, natVal, KnownSymbol, symbolVal,+ KnownChar, charVal, type (^), (%^), type (<=?), (%<=?),@@ -33,12 +36,18 @@ Div, sDiv, Mod, sMod, DivMod, sDivMod, Quot, sQuot, Rem, sRem, QuotRem, sQuotRem, + consSymbol, ConsSymbol, sConsSymbol,+ unconsSymbol, UnconsSymbol, sUnconsSymbol,+ charToNat, CharToNat, sCharToNat,+ natToChar, NatToChar, sNatToChar,+ -- * Defunctionalization symbols ErrorSym0, ErrorSym1, ErrorWithoutStackTraceSym0, ErrorWithoutStackTraceSym1, UndefinedSym0, KnownNatSym0, KnownNatSym1, KnownSymbolSym0, KnownSymbolSym1,+ KnownCharSym0, KnownCharSym1, type (^@#@$), type (^@#@$$), type (^@#@$$$), type (<=?@#@$), type (<=?@#@$$), type (<=?@#@$$$), Log2Sym0, Log2Sym1,@@ -47,46 +56,27 @@ DivModSym0, DivModSym1, DivModSym2, QuotSym0, QuotSym1, QuotSym2, RemSym0, RemSym1, RemSym2,- QuotRemSym0, QuotRemSym1, QuotRemSym2+ QuotRemSym0, QuotRemSym1, QuotRemSym2,+ ConsSymbolSym0, ConsSymbolSym1, ConsSymbolSym2,+ UnconsSymbolSym0, UnconsSymbolSym1,+ CharToNatSym0, CharToNatSym1,+ NatToCharSym0, NatToCharSym1 ) where +import Data.Char (chr, ord)+import qualified Data.List as L (uncons) import Data.Singletons import Data.Singletons.TH import Data.String (IsString(..))+import qualified Data.Text as T import Data.Tuple.Singletons+import GHC.TypeLits ( CharToNat, ConsSymbol, NatToChar, SomeChar(..)+ , SomeSymbol(..), UnconsSymbol, someCharVal, someSymbolVal ) import GHC.TypeLits.Singletons.Internal import qualified GHC.TypeNats as TN import GHC.TypeNats (Div, Mod, SomeNat(..))-import Numeric.Natural (Natural) import Unsafe.Coerce --- | This bogus 'Num' instance is helpful for people who want to define--- functions over Nats that will only be used at the type level or--- as singletons. A correct SNum instance for Nat singletons exists.-instance Num Nat where- (+) = no_term_level_nats- (-) = no_term_level_nats- (*) = no_term_level_nats- negate = no_term_level_nats- abs = no_term_level_nats- signum = no_term_level_nats- fromInteger = no_term_level_nats--instance Eq Nat where- (==) = no_term_level_nats--instance Ord Nat where- compare = no_term_level_nats--instance Enum Nat where- toEnum = no_term_level_nats- fromEnum = no_term_level_nats- enumFromTo = no_term_level_nats- enumFromThenTo = no_term_level_nats--instance Show Nat where- showsPrec = no_term_level_nats- -- | This bogus instance is helpful for people who want to define -- functions over Symbols that will only be used at the type level or -- as singletons.@@ -108,14 +98,11 @@ instance Show Symbol where showsPrec = no_term_level_syms -no_term_level_nats :: a-no_term_level_nats = error "The kind `Nat` may not be used at the term level."- no_term_level_syms :: a no_term_level_syms = error "The kind `Symbol` may not be used at the term level." -- These are often useful in TypeLits-heavy code-$(genDefunSymbols [''KnownNat, ''KnownSymbol])+$(genDefunSymbols [''KnownNat, ''KnownSymbol, ''KnownChar]) ------------------------------------------------------------ -- Log2, Div, Mod, DivMod, and friends@@ -167,6 +154,8 @@ sing = singFun2 sDiv instance SingI x => SingI (DivSym1 x) where sing = singFun1 $ sDiv (sing @x)+instance SingI1 DivSym1 where+ liftSing s = singFun1 $ sDiv s sMod :: Sing x -> Sing y -> Sing (Mod x y) sMod sx sy =@@ -181,19 +170,21 @@ sing = singFun2 sMod instance SingI x => SingI (ModSym1 x) where sing = singFun1 $ sMod $ sing @x+instance SingI1 ModSym1 where+ liftSing s = singFun1 $ sMod s $(promoteOnly [d|- divMod :: Nat -> Nat -> (Nat, Nat)+ divMod :: Natural -> Natural -> (Natural, Natural) divMod x y = (div x y, mod x y) - quotRem :: Nat -> Nat -> (Nat, Nat)+ quotRem :: Natural -> Natural -> (Natural, Natural) quotRem = divMod - quot :: Nat -> Nat -> Nat+ quot :: Natural -> Natural -> Natural quot = div infixl 7 `quot` - rem :: Nat -> Nat -> Nat+ rem :: Natural -> Natural -> Natural rem = mod infixl 7 `rem` |])@@ -219,3 +210,60 @@ sRem :: Sing x -> Sing y -> Sing (Rem x y) sRem = sMod infixl 7 `sRem`++consSymbol :: Char -> String -> String+consSymbol = (:)++sConsSymbol :: Sing x -> Sing y -> Sing (ConsSymbol x y)+sConsSymbol sx sy =+ let x = fromSing sx+ y = T.unpack (fromSing sy)+ res = someSymbolVal (consSymbol x y)+ in case res of+ SomeSymbol (_ :: Proxy res) -> unsafeCoerce (SSym :: Sing res)+$(genDefunSymbols [''ConsSymbol])+instance SingI ConsSymbolSym0 where+ sing = singFun2 sConsSymbol+instance SingI x => SingI (ConsSymbolSym1 x) where+ sing = singFun1 $ sConsSymbol $ sing @x+instance SingI1 ConsSymbolSym1 where+ liftSing s = singFun1 $ sConsSymbol s++unconsSymbol :: String -> Maybe (Char, String)+unconsSymbol = L.uncons++sUnconsSymbol :: Sing x -> Sing (UnconsSymbol x)+sUnconsSymbol sx =+ let x = T.unpack (fromSing sx)+ res = toSing (unconsSymbol x)+ in case res of+ SomeSing s -> unsafeCoerce s+$(genDefunSymbols [''UnconsSymbol])+instance SingI UnconsSymbolSym0 where+ sing = singFun1 sUnconsSymbol++charToNat :: Char -> Natural+charToNat = fromIntegral . ord++sCharToNat :: Sing x -> Sing (CharToNat x)+sCharToNat sx =+ let x = fromSing sx+ res = TN.someNatVal (charToNat x)+ in case res of+ SomeNat (_ :: Proxy res) -> unsafeCoerce (SNat :: Sing res)+$(genDefunSymbols [''CharToNat])+instance SingI CharToNatSym0 where+ sing = singFun1 sCharToNat++natToChar :: Natural -> Char+natToChar = chr . fromIntegral++sNatToChar :: Sing x -> Sing (NatToChar x)+sNatToChar sx =+ let x = fromSing sx+ res = someCharVal (natToChar x)+ in case res of+ SomeChar (_ :: Proxy res) -> unsafeCoerce (SChar :: Sing res)+$(genDefunSymbols [''NatToChar])+instance SingI NatToCharSym0 where+ sing = singFun1 sNatToChar
src/GHC/TypeLits/Singletons/Internal.hs view
@@ -7,8 +7,8 @@ -- Stability : experimental -- Portability : non-portable ----- Defines and exports singletons useful for the 'Nat' and 'Symbol' kinds.--- This exports the internal, unsafe constructors. Use import+-- Defines and exports singletons useful for the 'Natural', 'Symbol', and+-- 'Char' kinds. This exports the internal, unsafe constructors. Use import -- "GHC.TypeLits.Singletons" for a safe interface. -- ----------------------------------------------------------------------------@@ -22,12 +22,13 @@ module GHC.TypeLits.Singletons.Internal ( Sing, - Nat, Symbol,- SNat(..), SSymbol(..), withKnownNat, withKnownSymbol,+ Natural, Symbol, Char,+ SNat(..), SSymbol(..), SChar(..),+ withKnownNat, withKnownSymbol, withKnownChar, Error, sError, ErrorWithoutStackTrace, sErrorWithoutStackTrace, Undefined, sUndefined,- KnownNat, TN.natVal, KnownSymbol, symbolVal,+ KnownNat, TN.natVal, KnownSymbol, symbolVal, KnownChar, charVal, type (^), (%^), type (<=?), (%<=?), @@ -50,7 +51,6 @@ import GHC.Stack (HasCallStack) import GHC.TypeLits as TL import qualified GHC.TypeNats as TN-import Numeric.Natural (Natural) import Unsafe.Coerce import qualified Data.Text as T@@ -60,15 +60,15 @@ ---- TypeLits singletons --------------------------------------------- ---------------------------------------------------------------------- -type SNat :: Nat -> Type-data SNat (n :: Nat) = KnownNat n => SNat+type SNat :: Natural -> Type+data SNat (n :: Natural) = KnownNat n => SNat type instance Sing = SNat instance KnownNat n => SingI n where sing = SNat -instance SingKind Nat where- type Demote Nat = Natural+instance SingKind Natural where+ type Demote Natural = Natural fromSing (SNat :: Sing n) = TN.natVal (Proxy :: Proxy n) toSing n = case TN.someNatVal n of SomeNat (_ :: Proxy n) -> SomeSing (SNat :: Sing n)@@ -86,14 +86,27 @@ toSing s = case someSymbolVal (T.unpack s) of SomeSymbol (_ :: Proxy n) -> SomeSing (SSym :: Sing n) +type SChar :: Char -> Type+data SChar (c :: Char) = KnownChar c => SChar+type instance Sing = SChar++instance KnownChar c => SingI c where+ sing = SChar++instance SingKind Char where+ type Demote Char = Char+ fromSing (SChar :: Sing c) = charVal (Proxy :: Proxy c)+ toSing sc = case someCharVal sc of+ SomeChar (_ :: Proxy c) -> SomeSing (SChar :: Sing c)+ -- SDecide instances:-instance SDecide Nat where+instance SDecide Natural where (SNat :: Sing n) %~ (SNat :: Sing m) | Just r <- TN.sameNat (Proxy :: Proxy n) (Proxy :: Proxy m) = Proved r | otherwise = Disproved (\Refl -> error errStr)- where errStr = "Broken Nat singletons"+ where errStr = "Broken Natural singletons" instance SDecide Symbol where (SSym :: Sing n) %~ (SSym :: Sing m)@@ -103,14 +116,24 @@ = Disproved (\Refl -> error errStr) where errStr = "Broken Symbol singletons" +instance SDecide Char where+ (SChar :: Sing n) %~ (SChar :: Sing m)+ | Just r <- sameChar (Proxy :: Proxy n) (Proxy :: Proxy m)+ = Proved r+ | otherwise+ = Disproved (\Refl -> error errStr)+ where errStr = "Broken Char singletons"+ -- PEq instances-instance PEq Nat where+instance PEq Natural where type x == y = DefaultEq x y instance PEq Symbol where type x == y = DefaultEq x y+instance PEq Char where+ type x == y = DefaultEq x y -- need SEq instances for TypeLits kinds-instance SEq Nat where+instance SEq Natural where (SNat :: Sing n) %== (SNat :: Sing m) = case sameNat (Proxy :: Proxy n) (Proxy :: Proxy m) of Just Refl -> STrue@@ -122,15 +145,24 @@ Just Refl -> STrue Nothing -> unsafeCoerce SFalse +instance SEq Char where+ (SChar :: Sing n) %== (SChar :: Sing m)+ = case sameChar (Proxy :: Proxy n) (Proxy :: Proxy m) of+ Just Refl -> STrue+ Nothing -> unsafeCoerce SFalse+ -- POrd instances-instance POrd Nat where- type (a :: Nat) `Compare` (b :: Nat) = a `TN.CmpNat` b+instance POrd Natural where+ type (a :: Natural) `Compare` (b :: Natural) = a `TN.CmpNat` b instance POrd Symbol where type (a :: Symbol) `Compare` (b :: Symbol) = a `TL.CmpSymbol` b +instance POrd Char where+ type (a :: Char) `Compare` (b :: Char) = a `TL.CmpChar` b+ -- SOrd instances-instance SOrd Nat where+instance SOrd Natural where a `sCompare` b = case fromSing a `compare` fromSing b of LT -> unsafeCoerce SLT EQ -> unsafeCoerce SEQ@@ -142,10 +174,16 @@ EQ -> unsafeCoerce SEQ GT -> unsafeCoerce SGT +instance SOrd Char where+ a `sCompare` b = case fromSing a `compare` fromSing b of+ LT -> unsafeCoerce SLT+ EQ -> unsafeCoerce SEQ+ GT -> unsafeCoerce SGT+ -- Show instances -- These are a bit special because the singleton constructor does not uniquely--- determine the type being used in the constructor's return type (e.g., all Nats+-- determine the type being used in the constructor's return type (e.g., all Naturals -- have the same singleton constructor, SNat). To compensate for this, we display -- the type being used using visible type application. (Thanks to @cumber on #179 -- for suggesting this implementation.)@@ -164,6 +202,13 @@ . showsPrec appPrec1 (symbolVal s) ) +instance Show (SChar c) where+ showsPrec p s@SChar+ = showParen (p > appPrec)+ ( showString "SChar @"+ . showsPrec appPrec1 (charVal s)+ )+ -- Convenience functions -- | Given a singleton for @Nat@, call something requiring a@@ -176,6 +221,11 @@ withKnownSymbol :: Sing n -> (KnownSymbol n => r) -> r withKnownSymbol SSym f = f +-- | Given a singleton for @Char@, call something requiring+-- a @KnownChar@ instance.+withKnownChar :: Sing n -> (KnownChar n => r) -> r+withKnownChar SChar f = f+ -- | The promotion of 'error'. This version is more poly-kinded for -- easier use. type Error :: k0 -> k@@ -209,7 +259,7 @@ sUndefined :: HasCallStack => a sUndefined = undefined --- | The singleton analogue of '(TN.^)' for 'Nat's.+-- | The singleton analogue of '(TN.^)' for 'Natural's. (%^) :: Sing a -> Sing b -> Sing (a ^ b) sa %^ sb = let a = fromSing sa@@ -226,12 +276,14 @@ sing = singFun2 (%^) instance SingI x => SingI ((^@#@$$) x) where sing = singFun1 (sing @x %^)+instance SingI1 (^@#@$$) where+ liftSing s = singFun1 (s %^) -- | The singleton analogue of 'TN.<=?' ----- Note that, because of historical reasons in GHC's 'TN.Nat' API, 'TN.<=?'+-- Note that, because of historical reasons in GHC's 'Natural' API, 'TN.<=?' -- is incompatible (unification-wise) with 'O.<=' and the 'PEq', 'SEq',--- 'POrd', and 'SOrd' instances for 'Nat'. @(a '<=?' b) ~ 'True@ does not+-- 'POrd', and 'SOrd' instances for 'Natural'. @(a '<=?' b) ~ 'True@ does not -- imply anything about @a 'O.<=' b@ or any other 'PEq' / 'POrd' -- relationships. --@@ -243,14 +295,16 @@ -- This is provided here for the sake of completeness and for compatibility -- with libraries with APIs built around '<=?'. New code should use -- 'CmpNat', exposed through this library through the 'POrd' and 'SOrd'--- instances for 'Nat'.-(%<=?) :: Sing a -> Sing b -> Sing (a <=? b)+-- instances for 'Natural'.+(%<=?) :: forall (a :: Natural) (b :: Natural). Sing a -> Sing b -> Sing (a <=? b) sa %<=? sb = unsafeCoerce (sa %<= sb) infix 4 %<=? -- Defunctionalization symbols for (<=?) $(genDefunSymbols [''(<=?)])-instance SingI (<=?@#@$) where+instance SingI ((<=?@#@$) @Natural) where sing = singFun2 (%<=?)-instance SingI x => SingI ((<=?@#@$$) x) where+instance SingI x => SingI ((<=?@#@$$) @Natural x) where sing = singFun1 (sing @x %<=?)+instance SingI1 ((<=?@#@$$) @Natural) where+ liftSing s = singFun1 (s %<=?)
src/Text/Show/Singletons.hs view
@@ -28,7 +28,7 @@ ----------------------------------------------------------------------------- module Text.Show.Singletons (- PShow(..), SShow(..), SymbolS, SChar, show_,+ PShow(..), SShow(..), SymbolS, show_, Shows, sShows, ShowListWith, sShowListWith, ShowChar, sShowChar,@@ -53,6 +53,8 @@ AppPrecSym0, AppPrec1Sym0 ) where +import Data.Bool.Singletons+import Data.Eq.Singletons import Data.Kind import Data.List.NonEmpty (NonEmpty) import Data.List.Singletons.Internal@@ -78,14 +80,9 @@ type SymbolS :: Type type SymbolS = Symbol -> Symbol --- | GHC currently has no notion of type-level 'Char's, so we fake them with--- single-character 'Symbol's.-type SChar :: Type-type SChar = Symbol- $(singletonsOnly [d| class Show a where- showsPrec :: Nat -> a -> SymbolS+ showsPrec :: Natural -> a -> SymbolS show_ :: a -> Symbol showList :: [a] -> SymbolS @@ -103,14 +100,14 @@ showl [] = "]" <> s showl (y:ys) = "," <> showx y (showl ys) - showChar :: SChar -> SymbolS- showChar = (<>)+ showChar :: Char -> SymbolS+ showChar = consSymbol showString :: Symbol -> SymbolS showString = (<>) showParen :: Bool -> SymbolS -> SymbolS- showParen b p = if b then showChar "(" . p . showChar ")" else p+ showParen b p = if b then showChar '(' . p . showChar ')' else p showSpace :: SymbolS showSpace = \xs -> " " <> xs@@ -125,17 +122,10 @@ instance Show a => Show [a] where showsPrec _ = showList - -- -| This is not an ideal Show instance for Symbol, since the Show instance- -- for String escapes special characters. Unfortunately, GHC lacks the ability- -- to case on individual characters in a Symbol (at least, not without GHC- -- plugins), so this is the best we can do for the time being.- instance Show Symbol where- showsPrec _ = showString- show_tuple :: [SymbolS] -> SymbolS- show_tuple ss = showChar "("- . foldr1 (\s r -> s . showChar "," . r) ss- . showChar ")"+ show_tuple ss = showChar '('+ . foldr1 (\s r -> s . showChar ',' . r) ss+ . showChar ')' instance (Show a, Show b) => Show (a,b) where showsPrec _ (a,b) s = show_tuple [shows a, shows b] s@@ -161,28 +151,138 @@ |]) $(promoteOnly [d|- showsNat :: Nat -> SymbolS- showsNat 0 = showChar "0"- showsNat 1 = showChar "1"- showsNat 2 = showChar "2"- showsNat 3 = showChar "3"- showsNat 4 = showChar "4"- showsNat 5 = showChar "5"- showsNat 6 = showChar "6"- showsNat 7 = showChar "7"- showsNat 8 = showChar "8"- showsNat 9 = showChar "9"+ showsNat :: Natural -> SymbolS+ showsNat 0 = showChar '0'+ showsNat 1 = showChar '1'+ showsNat 2 = showChar '2'+ showsNat 3 = showChar '3'+ showsNat 4 = showChar '4'+ showsNat 5 = showChar '5'+ showsNat 6 = showChar '6'+ showsNat 7 = showChar '7'+ showsNat 8 = showChar '8'+ showsNat 9 = showChar '9' showsNat n = showsNat (n `div` 10) . showsNat (n `mod` 10) |]) -instance PShow Nat where+instance PShow Natural where type ShowsPrec _ n x = ShowsNat n x -instance SShow Nat where+instance SShow Natural where sShowsPrec _ sn sx = let n = fromSing sn x = fromSing sx ex = someSymbolVal (P.show n ++ T.unpack x)+ in+ case ex of+ SomeSymbol (_ :: Proxy s) -> unsafeCoerce (SSym :: Sing s)++$(promoteOnly [d|+ showsCharPrec :: Natural -> Char -> SymbolS+ showsCharPrec _ '\'' = showString "'\\''"+ showsCharPrec _ c = showChar '\'' . showLitChar c . showChar '\''++ showCharList :: [Char] -> SymbolS+ showCharList cs = showChar '"' . showLitString cs . showChar '"'++ -- -| Like 'showCharList', but for 'Symbol's.+ showSymbol :: Symbol -> SymbolS+ showSymbol sym = showChar '"' . showLitSymbol sym . showChar '"'++ -- -| Convert a character to a string using only printable characters,+ -- using Haskell source-language escape conventions. For example:+ --+ -- > showLitChar '\n' s = "\\n" ++ s+ --+ showLitChar :: Char -> SymbolS+ showLitChar c s | c > '\DEL' = showChar '\\' (protectEsc isDec (shows (charToNat c)) s)+ showLitChar '\DEL' s = showString "\\DEL" s+ showLitChar '\\' s = showString "\\\\" s+ showLitChar c s | c >= ' ' = showChar c s+ showLitChar '\a' s = showString "\\a" s+ showLitChar '\b' s = showString "\\b" s+ showLitChar '\f' s = showString "\\f" s+ showLitChar '\n' s = showString "\\n" s+ showLitChar '\r' s = showString "\\r" s+ showLitChar '\t' s = showString "\\t" s+ showLitChar '\v' s = showString "\\v" s+ showLitChar '\SO' s = protectEsc (== 'H') (showString "\\SO") s+ showLitChar c s = showString ('\\' `consSymbol` (asciiTab!!charToNat c)) s+ -- I've done manual eta-expansion here, because otherwise it's+ -- impossible to stop (asciiTab!!charToNat) getting floated out as an MFE++ showLitString :: String -> SymbolS+ -- -| Same as 'showLitChar', but for strings+ -- It converts the string to a string using Haskell escape conventions+ -- for non-printable characters. Does not add double-quotes around the+ -- whole thing; the caller should do that.+ -- The main difference from showLitChar (apart from the fact that the+ -- argument is a string not a list) is that we must escape double-quotes+ showLitString [] s = s+ showLitString ('"' : cs) s = showString "\\\"" (showLitString cs s)+ showLitString (c : cs) s = showLitChar c (showLitString cs s)+ -- Making 's' an explicit parameter makes it clear to GHC that+ -- showLitString has arity 2, which avoids it allocating an extra lambda+ -- The sticking point is the recursive call to (showLitString cs), which+ -- it can't figure out would be ok with arity 2.++ -- -| Like 'showLitString', but for 'Symbol's.+ showLitSymbol :: Symbol -> SymbolS+ showLitSymbol sym s = case unconsSymbol sym of+ Nothing -> s+ Just ('"', cs) -> showString "\\\"" (showLitSymbol cs s)+ Just (c, cs) -> showLitChar c (showLitSymbol cs s)++ isDec :: Char -> Bool+ isDec c = c >= '0' && c <= '9'++ protectEsc :: (Char -> Bool) -> SymbolS -> SymbolS+ protectEsc p f = f . cont+ -- where cont s@(c:_) | p c = "\\&" ++ s+ -- cont s = s+ where cont s = case unconsSymbol s of+ Just (c, _) | p c -> "\\&" <> s+ Nothing -> s++ asciiTab :: [Symbol]+ asciiTab = -- Using an array drags in the array module. listArray ('\NUL', ' ')+ ["NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",+ "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",+ "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",+ "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US",+ "SP"]+ |])++instance PShow Char where+ type ShowsPrec p c x = ShowsCharPrec p c x+ type ShowList cs x = ShowCharList cs x++instance SShow Char where+ sShowsPrec sp sc sx =+ let p = fromSing sp+ c = fromSing sc+ x = fromSing sx+ ex = someSymbolVal (P.showsPrec (fromIntegral p) c (T.unpack x))+ in+ case ex of+ SomeSymbol (_ :: Proxy s) -> unsafeCoerce (SSym :: Sing s)++ sShowList scs sx =+ let cs = fromSing scs+ x = fromSing sx+ ex = someSymbolVal (P.showList cs (T.unpack x))+ in+ case ex of+ SomeSymbol (_ :: Proxy s) -> unsafeCoerce (SSym :: Sing s)++instance PShow Symbol where+ type ShowsPrec _ s x = ShowSymbol s x++instance SShow Symbol where+ sShowsPrec _ ss sx =+ let s = fromSing ss+ x = fromSing sx+ ex = someSymbolVal (P.show s ++ T.unpack x) in case ex of SomeSymbol (_ :: Proxy s) -> unsafeCoerce (SSym :: Sing s)
tests/SingletonsBaseTestSuite.hs view
@@ -138,6 +138,11 @@ , compileAndDumpStdTest "T453" , compileAndDumpStdTest "NegativeLiterals" , compileAndDumpStdTest "T470"+ , compileAndDumpStdTest "T480"+ , compileAndDumpStdTest "T487"+ , compileAndDumpStdTest "T489"+ , compileAndDumpStdTest "T492"+ , compileAndDumpStdTest "Natural" ], testCompileAndDumpGroup "Promote" [ compileAndDumpStdTest "Constructors"
tests/SingletonsBaseTestSuiteUtils.hs view
@@ -71,6 +71,7 @@ , "-XNoStarIsType" , "-XStandaloneKindSignatures" , "-XConstraintKinds"+ , "-XNoNamedWildCards" ] -- Compile a test using specified GHC options. Save output to file, normalize
tests/compile-and-dump/GradingClient/Database.golden view
@@ -90,3352 +90,3382 @@ fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ (b :: Demote Nat))- = case toSing b :: SomeSing Nat of {- SomeSing c -> SomeSing (SSucc c) }- instance SEq Nat => SEq Nat where- (%==) ::- forall (t1 :: Nat) (t2 :: Nat).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Nat ((~>) Nat Bool)- -> Type) t1) t2)- (%==) SZero SZero = STrue- (%==) SZero (SSucc _) = SFalse- (%==) (SSucc _) SZero = SFalse- (%==)- (SSucc (sA_0123456789876543210 :: Sing a_0123456789876543210))- (SSucc (sB_0123456789876543210 :: Sing b_0123456789876543210))- = (applySing- ((applySing ((singFun2 @(==@#@$)) (%==))) sA_0123456789876543210))- sB_0123456789876543210- instance SOrd Nat => SOrd Nat where- sCompare ::- forall (t1 :: Nat) (t2 :: Nat).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat ((~>) Nat Ordering)- -> Type) t1) t2)- sCompare SZero SZero- = (applySing- ((applySing- ((applySing ((singFun3 @FoldlSym0) sFoldl))- ((singFun2 @ThenCmpSym0) sThenCmp)))- SEQ))- SNil- sCompare- (SSucc (sA_0123456789876543210 :: Sing a_0123456789876543210))- (SSucc (sB_0123456789876543210 :: Sing b_0123456789876543210))- = (applySing- ((applySing- ((applySing ((singFun3 @FoldlSym0) sFoldl))- ((singFun2 @ThenCmpSym0) sThenCmp)))- SEQ))- ((applySing- ((applySing ((singFun2 @(:@#@$)) SCons))- ((applySing- ((applySing ((singFun2 @CompareSym0) sCompare))- sA_0123456789876543210))- sB_0123456789876543210)))- SNil)- sCompare SZero (SSucc _) = SLT- sCompare (SSucc _) SZero = SGT- instance SDecide Nat => SDecide Nat where- (%~) SZero SZero = Proved Refl- (%~) SZero (SSucc _) = Disproved (\ x -> case x of)- (%~) (SSucc _) SZero = Disproved (\ x -> case x of)- (%~) (SSucc a) (SSucc b)- = case ((%~) a) b of- Proved Refl -> Proved Refl- Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- instance SDecide Nat =>- Data.Type.Equality.TestEquality (SNat :: Nat -> Type) where- Data.Type.Equality.testEquality- = Data.Singletons.Decide.decideEquality- instance SDecide Nat =>- Data.Type.Coercion.TestCoercion (SNat :: Nat -> Type) where- Data.Type.Coercion.testCoercion- = Data.Singletons.Decide.decideCoercion- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing- instance SingI (SuccSym0 :: (~>) Nat Nat) where- sing = (singFun1 @SuccSym0) SSucc-GradingClient/Database.hs:(0,0)-(0,0): Splicing declarations- singletons- [d| append :: Schema -> Schema -> Schema- append (Sch s1) (Sch s2) = Sch (s1 ++ s2)- attrNotIn :: Attribute -> Schema -> Bool- attrNotIn _ (Sch []) = True- attrNotIn (Attr name u) (Sch ((Attr name' _) : t))- = (name /= name') && (attrNotIn (Attr name u) (Sch t))- disjoint :: Schema -> Schema -> Bool- disjoint (Sch []) _ = True- disjoint (Sch (h : t)) s = (attrNotIn h s) && (disjoint (Sch t) s)- occurs :: [AChar] -> Schema -> Bool- occurs _ (Sch []) = False- occurs name (Sch ((Attr name' _) : attrs))- = name == name' || occurs name (Sch attrs)- lookup :: [AChar] -> Schema -> U- lookup _ (Sch []) = undefined- lookup name (Sch ((Attr name' u) : attrs))- = if name == name' then u else lookup name (Sch attrs)- - data U- = BOOL | STRING | NAT | VEC U Nat- deriving (Read, Eq, Show)- data AChar- = CA |- CB |- CC |- CD |- CE |- CF |- CG |- CH |- CI |- CJ |- CK |- CL |- CM |- CN |- CO |- CP |- CQ |- CR |- CS |- CT |- CU |- CV |- CW |- CX |- CY |- CZ- deriving (Read, Show, Eq)- data Attribute = Attr [AChar] U- data Schema = Sch [Attribute] |]- ======>- data U- = BOOL | STRING | NAT | VEC U Nat- deriving (Read, Eq, Show)- data AChar- = CA |- CB |- CC |- CD |- CE |- CF |- CG |- CH |- CI |- CJ |- CK |- CL |- CM |- CN |- CO |- CP |- CQ |- CR |- CS |- CT |- CU |- CV |- CW |- CX |- CY |- CZ- deriving (Read, Show, Eq)- data Attribute = Attr [AChar] U- data Schema = Sch [Attribute]- append :: Schema -> Schema -> Schema- append (Sch s1) (Sch s2) = Sch (s1 ++ s2)- attrNotIn :: Attribute -> Schema -> Bool- attrNotIn _ (Sch []) = True- attrNotIn (Attr name u) (Sch (Attr name' _ : t))- = ((name /= name') && (attrNotIn ((Attr name) u)) (Sch t))- disjoint :: Schema -> Schema -> Bool- disjoint (Sch []) _ = True- disjoint (Sch (h : t)) s- = ((attrNotIn h) s && (disjoint (Sch t)) s)- occurs :: [AChar] -> Schema -> Bool- occurs _ (Sch []) = False- occurs name (Sch (Attr name' _ : attrs))- = ((name == name') || (occurs name) (Sch attrs))- lookup :: [AChar] -> Schema -> U- lookup _ (Sch []) = undefined- lookup name (Sch (Attr name' u : attrs))- = if (name == name') then u else (lookup name) (Sch attrs)- type BOOLSym0 :: U- type family BOOLSym0 :: U where- BOOLSym0 = BOOL- type STRINGSym0 :: U- type family STRINGSym0 :: U where- STRINGSym0 = STRING- type NATSym0 :: U- type family NATSym0 :: U where- NATSym0 = NAT- type VECSym0 :: (~>) U ((~>) Nat U)- data VECSym0 :: (~>) U ((~>) Nat U)- where- VECSym0KindInference :: SameKind (Apply VECSym0 arg) (VECSym1 arg) =>- VECSym0 a0123456789876543210- type instance Apply VECSym0 a0123456789876543210 = VECSym1 a0123456789876543210- instance SuppressUnusedWarnings VECSym0 where- suppressUnusedWarnings = snd (((,) VECSym0KindInference) ())- type VECSym1 :: U -> (~>) Nat U- data VECSym1 (a0123456789876543210 :: U) :: (~>) Nat U- where- VECSym1KindInference :: SameKind (Apply (VECSym1 a0123456789876543210) arg) (VECSym2 a0123456789876543210 arg) =>- VECSym1 a0123456789876543210 a0123456789876543210- type instance Apply (VECSym1 a0123456789876543210) a0123456789876543210 = VEC a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (VECSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) VECSym1KindInference) ())- type VECSym2 :: U -> Nat -> U- type family VECSym2 (a0123456789876543210 :: U) (a0123456789876543210 :: Nat) :: U where- VECSym2 a0123456789876543210 a0123456789876543210 = VEC a0123456789876543210 a0123456789876543210- type CASym0 :: AChar- type family CASym0 :: AChar where- CASym0 = CA- type CBSym0 :: AChar- type family CBSym0 :: AChar where- CBSym0 = CB- type CCSym0 :: AChar- type family CCSym0 :: AChar where- CCSym0 = CC- type CDSym0 :: AChar- type family CDSym0 :: AChar where- CDSym0 = CD- type CESym0 :: AChar- type family CESym0 :: AChar where- CESym0 = CE- type CFSym0 :: AChar- type family CFSym0 :: AChar where- CFSym0 = CF- type CGSym0 :: AChar- type family CGSym0 :: AChar where- CGSym0 = CG- type CHSym0 :: AChar- type family CHSym0 :: AChar where- CHSym0 = CH- type CISym0 :: AChar- type family CISym0 :: AChar where- CISym0 = CI- type CJSym0 :: AChar- type family CJSym0 :: AChar where- CJSym0 = CJ- type CKSym0 :: AChar- type family CKSym0 :: AChar where- CKSym0 = CK- type CLSym0 :: AChar- type family CLSym0 :: AChar where- CLSym0 = CL- type CMSym0 :: AChar- type family CMSym0 :: AChar where- CMSym0 = CM- type CNSym0 :: AChar- type family CNSym0 :: AChar where- CNSym0 = CN- type COSym0 :: AChar- type family COSym0 :: AChar where- COSym0 = CO- type CPSym0 :: AChar- type family CPSym0 :: AChar where- CPSym0 = CP- type CQSym0 :: AChar- type family CQSym0 :: AChar where- CQSym0 = CQ- type CRSym0 :: AChar- type family CRSym0 :: AChar where- CRSym0 = CR- type CSSym0 :: AChar- type family CSSym0 :: AChar where- CSSym0 = CS- type CTSym0 :: AChar- type family CTSym0 :: AChar where- CTSym0 = CT- type CUSym0 :: AChar- type family CUSym0 :: AChar where- CUSym0 = CU- type CVSym0 :: AChar- type family CVSym0 :: AChar where- CVSym0 = CV- type CWSym0 :: AChar- type family CWSym0 :: AChar where- CWSym0 = CW- type CXSym0 :: AChar- type family CXSym0 :: AChar where- CXSym0 = CX- type CYSym0 :: AChar- type family CYSym0 :: AChar where- CYSym0 = CY- type CZSym0 :: AChar- type family CZSym0 :: AChar where- CZSym0 = CZ- type AttrSym0 :: (~>) [AChar] ((~>) U Attribute)- data AttrSym0 :: (~>) [AChar] ((~>) U Attribute)- where- AttrSym0KindInference :: SameKind (Apply AttrSym0 arg) (AttrSym1 arg) =>- AttrSym0 a0123456789876543210- type instance Apply AttrSym0 a0123456789876543210 = AttrSym1 a0123456789876543210- instance SuppressUnusedWarnings AttrSym0 where- suppressUnusedWarnings = snd (((,) AttrSym0KindInference) ())- type AttrSym1 :: [AChar] -> (~>) U Attribute- data AttrSym1 (a0123456789876543210 :: [AChar]) :: (~>) U Attribute- where- AttrSym1KindInference :: SameKind (Apply (AttrSym1 a0123456789876543210) arg) (AttrSym2 a0123456789876543210 arg) =>- AttrSym1 a0123456789876543210 a0123456789876543210- type instance Apply (AttrSym1 a0123456789876543210) a0123456789876543210 = Attr a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (AttrSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) AttrSym1KindInference) ())- type AttrSym2 :: [AChar] -> U -> Attribute- type family AttrSym2 (a0123456789876543210 :: [AChar]) (a0123456789876543210 :: U) :: Attribute where- AttrSym2 a0123456789876543210 a0123456789876543210 = Attr a0123456789876543210 a0123456789876543210- type SchSym0 :: (~>) [Attribute] Schema- data SchSym0 :: (~>) [Attribute] Schema- where- SchSym0KindInference :: SameKind (Apply SchSym0 arg) (SchSym1 arg) =>- SchSym0 a0123456789876543210- type instance Apply SchSym0 a0123456789876543210 = Sch a0123456789876543210- instance SuppressUnusedWarnings SchSym0 where- suppressUnusedWarnings = snd (((,) SchSym0KindInference) ())- type SchSym1 :: [Attribute] -> Schema- type family SchSym1 (a0123456789876543210 :: [Attribute]) :: Schema where- SchSym1 a0123456789876543210 = Sch a0123456789876543210- data Let0123456789876543210Scrutinee_0123456789876543210Sym0 name0123456789876543210- where- Let0123456789876543210Scrutinee_0123456789876543210Sym0KindInference :: SameKind (Apply Let0123456789876543210Scrutinee_0123456789876543210Sym0 arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym1 arg) =>- Let0123456789876543210Scrutinee_0123456789876543210Sym0 name0123456789876543210- type instance Apply Let0123456789876543210Scrutinee_0123456789876543210Sym0 name0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210- instance SuppressUnusedWarnings Let0123456789876543210Scrutinee_0123456789876543210Sym0 where- suppressUnusedWarnings- = snd- (((,)- Let0123456789876543210Scrutinee_0123456789876543210Sym0KindInference)- ())- data Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210 name'0123456789876543210- where- Let0123456789876543210Scrutinee_0123456789876543210Sym1KindInference :: SameKind (Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210) arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 arg) =>- Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210 name'0123456789876543210- type instance Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210) name'0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210- instance SuppressUnusedWarnings (Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210) where- suppressUnusedWarnings- = snd- (((,)- Let0123456789876543210Scrutinee_0123456789876543210Sym1KindInference)- ())- data Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210 u0123456789876543210- where- Let0123456789876543210Scrutinee_0123456789876543210Sym2KindInference :: SameKind (Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210) arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 arg) =>- Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210 u0123456789876543210- type instance Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210) u0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210- instance SuppressUnusedWarnings (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210) where- suppressUnusedWarnings- = snd- (((,)- Let0123456789876543210Scrutinee_0123456789876543210Sym2KindInference)- ())- data Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210- where- Let0123456789876543210Scrutinee_0123456789876543210Sym3KindInference :: SameKind (Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210) arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name0123456789876543210 name'0123456789876543210 u0123456789876543210 arg) =>- Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210- type instance Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210) attrs0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210- instance SuppressUnusedWarnings (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210) where- suppressUnusedWarnings- = snd- (((,)- Let0123456789876543210Scrutinee_0123456789876543210Sym3KindInference)- ())- type family Let0123456789876543210Scrutinee_0123456789876543210Sym4 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210 where- Let0123456789876543210Scrutinee_0123456789876543210Sym4 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210- type family Let0123456789876543210Scrutinee_0123456789876543210 name name' u attrs where- Let0123456789876543210Scrutinee_0123456789876543210 name name' u attrs = Apply (Apply (==@#@$) name) name'- type family Case_0123456789876543210 name name' u attrs t where- Case_0123456789876543210 name name' u attrs 'True = u- Case_0123456789876543210 name name' u attrs 'False = Apply (Apply LookupSym0 name) (Apply SchSym0 attrs)- type LookupSym0 :: (~>) [AChar] ((~>) Schema U)- data LookupSym0 :: (~>) [AChar] ((~>) Schema U)- where- LookupSym0KindInference :: SameKind (Apply LookupSym0 arg) (LookupSym1 arg) =>- LookupSym0 a0123456789876543210- type instance Apply LookupSym0 a0123456789876543210 = LookupSym1 a0123456789876543210- instance SuppressUnusedWarnings LookupSym0 where- suppressUnusedWarnings = snd (((,) LookupSym0KindInference) ())- type LookupSym1 :: [AChar] -> (~>) Schema U- data LookupSym1 (a0123456789876543210 :: [AChar]) :: (~>) Schema U- where- LookupSym1KindInference :: SameKind (Apply (LookupSym1 a0123456789876543210) arg) (LookupSym2 a0123456789876543210 arg) =>- LookupSym1 a0123456789876543210 a0123456789876543210- type instance Apply (LookupSym1 a0123456789876543210) a0123456789876543210 = Lookup a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (LookupSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) LookupSym1KindInference) ())- type LookupSym2 :: [AChar] -> Schema -> U- type family LookupSym2 (a0123456789876543210 :: [AChar]) (a0123456789876543210 :: Schema) :: U where- LookupSym2 a0123456789876543210 a0123456789876543210 = Lookup a0123456789876543210 a0123456789876543210- type OccursSym0 :: (~>) [AChar] ((~>) Schema Bool)- data OccursSym0 :: (~>) [AChar] ((~>) Schema Bool)- where- OccursSym0KindInference :: SameKind (Apply OccursSym0 arg) (OccursSym1 arg) =>- OccursSym0 a0123456789876543210- type instance Apply OccursSym0 a0123456789876543210 = OccursSym1 a0123456789876543210- instance SuppressUnusedWarnings OccursSym0 where- suppressUnusedWarnings = snd (((,) OccursSym0KindInference) ())- type OccursSym1 :: [AChar] -> (~>) Schema Bool- data OccursSym1 (a0123456789876543210 :: [AChar]) :: (~>) Schema Bool- where- OccursSym1KindInference :: SameKind (Apply (OccursSym1 a0123456789876543210) arg) (OccursSym2 a0123456789876543210 arg) =>- OccursSym1 a0123456789876543210 a0123456789876543210- type instance Apply (OccursSym1 a0123456789876543210) a0123456789876543210 = Occurs a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (OccursSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) OccursSym1KindInference) ())- type OccursSym2 :: [AChar] -> Schema -> Bool- type family OccursSym2 (a0123456789876543210 :: [AChar]) (a0123456789876543210 :: Schema) :: Bool where- OccursSym2 a0123456789876543210 a0123456789876543210 = Occurs a0123456789876543210 a0123456789876543210- type DisjointSym0 :: (~>) Schema ((~>) Schema Bool)- data DisjointSym0 :: (~>) Schema ((~>) Schema Bool)- where- DisjointSym0KindInference :: SameKind (Apply DisjointSym0 arg) (DisjointSym1 arg) =>- DisjointSym0 a0123456789876543210- type instance Apply DisjointSym0 a0123456789876543210 = DisjointSym1 a0123456789876543210- instance SuppressUnusedWarnings DisjointSym0 where- suppressUnusedWarnings = snd (((,) DisjointSym0KindInference) ())- type DisjointSym1 :: Schema -> (~>) Schema Bool- data DisjointSym1 (a0123456789876543210 :: Schema) :: (~>) Schema Bool- where- DisjointSym1KindInference :: SameKind (Apply (DisjointSym1 a0123456789876543210) arg) (DisjointSym2 a0123456789876543210 arg) =>- DisjointSym1 a0123456789876543210 a0123456789876543210- type instance Apply (DisjointSym1 a0123456789876543210) a0123456789876543210 = Disjoint a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (DisjointSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) DisjointSym1KindInference) ())- type DisjointSym2 :: Schema -> Schema -> Bool- type family DisjointSym2 (a0123456789876543210 :: Schema) (a0123456789876543210 :: Schema) :: Bool where- DisjointSym2 a0123456789876543210 a0123456789876543210 = Disjoint a0123456789876543210 a0123456789876543210- type AttrNotInSym0 :: (~>) Attribute ((~>) Schema Bool)- data AttrNotInSym0 :: (~>) Attribute ((~>) Schema Bool)- where- AttrNotInSym0KindInference :: SameKind (Apply AttrNotInSym0 arg) (AttrNotInSym1 arg) =>- AttrNotInSym0 a0123456789876543210- type instance Apply AttrNotInSym0 a0123456789876543210 = AttrNotInSym1 a0123456789876543210- instance SuppressUnusedWarnings AttrNotInSym0 where- suppressUnusedWarnings = snd (((,) AttrNotInSym0KindInference) ())- type AttrNotInSym1 :: Attribute -> (~>) Schema Bool- data AttrNotInSym1 (a0123456789876543210 :: Attribute) :: (~>) Schema Bool- where- AttrNotInSym1KindInference :: SameKind (Apply (AttrNotInSym1 a0123456789876543210) arg) (AttrNotInSym2 a0123456789876543210 arg) =>- AttrNotInSym1 a0123456789876543210 a0123456789876543210- type instance Apply (AttrNotInSym1 a0123456789876543210) a0123456789876543210 = AttrNotIn a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (AttrNotInSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) AttrNotInSym1KindInference) ())- type AttrNotInSym2 :: Attribute -> Schema -> Bool- type family AttrNotInSym2 (a0123456789876543210 :: Attribute) (a0123456789876543210 :: Schema) :: Bool where- AttrNotInSym2 a0123456789876543210 a0123456789876543210 = AttrNotIn a0123456789876543210 a0123456789876543210- type AppendSym0 :: (~>) Schema ((~>) Schema Schema)- data AppendSym0 :: (~>) Schema ((~>) Schema Schema)- where- AppendSym0KindInference :: SameKind (Apply AppendSym0 arg) (AppendSym1 arg) =>- AppendSym0 a0123456789876543210- type instance Apply AppendSym0 a0123456789876543210 = AppendSym1 a0123456789876543210- instance SuppressUnusedWarnings AppendSym0 where- suppressUnusedWarnings = snd (((,) AppendSym0KindInference) ())- type AppendSym1 :: Schema -> (~>) Schema Schema- data AppendSym1 (a0123456789876543210 :: Schema) :: (~>) Schema Schema- where- AppendSym1KindInference :: SameKind (Apply (AppendSym1 a0123456789876543210) arg) (AppendSym2 a0123456789876543210 arg) =>- AppendSym1 a0123456789876543210 a0123456789876543210- type instance Apply (AppendSym1 a0123456789876543210) a0123456789876543210 = Append a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (AppendSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) AppendSym1KindInference) ())- type AppendSym2 :: Schema -> Schema -> Schema- type family AppendSym2 (a0123456789876543210 :: Schema) (a0123456789876543210 :: Schema) :: Schema where- AppendSym2 a0123456789876543210 a0123456789876543210 = Append a0123456789876543210 a0123456789876543210- type Lookup :: [AChar] -> Schema -> U- type family Lookup (a :: [AChar]) (a :: Schema) :: U where- Lookup _ (Sch '[]) = UndefinedSym0- Lookup name (Sch ('(:) (Attr name' u) attrs)) = Case_0123456789876543210 name name' u attrs (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name name' u attrs)- type Occurs :: [AChar] -> Schema -> Bool- type family Occurs (a :: [AChar]) (a :: Schema) :: Bool where- Occurs _ (Sch '[]) = FalseSym0- Occurs name (Sch ('(:) (Attr name' _) attrs)) = Apply (Apply (||@#@$) (Apply (Apply (==@#@$) name) name')) (Apply (Apply OccursSym0 name) (Apply SchSym0 attrs))- type Disjoint :: Schema -> Schema -> Bool- type family Disjoint (a :: Schema) (a :: Schema) :: Bool where- Disjoint (Sch '[]) _ = TrueSym0- Disjoint (Sch ('(:) h t)) s = Apply (Apply (&&@#@$) (Apply (Apply AttrNotInSym0 h) s)) (Apply (Apply DisjointSym0 (Apply SchSym0 t)) s)- type AttrNotIn :: Attribute -> Schema -> Bool- type family AttrNotIn (a :: Attribute) (a :: Schema) :: Bool where- AttrNotIn _ (Sch '[]) = TrueSym0- AttrNotIn (Attr name u) (Sch ('(:) (Attr name' _) t)) = Apply (Apply (&&@#@$) (Apply (Apply (/=@#@$) name) name')) (Apply (Apply AttrNotInSym0 (Apply (Apply AttrSym0 name) u)) (Apply SchSym0 t))- type Append :: Schema -> Schema -> Schema- type family Append (a :: Schema) (a :: Schema) :: Schema where- Append (Sch s1) (Sch s2) = Apply SchSym0 (Apply (Apply (++@#@$) s1) s2)- type TFHelper_0123456789876543210 :: U -> U -> Bool- type family TFHelper_0123456789876543210 (a :: U) (a :: U) :: Bool where- TFHelper_0123456789876543210 BOOL BOOL = TrueSym0- TFHelper_0123456789876543210 BOOL STRING = FalseSym0- TFHelper_0123456789876543210 BOOL NAT = FalseSym0- TFHelper_0123456789876543210 BOOL (VEC _ _) = FalseSym0- TFHelper_0123456789876543210 STRING BOOL = FalseSym0- TFHelper_0123456789876543210 STRING STRING = TrueSym0- TFHelper_0123456789876543210 STRING NAT = FalseSym0- TFHelper_0123456789876543210 STRING (VEC _ _) = FalseSym0- TFHelper_0123456789876543210 NAT BOOL = FalseSym0- TFHelper_0123456789876543210 NAT STRING = FalseSym0- TFHelper_0123456789876543210 NAT NAT = TrueSym0- TFHelper_0123456789876543210 NAT (VEC _ _) = FalseSym0- TFHelper_0123456789876543210 (VEC _ _) BOOL = FalseSym0- TFHelper_0123456789876543210 (VEC _ _) STRING = FalseSym0- TFHelper_0123456789876543210 (VEC _ _) NAT = FalseSym0- TFHelper_0123456789876543210 (VEC a_0123456789876543210 a_0123456789876543210) (VEC b_0123456789876543210 b_0123456789876543210) = Apply (Apply (&&@#@$) (Apply (Apply (==@#@$) a_0123456789876543210) b_0123456789876543210)) (Apply (Apply (==@#@$) a_0123456789876543210) b_0123456789876543210)- type TFHelper_0123456789876543210Sym0 :: (~>) U ((~>) U Bool)- data TFHelper_0123456789876543210Sym0 :: (~>) U ((~>) U Bool)- where- TFHelper_0123456789876543210Sym0KindInference :: SameKind (Apply TFHelper_0123456789876543210Sym0 arg) (TFHelper_0123456789876543210Sym1 arg) =>- TFHelper_0123456789876543210Sym0 a0123456789876543210- type instance Apply TFHelper_0123456789876543210Sym0 a0123456789876543210 = TFHelper_0123456789876543210Sym1 a0123456789876543210- instance SuppressUnusedWarnings TFHelper_0123456789876543210Sym0 where- suppressUnusedWarnings- = snd (((,) TFHelper_0123456789876543210Sym0KindInference) ())- type TFHelper_0123456789876543210Sym1 :: U -> (~>) U Bool- data TFHelper_0123456789876543210Sym1 (a0123456789876543210 :: U) :: (~>) U Bool- where- TFHelper_0123456789876543210Sym1KindInference :: SameKind (Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) arg) (TFHelper_0123456789876543210Sym2 a0123456789876543210 arg) =>- TFHelper_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210- type instance Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (TFHelper_0123456789876543210Sym1 a0123456789876543210) where- suppressUnusedWarnings- = snd (((,) TFHelper_0123456789876543210Sym1KindInference) ())- type TFHelper_0123456789876543210Sym2 :: U -> U -> Bool- type family TFHelper_0123456789876543210Sym2 (a0123456789876543210 :: U) (a0123456789876543210 :: U) :: Bool where- TFHelper_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210- instance PEq U where- type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat- -> U -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: U) (a :: Symbol) :: Symbol where- ShowsPrec_0123456789876543210 _ BOOL a_0123456789876543210 = Apply (Apply ShowStringSym0 "BOOL") a_0123456789876543210- ShowsPrec_0123456789876543210 _ STRING a_0123456789876543210 = Apply (Apply ShowStringSym0 "STRING") a_0123456789876543210- ShowsPrec_0123456789876543210 _ NAT a_0123456789876543210 = Apply (Apply ShowStringSym0 "NAT") a_0123456789876543210- ShowsPrec_0123456789876543210 p_0123456789876543210 (VEC arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "VEC ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) U ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) U ((~>) Symbol Symbol))- where- ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>- ShowsPrec_0123456789876543210Sym0 a0123456789876543210- type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210- instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where- suppressUnusedWarnings- = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat- -> (~>) U ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) U ((~>) Symbol Symbol)- where- ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>- ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210- type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where- suppressUnusedWarnings- = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat- -> U -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: U) :: (~>) Symbol Symbol- where- ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>- ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210- type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where- suppressUnusedWarnings- = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat- -> U -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: U) (a0123456789876543210 :: Symbol) :: Symbol where- ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- instance PShow U where- type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat- -> AChar -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: AChar) (a :: Symbol) :: Symbol where- ShowsPrec_0123456789876543210 _ CA a_0123456789876543210 = Apply (Apply ShowStringSym0 "CA") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CB a_0123456789876543210 = Apply (Apply ShowStringSym0 "CB") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CC a_0123456789876543210 = Apply (Apply ShowStringSym0 "CC") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CD a_0123456789876543210 = Apply (Apply ShowStringSym0 "CD") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CE a_0123456789876543210 = Apply (Apply ShowStringSym0 "CE") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CF a_0123456789876543210 = Apply (Apply ShowStringSym0 "CF") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CG a_0123456789876543210 = Apply (Apply ShowStringSym0 "CG") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CH a_0123456789876543210 = Apply (Apply ShowStringSym0 "CH") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CI a_0123456789876543210 = Apply (Apply ShowStringSym0 "CI") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CJ a_0123456789876543210 = Apply (Apply ShowStringSym0 "CJ") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CK a_0123456789876543210 = Apply (Apply ShowStringSym0 "CK") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CL a_0123456789876543210 = Apply (Apply ShowStringSym0 "CL") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CM a_0123456789876543210 = Apply (Apply ShowStringSym0 "CM") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CN a_0123456789876543210 = Apply (Apply ShowStringSym0 "CN") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CO a_0123456789876543210 = Apply (Apply ShowStringSym0 "CO") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CP a_0123456789876543210 = Apply (Apply ShowStringSym0 "CP") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CQ a_0123456789876543210 = Apply (Apply ShowStringSym0 "CQ") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CR a_0123456789876543210 = Apply (Apply ShowStringSym0 "CR") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CS a_0123456789876543210 = Apply (Apply ShowStringSym0 "CS") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CT a_0123456789876543210 = Apply (Apply ShowStringSym0 "CT") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CU a_0123456789876543210 = Apply (Apply ShowStringSym0 "CU") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CV a_0123456789876543210 = Apply (Apply ShowStringSym0 "CV") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CW a_0123456789876543210 = Apply (Apply ShowStringSym0 "CW") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CX a_0123456789876543210 = Apply (Apply ShowStringSym0 "CX") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CY a_0123456789876543210 = Apply (Apply ShowStringSym0 "CY") a_0123456789876543210- ShowsPrec_0123456789876543210 _ CZ a_0123456789876543210 = Apply (Apply ShowStringSym0 "CZ") a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) AChar ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) AChar ((~>) Symbol Symbol))- where- ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>- ShowsPrec_0123456789876543210Sym0 a0123456789876543210- type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210- instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where- suppressUnusedWarnings- = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat- -> (~>) AChar ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) AChar ((~>) Symbol Symbol)- where- ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>- ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210- type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where- suppressUnusedWarnings- = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat- -> AChar -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: AChar) :: (~>) Symbol Symbol- where- ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>- ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210- type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where- suppressUnusedWarnings- = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat- -> AChar -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: AChar) (a0123456789876543210 :: Symbol) :: Symbol where- ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- instance PShow AChar where- type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a- type TFHelper_0123456789876543210 :: AChar -> AChar -> Bool- type family TFHelper_0123456789876543210 (a :: AChar) (a :: AChar) :: Bool where- TFHelper_0123456789876543210 CA CA = TrueSym0- TFHelper_0123456789876543210 CA CB = FalseSym0- TFHelper_0123456789876543210 CA CC = FalseSym0- TFHelper_0123456789876543210 CA CD = FalseSym0- TFHelper_0123456789876543210 CA CE = FalseSym0- TFHelper_0123456789876543210 CA CF = FalseSym0- TFHelper_0123456789876543210 CA CG = FalseSym0- TFHelper_0123456789876543210 CA CH = FalseSym0- TFHelper_0123456789876543210 CA CI = FalseSym0- TFHelper_0123456789876543210 CA CJ = FalseSym0- TFHelper_0123456789876543210 CA CK = FalseSym0- TFHelper_0123456789876543210 CA CL = FalseSym0- TFHelper_0123456789876543210 CA CM = FalseSym0- TFHelper_0123456789876543210 CA CN = FalseSym0- TFHelper_0123456789876543210 CA CO = FalseSym0- TFHelper_0123456789876543210 CA CP = FalseSym0- TFHelper_0123456789876543210 CA CQ = FalseSym0- TFHelper_0123456789876543210 CA CR = FalseSym0- TFHelper_0123456789876543210 CA CS = FalseSym0- TFHelper_0123456789876543210 CA CT = FalseSym0- TFHelper_0123456789876543210 CA CU = FalseSym0- TFHelper_0123456789876543210 CA CV = FalseSym0- TFHelper_0123456789876543210 CA CW = FalseSym0- TFHelper_0123456789876543210 CA CX = FalseSym0- TFHelper_0123456789876543210 CA CY = FalseSym0- TFHelper_0123456789876543210 CA CZ = FalseSym0- TFHelper_0123456789876543210 CB CA = FalseSym0- TFHelper_0123456789876543210 CB CB = TrueSym0- TFHelper_0123456789876543210 CB CC = FalseSym0- TFHelper_0123456789876543210 CB CD = FalseSym0- TFHelper_0123456789876543210 CB CE = FalseSym0- TFHelper_0123456789876543210 CB CF = FalseSym0- TFHelper_0123456789876543210 CB CG = FalseSym0- TFHelper_0123456789876543210 CB CH = FalseSym0- TFHelper_0123456789876543210 CB CI = FalseSym0- TFHelper_0123456789876543210 CB CJ = FalseSym0- TFHelper_0123456789876543210 CB CK = FalseSym0- TFHelper_0123456789876543210 CB CL = FalseSym0- TFHelper_0123456789876543210 CB CM = FalseSym0- TFHelper_0123456789876543210 CB CN = FalseSym0- TFHelper_0123456789876543210 CB CO = FalseSym0- TFHelper_0123456789876543210 CB CP = FalseSym0- TFHelper_0123456789876543210 CB CQ = FalseSym0- TFHelper_0123456789876543210 CB CR = FalseSym0- TFHelper_0123456789876543210 CB CS = FalseSym0- TFHelper_0123456789876543210 CB CT = FalseSym0- TFHelper_0123456789876543210 CB CU = FalseSym0- TFHelper_0123456789876543210 CB CV = FalseSym0- TFHelper_0123456789876543210 CB CW = FalseSym0- TFHelper_0123456789876543210 CB CX = FalseSym0- TFHelper_0123456789876543210 CB CY = FalseSym0- TFHelper_0123456789876543210 CB CZ = FalseSym0- TFHelper_0123456789876543210 CC CA = FalseSym0- TFHelper_0123456789876543210 CC CB = FalseSym0- TFHelper_0123456789876543210 CC CC = TrueSym0- TFHelper_0123456789876543210 CC CD = FalseSym0- TFHelper_0123456789876543210 CC CE = FalseSym0- TFHelper_0123456789876543210 CC CF = FalseSym0- TFHelper_0123456789876543210 CC CG = FalseSym0- TFHelper_0123456789876543210 CC CH = FalseSym0- TFHelper_0123456789876543210 CC CI = FalseSym0- TFHelper_0123456789876543210 CC CJ = FalseSym0- TFHelper_0123456789876543210 CC CK = FalseSym0- TFHelper_0123456789876543210 CC CL = FalseSym0- TFHelper_0123456789876543210 CC CM = FalseSym0- TFHelper_0123456789876543210 CC CN = FalseSym0- TFHelper_0123456789876543210 CC CO = FalseSym0- TFHelper_0123456789876543210 CC CP = FalseSym0- TFHelper_0123456789876543210 CC CQ = FalseSym0- TFHelper_0123456789876543210 CC CR = FalseSym0- TFHelper_0123456789876543210 CC CS = FalseSym0- TFHelper_0123456789876543210 CC CT = FalseSym0- TFHelper_0123456789876543210 CC CU = FalseSym0- TFHelper_0123456789876543210 CC CV = FalseSym0- TFHelper_0123456789876543210 CC CW = FalseSym0- TFHelper_0123456789876543210 CC CX = FalseSym0- TFHelper_0123456789876543210 CC CY = FalseSym0- TFHelper_0123456789876543210 CC CZ = FalseSym0- TFHelper_0123456789876543210 CD CA = FalseSym0- TFHelper_0123456789876543210 CD CB = FalseSym0- TFHelper_0123456789876543210 CD CC = FalseSym0- TFHelper_0123456789876543210 CD CD = TrueSym0- TFHelper_0123456789876543210 CD CE = FalseSym0- TFHelper_0123456789876543210 CD CF = FalseSym0- TFHelper_0123456789876543210 CD CG = FalseSym0- TFHelper_0123456789876543210 CD CH = FalseSym0- TFHelper_0123456789876543210 CD CI = FalseSym0- TFHelper_0123456789876543210 CD CJ = FalseSym0- TFHelper_0123456789876543210 CD CK = FalseSym0- TFHelper_0123456789876543210 CD CL = FalseSym0- TFHelper_0123456789876543210 CD CM = FalseSym0- TFHelper_0123456789876543210 CD CN = FalseSym0- TFHelper_0123456789876543210 CD CO = FalseSym0- TFHelper_0123456789876543210 CD CP = FalseSym0- TFHelper_0123456789876543210 CD CQ = FalseSym0- TFHelper_0123456789876543210 CD CR = FalseSym0- TFHelper_0123456789876543210 CD CS = FalseSym0- TFHelper_0123456789876543210 CD CT = FalseSym0- TFHelper_0123456789876543210 CD CU = FalseSym0- TFHelper_0123456789876543210 CD CV = FalseSym0- TFHelper_0123456789876543210 CD CW = FalseSym0- TFHelper_0123456789876543210 CD CX = FalseSym0- TFHelper_0123456789876543210 CD CY = FalseSym0- TFHelper_0123456789876543210 CD CZ = FalseSym0- TFHelper_0123456789876543210 CE CA = FalseSym0- TFHelper_0123456789876543210 CE CB = FalseSym0- TFHelper_0123456789876543210 CE CC = FalseSym0- TFHelper_0123456789876543210 CE CD = FalseSym0- TFHelper_0123456789876543210 CE CE = TrueSym0- TFHelper_0123456789876543210 CE CF = FalseSym0- TFHelper_0123456789876543210 CE CG = FalseSym0- TFHelper_0123456789876543210 CE CH = FalseSym0- TFHelper_0123456789876543210 CE CI = FalseSym0- TFHelper_0123456789876543210 CE CJ = FalseSym0- TFHelper_0123456789876543210 CE CK = FalseSym0- TFHelper_0123456789876543210 CE CL = FalseSym0- TFHelper_0123456789876543210 CE CM = FalseSym0- TFHelper_0123456789876543210 CE CN = FalseSym0- TFHelper_0123456789876543210 CE CO = FalseSym0- TFHelper_0123456789876543210 CE CP = FalseSym0- TFHelper_0123456789876543210 CE CQ = FalseSym0- TFHelper_0123456789876543210 CE CR = FalseSym0- TFHelper_0123456789876543210 CE CS = FalseSym0- TFHelper_0123456789876543210 CE CT = FalseSym0- TFHelper_0123456789876543210 CE CU = FalseSym0- TFHelper_0123456789876543210 CE CV = FalseSym0- TFHelper_0123456789876543210 CE CW = FalseSym0- TFHelper_0123456789876543210 CE CX = FalseSym0- TFHelper_0123456789876543210 CE CY = FalseSym0- TFHelper_0123456789876543210 CE CZ = FalseSym0- TFHelper_0123456789876543210 CF CA = FalseSym0- TFHelper_0123456789876543210 CF CB = FalseSym0- TFHelper_0123456789876543210 CF CC = FalseSym0- TFHelper_0123456789876543210 CF CD = FalseSym0- TFHelper_0123456789876543210 CF CE = FalseSym0- TFHelper_0123456789876543210 CF CF = TrueSym0- TFHelper_0123456789876543210 CF CG = FalseSym0- TFHelper_0123456789876543210 CF CH = FalseSym0- TFHelper_0123456789876543210 CF CI = FalseSym0- TFHelper_0123456789876543210 CF CJ = FalseSym0- TFHelper_0123456789876543210 CF CK = FalseSym0- TFHelper_0123456789876543210 CF CL = FalseSym0- TFHelper_0123456789876543210 CF CM = FalseSym0- TFHelper_0123456789876543210 CF CN = FalseSym0- TFHelper_0123456789876543210 CF CO = FalseSym0- TFHelper_0123456789876543210 CF CP = FalseSym0- TFHelper_0123456789876543210 CF CQ = FalseSym0- TFHelper_0123456789876543210 CF CR = FalseSym0- TFHelper_0123456789876543210 CF CS = FalseSym0- TFHelper_0123456789876543210 CF CT = FalseSym0- TFHelper_0123456789876543210 CF CU = FalseSym0- TFHelper_0123456789876543210 CF CV = FalseSym0- TFHelper_0123456789876543210 CF CW = FalseSym0- TFHelper_0123456789876543210 CF CX = FalseSym0- TFHelper_0123456789876543210 CF CY = FalseSym0- TFHelper_0123456789876543210 CF CZ = FalseSym0- TFHelper_0123456789876543210 CG CA = FalseSym0- TFHelper_0123456789876543210 CG CB = FalseSym0- TFHelper_0123456789876543210 CG CC = FalseSym0- TFHelper_0123456789876543210 CG CD = FalseSym0- TFHelper_0123456789876543210 CG CE = FalseSym0- TFHelper_0123456789876543210 CG CF = FalseSym0- TFHelper_0123456789876543210 CG CG = TrueSym0- TFHelper_0123456789876543210 CG CH = FalseSym0- TFHelper_0123456789876543210 CG CI = FalseSym0- TFHelper_0123456789876543210 CG CJ = FalseSym0- TFHelper_0123456789876543210 CG CK = FalseSym0- TFHelper_0123456789876543210 CG CL = FalseSym0- TFHelper_0123456789876543210 CG CM = FalseSym0- TFHelper_0123456789876543210 CG CN = FalseSym0- TFHelper_0123456789876543210 CG CO = FalseSym0- TFHelper_0123456789876543210 CG CP = FalseSym0- TFHelper_0123456789876543210 CG CQ = FalseSym0- TFHelper_0123456789876543210 CG CR = FalseSym0- TFHelper_0123456789876543210 CG CS = FalseSym0- TFHelper_0123456789876543210 CG CT = FalseSym0- TFHelper_0123456789876543210 CG CU = FalseSym0- TFHelper_0123456789876543210 CG CV = FalseSym0- TFHelper_0123456789876543210 CG CW = FalseSym0- TFHelper_0123456789876543210 CG CX = FalseSym0- TFHelper_0123456789876543210 CG CY = FalseSym0- TFHelper_0123456789876543210 CG CZ = FalseSym0- TFHelper_0123456789876543210 CH CA = FalseSym0- TFHelper_0123456789876543210 CH CB = FalseSym0- TFHelper_0123456789876543210 CH CC = FalseSym0- TFHelper_0123456789876543210 CH CD = FalseSym0- TFHelper_0123456789876543210 CH CE = FalseSym0- TFHelper_0123456789876543210 CH CF = FalseSym0- TFHelper_0123456789876543210 CH CG = FalseSym0- TFHelper_0123456789876543210 CH CH = TrueSym0- TFHelper_0123456789876543210 CH CI = FalseSym0- TFHelper_0123456789876543210 CH CJ = FalseSym0- TFHelper_0123456789876543210 CH CK = FalseSym0- TFHelper_0123456789876543210 CH CL = FalseSym0- TFHelper_0123456789876543210 CH CM = FalseSym0- TFHelper_0123456789876543210 CH CN = FalseSym0- TFHelper_0123456789876543210 CH CO = FalseSym0- TFHelper_0123456789876543210 CH CP = FalseSym0- TFHelper_0123456789876543210 CH CQ = FalseSym0- TFHelper_0123456789876543210 CH CR = FalseSym0- TFHelper_0123456789876543210 CH CS = FalseSym0- TFHelper_0123456789876543210 CH CT = FalseSym0- TFHelper_0123456789876543210 CH CU = FalseSym0- TFHelper_0123456789876543210 CH CV = FalseSym0- TFHelper_0123456789876543210 CH CW = FalseSym0- TFHelper_0123456789876543210 CH CX = FalseSym0- TFHelper_0123456789876543210 CH CY = FalseSym0- TFHelper_0123456789876543210 CH CZ = FalseSym0- TFHelper_0123456789876543210 CI CA = FalseSym0- TFHelper_0123456789876543210 CI CB = FalseSym0- TFHelper_0123456789876543210 CI CC = FalseSym0- TFHelper_0123456789876543210 CI CD = FalseSym0- TFHelper_0123456789876543210 CI CE = FalseSym0- TFHelper_0123456789876543210 CI CF = FalseSym0- TFHelper_0123456789876543210 CI CG = FalseSym0- TFHelper_0123456789876543210 CI CH = FalseSym0- TFHelper_0123456789876543210 CI CI = TrueSym0- TFHelper_0123456789876543210 CI CJ = FalseSym0- TFHelper_0123456789876543210 CI CK = FalseSym0- TFHelper_0123456789876543210 CI CL = FalseSym0- TFHelper_0123456789876543210 CI CM = FalseSym0- TFHelper_0123456789876543210 CI CN = FalseSym0- TFHelper_0123456789876543210 CI CO = FalseSym0- TFHelper_0123456789876543210 CI CP = FalseSym0- TFHelper_0123456789876543210 CI CQ = FalseSym0- TFHelper_0123456789876543210 CI CR = FalseSym0- TFHelper_0123456789876543210 CI CS = FalseSym0- TFHelper_0123456789876543210 CI CT = FalseSym0- TFHelper_0123456789876543210 CI CU = FalseSym0- TFHelper_0123456789876543210 CI CV = FalseSym0- TFHelper_0123456789876543210 CI CW = FalseSym0- TFHelper_0123456789876543210 CI CX = FalseSym0- TFHelper_0123456789876543210 CI CY = FalseSym0- TFHelper_0123456789876543210 CI CZ = FalseSym0- TFHelper_0123456789876543210 CJ CA = FalseSym0- TFHelper_0123456789876543210 CJ CB = FalseSym0- TFHelper_0123456789876543210 CJ CC = FalseSym0- TFHelper_0123456789876543210 CJ CD = FalseSym0- TFHelper_0123456789876543210 CJ CE = FalseSym0- TFHelper_0123456789876543210 CJ CF = FalseSym0- TFHelper_0123456789876543210 CJ CG = FalseSym0- TFHelper_0123456789876543210 CJ CH = FalseSym0- TFHelper_0123456789876543210 CJ CI = FalseSym0- TFHelper_0123456789876543210 CJ CJ = TrueSym0- TFHelper_0123456789876543210 CJ CK = FalseSym0- TFHelper_0123456789876543210 CJ CL = FalseSym0- TFHelper_0123456789876543210 CJ CM = FalseSym0- TFHelper_0123456789876543210 CJ CN = FalseSym0- TFHelper_0123456789876543210 CJ CO = FalseSym0- TFHelper_0123456789876543210 CJ CP = FalseSym0- TFHelper_0123456789876543210 CJ CQ = FalseSym0- TFHelper_0123456789876543210 CJ CR = FalseSym0- TFHelper_0123456789876543210 CJ CS = FalseSym0- TFHelper_0123456789876543210 CJ CT = FalseSym0- TFHelper_0123456789876543210 CJ CU = FalseSym0- TFHelper_0123456789876543210 CJ CV = FalseSym0- TFHelper_0123456789876543210 CJ CW = FalseSym0- TFHelper_0123456789876543210 CJ CX = FalseSym0- TFHelper_0123456789876543210 CJ CY = FalseSym0- TFHelper_0123456789876543210 CJ CZ = FalseSym0- TFHelper_0123456789876543210 CK CA = FalseSym0- TFHelper_0123456789876543210 CK CB = FalseSym0- TFHelper_0123456789876543210 CK CC = FalseSym0- TFHelper_0123456789876543210 CK CD = FalseSym0- TFHelper_0123456789876543210 CK CE = FalseSym0- TFHelper_0123456789876543210 CK CF = FalseSym0- TFHelper_0123456789876543210 CK CG = FalseSym0- TFHelper_0123456789876543210 CK CH = FalseSym0- TFHelper_0123456789876543210 CK CI = FalseSym0- TFHelper_0123456789876543210 CK CJ = FalseSym0- TFHelper_0123456789876543210 CK CK = TrueSym0- TFHelper_0123456789876543210 CK CL = FalseSym0- TFHelper_0123456789876543210 CK CM = FalseSym0- TFHelper_0123456789876543210 CK CN = FalseSym0- TFHelper_0123456789876543210 CK CO = FalseSym0- TFHelper_0123456789876543210 CK CP = FalseSym0- TFHelper_0123456789876543210 CK CQ = FalseSym0- TFHelper_0123456789876543210 CK CR = FalseSym0- TFHelper_0123456789876543210 CK CS = FalseSym0- TFHelper_0123456789876543210 CK CT = FalseSym0- TFHelper_0123456789876543210 CK CU = FalseSym0- TFHelper_0123456789876543210 CK CV = FalseSym0- TFHelper_0123456789876543210 CK CW = FalseSym0- TFHelper_0123456789876543210 CK CX = FalseSym0- TFHelper_0123456789876543210 CK CY = FalseSym0- TFHelper_0123456789876543210 CK CZ = FalseSym0- TFHelper_0123456789876543210 CL CA = FalseSym0- TFHelper_0123456789876543210 CL CB = FalseSym0- TFHelper_0123456789876543210 CL CC = FalseSym0- TFHelper_0123456789876543210 CL CD = FalseSym0- TFHelper_0123456789876543210 CL CE = FalseSym0- TFHelper_0123456789876543210 CL CF = FalseSym0- TFHelper_0123456789876543210 CL CG = FalseSym0- TFHelper_0123456789876543210 CL CH = FalseSym0- TFHelper_0123456789876543210 CL CI = FalseSym0- TFHelper_0123456789876543210 CL CJ = FalseSym0- TFHelper_0123456789876543210 CL CK = FalseSym0- TFHelper_0123456789876543210 CL CL = TrueSym0- TFHelper_0123456789876543210 CL CM = FalseSym0- TFHelper_0123456789876543210 CL CN = FalseSym0- TFHelper_0123456789876543210 CL CO = FalseSym0- TFHelper_0123456789876543210 CL CP = FalseSym0- TFHelper_0123456789876543210 CL CQ = FalseSym0- TFHelper_0123456789876543210 CL CR = FalseSym0- TFHelper_0123456789876543210 CL CS = FalseSym0- TFHelper_0123456789876543210 CL CT = FalseSym0- TFHelper_0123456789876543210 CL CU = FalseSym0- TFHelper_0123456789876543210 CL CV = FalseSym0- TFHelper_0123456789876543210 CL CW = FalseSym0- TFHelper_0123456789876543210 CL CX = FalseSym0- TFHelper_0123456789876543210 CL CY = FalseSym0- TFHelper_0123456789876543210 CL CZ = FalseSym0- TFHelper_0123456789876543210 CM CA = FalseSym0- TFHelper_0123456789876543210 CM CB = FalseSym0- TFHelper_0123456789876543210 CM CC = FalseSym0- TFHelper_0123456789876543210 CM CD = FalseSym0- TFHelper_0123456789876543210 CM CE = FalseSym0- TFHelper_0123456789876543210 CM CF = FalseSym0- TFHelper_0123456789876543210 CM CG = FalseSym0- TFHelper_0123456789876543210 CM CH = FalseSym0- TFHelper_0123456789876543210 CM CI = FalseSym0- TFHelper_0123456789876543210 CM CJ = FalseSym0- TFHelper_0123456789876543210 CM CK = FalseSym0- TFHelper_0123456789876543210 CM CL = FalseSym0- TFHelper_0123456789876543210 CM CM = TrueSym0- TFHelper_0123456789876543210 CM CN = FalseSym0- TFHelper_0123456789876543210 CM CO = FalseSym0- TFHelper_0123456789876543210 CM CP = FalseSym0- TFHelper_0123456789876543210 CM CQ = FalseSym0- TFHelper_0123456789876543210 CM CR = FalseSym0- TFHelper_0123456789876543210 CM CS = FalseSym0- TFHelper_0123456789876543210 CM CT = FalseSym0- TFHelper_0123456789876543210 CM CU = FalseSym0- TFHelper_0123456789876543210 CM CV = FalseSym0- TFHelper_0123456789876543210 CM CW = FalseSym0- TFHelper_0123456789876543210 CM CX = FalseSym0- TFHelper_0123456789876543210 CM CY = FalseSym0- TFHelper_0123456789876543210 CM CZ = FalseSym0- TFHelper_0123456789876543210 CN CA = FalseSym0- TFHelper_0123456789876543210 CN CB = FalseSym0- TFHelper_0123456789876543210 CN CC = FalseSym0- TFHelper_0123456789876543210 CN CD = FalseSym0- TFHelper_0123456789876543210 CN CE = FalseSym0- TFHelper_0123456789876543210 CN CF = FalseSym0- TFHelper_0123456789876543210 CN CG = FalseSym0- TFHelper_0123456789876543210 CN CH = FalseSym0- TFHelper_0123456789876543210 CN CI = FalseSym0- TFHelper_0123456789876543210 CN CJ = FalseSym0- TFHelper_0123456789876543210 CN CK = FalseSym0- TFHelper_0123456789876543210 CN CL = FalseSym0- TFHelper_0123456789876543210 CN CM = FalseSym0- TFHelper_0123456789876543210 CN CN = TrueSym0- TFHelper_0123456789876543210 CN CO = FalseSym0- TFHelper_0123456789876543210 CN CP = FalseSym0- TFHelper_0123456789876543210 CN CQ = FalseSym0- TFHelper_0123456789876543210 CN CR = FalseSym0- TFHelper_0123456789876543210 CN CS = FalseSym0- TFHelper_0123456789876543210 CN CT = FalseSym0- TFHelper_0123456789876543210 CN CU = FalseSym0- TFHelper_0123456789876543210 CN CV = FalseSym0- TFHelper_0123456789876543210 CN CW = FalseSym0- TFHelper_0123456789876543210 CN CX = FalseSym0- TFHelper_0123456789876543210 CN CY = FalseSym0- TFHelper_0123456789876543210 CN CZ = FalseSym0- TFHelper_0123456789876543210 CO CA = FalseSym0- TFHelper_0123456789876543210 CO CB = FalseSym0- TFHelper_0123456789876543210 CO CC = FalseSym0- TFHelper_0123456789876543210 CO CD = FalseSym0- TFHelper_0123456789876543210 CO CE = FalseSym0- TFHelper_0123456789876543210 CO CF = FalseSym0- TFHelper_0123456789876543210 CO CG = FalseSym0- TFHelper_0123456789876543210 CO CH = FalseSym0- TFHelper_0123456789876543210 CO CI = FalseSym0- TFHelper_0123456789876543210 CO CJ = FalseSym0- TFHelper_0123456789876543210 CO CK = FalseSym0- TFHelper_0123456789876543210 CO CL = FalseSym0- TFHelper_0123456789876543210 CO CM = FalseSym0- TFHelper_0123456789876543210 CO CN = FalseSym0- TFHelper_0123456789876543210 CO CO = TrueSym0- TFHelper_0123456789876543210 CO CP = FalseSym0- TFHelper_0123456789876543210 CO CQ = FalseSym0- TFHelper_0123456789876543210 CO CR = FalseSym0- TFHelper_0123456789876543210 CO CS = FalseSym0- TFHelper_0123456789876543210 CO CT = FalseSym0- TFHelper_0123456789876543210 CO CU = FalseSym0- TFHelper_0123456789876543210 CO CV = FalseSym0- TFHelper_0123456789876543210 CO CW = FalseSym0- TFHelper_0123456789876543210 CO CX = FalseSym0- TFHelper_0123456789876543210 CO CY = FalseSym0- TFHelper_0123456789876543210 CO CZ = FalseSym0- TFHelper_0123456789876543210 CP CA = FalseSym0- TFHelper_0123456789876543210 CP CB = FalseSym0- TFHelper_0123456789876543210 CP CC = FalseSym0- TFHelper_0123456789876543210 CP CD = FalseSym0- TFHelper_0123456789876543210 CP CE = FalseSym0- TFHelper_0123456789876543210 CP CF = FalseSym0- TFHelper_0123456789876543210 CP CG = FalseSym0- TFHelper_0123456789876543210 CP CH = FalseSym0- TFHelper_0123456789876543210 CP CI = FalseSym0- TFHelper_0123456789876543210 CP CJ = FalseSym0- TFHelper_0123456789876543210 CP CK = FalseSym0- TFHelper_0123456789876543210 CP CL = FalseSym0- TFHelper_0123456789876543210 CP CM = FalseSym0- TFHelper_0123456789876543210 CP CN = FalseSym0- TFHelper_0123456789876543210 CP CO = FalseSym0- TFHelper_0123456789876543210 CP CP = TrueSym0- TFHelper_0123456789876543210 CP CQ = FalseSym0- TFHelper_0123456789876543210 CP CR = FalseSym0- TFHelper_0123456789876543210 CP CS = FalseSym0- TFHelper_0123456789876543210 CP CT = FalseSym0- TFHelper_0123456789876543210 CP CU = FalseSym0- TFHelper_0123456789876543210 CP CV = FalseSym0- TFHelper_0123456789876543210 CP CW = FalseSym0- TFHelper_0123456789876543210 CP CX = FalseSym0- TFHelper_0123456789876543210 CP CY = FalseSym0- TFHelper_0123456789876543210 CP CZ = FalseSym0- TFHelper_0123456789876543210 CQ CA = FalseSym0- TFHelper_0123456789876543210 CQ CB = FalseSym0- TFHelper_0123456789876543210 CQ CC = FalseSym0- TFHelper_0123456789876543210 CQ CD = FalseSym0- TFHelper_0123456789876543210 CQ CE = FalseSym0- TFHelper_0123456789876543210 CQ CF = FalseSym0- TFHelper_0123456789876543210 CQ CG = FalseSym0- TFHelper_0123456789876543210 CQ CH = FalseSym0- TFHelper_0123456789876543210 CQ CI = FalseSym0- TFHelper_0123456789876543210 CQ CJ = FalseSym0- TFHelper_0123456789876543210 CQ CK = FalseSym0- TFHelper_0123456789876543210 CQ CL = FalseSym0- TFHelper_0123456789876543210 CQ CM = FalseSym0- TFHelper_0123456789876543210 CQ CN = FalseSym0- TFHelper_0123456789876543210 CQ CO = FalseSym0- TFHelper_0123456789876543210 CQ CP = FalseSym0- TFHelper_0123456789876543210 CQ CQ = TrueSym0- TFHelper_0123456789876543210 CQ CR = FalseSym0- TFHelper_0123456789876543210 CQ CS = FalseSym0- TFHelper_0123456789876543210 CQ CT = FalseSym0- TFHelper_0123456789876543210 CQ CU = FalseSym0- TFHelper_0123456789876543210 CQ CV = FalseSym0- TFHelper_0123456789876543210 CQ CW = FalseSym0- TFHelper_0123456789876543210 CQ CX = FalseSym0- TFHelper_0123456789876543210 CQ CY = FalseSym0- TFHelper_0123456789876543210 CQ CZ = FalseSym0- TFHelper_0123456789876543210 CR CA = FalseSym0- TFHelper_0123456789876543210 CR CB = FalseSym0- TFHelper_0123456789876543210 CR CC = FalseSym0- TFHelper_0123456789876543210 CR CD = FalseSym0- TFHelper_0123456789876543210 CR CE = FalseSym0- TFHelper_0123456789876543210 CR CF = FalseSym0- TFHelper_0123456789876543210 CR CG = FalseSym0- TFHelper_0123456789876543210 CR CH = FalseSym0- TFHelper_0123456789876543210 CR CI = FalseSym0- TFHelper_0123456789876543210 CR CJ = FalseSym0- TFHelper_0123456789876543210 CR CK = FalseSym0- TFHelper_0123456789876543210 CR CL = FalseSym0- TFHelper_0123456789876543210 CR CM = FalseSym0- TFHelper_0123456789876543210 CR CN = FalseSym0- TFHelper_0123456789876543210 CR CO = FalseSym0- TFHelper_0123456789876543210 CR CP = FalseSym0- TFHelper_0123456789876543210 CR CQ = FalseSym0- TFHelper_0123456789876543210 CR CR = TrueSym0- TFHelper_0123456789876543210 CR CS = FalseSym0- TFHelper_0123456789876543210 CR CT = FalseSym0- TFHelper_0123456789876543210 CR CU = FalseSym0- TFHelper_0123456789876543210 CR CV = FalseSym0- TFHelper_0123456789876543210 CR CW = FalseSym0- TFHelper_0123456789876543210 CR CX = FalseSym0- TFHelper_0123456789876543210 CR CY = FalseSym0- TFHelper_0123456789876543210 CR CZ = FalseSym0- TFHelper_0123456789876543210 CS CA = FalseSym0- TFHelper_0123456789876543210 CS CB = FalseSym0- TFHelper_0123456789876543210 CS CC = FalseSym0- TFHelper_0123456789876543210 CS CD = FalseSym0- TFHelper_0123456789876543210 CS CE = FalseSym0- TFHelper_0123456789876543210 CS CF = FalseSym0- TFHelper_0123456789876543210 CS CG = FalseSym0- TFHelper_0123456789876543210 CS CH = FalseSym0- TFHelper_0123456789876543210 CS CI = FalseSym0- TFHelper_0123456789876543210 CS CJ = FalseSym0- TFHelper_0123456789876543210 CS CK = FalseSym0- TFHelper_0123456789876543210 CS CL = FalseSym0- TFHelper_0123456789876543210 CS CM = FalseSym0- TFHelper_0123456789876543210 CS CN = FalseSym0- TFHelper_0123456789876543210 CS CO = FalseSym0- TFHelper_0123456789876543210 CS CP = FalseSym0- TFHelper_0123456789876543210 CS CQ = FalseSym0- TFHelper_0123456789876543210 CS CR = FalseSym0- TFHelper_0123456789876543210 CS CS = TrueSym0- TFHelper_0123456789876543210 CS CT = FalseSym0- TFHelper_0123456789876543210 CS CU = FalseSym0- TFHelper_0123456789876543210 CS CV = FalseSym0- TFHelper_0123456789876543210 CS CW = FalseSym0- TFHelper_0123456789876543210 CS CX = FalseSym0- TFHelper_0123456789876543210 CS CY = FalseSym0- TFHelper_0123456789876543210 CS CZ = FalseSym0- TFHelper_0123456789876543210 CT CA = FalseSym0- TFHelper_0123456789876543210 CT CB = FalseSym0- TFHelper_0123456789876543210 CT CC = FalseSym0- TFHelper_0123456789876543210 CT CD = FalseSym0- TFHelper_0123456789876543210 CT CE = FalseSym0- TFHelper_0123456789876543210 CT CF = FalseSym0- TFHelper_0123456789876543210 CT CG = FalseSym0- TFHelper_0123456789876543210 CT CH = FalseSym0- TFHelper_0123456789876543210 CT CI = FalseSym0- TFHelper_0123456789876543210 CT CJ = FalseSym0- TFHelper_0123456789876543210 CT CK = FalseSym0- TFHelper_0123456789876543210 CT CL = FalseSym0- TFHelper_0123456789876543210 CT CM = FalseSym0- TFHelper_0123456789876543210 CT CN = FalseSym0- TFHelper_0123456789876543210 CT CO = FalseSym0- TFHelper_0123456789876543210 CT CP = FalseSym0- TFHelper_0123456789876543210 CT CQ = FalseSym0- TFHelper_0123456789876543210 CT CR = FalseSym0- TFHelper_0123456789876543210 CT CS = FalseSym0- TFHelper_0123456789876543210 CT CT = TrueSym0- TFHelper_0123456789876543210 CT CU = FalseSym0- TFHelper_0123456789876543210 CT CV = FalseSym0- TFHelper_0123456789876543210 CT CW = FalseSym0- TFHelper_0123456789876543210 CT CX = FalseSym0- TFHelper_0123456789876543210 CT CY = FalseSym0- TFHelper_0123456789876543210 CT CZ = FalseSym0- TFHelper_0123456789876543210 CU CA = FalseSym0- TFHelper_0123456789876543210 CU CB = FalseSym0- TFHelper_0123456789876543210 CU CC = FalseSym0- TFHelper_0123456789876543210 CU CD = FalseSym0- TFHelper_0123456789876543210 CU CE = FalseSym0- TFHelper_0123456789876543210 CU CF = FalseSym0- TFHelper_0123456789876543210 CU CG = FalseSym0- TFHelper_0123456789876543210 CU CH = FalseSym0- TFHelper_0123456789876543210 CU CI = FalseSym0- TFHelper_0123456789876543210 CU CJ = FalseSym0- TFHelper_0123456789876543210 CU CK = FalseSym0- TFHelper_0123456789876543210 CU CL = FalseSym0- TFHelper_0123456789876543210 CU CM = FalseSym0- TFHelper_0123456789876543210 CU CN = FalseSym0- TFHelper_0123456789876543210 CU CO = FalseSym0- TFHelper_0123456789876543210 CU CP = FalseSym0- TFHelper_0123456789876543210 CU CQ = FalseSym0- TFHelper_0123456789876543210 CU CR = FalseSym0- TFHelper_0123456789876543210 CU CS = FalseSym0- TFHelper_0123456789876543210 CU CT = FalseSym0- TFHelper_0123456789876543210 CU CU = TrueSym0- TFHelper_0123456789876543210 CU CV = FalseSym0- TFHelper_0123456789876543210 CU CW = FalseSym0- TFHelper_0123456789876543210 CU CX = FalseSym0- TFHelper_0123456789876543210 CU CY = FalseSym0- TFHelper_0123456789876543210 CU CZ = FalseSym0- TFHelper_0123456789876543210 CV CA = FalseSym0- TFHelper_0123456789876543210 CV CB = FalseSym0- TFHelper_0123456789876543210 CV CC = FalseSym0- TFHelper_0123456789876543210 CV CD = FalseSym0- TFHelper_0123456789876543210 CV CE = FalseSym0- TFHelper_0123456789876543210 CV CF = FalseSym0- TFHelper_0123456789876543210 CV CG = FalseSym0- TFHelper_0123456789876543210 CV CH = FalseSym0- TFHelper_0123456789876543210 CV CI = FalseSym0- TFHelper_0123456789876543210 CV CJ = FalseSym0- TFHelper_0123456789876543210 CV CK = FalseSym0- TFHelper_0123456789876543210 CV CL = FalseSym0- TFHelper_0123456789876543210 CV CM = FalseSym0- TFHelper_0123456789876543210 CV CN = FalseSym0- TFHelper_0123456789876543210 CV CO = FalseSym0- TFHelper_0123456789876543210 CV CP = FalseSym0- TFHelper_0123456789876543210 CV CQ = FalseSym0- TFHelper_0123456789876543210 CV CR = FalseSym0- TFHelper_0123456789876543210 CV CS = FalseSym0- TFHelper_0123456789876543210 CV CT = FalseSym0- TFHelper_0123456789876543210 CV CU = FalseSym0- TFHelper_0123456789876543210 CV CV = TrueSym0- TFHelper_0123456789876543210 CV CW = FalseSym0- TFHelper_0123456789876543210 CV CX = FalseSym0- TFHelper_0123456789876543210 CV CY = FalseSym0- TFHelper_0123456789876543210 CV CZ = FalseSym0- TFHelper_0123456789876543210 CW CA = FalseSym0- TFHelper_0123456789876543210 CW CB = FalseSym0- TFHelper_0123456789876543210 CW CC = FalseSym0- TFHelper_0123456789876543210 CW CD = FalseSym0- TFHelper_0123456789876543210 CW CE = FalseSym0- TFHelper_0123456789876543210 CW CF = FalseSym0- TFHelper_0123456789876543210 CW CG = FalseSym0- TFHelper_0123456789876543210 CW CH = FalseSym0- TFHelper_0123456789876543210 CW CI = FalseSym0- TFHelper_0123456789876543210 CW CJ = FalseSym0- TFHelper_0123456789876543210 CW CK = FalseSym0- TFHelper_0123456789876543210 CW CL = FalseSym0- TFHelper_0123456789876543210 CW CM = FalseSym0- TFHelper_0123456789876543210 CW CN = FalseSym0- TFHelper_0123456789876543210 CW CO = FalseSym0- TFHelper_0123456789876543210 CW CP = FalseSym0- TFHelper_0123456789876543210 CW CQ = FalseSym0- TFHelper_0123456789876543210 CW CR = FalseSym0- TFHelper_0123456789876543210 CW CS = FalseSym0- TFHelper_0123456789876543210 CW CT = FalseSym0- TFHelper_0123456789876543210 CW CU = FalseSym0- TFHelper_0123456789876543210 CW CV = FalseSym0- TFHelper_0123456789876543210 CW CW = TrueSym0- TFHelper_0123456789876543210 CW CX = FalseSym0- TFHelper_0123456789876543210 CW CY = FalseSym0- TFHelper_0123456789876543210 CW CZ = FalseSym0- TFHelper_0123456789876543210 CX CA = FalseSym0- TFHelper_0123456789876543210 CX CB = FalseSym0- TFHelper_0123456789876543210 CX CC = FalseSym0- TFHelper_0123456789876543210 CX CD = FalseSym0- TFHelper_0123456789876543210 CX CE = FalseSym0- TFHelper_0123456789876543210 CX CF = FalseSym0- TFHelper_0123456789876543210 CX CG = FalseSym0- TFHelper_0123456789876543210 CX CH = FalseSym0- TFHelper_0123456789876543210 CX CI = FalseSym0- TFHelper_0123456789876543210 CX CJ = FalseSym0- TFHelper_0123456789876543210 CX CK = FalseSym0- TFHelper_0123456789876543210 CX CL = FalseSym0- TFHelper_0123456789876543210 CX CM = FalseSym0- TFHelper_0123456789876543210 CX CN = FalseSym0- TFHelper_0123456789876543210 CX CO = FalseSym0- TFHelper_0123456789876543210 CX CP = FalseSym0- TFHelper_0123456789876543210 CX CQ = FalseSym0- TFHelper_0123456789876543210 CX CR = FalseSym0- TFHelper_0123456789876543210 CX CS = FalseSym0- TFHelper_0123456789876543210 CX CT = FalseSym0- TFHelper_0123456789876543210 CX CU = FalseSym0- TFHelper_0123456789876543210 CX CV = FalseSym0- TFHelper_0123456789876543210 CX CW = FalseSym0- TFHelper_0123456789876543210 CX CX = TrueSym0- TFHelper_0123456789876543210 CX CY = FalseSym0- TFHelper_0123456789876543210 CX CZ = FalseSym0- TFHelper_0123456789876543210 CY CA = FalseSym0- TFHelper_0123456789876543210 CY CB = FalseSym0- TFHelper_0123456789876543210 CY CC = FalseSym0- TFHelper_0123456789876543210 CY CD = FalseSym0- TFHelper_0123456789876543210 CY CE = FalseSym0- TFHelper_0123456789876543210 CY CF = FalseSym0- TFHelper_0123456789876543210 CY CG = FalseSym0- TFHelper_0123456789876543210 CY CH = FalseSym0- TFHelper_0123456789876543210 CY CI = FalseSym0- TFHelper_0123456789876543210 CY CJ = FalseSym0- TFHelper_0123456789876543210 CY CK = FalseSym0- TFHelper_0123456789876543210 CY CL = FalseSym0- TFHelper_0123456789876543210 CY CM = FalseSym0- TFHelper_0123456789876543210 CY CN = FalseSym0- TFHelper_0123456789876543210 CY CO = FalseSym0- TFHelper_0123456789876543210 CY CP = FalseSym0- TFHelper_0123456789876543210 CY CQ = FalseSym0- TFHelper_0123456789876543210 CY CR = FalseSym0- TFHelper_0123456789876543210 CY CS = FalseSym0- TFHelper_0123456789876543210 CY CT = FalseSym0- TFHelper_0123456789876543210 CY CU = FalseSym0- TFHelper_0123456789876543210 CY CV = FalseSym0- TFHelper_0123456789876543210 CY CW = FalseSym0- TFHelper_0123456789876543210 CY CX = FalseSym0- TFHelper_0123456789876543210 CY CY = TrueSym0- TFHelper_0123456789876543210 CY CZ = FalseSym0- TFHelper_0123456789876543210 CZ CA = FalseSym0- TFHelper_0123456789876543210 CZ CB = FalseSym0- TFHelper_0123456789876543210 CZ CC = FalseSym0- TFHelper_0123456789876543210 CZ CD = FalseSym0- TFHelper_0123456789876543210 CZ CE = FalseSym0- TFHelper_0123456789876543210 CZ CF = FalseSym0- TFHelper_0123456789876543210 CZ CG = FalseSym0- TFHelper_0123456789876543210 CZ CH = FalseSym0- TFHelper_0123456789876543210 CZ CI = FalseSym0- TFHelper_0123456789876543210 CZ CJ = FalseSym0- TFHelper_0123456789876543210 CZ CK = FalseSym0- TFHelper_0123456789876543210 CZ CL = FalseSym0- TFHelper_0123456789876543210 CZ CM = FalseSym0- TFHelper_0123456789876543210 CZ CN = FalseSym0- TFHelper_0123456789876543210 CZ CO = FalseSym0- TFHelper_0123456789876543210 CZ CP = FalseSym0- TFHelper_0123456789876543210 CZ CQ = FalseSym0- TFHelper_0123456789876543210 CZ CR = FalseSym0- TFHelper_0123456789876543210 CZ CS = FalseSym0- TFHelper_0123456789876543210 CZ CT = FalseSym0- TFHelper_0123456789876543210 CZ CU = FalseSym0- TFHelper_0123456789876543210 CZ CV = FalseSym0- TFHelper_0123456789876543210 CZ CW = FalseSym0- TFHelper_0123456789876543210 CZ CX = FalseSym0- TFHelper_0123456789876543210 CZ CY = FalseSym0- TFHelper_0123456789876543210 CZ CZ = TrueSym0- type TFHelper_0123456789876543210Sym0 :: (~>) AChar ((~>) AChar Bool)- data TFHelper_0123456789876543210Sym0 :: (~>) AChar ((~>) AChar Bool)- where- TFHelper_0123456789876543210Sym0KindInference :: SameKind (Apply TFHelper_0123456789876543210Sym0 arg) (TFHelper_0123456789876543210Sym1 arg) =>- TFHelper_0123456789876543210Sym0 a0123456789876543210- type instance Apply TFHelper_0123456789876543210Sym0 a0123456789876543210 = TFHelper_0123456789876543210Sym1 a0123456789876543210- instance SuppressUnusedWarnings TFHelper_0123456789876543210Sym0 where- suppressUnusedWarnings- = snd (((,) TFHelper_0123456789876543210Sym0KindInference) ())- type TFHelper_0123456789876543210Sym1 :: AChar -> (~>) AChar Bool- data TFHelper_0123456789876543210Sym1 (a0123456789876543210 :: AChar) :: (~>) AChar Bool- where- TFHelper_0123456789876543210Sym1KindInference :: SameKind (Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) arg) (TFHelper_0123456789876543210Sym2 a0123456789876543210 arg) =>- TFHelper_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210- type instance Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (TFHelper_0123456789876543210Sym1 a0123456789876543210) where- suppressUnusedWarnings- = snd (((,) TFHelper_0123456789876543210Sym1KindInference) ())- type TFHelper_0123456789876543210Sym2 :: AChar -> AChar -> Bool- type family TFHelper_0123456789876543210Sym2 (a0123456789876543210 :: AChar) (a0123456789876543210 :: AChar) :: Bool where- TFHelper_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210- instance PEq AChar where- type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a- sLookup ::- forall (t :: [AChar]) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply LookupSym0 t) t :: U)- sOccurs ::- forall (t :: [AChar]) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply OccursSym0 t) t :: Bool)- sDisjoint ::- forall (t :: Schema) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply DisjointSym0 t) t :: Bool)- sAttrNotIn ::- forall (t :: Attribute) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply AttrNotInSym0 t) t :: Bool)- sAppend ::- forall (t :: Schema) (t :: Schema).- Sing t -> Sing t -> Sing (Apply (Apply AppendSym0 t) t :: Schema)- sLookup _ (SSch SNil) = sUndefined- sLookup- (sName :: Sing name)- (SSch (SCons (SAttr (sName' :: Sing name') (sU :: Sing u))- (sAttrs :: Sing attrs)))- = let- sScrutinee_0123456789876543210 ::- Sing @_ (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name name' u attrs)- sScrutinee_0123456789876543210- = (applySing ((applySing ((singFun2 @(==@#@$)) (%==))) sName))- sName'- in- (GHC.Base.id- @(Sing (Case_0123456789876543210 name name' u attrs (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name name' u attrs) :: U)))- (case sScrutinee_0123456789876543210 of- STrue -> sU- SFalse- -> (applySing ((applySing ((singFun2 @LookupSym0) sLookup)) sName))- ((applySing ((singFun1 @SchSym0) SSch)) sAttrs))- sOccurs _ (SSch SNil) = SFalse- sOccurs- (sName :: Sing name)- (SSch (SCons (SAttr (sName' :: Sing name') _)- (sAttrs :: Sing attrs)))- = (applySing- ((applySing ((singFun2 @(||@#@$)) (%||)))- ((applySing ((applySing ((singFun2 @(==@#@$)) (%==))) sName))- sName')))- ((applySing ((applySing ((singFun2 @OccursSym0) sOccurs)) sName))- ((applySing ((singFun1 @SchSym0) SSch)) sAttrs))- sDisjoint (SSch SNil) _ = STrue- sDisjoint- (SSch (SCons (sH :: Sing h) (sT :: Sing t)))- (sS :: Sing s)- = (applySing- ((applySing ((singFun2 @(&&@#@$)) (%&&)))- ((applySing- ((applySing ((singFun2 @AttrNotInSym0) sAttrNotIn)) sH))- sS)))- ((applySing- ((applySing ((singFun2 @DisjointSym0) sDisjoint))- ((applySing ((singFun1 @SchSym0) SSch)) sT)))- sS)- sAttrNotIn _ (SSch SNil) = STrue- sAttrNotIn- (SAttr (sName :: Sing name) (sU :: Sing u))- (SSch (SCons (SAttr (sName' :: Sing name') _) (sT :: Sing t)))- = (applySing- ((applySing ((singFun2 @(&&@#@$)) (%&&)))- ((applySing ((applySing ((singFun2 @(/=@#@$)) (%/=))) sName))- sName')))- ((applySing- ((applySing ((singFun2 @AttrNotInSym0) sAttrNotIn))- ((applySing ((applySing ((singFun2 @AttrSym0) SAttr)) sName)) sU)))- ((applySing ((singFun1 @SchSym0) SSch)) sT))- sAppend (SSch (sS1 :: Sing s1)) (SSch (sS2 :: Sing s2))- = (applySing ((singFun1 @SchSym0) SSch))- ((applySing ((applySing ((singFun2 @(++@#@$)) (%++))) sS1)) sS2)- instance SingI (LookupSym0 :: (~>) [AChar] ((~>) Schema U)) where- sing = (singFun2 @LookupSym0) sLookup- instance SingI d =>- SingI (LookupSym1 (d :: [AChar]) :: (~>) Schema U) where- sing = (singFun1 @(LookupSym1 (d :: [AChar]))) (sLookup (sing @d))- instance SingI (OccursSym0 :: (~>) [AChar] ((~>) Schema Bool)) where- sing = (singFun2 @OccursSym0) sOccurs- instance SingI d =>- SingI (OccursSym1 (d :: [AChar]) :: (~>) Schema Bool) where- sing = (singFun1 @(OccursSym1 (d :: [AChar]))) (sOccurs (sing @d))- instance SingI (DisjointSym0 :: (~>) Schema ((~>) Schema Bool)) where- sing = (singFun2 @DisjointSym0) sDisjoint- instance SingI d =>- SingI (DisjointSym1 (d :: Schema) :: (~>) Schema Bool) where- sing- = (singFun1 @(DisjointSym1 (d :: Schema))) (sDisjoint (sing @d))- instance SingI (AttrNotInSym0 :: (~>) Attribute ((~>) Schema Bool)) where- sing = (singFun2 @AttrNotInSym0) sAttrNotIn- instance SingI d =>- SingI (AttrNotInSym1 (d :: Attribute) :: (~>) Schema Bool) where- sing- = (singFun1 @(AttrNotInSym1 (d :: Attribute)))- (sAttrNotIn (sing @d))- instance SingI (AppendSym0 :: (~>) Schema ((~>) Schema Schema)) where- sing = (singFun2 @AppendSym0) sAppend- instance SingI d =>- SingI (AppendSym1 (d :: Schema) :: (~>) Schema Schema) where- sing = (singFun1 @(AppendSym1 (d :: Schema))) (sAppend (sing @d))- data SU :: U -> Type- where- SBOOL :: SU (BOOL :: U)- SSTRING :: SU (STRING :: U)- SNAT :: SU (NAT :: U)- SVEC :: forall (n :: U) (n :: Nat).- (Sing n) -> (Sing n) -> SU (VEC n n :: U)- type instance Sing @U = SU- instance SingKind U where- type Demote U = U- fromSing SBOOL = BOOL- fromSing SSTRING = STRING- fromSing SNAT = NAT- fromSing (SVEC b b) = (VEC (fromSing b)) (fromSing b)- toSing BOOL = SomeSing SBOOL- toSing STRING = SomeSing SSTRING- toSing NAT = SomeSing SNAT- toSing (VEC (b :: Demote U) (b :: Demote Nat))- = case- ((,) (toSing b :: SomeSing U)) (toSing b :: SomeSing Nat)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SVEC c) c) }- data SAChar :: AChar -> Type- where- SCA :: SAChar (CA :: AChar)- SCB :: SAChar (CB :: AChar)- SCC :: SAChar (CC :: AChar)- SCD :: SAChar (CD :: AChar)- SCE :: SAChar (CE :: AChar)- SCF :: SAChar (CF :: AChar)- SCG :: SAChar (CG :: AChar)- SCH :: SAChar (CH :: AChar)- SCI :: SAChar (CI :: AChar)- SCJ :: SAChar (CJ :: AChar)- SCK :: SAChar (CK :: AChar)- SCL :: SAChar (CL :: AChar)- SCM :: SAChar (CM :: AChar)- SCN :: SAChar (CN :: AChar)- SCO :: SAChar (CO :: AChar)- SCP :: SAChar (CP :: AChar)- SCQ :: SAChar (CQ :: AChar)- SCR :: SAChar (CR :: AChar)- SCS :: SAChar (CS :: AChar)- SCT :: SAChar (CT :: AChar)- SCU :: SAChar (CU :: AChar)- SCV :: SAChar (CV :: AChar)- SCW :: SAChar (CW :: AChar)- SCX :: SAChar (CX :: AChar)- SCY :: SAChar (CY :: AChar)- SCZ :: SAChar (CZ :: AChar)- type instance Sing @AChar = SAChar- instance SingKind AChar where- type Demote AChar = AChar- fromSing SCA = CA- fromSing SCB = CB- fromSing SCC = CC- fromSing SCD = CD- fromSing SCE = CE- fromSing SCF = CF- fromSing SCG = CG- fromSing SCH = CH- fromSing SCI = CI- fromSing SCJ = CJ- fromSing SCK = CK- fromSing SCL = CL- fromSing SCM = CM- fromSing SCN = CN- fromSing SCO = CO- fromSing SCP = CP- fromSing SCQ = CQ- fromSing SCR = CR- fromSing SCS = CS- fromSing SCT = CT- fromSing SCU = CU- fromSing SCV = CV- fromSing SCW = CW- fromSing SCX = CX- fromSing SCY = CY- fromSing SCZ = CZ- toSing CA = SomeSing SCA- toSing CB = SomeSing SCB- toSing CC = SomeSing SCC- toSing CD = SomeSing SCD- toSing CE = SomeSing SCE- toSing CF = SomeSing SCF- toSing CG = SomeSing SCG- toSing CH = SomeSing SCH- toSing CI = SomeSing SCI- toSing CJ = SomeSing SCJ- toSing CK = SomeSing SCK- toSing CL = SomeSing SCL- toSing CM = SomeSing SCM- toSing CN = SomeSing SCN- toSing CO = SomeSing SCO- toSing CP = SomeSing SCP- toSing CQ = SomeSing SCQ- toSing CR = SomeSing SCR- toSing CS = SomeSing SCS- toSing CT = SomeSing SCT- toSing CU = SomeSing SCU- toSing CV = SomeSing SCV- toSing CW = SomeSing SCW- toSing CX = SomeSing SCX- toSing CY = SomeSing SCY- toSing CZ = SomeSing SCZ- data SAttribute :: Attribute -> Type- where- SAttr :: forall (n :: [AChar]) (n :: U).- (Sing n) -> (Sing n) -> SAttribute (Attr n n :: Attribute)- type instance Sing @Attribute = SAttribute- instance SingKind Attribute where- type Demote Attribute = Attribute- fromSing (SAttr b b) = (Attr (fromSing b)) (fromSing b)- toSing (Attr (b :: Demote [AChar]) (b :: Demote U))- = case- ((,) (toSing b :: SomeSing [AChar])) (toSing b :: SomeSing U)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SAttr c) c) }- data SSchema :: Schema -> Type- where- SSch :: forall (n :: [Attribute]).- (Sing n) -> SSchema (Sch n :: Schema)- type instance Sing @Schema = SSchema- instance SingKind Schema where- type Demote Schema = Schema- fromSing (SSch b) = Sch (fromSing b)- toSing (Sch (b :: Demote [Attribute]))- = case toSing b :: SomeSing [Attribute] of {- SomeSing c -> SomeSing (SSch c) }- instance (SEq U, SEq Nat) => SEq U where- (%==) ::- forall (t1 :: U) (t2 :: U).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun U ((~>) U Bool)- -> Type) t1) t2)- (%==) SBOOL SBOOL = STrue- (%==) SBOOL SSTRING = SFalse- (%==) SBOOL SNAT = SFalse- (%==) SBOOL (SVEC _ _) = SFalse- (%==) SSTRING SBOOL = SFalse- (%==) SSTRING SSTRING = STrue- (%==) SSTRING SNAT = SFalse- (%==) SSTRING (SVEC _ _) = SFalse- (%==) SNAT SBOOL = SFalse- (%==) SNAT SSTRING = SFalse- (%==) SNAT SNAT = STrue- (%==) SNAT (SVEC _ _) = SFalse- (%==) (SVEC _ _) SBOOL = SFalse- (%==) (SVEC _ _) SSTRING = SFalse- (%==) (SVEC _ _) SNAT = SFalse- (%==)- (SVEC (sA_0123456789876543210 :: Sing a_0123456789876543210)- (sA_0123456789876543210 :: Sing a_0123456789876543210))- (SVEC (sB_0123456789876543210 :: Sing b_0123456789876543210)- (sB_0123456789876543210 :: Sing b_0123456789876543210))- = (applySing- ((applySing ((singFun2 @(&&@#@$)) (%&&)))- ((applySing- ((applySing ((singFun2 @(==@#@$)) (%==))) sA_0123456789876543210))- sB_0123456789876543210)))- ((applySing- ((applySing ((singFun2 @(==@#@$)) (%==))) sA_0123456789876543210))- sB_0123456789876543210)- instance (SShow U, SShow Nat) => SShow U where- sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: U) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) U ((~>) Symbol Symbol))- -> Type) t1) t2) t3)- sShowsPrec- _- SBOOL- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "BOOL")))- sA_0123456789876543210- sShowsPrec- _- SSTRING- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "STRING")))- sA_0123456789876543210- sShowsPrec- _- SNAT- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "NAT")))- sA_0123456789876543210- sShowsPrec- (sP_0123456789876543210 :: Sing p_0123456789876543210)- (SVEC (sArg_0123456789876543210 :: Sing arg_0123456789876543210)- (sArg_0123456789876543210 :: Sing arg_0123456789876543210))- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing- ((applySing ((singFun3 @ShowParenSym0) sShowParen))- ((applySing- ((applySing ((singFun2 @(>@#@$)) (%>))) sP_0123456789876543210))- (sFromInteger (sing :: Sing 10)))))- ((applySing- ((applySing ((singFun3 @(.@#@$)) (%.)))- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "VEC "))))- ((applySing- ((applySing ((singFun3 @(.@#@$)) (%.)))- ((applySing- ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))- (sFromInteger (sing :: Sing 11))))- sArg_0123456789876543210)))- ((applySing- ((applySing ((singFun3 @(.@#@$)) (%.)))- ((singFun1 @ShowSpaceSym0) sShowSpace)))- ((applySing- ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))- (sFromInteger (sing :: Sing 11))))- sArg_0123456789876543210))))))- sA_0123456789876543210- instance SShow AChar where- sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: AChar) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) AChar ((~>) Symbol Symbol))- -> Type) t1) t2) t3)- sShowsPrec- _- SCA- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CA")))- sA_0123456789876543210- sShowsPrec- _- SCB- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CB")))- sA_0123456789876543210- sShowsPrec- _- SCC- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CC")))- sA_0123456789876543210- sShowsPrec- _- SCD- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CD")))- sA_0123456789876543210- sShowsPrec- _- SCE- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CE")))- sA_0123456789876543210- sShowsPrec- _- SCF- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CF")))- sA_0123456789876543210- sShowsPrec- _- SCG- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CG")))- sA_0123456789876543210- sShowsPrec- _- SCH- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CH")))- sA_0123456789876543210- sShowsPrec- _- SCI- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CI")))- sA_0123456789876543210- sShowsPrec- _- SCJ- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CJ")))- sA_0123456789876543210- sShowsPrec- _- SCK- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CK")))- sA_0123456789876543210- sShowsPrec- _- SCL- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CL")))- sA_0123456789876543210- sShowsPrec- _- SCM- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CM")))- sA_0123456789876543210- sShowsPrec- _- SCN- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CN")))- sA_0123456789876543210- sShowsPrec- _- SCO- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CO")))- sA_0123456789876543210- sShowsPrec- _- SCP- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CP")))- sA_0123456789876543210- sShowsPrec- _- SCQ- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CQ")))- sA_0123456789876543210- sShowsPrec- _- SCR- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CR")))- sA_0123456789876543210- sShowsPrec- _- SCS- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CS")))- sA_0123456789876543210- sShowsPrec- _- SCT- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CT")))- sA_0123456789876543210- sShowsPrec- _- SCU- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CU")))- sA_0123456789876543210- sShowsPrec- _- SCV- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CV")))- sA_0123456789876543210- sShowsPrec- _- SCW- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CW")))- sA_0123456789876543210- sShowsPrec- _- SCX- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CX")))- sA_0123456789876543210- sShowsPrec- _- SCY- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CY")))- sA_0123456789876543210- sShowsPrec- _- SCZ- (sA_0123456789876543210 :: Sing a_0123456789876543210)- = (applySing- ((applySing ((singFun2 @ShowStringSym0) sShowString))- (sing :: Sing "CZ")))- sA_0123456789876543210- instance SEq AChar where- (%==) ::- forall (t1 :: AChar) (t2 :: AChar).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun AChar ((~>) AChar Bool)- -> Type) t1) t2)- (%==) SCA SCA = STrue- (%==) SCA SCB = SFalse- (%==) SCA SCC = SFalse- (%==) SCA SCD = SFalse- (%==) SCA SCE = SFalse- (%==) SCA SCF = SFalse- (%==) SCA SCG = SFalse- (%==) SCA SCH = SFalse- (%==) SCA SCI = SFalse- (%==) SCA SCJ = SFalse- (%==) SCA SCK = SFalse- (%==) SCA SCL = SFalse- (%==) SCA SCM = SFalse- (%==) SCA SCN = SFalse- (%==) SCA SCO = SFalse- (%==) SCA SCP = SFalse- (%==) SCA SCQ = SFalse- (%==) SCA SCR = SFalse- (%==) SCA SCS = SFalse- (%==) SCA SCT = SFalse- (%==) SCA SCU = SFalse- (%==) SCA SCV = SFalse- (%==) SCA SCW = SFalse- (%==) SCA SCX = SFalse- (%==) SCA SCY = SFalse- (%==) SCA SCZ = SFalse- (%==) SCB SCA = SFalse- (%==) SCB SCB = STrue- (%==) SCB SCC = SFalse- (%==) SCB SCD = SFalse- (%==) SCB SCE = SFalse- (%==) SCB SCF = SFalse- (%==) SCB SCG = SFalse- (%==) SCB SCH = SFalse- (%==) SCB SCI = SFalse- (%==) SCB SCJ = SFalse- (%==) SCB SCK = SFalse- (%==) SCB SCL = SFalse- (%==) SCB SCM = SFalse- (%==) SCB SCN = SFalse- (%==) SCB SCO = SFalse- (%==) SCB SCP = SFalse- (%==) SCB SCQ = SFalse- (%==) SCB SCR = SFalse- (%==) SCB SCS = SFalse- (%==) SCB SCT = SFalse- (%==) SCB SCU = SFalse- (%==) SCB SCV = SFalse- (%==) SCB SCW = SFalse- (%==) SCB SCX = SFalse- (%==) SCB SCY = SFalse- (%==) SCB SCZ = SFalse- (%==) SCC SCA = SFalse- (%==) SCC SCB = SFalse- (%==) SCC SCC = STrue- (%==) SCC SCD = SFalse- (%==) SCC SCE = SFalse- (%==) SCC SCF = SFalse- (%==) SCC SCG = SFalse- (%==) SCC SCH = SFalse- (%==) SCC SCI = SFalse- (%==) SCC SCJ = SFalse- (%==) SCC SCK = SFalse- (%==) SCC SCL = SFalse- (%==) SCC SCM = SFalse- (%==) SCC SCN = SFalse- (%==) SCC SCO = SFalse- (%==) SCC SCP = SFalse- (%==) SCC SCQ = SFalse- (%==) SCC SCR = SFalse- (%==) SCC SCS = SFalse- (%==) SCC SCT = SFalse- (%==) SCC SCU = SFalse- (%==) SCC SCV = SFalse- (%==) SCC SCW = SFalse- (%==) SCC SCX = SFalse- (%==) SCC SCY = SFalse- (%==) SCC SCZ = SFalse- (%==) SCD SCA = SFalse- (%==) SCD SCB = SFalse- (%==) SCD SCC = SFalse- (%==) SCD SCD = STrue- (%==) SCD SCE = SFalse- (%==) SCD SCF = SFalse- (%==) SCD SCG = SFalse- (%==) SCD SCH = SFalse- (%==) SCD SCI = SFalse- (%==) SCD SCJ = SFalse- (%==) SCD SCK = SFalse- (%==) SCD SCL = SFalse- (%==) SCD SCM = SFalse- (%==) SCD SCN = SFalse- (%==) SCD SCO = SFalse- (%==) SCD SCP = SFalse- (%==) SCD SCQ = SFalse- (%==) SCD SCR = SFalse- (%==) SCD SCS = SFalse- (%==) SCD SCT = SFalse- (%==) SCD SCU = SFalse- (%==) SCD SCV = SFalse- (%==) SCD SCW = SFalse- (%==) SCD SCX = SFalse- (%==) SCD SCY = SFalse- (%==) SCD SCZ = SFalse- (%==) SCE SCA = SFalse- (%==) SCE SCB = SFalse- (%==) SCE SCC = SFalse- (%==) SCE SCD = SFalse- (%==) SCE SCE = STrue- (%==) SCE SCF = SFalse- (%==) SCE SCG = SFalse- (%==) SCE SCH = SFalse- (%==) SCE SCI = SFalse- (%==) SCE SCJ = SFalse- (%==) SCE SCK = SFalse- (%==) SCE SCL = SFalse- (%==) SCE SCM = SFalse- (%==) SCE SCN = SFalse- (%==) SCE SCO = SFalse- (%==) SCE SCP = SFalse- (%==) SCE SCQ = SFalse- (%==) SCE SCR = SFalse- (%==) SCE SCS = SFalse- (%==) SCE SCT = SFalse- (%==) SCE SCU = SFalse- (%==) SCE SCV = SFalse- (%==) SCE SCW = SFalse- (%==) SCE SCX = SFalse- (%==) SCE SCY = SFalse- (%==) SCE SCZ = SFalse- (%==) SCF SCA = SFalse- (%==) SCF SCB = SFalse- (%==) SCF SCC = SFalse- (%==) SCF SCD = SFalse- (%==) SCF SCE = SFalse- (%==) SCF SCF = STrue- (%==) SCF SCG = SFalse- (%==) SCF SCH = SFalse- (%==) SCF SCI = SFalse- (%==) SCF SCJ = SFalse- (%==) SCF SCK = SFalse- (%==) SCF SCL = SFalse- (%==) SCF SCM = SFalse- (%==) SCF SCN = SFalse- (%==) SCF SCO = SFalse- (%==) SCF SCP = SFalse- (%==) SCF SCQ = SFalse- (%==) SCF SCR = SFalse- (%==) SCF SCS = SFalse- (%==) SCF SCT = SFalse- (%==) SCF SCU = SFalse- (%==) SCF SCV = SFalse- (%==) SCF SCW = SFalse- (%==) SCF SCX = SFalse- (%==) SCF SCY = SFalse- (%==) SCF SCZ = SFalse- (%==) SCG SCA = SFalse- (%==) SCG SCB = SFalse- (%==) SCG SCC = SFalse- (%==) SCG SCD = SFalse- (%==) SCG SCE = SFalse- (%==) SCG SCF = SFalse- (%==) SCG SCG = STrue- (%==) SCG SCH = SFalse- (%==) SCG SCI = SFalse- (%==) SCG SCJ = SFalse- (%==) SCG SCK = SFalse- (%==) SCG SCL = SFalse- (%==) SCG SCM = SFalse- (%==) SCG SCN = SFalse- (%==) SCG SCO = SFalse- (%==) SCG SCP = SFalse- (%==) SCG SCQ = SFalse- (%==) SCG SCR = SFalse- (%==) SCG SCS = SFalse- (%==) SCG SCT = SFalse- (%==) SCG SCU = SFalse- (%==) SCG SCV = SFalse- (%==) SCG SCW = SFalse- (%==) SCG SCX = SFalse- (%==) SCG SCY = SFalse- (%==) SCG SCZ = SFalse- (%==) SCH SCA = SFalse- (%==) SCH SCB = SFalse- (%==) SCH SCC = SFalse- (%==) SCH SCD = SFalse- (%==) SCH SCE = SFalse- (%==) SCH SCF = SFalse- (%==) SCH SCG = SFalse- (%==) SCH SCH = STrue- (%==) SCH SCI = SFalse- (%==) SCH SCJ = SFalse- (%==) SCH SCK = SFalse- (%==) SCH SCL = SFalse- (%==) SCH SCM = SFalse- (%==) SCH SCN = SFalse- (%==) SCH SCO = SFalse- (%==) SCH SCP = SFalse- (%==) SCH SCQ = SFalse- (%==) SCH SCR = SFalse- (%==) SCH SCS = SFalse- (%==) SCH SCT = SFalse- (%==) SCH SCU = SFalse- (%==) SCH SCV = SFalse- (%==) SCH SCW = SFalse- (%==) SCH SCX = SFalse- (%==) SCH SCY = SFalse- (%==) SCH SCZ = SFalse- (%==) SCI SCA = SFalse- (%==) SCI SCB = SFalse- (%==) SCI SCC = SFalse- (%==) SCI SCD = SFalse- (%==) SCI SCE = SFalse- (%==) SCI SCF = SFalse- (%==) SCI SCG = SFalse- (%==) SCI SCH = SFalse- (%==) SCI SCI = STrue- (%==) SCI SCJ = SFalse- (%==) SCI SCK = SFalse- (%==) SCI SCL = SFalse- (%==) SCI SCM = SFalse- (%==) SCI SCN = SFalse- (%==) SCI SCO = SFalse- (%==) SCI SCP = SFalse- (%==) SCI SCQ = SFalse- (%==) SCI SCR = SFalse- (%==) SCI SCS = SFalse- (%==) SCI SCT = SFalse- (%==) SCI SCU = SFalse- (%==) SCI SCV = SFalse- (%==) SCI SCW = SFalse- (%==) SCI SCX = SFalse- (%==) SCI SCY = SFalse- (%==) SCI SCZ = SFalse- (%==) SCJ SCA = SFalse- (%==) SCJ SCB = SFalse- (%==) SCJ SCC = SFalse- (%==) SCJ SCD = SFalse- (%==) SCJ SCE = SFalse- (%==) SCJ SCF = SFalse- (%==) SCJ SCG = SFalse- (%==) SCJ SCH = SFalse- (%==) SCJ SCI = SFalse- (%==) SCJ SCJ = STrue- (%==) SCJ SCK = SFalse- (%==) SCJ SCL = SFalse- (%==) SCJ SCM = SFalse- (%==) SCJ SCN = SFalse- (%==) SCJ SCO = SFalse- (%==) SCJ SCP = SFalse- (%==) SCJ SCQ = SFalse- (%==) SCJ SCR = SFalse- (%==) SCJ SCS = SFalse- (%==) SCJ SCT = SFalse- (%==) SCJ SCU = SFalse- (%==) SCJ SCV = SFalse- (%==) SCJ SCW = SFalse- (%==) SCJ SCX = SFalse- (%==) SCJ SCY = SFalse- (%==) SCJ SCZ = SFalse- (%==) SCK SCA = SFalse- (%==) SCK SCB = SFalse- (%==) SCK SCC = SFalse- (%==) SCK SCD = SFalse- (%==) SCK SCE = SFalse- (%==) SCK SCF = SFalse- (%==) SCK SCG = SFalse- (%==) SCK SCH = SFalse- (%==) SCK SCI = SFalse- (%==) SCK SCJ = SFalse- (%==) SCK SCK = STrue- (%==) SCK SCL = SFalse- (%==) SCK SCM = SFalse- (%==) SCK SCN = SFalse- (%==) SCK SCO = SFalse- (%==) SCK SCP = SFalse- (%==) SCK SCQ = SFalse- (%==) SCK SCR = SFalse- (%==) SCK SCS = SFalse- (%==) SCK SCT = SFalse- (%==) SCK SCU = SFalse- (%==) SCK SCV = SFalse- (%==) SCK SCW = SFalse- (%==) SCK SCX = SFalse- (%==) SCK SCY = SFalse- (%==) SCK SCZ = SFalse- (%==) SCL SCA = SFalse- (%==) SCL SCB = SFalse- (%==) SCL SCC = SFalse- (%==) SCL SCD = SFalse- (%==) SCL SCE = SFalse- (%==) SCL SCF = SFalse- (%==) SCL SCG = SFalse- (%==) SCL SCH = SFalse- (%==) SCL SCI = SFalse- (%==) SCL SCJ = SFalse- (%==) SCL SCK = SFalse- (%==) SCL SCL = STrue- (%==) SCL SCM = SFalse- (%==) SCL SCN = SFalse- (%==) SCL SCO = SFalse- (%==) SCL SCP = SFalse- (%==) SCL SCQ = SFalse- (%==) SCL SCR = SFalse- (%==) SCL SCS = SFalse- (%==) SCL SCT = SFalse- (%==) SCL SCU = SFalse- (%==) SCL SCV = SFalse- (%==) SCL SCW = SFalse- (%==) SCL SCX = SFalse- (%==) SCL SCY = SFalse- (%==) SCL SCZ = SFalse- (%==) SCM SCA = SFalse- (%==) SCM SCB = SFalse- (%==) SCM SCC = SFalse- (%==) SCM SCD = SFalse- (%==) SCM SCE = SFalse- (%==) SCM SCF = SFalse- (%==) SCM SCG = SFalse- (%==) SCM SCH = SFalse- (%==) SCM SCI = SFalse- (%==) SCM SCJ = SFalse- (%==) SCM SCK = SFalse- (%==) SCM SCL = SFalse- (%==) SCM SCM = STrue- (%==) SCM SCN = SFalse- (%==) SCM SCO = SFalse- (%==) SCM SCP = SFalse- (%==) SCM SCQ = SFalse- (%==) SCM SCR = SFalse- (%==) SCM SCS = SFalse- (%==) SCM SCT = SFalse- (%==) SCM SCU = SFalse- (%==) SCM SCV = SFalse- (%==) SCM SCW = SFalse- (%==) SCM SCX = SFalse- (%==) SCM SCY = SFalse- (%==) SCM SCZ = SFalse- (%==) SCN SCA = SFalse- (%==) SCN SCB = SFalse- (%==) SCN SCC = SFalse- (%==) SCN SCD = SFalse- (%==) SCN SCE = SFalse- (%==) SCN SCF = SFalse- (%==) SCN SCG = SFalse- (%==) SCN SCH = SFalse- (%==) SCN SCI = SFalse- (%==) SCN SCJ = SFalse- (%==) SCN SCK = SFalse- (%==) SCN SCL = SFalse- (%==) SCN SCM = SFalse- (%==) SCN SCN = STrue- (%==) SCN SCO = SFalse- (%==) SCN SCP = SFalse- (%==) SCN SCQ = SFalse- (%==) SCN SCR = SFalse- (%==) SCN SCS = SFalse- (%==) SCN SCT = SFalse- (%==) SCN SCU = SFalse- (%==) SCN SCV = SFalse- (%==) SCN SCW = SFalse- (%==) SCN SCX = SFalse- (%==) SCN SCY = SFalse- (%==) SCN SCZ = SFalse- (%==) SCO SCA = SFalse- (%==) SCO SCB = SFalse- (%==) SCO SCC = SFalse- (%==) SCO SCD = SFalse- (%==) SCO SCE = SFalse- (%==) SCO SCF = SFalse- (%==) SCO SCG = SFalse- (%==) SCO SCH = SFalse- (%==) SCO SCI = SFalse- (%==) SCO SCJ = SFalse- (%==) SCO SCK = SFalse- (%==) SCO SCL = SFalse- (%==) SCO SCM = SFalse- (%==) SCO SCN = SFalse- (%==) SCO SCO = STrue- (%==) SCO SCP = SFalse- (%==) SCO SCQ = SFalse- (%==) SCO SCR = SFalse- (%==) SCO SCS = SFalse- (%==) SCO SCT = SFalse- (%==) SCO SCU = SFalse- (%==) SCO SCV = SFalse- (%==) SCO SCW = SFalse- (%==) SCO SCX = SFalse- (%==) SCO SCY = SFalse- (%==) SCO SCZ = SFalse- (%==) SCP SCA = SFalse- (%==) SCP SCB = SFalse- (%==) SCP SCC = SFalse- (%==) SCP SCD = SFalse- (%==) SCP SCE = SFalse- (%==) SCP SCF = SFalse- (%==) SCP SCG = SFalse- (%==) SCP SCH = SFalse- (%==) SCP SCI = SFalse- (%==) SCP SCJ = SFalse- (%==) SCP SCK = SFalse- (%==) SCP SCL = SFalse- (%==) SCP SCM = SFalse- (%==) SCP SCN = SFalse- (%==) SCP SCO = SFalse- (%==) SCP SCP = STrue- (%==) SCP SCQ = SFalse- (%==) SCP SCR = SFalse- (%==) SCP SCS = SFalse- (%==) SCP SCT = SFalse- (%==) SCP SCU = SFalse- (%==) SCP SCV = SFalse- (%==) SCP SCW = SFalse- (%==) SCP SCX = SFalse- (%==) SCP SCY = SFalse- (%==) SCP SCZ = SFalse- (%==) SCQ SCA = SFalse- (%==) SCQ SCB = SFalse- (%==) SCQ SCC = SFalse- (%==) SCQ SCD = SFalse- (%==) SCQ SCE = SFalse- (%==) SCQ SCF = SFalse- (%==) SCQ SCG = SFalse- (%==) SCQ SCH = SFalse- (%==) SCQ SCI = SFalse- (%==) SCQ SCJ = SFalse- (%==) SCQ SCK = SFalse- (%==) SCQ SCL = SFalse- (%==) SCQ SCM = SFalse- (%==) SCQ SCN = SFalse- (%==) SCQ SCO = SFalse- (%==) SCQ SCP = SFalse- (%==) SCQ SCQ = STrue- (%==) SCQ SCR = SFalse- (%==) SCQ SCS = SFalse- (%==) SCQ SCT = SFalse- (%==) SCQ SCU = SFalse- (%==) SCQ SCV = SFalse- (%==) SCQ SCW = SFalse- (%==) SCQ SCX = SFalse- (%==) SCQ SCY = SFalse- (%==) SCQ SCZ = SFalse- (%==) SCR SCA = SFalse- (%==) SCR SCB = SFalse- (%==) SCR SCC = SFalse- (%==) SCR SCD = SFalse- (%==) SCR SCE = SFalse- (%==) SCR SCF = SFalse- (%==) SCR SCG = SFalse- (%==) SCR SCH = SFalse- (%==) SCR SCI = SFalse- (%==) SCR SCJ = SFalse- (%==) SCR SCK = SFalse- (%==) SCR SCL = SFalse- (%==) SCR SCM = SFalse- (%==) SCR SCN = SFalse- (%==) SCR SCO = SFalse- (%==) SCR SCP = SFalse- (%==) SCR SCQ = SFalse- (%==) SCR SCR = STrue- (%==) SCR SCS = SFalse- (%==) SCR SCT = SFalse- (%==) SCR SCU = SFalse- (%==) SCR SCV = SFalse- (%==) SCR SCW = SFalse- (%==) SCR SCX = SFalse- (%==) SCR SCY = SFalse- (%==) SCR SCZ = SFalse- (%==) SCS SCA = SFalse- (%==) SCS SCB = SFalse- (%==) SCS SCC = SFalse- (%==) SCS SCD = SFalse- (%==) SCS SCE = SFalse- (%==) SCS SCF = SFalse- (%==) SCS SCG = SFalse- (%==) SCS SCH = SFalse- (%==) SCS SCI = SFalse- (%==) SCS SCJ = SFalse- (%==) SCS SCK = SFalse- (%==) SCS SCL = SFalse- (%==) SCS SCM = SFalse- (%==) SCS SCN = SFalse- (%==) SCS SCO = SFalse- (%==) SCS SCP = SFalse- (%==) SCS SCQ = SFalse- (%==) SCS SCR = SFalse- (%==) SCS SCS = STrue- (%==) SCS SCT = SFalse- (%==) SCS SCU = SFalse- (%==) SCS SCV = SFalse- (%==) SCS SCW = SFalse- (%==) SCS SCX = SFalse- (%==) SCS SCY = SFalse- (%==) SCS SCZ = SFalse- (%==) SCT SCA = SFalse- (%==) SCT SCB = SFalse- (%==) SCT SCC = SFalse- (%==) SCT SCD = SFalse- (%==) SCT SCE = SFalse- (%==) SCT SCF = SFalse- (%==) SCT SCG = SFalse- (%==) SCT SCH = SFalse- (%==) SCT SCI = SFalse- (%==) SCT SCJ = SFalse- (%==) SCT SCK = SFalse- (%==) SCT SCL = SFalse- (%==) SCT SCM = SFalse- (%==) SCT SCN = SFalse- (%==) SCT SCO = SFalse- (%==) SCT SCP = SFalse- (%==) SCT SCQ = SFalse- (%==) SCT SCR = SFalse- (%==) SCT SCS = SFalse- (%==) SCT SCT = STrue- (%==) SCT SCU = SFalse- (%==) SCT SCV = SFalse- (%==) SCT SCW = SFalse- (%==) SCT SCX = SFalse- (%==) SCT SCY = SFalse- (%==) SCT SCZ = SFalse- (%==) SCU SCA = SFalse- (%==) SCU SCB = SFalse- (%==) SCU SCC = SFalse- (%==) SCU SCD = SFalse- (%==) SCU SCE = SFalse- (%==) SCU SCF = SFalse- (%==) SCU SCG = SFalse- (%==) SCU SCH = SFalse- (%==) SCU SCI = SFalse- (%==) SCU SCJ = SFalse- (%==) SCU SCK = SFalse- (%==) SCU SCL = SFalse- (%==) SCU SCM = SFalse- (%==) SCU SCN = SFalse- (%==) SCU SCO = SFalse- (%==) SCU SCP = SFalse- (%==) SCU SCQ = SFalse- (%==) SCU SCR = SFalse- (%==) SCU SCS = SFalse- (%==) SCU SCT = SFalse- (%==) SCU SCU = STrue- (%==) SCU SCV = SFalse- (%==) SCU SCW = SFalse- (%==) SCU SCX = SFalse- (%==) SCU SCY = SFalse- (%==) SCU SCZ = SFalse- (%==) SCV SCA = SFalse- (%==) SCV SCB = SFalse- (%==) SCV SCC = SFalse- (%==) SCV SCD = SFalse- (%==) SCV SCE = SFalse- (%==) SCV SCF = SFalse- (%==) SCV SCG = SFalse- (%==) SCV SCH = SFalse- (%==) SCV SCI = SFalse- (%==) SCV SCJ = SFalse- (%==) SCV SCK = SFalse- (%==) SCV SCL = SFalse- (%==) SCV SCM = SFalse- (%==) SCV SCN = SFalse- (%==) SCV SCO = SFalse- (%==) SCV SCP = SFalse- (%==) SCV SCQ = SFalse- (%==) SCV SCR = SFalse- (%==) SCV SCS = SFalse- (%==) SCV SCT = SFalse- (%==) SCV SCU = SFalse- (%==) SCV SCV = STrue- (%==) SCV SCW = SFalse- (%==) SCV SCX = SFalse- (%==) SCV SCY = SFalse- (%==) SCV SCZ = SFalse- (%==) SCW SCA = SFalse- (%==) SCW SCB = SFalse- (%==) SCW SCC = SFalse- (%==) SCW SCD = SFalse- (%==) SCW SCE = SFalse- (%==) SCW SCF = SFalse- (%==) SCW SCG = SFalse- (%==) SCW SCH = SFalse- (%==) SCW SCI = SFalse- (%==) SCW SCJ = SFalse- (%==) SCW SCK = SFalse- (%==) SCW SCL = SFalse- (%==) SCW SCM = SFalse- (%==) SCW SCN = SFalse- (%==) SCW SCO = SFalse- (%==) SCW SCP = SFalse- (%==) SCW SCQ = SFalse- (%==) SCW SCR = SFalse- (%==) SCW SCS = SFalse- (%==) SCW SCT = SFalse- (%==) SCW SCU = SFalse- (%==) SCW SCV = SFalse- (%==) SCW SCW = STrue- (%==) SCW SCX = SFalse- (%==) SCW SCY = SFalse- (%==) SCW SCZ = SFalse- (%==) SCX SCA = SFalse- (%==) SCX SCB = SFalse- (%==) SCX SCC = SFalse- (%==) SCX SCD = SFalse- (%==) SCX SCE = SFalse- (%==) SCX SCF = SFalse- (%==) SCX SCG = SFalse- (%==) SCX SCH = SFalse- (%==) SCX SCI = SFalse- (%==) SCX SCJ = SFalse- (%==) SCX SCK = SFalse- (%==) SCX SCL = SFalse- (%==) SCX SCM = SFalse- (%==) SCX SCN = SFalse- (%==) SCX SCO = SFalse- (%==) SCX SCP = SFalse- (%==) SCX SCQ = SFalse- (%==) SCX SCR = SFalse- (%==) SCX SCS = SFalse- (%==) SCX SCT = SFalse- (%==) SCX SCU = SFalse- (%==) SCX SCV = SFalse- (%==) SCX SCW = SFalse- (%==) SCX SCX = STrue- (%==) SCX SCY = SFalse- (%==) SCX SCZ = SFalse- (%==) SCY SCA = SFalse- (%==) SCY SCB = SFalse- (%==) SCY SCC = SFalse- (%==) SCY SCD = SFalse- (%==) SCY SCE = SFalse- (%==) SCY SCF = SFalse- (%==) SCY SCG = SFalse- (%==) SCY SCH = SFalse- (%==) SCY SCI = SFalse- (%==) SCY SCJ = SFalse- (%==) SCY SCK = SFalse- (%==) SCY SCL = SFalse- (%==) SCY SCM = SFalse- (%==) SCY SCN = SFalse- (%==) SCY SCO = SFalse- (%==) SCY SCP = SFalse- (%==) SCY SCQ = SFalse- (%==) SCY SCR = SFalse- (%==) SCY SCS = SFalse- (%==) SCY SCT = SFalse- (%==) SCY SCU = SFalse- (%==) SCY SCV = SFalse- (%==) SCY SCW = SFalse- (%==) SCY SCX = SFalse- (%==) SCY SCY = STrue- (%==) SCY SCZ = SFalse- (%==) SCZ SCA = SFalse- (%==) SCZ SCB = SFalse- (%==) SCZ SCC = SFalse- (%==) SCZ SCD = SFalse- (%==) SCZ SCE = SFalse- (%==) SCZ SCF = SFalse- (%==) SCZ SCG = SFalse- (%==) SCZ SCH = SFalse- (%==) SCZ SCI = SFalse- (%==) SCZ SCJ = SFalse- (%==) SCZ SCK = SFalse- (%==) SCZ SCL = SFalse- (%==) SCZ SCM = SFalse- (%==) SCZ SCN = SFalse- (%==) SCZ SCO = SFalse- (%==) SCZ SCP = SFalse- (%==) SCZ SCQ = SFalse- (%==) SCZ SCR = SFalse- (%==) SCZ SCS = SFalse- (%==) SCZ SCT = SFalse- (%==) SCZ SCU = SFalse- (%==) SCZ SCV = SFalse- (%==) SCZ SCW = SFalse- (%==) SCZ SCX = SFalse- (%==) SCZ SCY = SFalse- (%==) SCZ SCZ = STrue- instance (SDecide U, SDecide Nat) => SDecide U where- (%~) SBOOL SBOOL = Proved Refl- (%~) SBOOL SSTRING = Disproved (\ x -> case x of)- (%~) SBOOL SNAT = Disproved (\ x -> case x of)- (%~) SBOOL (SVEC _ _) = Disproved (\ x -> case x of)- (%~) SSTRING SBOOL = Disproved (\ x -> case x of)- (%~) SSTRING SSTRING = Proved Refl- (%~) SSTRING SNAT = Disproved (\ x -> case x of)- (%~) SSTRING (SVEC _ _) = Disproved (\ x -> case x of)- (%~) SNAT SBOOL = Disproved (\ x -> case x of)- (%~) SNAT SSTRING = Disproved (\ x -> case x of)- (%~) SNAT SNAT = Proved Refl- (%~) SNAT (SVEC _ _) = Disproved (\ x -> case x of)- (%~) (SVEC _ _) SBOOL = Disproved (\ x -> case x of)- (%~) (SVEC _ _) SSTRING = Disproved (\ x -> case x of)- (%~) (SVEC _ _) SNAT = Disproved (\ x -> case x of)- (%~) (SVEC a a) (SVEC b b)- = case ((,) (((%~) a) b)) (((%~) a) b) of- (,) (Proved Refl) (Proved Refl) -> Proved Refl- (,) (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- (,) _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- instance (SDecide U, SDecide Nat) =>- Data.Type.Equality.TestEquality (SU :: U -> Type) where- Data.Type.Equality.testEquality- = Data.Singletons.Decide.decideEquality- instance (SDecide U, SDecide Nat) =>- Data.Type.Coercion.TestCoercion (SU :: U -> Type) where- Data.Type.Coercion.testCoercion- = Data.Singletons.Decide.decideCoercion- instance SDecide AChar where- (%~) SCA SCA = Proved Refl- (%~) SCA SCB = Disproved (\ x -> case x of)- (%~) SCA SCC = Disproved (\ x -> case x of)- (%~) SCA SCD = Disproved (\ x -> case x of)- (%~) SCA SCE = Disproved (\ x -> case x of)- (%~) SCA SCF = Disproved (\ x -> case x of)- (%~) SCA SCG = Disproved (\ x -> case x of)- (%~) SCA SCH = Disproved (\ x -> case x of)- (%~) SCA SCI = Disproved (\ x -> case x of)- (%~) SCA SCJ = Disproved (\ x -> case x of)- (%~) SCA SCK = Disproved (\ x -> case x of)- (%~) SCA SCL = Disproved (\ x -> case x of)- (%~) SCA SCM = Disproved (\ x -> case x of)- (%~) SCA SCN = Disproved (\ x -> case x of)- (%~) SCA SCO = Disproved (\ x -> case x of)- (%~) SCA SCP = Disproved (\ x -> case x of)- (%~) SCA SCQ = Disproved (\ x -> case x of)- (%~) SCA SCR = Disproved (\ x -> case x of)- (%~) SCA SCS = Disproved (\ x -> case x of)- (%~) SCA SCT = Disproved (\ x -> case x of)- (%~) SCA SCU = Disproved (\ x -> case x of)- (%~) SCA SCV = Disproved (\ x -> case x of)- (%~) SCA SCW = Disproved (\ x -> case x of)- (%~) SCA SCX = Disproved (\ x -> case x of)- (%~) SCA SCY = Disproved (\ x -> case x of)- (%~) SCA SCZ = Disproved (\ x -> case x of)- (%~) SCB SCA = Disproved (\ x -> case x of)- (%~) SCB SCB = Proved Refl- (%~) SCB SCC = Disproved (\ x -> case x of)- (%~) SCB SCD = Disproved (\ x -> case x of)- (%~) SCB SCE = Disproved (\ x -> case x of)- (%~) SCB SCF = Disproved (\ x -> case x of)- (%~) SCB SCG = Disproved (\ x -> case x of)- (%~) SCB SCH = Disproved (\ x -> case x of)- (%~) SCB SCI = Disproved (\ x -> case x of)- (%~) SCB SCJ = Disproved (\ x -> case x of)- (%~) SCB SCK = Disproved (\ x -> case x of)- (%~) SCB SCL = Disproved (\ x -> case x of)- (%~) SCB SCM = Disproved (\ x -> case x of)- (%~) SCB SCN = Disproved (\ x -> case x of)- (%~) SCB SCO = Disproved (\ x -> case x of)- (%~) SCB SCP = Disproved (\ x -> case x of)- (%~) SCB SCQ = Disproved (\ x -> case x of)- (%~) SCB SCR = Disproved (\ x -> case x of)- (%~) SCB SCS = Disproved (\ x -> case x of)- (%~) SCB SCT = Disproved (\ x -> case x of)- (%~) SCB SCU = Disproved (\ x -> case x of)- (%~) SCB SCV = Disproved (\ x -> case x of)- (%~) SCB SCW = Disproved (\ x -> case x of)- (%~) SCB SCX = Disproved (\ x -> case x of)- (%~) SCB SCY = Disproved (\ x -> case x of)- (%~) SCB SCZ = Disproved (\ x -> case x of)- (%~) SCC SCA = Disproved (\ x -> case x of)- (%~) SCC SCB = Disproved (\ x -> case x of)- (%~) SCC SCC = Proved Refl- (%~) SCC SCD = Disproved (\ x -> case x of)- (%~) SCC SCE = Disproved (\ x -> case x of)- (%~) SCC SCF = Disproved (\ x -> case x of)- (%~) SCC SCG = Disproved (\ x -> case x of)- (%~) SCC SCH = Disproved (\ x -> case x of)- (%~) SCC SCI = Disproved (\ x -> case x of)- (%~) SCC SCJ = Disproved (\ x -> case x of)- (%~) SCC SCK = Disproved (\ x -> case x of)- (%~) SCC SCL = Disproved (\ x -> case x of)- (%~) SCC SCM = Disproved (\ x -> case x of)- (%~) SCC SCN = Disproved (\ x -> case x of)- (%~) SCC SCO = Disproved (\ x -> case x of)- (%~) SCC SCP = Disproved (\ x -> case x of)- (%~) SCC SCQ = Disproved (\ x -> case x of)- (%~) SCC SCR = Disproved (\ x -> case x of)- (%~) SCC SCS = Disproved (\ x -> case x of)- (%~) SCC SCT = Disproved (\ x -> case x of)- (%~) SCC SCU = Disproved (\ x -> case x of)- (%~) SCC SCV = Disproved (\ x -> case x of)- (%~) SCC SCW = Disproved (\ x -> case x of)- (%~) SCC SCX = Disproved (\ x -> case x of)- (%~) SCC SCY = Disproved (\ x -> case x of)- (%~) SCC SCZ = Disproved (\ x -> case x of)- (%~) SCD SCA = Disproved (\ x -> case x of)- (%~) SCD SCB = Disproved (\ x -> case x of)- (%~) SCD SCC = Disproved (\ x -> case x of)- (%~) SCD SCD = Proved Refl- (%~) SCD SCE = Disproved (\ x -> case x of)- (%~) SCD SCF = Disproved (\ x -> case x of)- (%~) SCD SCG = Disproved (\ x -> case x of)- (%~) SCD SCH = Disproved (\ x -> case x of)- (%~) SCD SCI = Disproved (\ x -> case x of)- (%~) SCD SCJ = Disproved (\ x -> case x of)- (%~) SCD SCK = Disproved (\ x -> case x of)- (%~) SCD SCL = Disproved (\ x -> case x of)- (%~) SCD SCM = Disproved (\ x -> case x of)- (%~) SCD SCN = Disproved (\ x -> case x of)- (%~) SCD SCO = Disproved (\ x -> case x of)- (%~) SCD SCP = Disproved (\ x -> case x of)- (%~) SCD SCQ = Disproved (\ x -> case x of)- (%~) SCD SCR = Disproved (\ x -> case x of)- (%~) SCD SCS = Disproved (\ x -> case x of)- (%~) SCD SCT = Disproved (\ x -> case x of)- (%~) SCD SCU = Disproved (\ x -> case x of)- (%~) SCD SCV = Disproved (\ x -> case x of)- (%~) SCD SCW = Disproved (\ x -> case x of)- (%~) SCD SCX = Disproved (\ x -> case x of)- (%~) SCD SCY = Disproved (\ x -> case x of)- (%~) SCD SCZ = Disproved (\ x -> case x of)- (%~) SCE SCA = Disproved (\ x -> case x of)- (%~) SCE SCB = Disproved (\ x -> case x of)- (%~) SCE SCC = Disproved (\ x -> case x of)- (%~) SCE SCD = Disproved (\ x -> case x of)- (%~) SCE SCE = Proved Refl- (%~) SCE SCF = Disproved (\ x -> case x of)- (%~) SCE SCG = Disproved (\ x -> case x of)- (%~) SCE SCH = Disproved (\ x -> case x of)- (%~) SCE SCI = Disproved (\ x -> case x of)- (%~) SCE SCJ = Disproved (\ x -> case x of)- (%~) SCE SCK = Disproved (\ x -> case x of)- (%~) SCE SCL = Disproved (\ x -> case x of)- (%~) SCE SCM = Disproved (\ x -> case x of)- (%~) SCE SCN = Disproved (\ x -> case x of)- (%~) SCE SCO = Disproved (\ x -> case x of)- (%~) SCE SCP = Disproved (\ x -> case x of)- (%~) SCE SCQ = Disproved (\ x -> case x of)- (%~) SCE SCR = Disproved (\ x -> case x of)- (%~) SCE SCS = Disproved (\ x -> case x of)- (%~) SCE SCT = Disproved (\ x -> case x of)- (%~) SCE SCU = Disproved (\ x -> case x of)- (%~) SCE SCV = Disproved (\ x -> case x of)- (%~) SCE SCW = Disproved (\ x -> case x of)- (%~) SCE SCX = Disproved (\ x -> case x of)- (%~) SCE SCY = Disproved (\ x -> case x of)- (%~) SCE SCZ = Disproved (\ x -> case x of)- (%~) SCF SCA = Disproved (\ x -> case x of)- (%~) SCF SCB = Disproved (\ x -> case x of)- (%~) SCF SCC = Disproved (\ x -> case x of)- (%~) SCF SCD = Disproved (\ x -> case x of)- (%~) SCF SCE = Disproved (\ x -> case x of)- (%~) SCF SCF = Proved Refl- (%~) SCF SCG = Disproved (\ x -> case x of)- (%~) SCF SCH = Disproved (\ x -> case x of)- (%~) SCF SCI = Disproved (\ x -> case x of)- (%~) SCF SCJ = Disproved (\ x -> case x of)- (%~) SCF SCK = Disproved (\ x -> case x of)- (%~) SCF SCL = Disproved (\ x -> case x of)- (%~) SCF SCM = Disproved (\ x -> case x of)- (%~) SCF SCN = Disproved (\ x -> case x of)- (%~) SCF SCO = Disproved (\ x -> case x of)- (%~) SCF SCP = Disproved (\ x -> case x of)- (%~) SCF SCQ = Disproved (\ x -> case x of)- (%~) SCF SCR = Disproved (\ x -> case x of)- (%~) SCF SCS = Disproved (\ x -> case x of)- (%~) SCF SCT = Disproved (\ x -> case x of)- (%~) SCF SCU = Disproved (\ x -> case x of)- (%~) SCF SCV = Disproved (\ x -> case x of)- (%~) SCF SCW = Disproved (\ x -> case x of)- (%~) SCF SCX = Disproved (\ x -> case x of)- (%~) SCF SCY = Disproved (\ x -> case x of)- (%~) SCF SCZ = Disproved (\ x -> case x of)- (%~) SCG SCA = Disproved (\ x -> case x of)- (%~) SCG SCB = Disproved (\ x -> case x of)- (%~) SCG SCC = Disproved (\ x -> case x of)- (%~) SCG SCD = Disproved (\ x -> case x of)- (%~) SCG SCE = Disproved (\ x -> case x of)- (%~) SCG SCF = Disproved (\ x -> case x of)- (%~) SCG SCG = Proved Refl- (%~) SCG SCH = Disproved (\ x -> case x of)- (%~) SCG SCI = Disproved (\ x -> case x of)- (%~) SCG SCJ = Disproved (\ x -> case x of)- (%~) SCG SCK = Disproved (\ x -> case x of)- (%~) SCG SCL = Disproved (\ x -> case x of)- (%~) SCG SCM = Disproved (\ x -> case x of)- (%~) SCG SCN = Disproved (\ x -> case x of)- (%~) SCG SCO = Disproved (\ x -> case x of)- (%~) SCG SCP = Disproved (\ x -> case x of)- (%~) SCG SCQ = Disproved (\ x -> case x of)- (%~) SCG SCR = Disproved (\ x -> case x of)- (%~) SCG SCS = Disproved (\ x -> case x of)- (%~) SCG SCT = Disproved (\ x -> case x of)- (%~) SCG SCU = Disproved (\ x -> case x of)- (%~) SCG SCV = Disproved (\ x -> case x of)- (%~) SCG SCW = Disproved (\ x -> case x of)- (%~) SCG SCX = Disproved (\ x -> case x of)- (%~) SCG SCY = Disproved (\ x -> case x of)- (%~) SCG SCZ = Disproved (\ x -> case x of)- (%~) SCH SCA = Disproved (\ x -> case x of)- (%~) SCH SCB = Disproved (\ x -> case x of)- (%~) SCH SCC = Disproved (\ x -> case x of)- (%~) SCH SCD = Disproved (\ x -> case x of)- (%~) SCH SCE = Disproved (\ x -> case x of)- (%~) SCH SCF = Disproved (\ x -> case x of)- (%~) SCH SCG = Disproved (\ x -> case x of)- (%~) SCH SCH = Proved Refl- (%~) SCH SCI = Disproved (\ x -> case x of)- (%~) SCH SCJ = Disproved (\ x -> case x of)- (%~) SCH SCK = Disproved (\ x -> case x of)- (%~) SCH SCL = Disproved (\ x -> case x of)- (%~) SCH SCM = Disproved (\ x -> case x of)- (%~) SCH SCN = Disproved (\ x -> case x of)- (%~) SCH SCO = Disproved (\ x -> case x of)- (%~) SCH SCP = Disproved (\ x -> case x of)- (%~) SCH SCQ = Disproved (\ x -> case x of)- (%~) SCH SCR = Disproved (\ x -> case x of)- (%~) SCH SCS = Disproved (\ x -> case x of)- (%~) SCH SCT = Disproved (\ x -> case x of)- (%~) SCH SCU = Disproved (\ x -> case x of)- (%~) SCH SCV = Disproved (\ x -> case x of)- (%~) SCH SCW = Disproved (\ x -> case x of)- (%~) SCH SCX = Disproved (\ x -> case x of)- (%~) SCH SCY = Disproved (\ x -> case x of)- (%~) SCH SCZ = Disproved (\ x -> case x of)- (%~) SCI SCA = Disproved (\ x -> case x of)- (%~) SCI SCB = Disproved (\ x -> case x of)- (%~) SCI SCC = Disproved (\ x -> case x of)- (%~) SCI SCD = Disproved (\ x -> case x of)- (%~) SCI SCE = Disproved (\ x -> case x of)- (%~) SCI SCF = Disproved (\ x -> case x of)- (%~) SCI SCG = Disproved (\ x -> case x of)- (%~) SCI SCH = Disproved (\ x -> case x of)- (%~) SCI SCI = Proved Refl- (%~) SCI SCJ = Disproved (\ x -> case x of)- (%~) SCI SCK = Disproved (\ x -> case x of)- (%~) SCI SCL = Disproved (\ x -> case x of)- (%~) SCI SCM = Disproved (\ x -> case x of)- (%~) SCI SCN = Disproved (\ x -> case x of)- (%~) SCI SCO = Disproved (\ x -> case x of)- (%~) SCI SCP = Disproved (\ x -> case x of)- (%~) SCI SCQ = Disproved (\ x -> case x of)- (%~) SCI SCR = Disproved (\ x -> case x of)- (%~) SCI SCS = Disproved (\ x -> case x of)- (%~) SCI SCT = Disproved (\ x -> case x of)- (%~) SCI SCU = Disproved (\ x -> case x of)- (%~) SCI SCV = Disproved (\ x -> case x of)- (%~) SCI SCW = Disproved (\ x -> case x of)- (%~) SCI SCX = Disproved (\ x -> case x of)- (%~) SCI SCY = Disproved (\ x -> case x of)- (%~) SCI SCZ = Disproved (\ x -> case x of)- (%~) SCJ SCA = Disproved (\ x -> case x of)- (%~) SCJ SCB = Disproved (\ x -> case x of)- (%~) SCJ SCC = Disproved (\ x -> case x of)- (%~) SCJ SCD = Disproved (\ x -> case x of)- (%~) SCJ SCE = Disproved (\ x -> case x of)- (%~) SCJ SCF = Disproved (\ x -> case x of)- (%~) SCJ SCG = Disproved (\ x -> case x of)- (%~) SCJ SCH = Disproved (\ x -> case x of)- (%~) SCJ SCI = Disproved (\ x -> case x of)- (%~) SCJ SCJ = Proved Refl- (%~) SCJ SCK = Disproved (\ x -> case x of)- (%~) SCJ SCL = Disproved (\ x -> case x of)- (%~) SCJ SCM = Disproved (\ x -> case x of)- (%~) SCJ SCN = Disproved (\ x -> case x of)- (%~) SCJ SCO = Disproved (\ x -> case x of)- (%~) SCJ SCP = Disproved (\ x -> case x of)- (%~) SCJ SCQ = Disproved (\ x -> case x of)- (%~) SCJ SCR = Disproved (\ x -> case x of)- (%~) SCJ SCS = Disproved (\ x -> case x of)- (%~) SCJ SCT = Disproved (\ x -> case x of)- (%~) SCJ SCU = Disproved (\ x -> case x of)- (%~) SCJ SCV = Disproved (\ x -> case x of)- (%~) SCJ SCW = Disproved (\ x -> case x of)- (%~) SCJ SCX = Disproved (\ x -> case x of)- (%~) SCJ SCY = Disproved (\ x -> case x of)- (%~) SCJ SCZ = Disproved (\ x -> case x of)- (%~) SCK SCA = Disproved (\ x -> case x of)- (%~) SCK SCB = Disproved (\ x -> case x of)- (%~) SCK SCC = Disproved (\ x -> case x of)- (%~) SCK SCD = Disproved (\ x -> case x of)- (%~) SCK SCE = Disproved (\ x -> case x of)- (%~) SCK SCF = Disproved (\ x -> case x of)- (%~) SCK SCG = Disproved (\ x -> case x of)- (%~) SCK SCH = Disproved (\ x -> case x of)- (%~) SCK SCI = Disproved (\ x -> case x of)- (%~) SCK SCJ = Disproved (\ x -> case x of)- (%~) SCK SCK = Proved Refl- (%~) SCK SCL = Disproved (\ x -> case x of)- (%~) SCK SCM = Disproved (\ x -> case x of)- (%~) SCK SCN = Disproved (\ x -> case x of)- (%~) SCK SCO = Disproved (\ x -> case x of)- (%~) SCK SCP = Disproved (\ x -> case x of)- (%~) SCK SCQ = Disproved (\ x -> case x of)- (%~) SCK SCR = Disproved (\ x -> case x of)- (%~) SCK SCS = Disproved (\ x -> case x of)- (%~) SCK SCT = Disproved (\ x -> case x of)- (%~) SCK SCU = Disproved (\ x -> case x of)- (%~) SCK SCV = Disproved (\ x -> case x of)- (%~) SCK SCW = Disproved (\ x -> case x of)- (%~) SCK SCX = Disproved (\ x -> case x of)- (%~) SCK SCY = Disproved (\ x -> case x of)- (%~) SCK SCZ = Disproved (\ x -> case x of)- (%~) SCL SCA = Disproved (\ x -> case x of)- (%~) SCL SCB = Disproved (\ x -> case x of)- (%~) SCL SCC = Disproved (\ x -> case x of)- (%~) SCL SCD = Disproved (\ x -> case x of)- (%~) SCL SCE = Disproved (\ x -> case x of)- (%~) SCL SCF = Disproved (\ x -> case x of)- (%~) SCL SCG = Disproved (\ x -> case x of)- (%~) SCL SCH = Disproved (\ x -> case x of)- (%~) SCL SCI = Disproved (\ x -> case x of)- (%~) SCL SCJ = Disproved (\ x -> case x of)- (%~) SCL SCK = Disproved (\ x -> case x of)- (%~) SCL SCL = Proved Refl- (%~) SCL SCM = Disproved (\ x -> case x of)- (%~) SCL SCN = Disproved (\ x -> case x of)- (%~) SCL SCO = Disproved (\ x -> case x of)- (%~) SCL SCP = Disproved (\ x -> case x of)- (%~) SCL SCQ = Disproved (\ x -> case x of)- (%~) SCL SCR = Disproved (\ x -> case x of)- (%~) SCL SCS = Disproved (\ x -> case x of)- (%~) SCL SCT = Disproved (\ x -> case x of)- (%~) SCL SCU = Disproved (\ x -> case x of)- (%~) SCL SCV = Disproved (\ x -> case x of)- (%~) SCL SCW = Disproved (\ x -> case x of)- (%~) SCL SCX = Disproved (\ x -> case x of)- (%~) SCL SCY = Disproved (\ x -> case x of)- (%~) SCL SCZ = Disproved (\ x -> case x of)- (%~) SCM SCA = Disproved (\ x -> case x of)- (%~) SCM SCB = Disproved (\ x -> case x of)- (%~) SCM SCC = Disproved (\ x -> case x of)- (%~) SCM SCD = Disproved (\ x -> case x of)- (%~) SCM SCE = Disproved (\ x -> case x of)- (%~) SCM SCF = Disproved (\ x -> case x of)- (%~) SCM SCG = Disproved (\ x -> case x of)- (%~) SCM SCH = Disproved (\ x -> case x of)- (%~) SCM SCI = Disproved (\ x -> case x of)- (%~) SCM SCJ = Disproved (\ x -> case x of)- (%~) SCM SCK = Disproved (\ x -> case x of)- (%~) SCM SCL = Disproved (\ x -> case x of)- (%~) SCM SCM = Proved Refl- (%~) SCM SCN = Disproved (\ x -> case x of)- (%~) SCM SCO = Disproved (\ x -> case x of)- (%~) SCM SCP = Disproved (\ x -> case x of)- (%~) SCM SCQ = Disproved (\ x -> case x of)- (%~) SCM SCR = Disproved (\ x -> case x of)- (%~) SCM SCS = Disproved (\ x -> case x of)- (%~) SCM SCT = Disproved (\ x -> case x of)- (%~) SCM SCU = Disproved (\ x -> case x of)- (%~) SCM SCV = Disproved (\ x -> case x of)- (%~) SCM SCW = Disproved (\ x -> case x of)- (%~) SCM SCX = Disproved (\ x -> case x of)- (%~) SCM SCY = Disproved (\ x -> case x of)- (%~) SCM SCZ = Disproved (\ x -> case x of)- (%~) SCN SCA = Disproved (\ x -> case x of)- (%~) SCN SCB = Disproved (\ x -> case x of)- (%~) SCN SCC = Disproved (\ x -> case x of)- (%~) SCN SCD = Disproved (\ x -> case x of)- (%~) SCN SCE = Disproved (\ x -> case x of)- (%~) SCN SCF = Disproved (\ x -> case x of)- (%~) SCN SCG = Disproved (\ x -> case x of)- (%~) SCN SCH = Disproved (\ x -> case x of)- (%~) SCN SCI = Disproved (\ x -> case x of)- (%~) SCN SCJ = Disproved (\ x -> case x of)- (%~) SCN SCK = Disproved (\ x -> case x of)- (%~) SCN SCL = Disproved (\ x -> case x of)- (%~) SCN SCM = Disproved (\ x -> case x of)- (%~) SCN SCN = Proved Refl- (%~) SCN SCO = Disproved (\ x -> case x of)- (%~) SCN SCP = Disproved (\ x -> case x of)- (%~) SCN SCQ = Disproved (\ x -> case x of)- (%~) SCN SCR = Disproved (\ x -> case x of)- (%~) SCN SCS = Disproved (\ x -> case x of)- (%~) SCN SCT = Disproved (\ x -> case x of)- (%~) SCN SCU = Disproved (\ x -> case x of)- (%~) SCN SCV = Disproved (\ x -> case x of)- (%~) SCN SCW = Disproved (\ x -> case x of)- (%~) SCN SCX = Disproved (\ x -> case x of)- (%~) SCN SCY = Disproved (\ x -> case x of)- (%~) SCN SCZ = Disproved (\ x -> case x of)- (%~) SCO SCA = Disproved (\ x -> case x of)- (%~) SCO SCB = Disproved (\ x -> case x of)- (%~) SCO SCC = Disproved (\ x -> case x of)- (%~) SCO SCD = Disproved (\ x -> case x of)- (%~) SCO SCE = Disproved (\ x -> case x of)- (%~) SCO SCF = Disproved (\ x -> case x of)- (%~) SCO SCG = Disproved (\ x -> case x of)- (%~) SCO SCH = Disproved (\ x -> case x of)- (%~) SCO SCI = Disproved (\ x -> case x of)- (%~) SCO SCJ = Disproved (\ x -> case x of)- (%~) SCO SCK = Disproved (\ x -> case x of)- (%~) SCO SCL = Disproved (\ x -> case x of)- (%~) SCO SCM = Disproved (\ x -> case x of)- (%~) SCO SCN = Disproved (\ x -> case x of)- (%~) SCO SCO = Proved Refl- (%~) SCO SCP = Disproved (\ x -> case x of)- (%~) SCO SCQ = Disproved (\ x -> case x of)- (%~) SCO SCR = Disproved (\ x -> case x of)- (%~) SCO SCS = Disproved (\ x -> case x of)- (%~) SCO SCT = Disproved (\ x -> case x of)- (%~) SCO SCU = Disproved (\ x -> case x of)- (%~) SCO SCV = Disproved (\ x -> case x of)- (%~) SCO SCW = Disproved (\ x -> case x of)- (%~) SCO SCX = Disproved (\ x -> case x of)- (%~) SCO SCY = Disproved (\ x -> case x of)- (%~) SCO SCZ = Disproved (\ x -> case x of)- (%~) SCP SCA = Disproved (\ x -> case x of)- (%~) SCP SCB = Disproved (\ x -> case x of)- (%~) SCP SCC = Disproved (\ x -> case x of)- (%~) SCP SCD = Disproved (\ x -> case x of)- (%~) SCP SCE = Disproved (\ x -> case x of)- (%~) SCP SCF = Disproved (\ x -> case x of)- (%~) SCP SCG = Disproved (\ x -> case x of)- (%~) SCP SCH = Disproved (\ x -> case x of)- (%~) SCP SCI = Disproved (\ x -> case x of)- (%~) SCP SCJ = Disproved (\ x -> case x of)- (%~) SCP SCK = Disproved (\ x -> case x of)- (%~) SCP SCL = Disproved (\ x -> case x of)- (%~) SCP SCM = Disproved (\ x -> case x of)- (%~) SCP SCN = Disproved (\ x -> case x of)- (%~) SCP SCO = Disproved (\ x -> case x of)- (%~) SCP SCP = Proved Refl- (%~) SCP SCQ = Disproved (\ x -> case x of)- (%~) SCP SCR = Disproved (\ x -> case x of)- (%~) SCP SCS = Disproved (\ x -> case x of)- (%~) SCP SCT = Disproved (\ x -> case x of)- (%~) SCP SCU = Disproved (\ x -> case x of)- (%~) SCP SCV = Disproved (\ x -> case x of)- (%~) SCP SCW = Disproved (\ x -> case x of)- (%~) SCP SCX = Disproved (\ x -> case x of)- (%~) SCP SCY = Disproved (\ x -> case x of)- (%~) SCP SCZ = Disproved (\ x -> case x of)- (%~) SCQ SCA = Disproved (\ x -> case x of)- (%~) SCQ SCB = Disproved (\ x -> case x of)- (%~) SCQ SCC = Disproved (\ x -> case x of)- (%~) SCQ SCD = Disproved (\ x -> case x of)- (%~) SCQ SCE = Disproved (\ x -> case x of)- (%~) SCQ SCF = Disproved (\ x -> case x of)- (%~) SCQ SCG = Disproved (\ x -> case x of)- (%~) SCQ SCH = Disproved (\ x -> case x of)- (%~) SCQ SCI = Disproved (\ x -> case x of)- (%~) SCQ SCJ = Disproved (\ x -> case x of)- (%~) SCQ SCK = Disproved (\ x -> case x of)- (%~) SCQ SCL = Disproved (\ x -> case x of)- (%~) SCQ SCM = Disproved (\ x -> case x of)- (%~) SCQ SCN = Disproved (\ x -> case x of)- (%~) SCQ SCO = Disproved (\ x -> case x of)- (%~) SCQ SCP = Disproved (\ x -> case x of)- (%~) SCQ SCQ = Proved Refl- (%~) SCQ SCR = Disproved (\ x -> case x of)- (%~) SCQ SCS = Disproved (\ x -> case x of)- (%~) SCQ SCT = Disproved (\ x -> case x of)- (%~) SCQ SCU = Disproved (\ x -> case x of)- (%~) SCQ SCV = Disproved (\ x -> case x of)- (%~) SCQ SCW = Disproved (\ x -> case x of)- (%~) SCQ SCX = Disproved (\ x -> case x of)- (%~) SCQ SCY = Disproved (\ x -> case x of)- (%~) SCQ SCZ = Disproved (\ x -> case x of)- (%~) SCR SCA = Disproved (\ x -> case x of)- (%~) SCR SCB = Disproved (\ x -> case x of)- (%~) SCR SCC = Disproved (\ x -> case x of)- (%~) SCR SCD = Disproved (\ x -> case x of)- (%~) SCR SCE = Disproved (\ x -> case x of)- (%~) SCR SCF = Disproved (\ x -> case x of)- (%~) SCR SCG = Disproved (\ x -> case x of)- (%~) SCR SCH = Disproved (\ x -> case x of)- (%~) SCR SCI = Disproved (\ x -> case x of)- (%~) SCR SCJ = Disproved (\ x -> case x of)- (%~) SCR SCK = Disproved (\ x -> case x of)- (%~) SCR SCL = Disproved (\ x -> case x of)- (%~) SCR SCM = Disproved (\ x -> case x of)- (%~) SCR SCN = Disproved (\ x -> case x of)- (%~) SCR SCO = Disproved (\ x -> case x of)- (%~) SCR SCP = Disproved (\ x -> case x of)- (%~) SCR SCQ = Disproved (\ x -> case x of)- (%~) SCR SCR = Proved Refl- (%~) SCR SCS = Disproved (\ x -> case x of)- (%~) SCR SCT = Disproved (\ x -> case x of)- (%~) SCR SCU = Disproved (\ x -> case x of)- (%~) SCR SCV = Disproved (\ x -> case x of)- (%~) SCR SCW = Disproved (\ x -> case x of)- (%~) SCR SCX = Disproved (\ x -> case x of)- (%~) SCR SCY = Disproved (\ x -> case x of)- (%~) SCR SCZ = Disproved (\ x -> case x of)- (%~) SCS SCA = Disproved (\ x -> case x of)- (%~) SCS SCB = Disproved (\ x -> case x of)- (%~) SCS SCC = Disproved (\ x -> case x of)- (%~) SCS SCD = Disproved (\ x -> case x of)- (%~) SCS SCE = Disproved (\ x -> case x of)- (%~) SCS SCF = Disproved (\ x -> case x of)- (%~) SCS SCG = Disproved (\ x -> case x of)- (%~) SCS SCH = Disproved (\ x -> case x of)- (%~) SCS SCI = Disproved (\ x -> case x of)- (%~) SCS SCJ = Disproved (\ x -> case x of)- (%~) SCS SCK = Disproved (\ x -> case x of)- (%~) SCS SCL = Disproved (\ x -> case x of)- (%~) SCS SCM = Disproved (\ x -> case x of)- (%~) SCS SCN = Disproved (\ x -> case x of)- (%~) SCS SCO = Disproved (\ x -> case x of)- (%~) SCS SCP = Disproved (\ x -> case x of)- (%~) SCS SCQ = Disproved (\ x -> case x of)- (%~) SCS SCR = Disproved (\ x -> case x of)- (%~) SCS SCS = Proved Refl- (%~) SCS SCT = Disproved (\ x -> case x of)- (%~) SCS SCU = Disproved (\ x -> case x of)- (%~) SCS SCV = Disproved (\ x -> case x of)- (%~) SCS SCW = Disproved (\ x -> case x of)- (%~) SCS SCX = Disproved (\ x -> case x of)- (%~) SCS SCY = Disproved (\ x -> case x of)- (%~) SCS SCZ = Disproved (\ x -> case x of)- (%~) SCT SCA = Disproved (\ x -> case x of)- (%~) SCT SCB = Disproved (\ x -> case x of)- (%~) SCT SCC = Disproved (\ x -> case x of)- (%~) SCT SCD = Disproved (\ x -> case x of)- (%~) SCT SCE = Disproved (\ x -> case x of)- (%~) SCT SCF = Disproved (\ x -> case x of)- (%~) SCT SCG = Disproved (\ x -> case x of)- (%~) SCT SCH = Disproved (\ x -> case x of)- (%~) SCT SCI = Disproved (\ x -> case x of)- (%~) SCT SCJ = Disproved (\ x -> case x of)- (%~) SCT SCK = Disproved (\ x -> case x of)- (%~) SCT SCL = Disproved (\ x -> case x of)- (%~) SCT SCM = Disproved (\ x -> case x of)- (%~) SCT SCN = Disproved (\ x -> case x of)- (%~) SCT SCO = Disproved (\ x -> case x of)- (%~) SCT SCP = Disproved (\ x -> case x of)- (%~) SCT SCQ = Disproved (\ x -> case x of)- (%~) SCT SCR = Disproved (\ x -> case x of)- (%~) SCT SCS = Disproved (\ x -> case x of)- (%~) SCT SCT = Proved Refl- (%~) SCT SCU = Disproved (\ x -> case x of)- (%~) SCT SCV = Disproved (\ x -> case x of)- (%~) SCT SCW = Disproved (\ x -> case x of)- (%~) SCT SCX = Disproved (\ x -> case x of)- (%~) SCT SCY = Disproved (\ x -> case x of)- (%~) SCT SCZ = Disproved (\ x -> case x of)- (%~) SCU SCA = Disproved (\ x -> case x of)- (%~) SCU SCB = Disproved (\ x -> case x of)- (%~) SCU SCC = Disproved (\ x -> case x of)- (%~) SCU SCD = Disproved (\ x -> case x of)- (%~) SCU SCE = Disproved (\ x -> case x of)- (%~) SCU SCF = Disproved (\ x -> case x of)- (%~) SCU SCG = Disproved (\ x -> case x of)- (%~) SCU SCH = Disproved (\ x -> case x of)- (%~) SCU SCI = Disproved (\ x -> case x of)- (%~) SCU SCJ = Disproved (\ x -> case x of)- (%~) SCU SCK = Disproved (\ x -> case x of)- (%~) SCU SCL = Disproved (\ x -> case x of)- (%~) SCU SCM = Disproved (\ x -> case x of)- (%~) SCU SCN = Disproved (\ x -> case x of)- (%~) SCU SCO = Disproved (\ x -> case x of)- (%~) SCU SCP = Disproved (\ x -> case x of)- (%~) SCU SCQ = Disproved (\ x -> case x of)- (%~) SCU SCR = Disproved (\ x -> case x of)- (%~) SCU SCS = Disproved (\ x -> case x of)- (%~) SCU SCT = Disproved (\ x -> case x of)- (%~) SCU SCU = Proved Refl- (%~) SCU SCV = Disproved (\ x -> case x of)- (%~) SCU SCW = Disproved (\ x -> case x of)- (%~) SCU SCX = Disproved (\ x -> case x of)- (%~) SCU SCY = Disproved (\ x -> case x of)- (%~) SCU SCZ = Disproved (\ x -> case x of)- (%~) SCV SCA = Disproved (\ x -> case x of)- (%~) SCV SCB = Disproved (\ x -> case x of)- (%~) SCV SCC = Disproved (\ x -> case x of)- (%~) SCV SCD = Disproved (\ x -> case x of)- (%~) SCV SCE = Disproved (\ x -> case x of)- (%~) SCV SCF = Disproved (\ x -> case x of)- (%~) SCV SCG = Disproved (\ x -> case x of)- (%~) SCV SCH = Disproved (\ x -> case x of)- (%~) SCV SCI = Disproved (\ x -> case x of)- (%~) SCV SCJ = Disproved (\ x -> case x of)- (%~) SCV SCK = Disproved (\ x -> case x of)- (%~) SCV SCL = Disproved (\ x -> case x of)- (%~) SCV SCM = Disproved (\ x -> case x of)- (%~) SCV SCN = Disproved (\ x -> case x of)- (%~) SCV SCO = Disproved (\ x -> case x of)- (%~) SCV SCP = Disproved (\ x -> case x of)- (%~) SCV SCQ = Disproved (\ x -> case x of)- (%~) SCV SCR = Disproved (\ x -> case x of)- (%~) SCV SCS = Disproved (\ x -> case x of)- (%~) SCV SCT = Disproved (\ x -> case x of)- (%~) SCV SCU = Disproved (\ x -> case x of)- (%~) SCV SCV = Proved Refl- (%~) SCV SCW = Disproved (\ x -> case x of)- (%~) SCV SCX = Disproved (\ x -> case x of)- (%~) SCV SCY = Disproved (\ x -> case x of)- (%~) SCV SCZ = Disproved (\ x -> case x of)- (%~) SCW SCA = Disproved (\ x -> case x of)- (%~) SCW SCB = Disproved (\ x -> case x of)- (%~) SCW SCC = Disproved (\ x -> case x of)- (%~) SCW SCD = Disproved (\ x -> case x of)- (%~) SCW SCE = Disproved (\ x -> case x of)- (%~) SCW SCF = Disproved (\ x -> case x of)- (%~) SCW SCG = Disproved (\ x -> case x of)- (%~) SCW SCH = Disproved (\ x -> case x of)- (%~) SCW SCI = Disproved (\ x -> case x of)- (%~) SCW SCJ = Disproved (\ x -> case x of)- (%~) SCW SCK = Disproved (\ x -> case x of)- (%~) SCW SCL = Disproved (\ x -> case x of)- (%~) SCW SCM = Disproved (\ x -> case x of)- (%~) SCW SCN = Disproved (\ x -> case x of)- (%~) SCW SCO = Disproved (\ x -> case x of)- (%~) SCW SCP = Disproved (\ x -> case x of)- (%~) SCW SCQ = Disproved (\ x -> case x of)- (%~) SCW SCR = Disproved (\ x -> case x of)- (%~) SCW SCS = Disproved (\ x -> case x of)- (%~) SCW SCT = Disproved (\ x -> case x of)- (%~) SCW SCU = Disproved (\ x -> case x of)- (%~) SCW SCV = Disproved (\ x -> case x of)- (%~) SCW SCW = Proved Refl- (%~) SCW SCX = Disproved (\ x -> case x of)- (%~) SCW SCY = Disproved (\ x -> case x of)- (%~) SCW SCZ = Disproved (\ x -> case x of)- (%~) SCX SCA = Disproved (\ x -> case x of)- (%~) SCX SCB = Disproved (\ x -> case x of)- (%~) SCX SCC = Disproved (\ x -> case x of)- (%~) SCX SCD = Disproved (\ x -> case x of)- (%~) SCX SCE = Disproved (\ x -> case x of)- (%~) SCX SCF = Disproved (\ x -> case x of)- (%~) SCX SCG = Disproved (\ x -> case x of)- (%~) SCX SCH = Disproved (\ x -> case x of)- (%~) SCX SCI = Disproved (\ x -> case x of)- (%~) SCX SCJ = Disproved (\ x -> case x of)- (%~) SCX SCK = Disproved (\ x -> case x of)- (%~) SCX SCL = Disproved (\ x -> case x of)- (%~) SCX SCM = Disproved (\ x -> case x of)- (%~) SCX SCN = Disproved (\ x -> case x of)- (%~) SCX SCO = Disproved (\ x -> case x of)- (%~) SCX SCP = Disproved (\ x -> case x of)- (%~) SCX SCQ = Disproved (\ x -> case x of)- (%~) SCX SCR = Disproved (\ x -> case x of)- (%~) SCX SCS = Disproved (\ x -> case x of)- (%~) SCX SCT = Disproved (\ x -> case x of)- (%~) SCX SCU = Disproved (\ x -> case x of)- (%~) SCX SCV = Disproved (\ x -> case x of)- (%~) SCX SCW = Disproved (\ x -> case x of)- (%~) SCX SCX = Proved Refl- (%~) SCX SCY = Disproved (\ x -> case x of)- (%~) SCX SCZ = Disproved (\ x -> case x of)- (%~) SCY SCA = Disproved (\ x -> case x of)- (%~) SCY SCB = Disproved (\ x -> case x of)- (%~) SCY SCC = Disproved (\ x -> case x of)- (%~) SCY SCD = Disproved (\ x -> case x of)- (%~) SCY SCE = Disproved (\ x -> case x of)- (%~) SCY SCF = Disproved (\ x -> case x of)- (%~) SCY SCG = Disproved (\ x -> case x of)- (%~) SCY SCH = Disproved (\ x -> case x of)- (%~) SCY SCI = Disproved (\ x -> case x of)- (%~) SCY SCJ = Disproved (\ x -> case x of)- (%~) SCY SCK = Disproved (\ x -> case x of)- (%~) SCY SCL = Disproved (\ x -> case x of)- (%~) SCY SCM = Disproved (\ x -> case x of)- (%~) SCY SCN = Disproved (\ x -> case x of)- (%~) SCY SCO = Disproved (\ x -> case x of)- (%~) SCY SCP = Disproved (\ x -> case x of)- (%~) SCY SCQ = Disproved (\ x -> case x of)- (%~) SCY SCR = Disproved (\ x -> case x of)- (%~) SCY SCS = Disproved (\ x -> case x of)- (%~) SCY SCT = Disproved (\ x -> case x of)- (%~) SCY SCU = Disproved (\ x -> case x of)- (%~) SCY SCV = Disproved (\ x -> case x of)- (%~) SCY SCW = Disproved (\ x -> case x of)- (%~) SCY SCX = Disproved (\ x -> case x of)- (%~) SCY SCY = Proved Refl- (%~) SCY SCZ = Disproved (\ x -> case x of)- (%~) SCZ SCA = Disproved (\ x -> case x of)- (%~) SCZ SCB = Disproved (\ x -> case x of)- (%~) SCZ SCC = Disproved (\ x -> case x of)- (%~) SCZ SCD = Disproved (\ x -> case x of)- (%~) SCZ SCE = Disproved (\ x -> case x of)- (%~) SCZ SCF = Disproved (\ x -> case x of)- (%~) SCZ SCG = Disproved (\ x -> case x of)- (%~) SCZ SCH = Disproved (\ x -> case x of)- (%~) SCZ SCI = Disproved (\ x -> case x of)- (%~) SCZ SCJ = Disproved (\ x -> case x of)- (%~) SCZ SCK = Disproved (\ x -> case x of)- (%~) SCZ SCL = Disproved (\ x -> case x of)- (%~) SCZ SCM = Disproved (\ x -> case x of)- (%~) SCZ SCN = Disproved (\ x -> case x of)- (%~) SCZ SCO = Disproved (\ x -> case x of)- (%~) SCZ SCP = Disproved (\ x -> case x of)- (%~) SCZ SCQ = Disproved (\ x -> case x of)- (%~) SCZ SCR = Disproved (\ x -> case x of)- (%~) SCZ SCS = Disproved (\ x -> case x of)- (%~) SCZ SCT = Disproved (\ x -> case x of)- (%~) SCZ SCU = Disproved (\ x -> case x of)- (%~) SCZ SCV = Disproved (\ x -> case x of)- (%~) SCZ SCW = Disproved (\ x -> case x of)- (%~) SCZ SCX = Disproved (\ x -> case x of)- (%~) SCZ SCY = Disproved (\ x -> case x of)- (%~) SCZ SCZ = Proved Refl- instance Data.Type.Equality.TestEquality (SAChar :: AChar- -> Type) where- Data.Type.Equality.testEquality- = Data.Singletons.Decide.decideEquality- instance Data.Type.Coercion.TestCoercion (SAChar :: AChar- -> Type) where- Data.Type.Coercion.testCoercion- = Data.Singletons.Decide.decideCoercion- deriving instance (Data.Singletons.ShowSing.ShowSing U,- Data.Singletons.ShowSing.ShowSing Nat) =>- Show (SU (z :: U))- deriving instance Show (SAChar (z :: AChar))- instance SingI BOOL where- sing = SBOOL- instance SingI STRING where- sing = SSTRING- instance SingI NAT where- sing = SNAT- instance (SingI n, SingI n) =>- SingI (VEC (n :: U) (n :: Nat)) where- sing = (SVEC sing) sing- instance SingI (VECSym0 :: (~>) U ((~>) Nat U)) where- sing = (singFun2 @VECSym0) SVEC- instance SingI d => SingI (VECSym1 (d :: U) :: (~>) Nat U) where- sing = (singFun1 @(VECSym1 (d :: U))) (SVEC (sing @d))- instance SingI CA where- sing = SCA- instance SingI CB where- sing = SCB- instance SingI CC where- sing = SCC- instance SingI CD where- sing = SCD- instance SingI CE where- sing = SCE- instance SingI CF where- sing = SCF- instance SingI CG where- sing = SCG- instance SingI CH where- sing = SCH- instance SingI CI where- sing = SCI- instance SingI CJ where- sing = SCJ- instance SingI CK where- sing = SCK- instance SingI CL where- sing = SCL- instance SingI CM where- sing = SCM- instance SingI CN where- sing = SCN- instance SingI CO where- sing = SCO- instance SingI CP where- sing = SCP- instance SingI CQ where- sing = SCQ- instance SingI CR where- sing = SCR- instance SingI CS where- sing = SCS- instance SingI CT where- sing = SCT- instance SingI CU where- sing = SCU- instance SingI CV where- sing = SCV- instance SingI CW where- sing = SCW- instance SingI CX where- sing = SCX- instance SingI CY where- sing = SCY- instance SingI CZ where- sing = SCZ- instance (SingI n, SingI n) =>- SingI (Attr (n :: [AChar]) (n :: U)) where- sing = (SAttr sing) sing- instance SingI (AttrSym0 :: (~>) [AChar] ((~>) U Attribute)) where- sing = (singFun2 @AttrSym0) SAttr- instance SingI d =>- SingI (AttrSym1 (d :: [AChar]) :: (~>) U Attribute) where- sing = (singFun1 @(AttrSym1 (d :: [AChar]))) (SAttr (sing @d))- instance SingI n => SingI (Sch (n :: [Attribute])) where- sing = SSch sing+ = case toSing b :: SomeSing Nat of SomeSing c -> SomeSing (SSucc c)+ instance SEq Nat => SEq Nat where+ (%==) ::+ forall (t1 :: Nat) (t2 :: Nat). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Nat ((~>) Nat Bool)+ -> Type) t1) t2)+ (%==) SZero SZero = STrue+ (%==) SZero (SSucc _) = SFalse+ (%==) (SSucc _) SZero = SFalse+ (%==)+ (SSucc (sA_0123456789876543210 :: Sing a_0123456789876543210))+ (SSucc (sB_0123456789876543210 :: Sing b_0123456789876543210))+ = (applySing+ ((applySing ((singFun2 @(==@#@$)) (%==))) sA_0123456789876543210))+ sB_0123456789876543210+ instance SOrd Nat => SOrd Nat where+ sCompare ::+ forall (t1 :: Nat) (t2 :: Nat). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat ((~>) Nat Ordering)+ -> Type) t1) t2)+ sCompare SZero SZero+ = (applySing+ ((applySing+ ((applySing ((singFun3 @FoldlSym0) sFoldl))+ ((singFun2 @ThenCmpSym0) sThenCmp)))+ SEQ))+ SNil+ sCompare+ (SSucc (sA_0123456789876543210 :: Sing a_0123456789876543210))+ (SSucc (sB_0123456789876543210 :: Sing b_0123456789876543210))+ = (applySing+ ((applySing+ ((applySing ((singFun3 @FoldlSym0) sFoldl))+ ((singFun2 @ThenCmpSym0) sThenCmp)))+ SEQ))+ ((applySing+ ((applySing ((singFun2 @(:@#@$)) SCons))+ ((applySing+ ((applySing ((singFun2 @CompareSym0) sCompare))+ sA_0123456789876543210))+ sB_0123456789876543210)))+ SNil)+ sCompare SZero (SSucc _) = SLT+ sCompare (SSucc _) SZero = SGT+ instance SDecide Nat => SDecide Nat where+ (%~) SZero SZero = Proved Refl+ (%~) SZero (SSucc _) = Disproved (\ x -> case x of {})+ (%~) (SSucc _) SZero = Disproved (\ x -> case x of {})+ (%~) (SSucc a) (SSucc b)+ = case ((%~) a) b of+ Proved Refl -> Proved Refl+ Disproved contra+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ instance SDecide Nat =>+ Data.Type.Equality.TestEquality (SNat :: Nat -> Type) where+ Data.Type.Equality.testEquality+ = Data.Singletons.Decide.decideEquality+ instance SDecide Nat =>+ Data.Type.Coercion.TestCoercion (SNat :: Nat -> Type) where+ Data.Type.Coercion.testCoercion+ = Data.Singletons.Decide.decideCoercion+ instance SingI Zero where+ sing = SZero+ instance SingI n => SingI (Succ (n :: Nat)) where+ sing = SSucc sing+ instance SingI1 Succ where+ liftSing = SSucc+ instance SingI (SuccSym0 :: (~>) Nat Nat) where+ sing = (singFun1 @SuccSym0) SSucc+GradingClient/Database.hs:(0,0)-(0,0): Splicing declarations+ singletons+ [d| append :: Schema -> Schema -> Schema+ append (Sch s1) (Sch s2) = Sch (s1 ++ s2)+ attrNotIn :: Attribute -> Schema -> Bool+ attrNotIn _ (Sch []) = True+ attrNotIn (Attr name u) (Sch ((Attr name' _) : t))+ = (name /= name') && (attrNotIn (Attr name u) (Sch t))+ disjoint :: Schema -> Schema -> Bool+ disjoint (Sch []) _ = True+ disjoint (Sch (h : t)) s = (attrNotIn h s) && (disjoint (Sch t) s)+ occurs :: [AChar] -> Schema -> Bool+ occurs _ (Sch []) = False+ occurs name (Sch ((Attr name' _) : attrs))+ = name == name' || occurs name (Sch attrs)+ lookup :: [AChar] -> Schema -> U+ lookup _ (Sch []) = undefined+ lookup name (Sch ((Attr name' u) : attrs))+ = if name == name' then u else lookup name (Sch attrs)+ + data U+ = BOOL | STRING | NAT | VEC U Nat+ deriving (Read, Eq, Show)+ data AChar+ = CA |+ CB |+ CC |+ CD |+ CE |+ CF |+ CG |+ CH |+ CI |+ CJ |+ CK |+ CL |+ CM |+ CN |+ CO |+ CP |+ CQ |+ CR |+ CS |+ CT |+ CU |+ CV |+ CW |+ CX |+ CY |+ CZ+ deriving (Read, Show, Eq)+ data Attribute = Attr [AChar] U+ data Schema = Sch [Attribute] |]+ ======>+ data U+ = BOOL | STRING | NAT | VEC U Nat+ deriving (Read, Eq, Show)+ data AChar+ = CA |+ CB |+ CC |+ CD |+ CE |+ CF |+ CG |+ CH |+ CI |+ CJ |+ CK |+ CL |+ CM |+ CN |+ CO |+ CP |+ CQ |+ CR |+ CS |+ CT |+ CU |+ CV |+ CW |+ CX |+ CY |+ CZ+ deriving (Read, Show, Eq)+ data Attribute = Attr [AChar] U+ data Schema = Sch [Attribute]+ append :: Schema -> Schema -> Schema+ append (Sch s1) (Sch s2) = Sch (s1 ++ s2)+ attrNotIn :: Attribute -> Schema -> Bool+ attrNotIn _ (Sch []) = True+ attrNotIn (Attr name u) (Sch (Attr name' _ : t))+ = ((name /= name') && (attrNotIn ((Attr name) u)) (Sch t))+ disjoint :: Schema -> Schema -> Bool+ disjoint (Sch []) _ = True+ disjoint (Sch (h : t)) s+ = ((attrNotIn h) s && (disjoint (Sch t)) s)+ occurs :: [AChar] -> Schema -> Bool+ occurs _ (Sch []) = False+ occurs name (Sch (Attr name' _ : attrs))+ = ((name == name') || (occurs name) (Sch attrs))+ lookup :: [AChar] -> Schema -> U+ lookup _ (Sch []) = undefined+ lookup name (Sch (Attr name' u : attrs))+ = if (name == name') then u else (lookup name) (Sch attrs)+ type BOOLSym0 :: U+ type family BOOLSym0 :: U where+ BOOLSym0 = BOOL+ type STRINGSym0 :: U+ type family STRINGSym0 :: U where+ STRINGSym0 = STRING+ type NATSym0 :: U+ type family NATSym0 :: U where+ NATSym0 = NAT+ type VECSym0 :: (~>) U ((~>) Nat U)+ data VECSym0 :: (~>) U ((~>) Nat U)+ where+ VECSym0KindInference :: SameKind (Apply VECSym0 arg) (VECSym1 arg) =>+ VECSym0 a0123456789876543210+ type instance Apply VECSym0 a0123456789876543210 = VECSym1 a0123456789876543210+ instance SuppressUnusedWarnings VECSym0 where+ suppressUnusedWarnings = snd (((,) VECSym0KindInference) ())+ type VECSym1 :: U -> (~>) Nat U+ data VECSym1 (a0123456789876543210 :: U) :: (~>) Nat U+ where+ VECSym1KindInference :: SameKind (Apply (VECSym1 a0123456789876543210) arg) (VECSym2 a0123456789876543210 arg) =>+ VECSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (VECSym1 a0123456789876543210) a0123456789876543210 = VEC a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (VECSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) VECSym1KindInference) ())+ type VECSym2 :: U -> Nat -> U+ type family VECSym2 (a0123456789876543210 :: U) (a0123456789876543210 :: Nat) :: U where+ VECSym2 a0123456789876543210 a0123456789876543210 = VEC a0123456789876543210 a0123456789876543210+ type CASym0 :: AChar+ type family CASym0 :: AChar where+ CASym0 = CA+ type CBSym0 :: AChar+ type family CBSym0 :: AChar where+ CBSym0 = CB+ type CCSym0 :: AChar+ type family CCSym0 :: AChar where+ CCSym0 = CC+ type CDSym0 :: AChar+ type family CDSym0 :: AChar where+ CDSym0 = CD+ type CESym0 :: AChar+ type family CESym0 :: AChar where+ CESym0 = CE+ type CFSym0 :: AChar+ type family CFSym0 :: AChar where+ CFSym0 = CF+ type CGSym0 :: AChar+ type family CGSym0 :: AChar where+ CGSym0 = CG+ type CHSym0 :: AChar+ type family CHSym0 :: AChar where+ CHSym0 = CH+ type CISym0 :: AChar+ type family CISym0 :: AChar where+ CISym0 = CI+ type CJSym0 :: AChar+ type family CJSym0 :: AChar where+ CJSym0 = CJ+ type CKSym0 :: AChar+ type family CKSym0 :: AChar where+ CKSym0 = CK+ type CLSym0 :: AChar+ type family CLSym0 :: AChar where+ CLSym0 = CL+ type CMSym0 :: AChar+ type family CMSym0 :: AChar where+ CMSym0 = CM+ type CNSym0 :: AChar+ type family CNSym0 :: AChar where+ CNSym0 = CN+ type COSym0 :: AChar+ type family COSym0 :: AChar where+ COSym0 = CO+ type CPSym0 :: AChar+ type family CPSym0 :: AChar where+ CPSym0 = CP+ type CQSym0 :: AChar+ type family CQSym0 :: AChar where+ CQSym0 = CQ+ type CRSym0 :: AChar+ type family CRSym0 :: AChar where+ CRSym0 = CR+ type CSSym0 :: AChar+ type family CSSym0 :: AChar where+ CSSym0 = CS+ type CTSym0 :: AChar+ type family CTSym0 :: AChar where+ CTSym0 = CT+ type CUSym0 :: AChar+ type family CUSym0 :: AChar where+ CUSym0 = CU+ type CVSym0 :: AChar+ type family CVSym0 :: AChar where+ CVSym0 = CV+ type CWSym0 :: AChar+ type family CWSym0 :: AChar where+ CWSym0 = CW+ type CXSym0 :: AChar+ type family CXSym0 :: AChar where+ CXSym0 = CX+ type CYSym0 :: AChar+ type family CYSym0 :: AChar where+ CYSym0 = CY+ type CZSym0 :: AChar+ type family CZSym0 :: AChar where+ CZSym0 = CZ+ type AttrSym0 :: (~>) [AChar] ((~>) U Attribute)+ data AttrSym0 :: (~>) [AChar] ((~>) U Attribute)+ where+ AttrSym0KindInference :: SameKind (Apply AttrSym0 arg) (AttrSym1 arg) =>+ AttrSym0 a0123456789876543210+ type instance Apply AttrSym0 a0123456789876543210 = AttrSym1 a0123456789876543210+ instance SuppressUnusedWarnings AttrSym0 where+ suppressUnusedWarnings = snd (((,) AttrSym0KindInference) ())+ type AttrSym1 :: [AChar] -> (~>) U Attribute+ data AttrSym1 (a0123456789876543210 :: [AChar]) :: (~>) U Attribute+ where+ AttrSym1KindInference :: SameKind (Apply (AttrSym1 a0123456789876543210) arg) (AttrSym2 a0123456789876543210 arg) =>+ AttrSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (AttrSym1 a0123456789876543210) a0123456789876543210 = Attr a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (AttrSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) AttrSym1KindInference) ())+ type AttrSym2 :: [AChar] -> U -> Attribute+ type family AttrSym2 (a0123456789876543210 :: [AChar]) (a0123456789876543210 :: U) :: Attribute where+ AttrSym2 a0123456789876543210 a0123456789876543210 = Attr a0123456789876543210 a0123456789876543210+ type SchSym0 :: (~>) [Attribute] Schema+ data SchSym0 :: (~>) [Attribute] Schema+ where+ SchSym0KindInference :: SameKind (Apply SchSym0 arg) (SchSym1 arg) =>+ SchSym0 a0123456789876543210+ type instance Apply SchSym0 a0123456789876543210 = Sch a0123456789876543210+ instance SuppressUnusedWarnings SchSym0 where+ suppressUnusedWarnings = snd (((,) SchSym0KindInference) ())+ type SchSym1 :: [Attribute] -> Schema+ type family SchSym1 (a0123456789876543210 :: [Attribute]) :: Schema where+ SchSym1 a0123456789876543210 = Sch a0123456789876543210+ data Let0123456789876543210Scrutinee_0123456789876543210Sym0 name0123456789876543210+ where+ Let0123456789876543210Scrutinee_0123456789876543210Sym0KindInference :: SameKind (Apply Let0123456789876543210Scrutinee_0123456789876543210Sym0 arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym1 arg) =>+ Let0123456789876543210Scrutinee_0123456789876543210Sym0 name0123456789876543210+ type instance Apply Let0123456789876543210Scrutinee_0123456789876543210Sym0 name0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210+ instance SuppressUnusedWarnings Let0123456789876543210Scrutinee_0123456789876543210Sym0 where+ suppressUnusedWarnings+ = snd+ (((,)+ Let0123456789876543210Scrutinee_0123456789876543210Sym0KindInference)+ ())+ data Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210 name'0123456789876543210+ where+ Let0123456789876543210Scrutinee_0123456789876543210Sym1KindInference :: SameKind (Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210) arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 arg) =>+ Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210 name'0123456789876543210+ type instance Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210) name'0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210+ instance SuppressUnusedWarnings (Let0123456789876543210Scrutinee_0123456789876543210Sym1 name0123456789876543210) where+ suppressUnusedWarnings+ = snd+ (((,)+ Let0123456789876543210Scrutinee_0123456789876543210Sym1KindInference)+ ())+ data Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210 u0123456789876543210+ where+ Let0123456789876543210Scrutinee_0123456789876543210Sym2KindInference :: SameKind (Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210) arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 arg) =>+ Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210 u0123456789876543210+ type instance Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210) u0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210+ instance SuppressUnusedWarnings (Let0123456789876543210Scrutinee_0123456789876543210Sym2 name0123456789876543210 name'0123456789876543210) where+ suppressUnusedWarnings+ = snd+ (((,)+ Let0123456789876543210Scrutinee_0123456789876543210Sym2KindInference)+ ())+ data Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210+ where+ Let0123456789876543210Scrutinee_0123456789876543210Sym3KindInference :: SameKind (Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210) arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name0123456789876543210 name'0123456789876543210 u0123456789876543210 arg) =>+ Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210+ type instance Apply (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210) attrs0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210+ instance SuppressUnusedWarnings (Let0123456789876543210Scrutinee_0123456789876543210Sym3 name0123456789876543210 name'0123456789876543210 u0123456789876543210) where+ suppressUnusedWarnings+ = snd+ (((,)+ Let0123456789876543210Scrutinee_0123456789876543210Sym3KindInference)+ ())+ type family Let0123456789876543210Scrutinee_0123456789876543210Sym4 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210 where+ Let0123456789876543210Scrutinee_0123456789876543210Sym4 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210 = Let0123456789876543210Scrutinee_0123456789876543210 name0123456789876543210 name'0123456789876543210 u0123456789876543210 attrs0123456789876543210+ type family Let0123456789876543210Scrutinee_0123456789876543210 name name' u attrs where+ Let0123456789876543210Scrutinee_0123456789876543210 name name' u attrs = Apply (Apply (==@#@$) name) name'+ type family Case_0123456789876543210 name name' u attrs t where+ Case_0123456789876543210 name name' u attrs 'True = u+ Case_0123456789876543210 name name' u attrs 'False = Apply (Apply LookupSym0 name) (Apply SchSym0 attrs)+ type LookupSym0 :: (~>) [AChar] ((~>) Schema U)+ data LookupSym0 :: (~>) [AChar] ((~>) Schema U)+ where+ LookupSym0KindInference :: SameKind (Apply LookupSym0 arg) (LookupSym1 arg) =>+ LookupSym0 a0123456789876543210+ type instance Apply LookupSym0 a0123456789876543210 = LookupSym1 a0123456789876543210+ instance SuppressUnusedWarnings LookupSym0 where+ suppressUnusedWarnings = snd (((,) LookupSym0KindInference) ())+ type LookupSym1 :: [AChar] -> (~>) Schema U+ data LookupSym1 (a0123456789876543210 :: [AChar]) :: (~>) Schema U+ where+ LookupSym1KindInference :: SameKind (Apply (LookupSym1 a0123456789876543210) arg) (LookupSym2 a0123456789876543210 arg) =>+ LookupSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (LookupSym1 a0123456789876543210) a0123456789876543210 = Lookup a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (LookupSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) LookupSym1KindInference) ())+ type LookupSym2 :: [AChar] -> Schema -> U+ type family LookupSym2 (a0123456789876543210 :: [AChar]) (a0123456789876543210 :: Schema) :: U where+ LookupSym2 a0123456789876543210 a0123456789876543210 = Lookup a0123456789876543210 a0123456789876543210+ type OccursSym0 :: (~>) [AChar] ((~>) Schema Bool)+ data OccursSym0 :: (~>) [AChar] ((~>) Schema Bool)+ where+ OccursSym0KindInference :: SameKind (Apply OccursSym0 arg) (OccursSym1 arg) =>+ OccursSym0 a0123456789876543210+ type instance Apply OccursSym0 a0123456789876543210 = OccursSym1 a0123456789876543210+ instance SuppressUnusedWarnings OccursSym0 where+ suppressUnusedWarnings = snd (((,) OccursSym0KindInference) ())+ type OccursSym1 :: [AChar] -> (~>) Schema Bool+ data OccursSym1 (a0123456789876543210 :: [AChar]) :: (~>) Schema Bool+ where+ OccursSym1KindInference :: SameKind (Apply (OccursSym1 a0123456789876543210) arg) (OccursSym2 a0123456789876543210 arg) =>+ OccursSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (OccursSym1 a0123456789876543210) a0123456789876543210 = Occurs a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (OccursSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) OccursSym1KindInference) ())+ type OccursSym2 :: [AChar] -> Schema -> Bool+ type family OccursSym2 (a0123456789876543210 :: [AChar]) (a0123456789876543210 :: Schema) :: Bool where+ OccursSym2 a0123456789876543210 a0123456789876543210 = Occurs a0123456789876543210 a0123456789876543210+ type DisjointSym0 :: (~>) Schema ((~>) Schema Bool)+ data DisjointSym0 :: (~>) Schema ((~>) Schema Bool)+ where+ DisjointSym0KindInference :: SameKind (Apply DisjointSym0 arg) (DisjointSym1 arg) =>+ DisjointSym0 a0123456789876543210+ type instance Apply DisjointSym0 a0123456789876543210 = DisjointSym1 a0123456789876543210+ instance SuppressUnusedWarnings DisjointSym0 where+ suppressUnusedWarnings = snd (((,) DisjointSym0KindInference) ())+ type DisjointSym1 :: Schema -> (~>) Schema Bool+ data DisjointSym1 (a0123456789876543210 :: Schema) :: (~>) Schema Bool+ where+ DisjointSym1KindInference :: SameKind (Apply (DisjointSym1 a0123456789876543210) arg) (DisjointSym2 a0123456789876543210 arg) =>+ DisjointSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (DisjointSym1 a0123456789876543210) a0123456789876543210 = Disjoint a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (DisjointSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) DisjointSym1KindInference) ())+ type DisjointSym2 :: Schema -> Schema -> Bool+ type family DisjointSym2 (a0123456789876543210 :: Schema) (a0123456789876543210 :: Schema) :: Bool where+ DisjointSym2 a0123456789876543210 a0123456789876543210 = Disjoint a0123456789876543210 a0123456789876543210+ type AttrNotInSym0 :: (~>) Attribute ((~>) Schema Bool)+ data AttrNotInSym0 :: (~>) Attribute ((~>) Schema Bool)+ where+ AttrNotInSym0KindInference :: SameKind (Apply AttrNotInSym0 arg) (AttrNotInSym1 arg) =>+ AttrNotInSym0 a0123456789876543210+ type instance Apply AttrNotInSym0 a0123456789876543210 = AttrNotInSym1 a0123456789876543210+ instance SuppressUnusedWarnings AttrNotInSym0 where+ suppressUnusedWarnings = snd (((,) AttrNotInSym0KindInference) ())+ type AttrNotInSym1 :: Attribute -> (~>) Schema Bool+ data AttrNotInSym1 (a0123456789876543210 :: Attribute) :: (~>) Schema Bool+ where+ AttrNotInSym1KindInference :: SameKind (Apply (AttrNotInSym1 a0123456789876543210) arg) (AttrNotInSym2 a0123456789876543210 arg) =>+ AttrNotInSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (AttrNotInSym1 a0123456789876543210) a0123456789876543210 = AttrNotIn a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (AttrNotInSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) AttrNotInSym1KindInference) ())+ type AttrNotInSym2 :: Attribute -> Schema -> Bool+ type family AttrNotInSym2 (a0123456789876543210 :: Attribute) (a0123456789876543210 :: Schema) :: Bool where+ AttrNotInSym2 a0123456789876543210 a0123456789876543210 = AttrNotIn a0123456789876543210 a0123456789876543210+ type AppendSym0 :: (~>) Schema ((~>) Schema Schema)+ data AppendSym0 :: (~>) Schema ((~>) Schema Schema)+ where+ AppendSym0KindInference :: SameKind (Apply AppendSym0 arg) (AppendSym1 arg) =>+ AppendSym0 a0123456789876543210+ type instance Apply AppendSym0 a0123456789876543210 = AppendSym1 a0123456789876543210+ instance SuppressUnusedWarnings AppendSym0 where+ suppressUnusedWarnings = snd (((,) AppendSym0KindInference) ())+ type AppendSym1 :: Schema -> (~>) Schema Schema+ data AppendSym1 (a0123456789876543210 :: Schema) :: (~>) Schema Schema+ where+ AppendSym1KindInference :: SameKind (Apply (AppendSym1 a0123456789876543210) arg) (AppendSym2 a0123456789876543210 arg) =>+ AppendSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (AppendSym1 a0123456789876543210) a0123456789876543210 = Append a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (AppendSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) AppendSym1KindInference) ())+ type AppendSym2 :: Schema -> Schema -> Schema+ type family AppendSym2 (a0123456789876543210 :: Schema) (a0123456789876543210 :: Schema) :: Schema where+ AppendSym2 a0123456789876543210 a0123456789876543210 = Append a0123456789876543210 a0123456789876543210+ type Lookup :: [AChar] -> Schema -> U+ type family Lookup (a :: [AChar]) (a :: Schema) :: U where+ Lookup _ (Sch '[]) = UndefinedSym0+ Lookup name (Sch ('(:) (Attr name' u) attrs)) = Case_0123456789876543210 name name' u attrs (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name name' u attrs)+ type Occurs :: [AChar] -> Schema -> Bool+ type family Occurs (a :: [AChar]) (a :: Schema) :: Bool where+ Occurs _ (Sch '[]) = FalseSym0+ Occurs name (Sch ('(:) (Attr name' _) attrs)) = Apply (Apply (||@#@$) (Apply (Apply (==@#@$) name) name')) (Apply (Apply OccursSym0 name) (Apply SchSym0 attrs))+ type Disjoint :: Schema -> Schema -> Bool+ type family Disjoint (a :: Schema) (a :: Schema) :: Bool where+ Disjoint (Sch '[]) _ = TrueSym0+ Disjoint (Sch ('(:) h t)) s = Apply (Apply (&&@#@$) (Apply (Apply AttrNotInSym0 h) s)) (Apply (Apply DisjointSym0 (Apply SchSym0 t)) s)+ type AttrNotIn :: Attribute -> Schema -> Bool+ type family AttrNotIn (a :: Attribute) (a :: Schema) :: Bool where+ AttrNotIn _ (Sch '[]) = TrueSym0+ AttrNotIn (Attr name u) (Sch ('(:) (Attr name' _) t)) = Apply (Apply (&&@#@$) (Apply (Apply (/=@#@$) name) name')) (Apply (Apply AttrNotInSym0 (Apply (Apply AttrSym0 name) u)) (Apply SchSym0 t))+ type Append :: Schema -> Schema -> Schema+ type family Append (a :: Schema) (a :: Schema) :: Schema where+ Append (Sch s1) (Sch s2) = Apply SchSym0 (Apply (Apply (++@#@$) s1) s2)+ type TFHelper_0123456789876543210 :: U -> U -> Bool+ type family TFHelper_0123456789876543210 (a :: U) (a :: U) :: Bool where+ TFHelper_0123456789876543210 BOOL BOOL = TrueSym0+ TFHelper_0123456789876543210 BOOL STRING = FalseSym0+ TFHelper_0123456789876543210 BOOL NAT = FalseSym0+ TFHelper_0123456789876543210 BOOL (VEC _ _) = FalseSym0+ TFHelper_0123456789876543210 STRING BOOL = FalseSym0+ TFHelper_0123456789876543210 STRING STRING = TrueSym0+ TFHelper_0123456789876543210 STRING NAT = FalseSym0+ TFHelper_0123456789876543210 STRING (VEC _ _) = FalseSym0+ TFHelper_0123456789876543210 NAT BOOL = FalseSym0+ TFHelper_0123456789876543210 NAT STRING = FalseSym0+ TFHelper_0123456789876543210 NAT NAT = TrueSym0+ TFHelper_0123456789876543210 NAT (VEC _ _) = FalseSym0+ TFHelper_0123456789876543210 (VEC _ _) BOOL = FalseSym0+ TFHelper_0123456789876543210 (VEC _ _) STRING = FalseSym0+ TFHelper_0123456789876543210 (VEC _ _) NAT = FalseSym0+ TFHelper_0123456789876543210 (VEC a_0123456789876543210 a_0123456789876543210) (VEC b_0123456789876543210 b_0123456789876543210) = Apply (Apply (&&@#@$) (Apply (Apply (==@#@$) a_0123456789876543210) b_0123456789876543210)) (Apply (Apply (==@#@$) a_0123456789876543210) b_0123456789876543210)+ type TFHelper_0123456789876543210Sym0 :: (~>) U ((~>) U Bool)+ data TFHelper_0123456789876543210Sym0 :: (~>) U ((~>) U Bool)+ where+ TFHelper_0123456789876543210Sym0KindInference :: SameKind (Apply TFHelper_0123456789876543210Sym0 arg) (TFHelper_0123456789876543210Sym1 arg) =>+ TFHelper_0123456789876543210Sym0 a0123456789876543210+ type instance Apply TFHelper_0123456789876543210Sym0 a0123456789876543210 = TFHelper_0123456789876543210Sym1 a0123456789876543210+ instance SuppressUnusedWarnings TFHelper_0123456789876543210Sym0 where+ suppressUnusedWarnings+ = snd (((,) TFHelper_0123456789876543210Sym0KindInference) ())+ type TFHelper_0123456789876543210Sym1 :: U -> (~>) U Bool+ data TFHelper_0123456789876543210Sym1 (a0123456789876543210 :: U) :: (~>) U Bool+ where+ TFHelper_0123456789876543210Sym1KindInference :: SameKind (Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) arg) (TFHelper_0123456789876543210Sym2 a0123456789876543210 arg) =>+ TFHelper_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210+ type instance Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (TFHelper_0123456789876543210Sym1 a0123456789876543210) where+ suppressUnusedWarnings+ = snd (((,) TFHelper_0123456789876543210Sym1KindInference) ())+ type TFHelper_0123456789876543210Sym2 :: U -> U -> Bool+ type family TFHelper_0123456789876543210Sym2 (a0123456789876543210 :: U) (a0123456789876543210 :: U) :: Bool where+ TFHelper_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210+ instance PEq U where+ type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural+ -> U -> Symbol -> Symbol+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: U) (a :: Symbol) :: Symbol where+ ShowsPrec_0123456789876543210 _ BOOL a_0123456789876543210 = Apply (Apply ShowStringSym0 "BOOL") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ STRING a_0123456789876543210 = Apply (Apply ShowStringSym0 "STRING") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ NAT a_0123456789876543210 = Apply (Apply ShowStringSym0 "NAT") a_0123456789876543210+ ShowsPrec_0123456789876543210 p_0123456789876543210 (VEC arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "VEC ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) U ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) U ((~>) Symbol Symbol))+ where+ ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>+ ShowsPrec_0123456789876543210Sym0 a0123456789876543210+ type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210+ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where+ suppressUnusedWarnings+ = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural+ -> (~>) U ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) U ((~>) Symbol Symbol)+ where+ ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>+ ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210+ type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where+ suppressUnusedWarnings+ = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural+ -> U -> (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: U) :: (~>) Symbol Symbol+ where+ ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>+ ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210+ type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where+ suppressUnusedWarnings+ = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural+ -> U -> Symbol -> Symbol+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: U) (a0123456789876543210 :: Symbol) :: Symbol where+ ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210+ instance PShow U where+ type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural+ -> AChar -> Symbol -> Symbol+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: AChar) (a :: Symbol) :: Symbol where+ ShowsPrec_0123456789876543210 _ CA a_0123456789876543210 = Apply (Apply ShowStringSym0 "CA") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CB a_0123456789876543210 = Apply (Apply ShowStringSym0 "CB") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CC a_0123456789876543210 = Apply (Apply ShowStringSym0 "CC") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CD a_0123456789876543210 = Apply (Apply ShowStringSym0 "CD") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CE a_0123456789876543210 = Apply (Apply ShowStringSym0 "CE") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CF a_0123456789876543210 = Apply (Apply ShowStringSym0 "CF") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CG a_0123456789876543210 = Apply (Apply ShowStringSym0 "CG") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CH a_0123456789876543210 = Apply (Apply ShowStringSym0 "CH") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CI a_0123456789876543210 = Apply (Apply ShowStringSym0 "CI") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CJ a_0123456789876543210 = Apply (Apply ShowStringSym0 "CJ") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CK a_0123456789876543210 = Apply (Apply ShowStringSym0 "CK") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CL a_0123456789876543210 = Apply (Apply ShowStringSym0 "CL") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CM a_0123456789876543210 = Apply (Apply ShowStringSym0 "CM") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CN a_0123456789876543210 = Apply (Apply ShowStringSym0 "CN") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CO a_0123456789876543210 = Apply (Apply ShowStringSym0 "CO") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CP a_0123456789876543210 = Apply (Apply ShowStringSym0 "CP") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CQ a_0123456789876543210 = Apply (Apply ShowStringSym0 "CQ") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CR a_0123456789876543210 = Apply (Apply ShowStringSym0 "CR") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CS a_0123456789876543210 = Apply (Apply ShowStringSym0 "CS") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CT a_0123456789876543210 = Apply (Apply ShowStringSym0 "CT") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CU a_0123456789876543210 = Apply (Apply ShowStringSym0 "CU") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CV a_0123456789876543210 = Apply (Apply ShowStringSym0 "CV") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CW a_0123456789876543210 = Apply (Apply ShowStringSym0 "CW") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CX a_0123456789876543210 = Apply (Apply ShowStringSym0 "CX") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CY a_0123456789876543210 = Apply (Apply ShowStringSym0 "CY") a_0123456789876543210+ ShowsPrec_0123456789876543210 _ CZ a_0123456789876543210 = Apply (Apply ShowStringSym0 "CZ") a_0123456789876543210+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) AChar ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) AChar ((~>) Symbol Symbol))+ where+ ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) =>+ ShowsPrec_0123456789876543210Sym0 a0123456789876543210+ type instance Apply ShowsPrec_0123456789876543210Sym0 a0123456789876543210 = ShowsPrec_0123456789876543210Sym1 a0123456789876543210+ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where+ suppressUnusedWarnings+ = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural+ -> (~>) AChar ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) AChar ((~>) Symbol Symbol)+ where+ ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) =>+ ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210+ type instance Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where+ suppressUnusedWarnings+ = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural+ -> AChar -> (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: AChar) :: (~>) Symbol Symbol+ where+ ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) =>+ ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210+ type instance Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where+ suppressUnusedWarnings+ = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural+ -> AChar -> Symbol -> Symbol+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: AChar) (a0123456789876543210 :: Symbol) :: Symbol where+ ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210+ instance PShow AChar where+ type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a+ type TFHelper_0123456789876543210 :: AChar -> AChar -> Bool+ type family TFHelper_0123456789876543210 (a :: AChar) (a :: AChar) :: Bool where+ TFHelper_0123456789876543210 CA CA = TrueSym0+ TFHelper_0123456789876543210 CA CB = FalseSym0+ TFHelper_0123456789876543210 CA CC = FalseSym0+ TFHelper_0123456789876543210 CA CD = FalseSym0+ TFHelper_0123456789876543210 CA CE = FalseSym0+ TFHelper_0123456789876543210 CA CF = FalseSym0+ TFHelper_0123456789876543210 CA CG = FalseSym0+ TFHelper_0123456789876543210 CA CH = FalseSym0+ TFHelper_0123456789876543210 CA CI = FalseSym0+ TFHelper_0123456789876543210 CA CJ = FalseSym0+ TFHelper_0123456789876543210 CA CK = FalseSym0+ TFHelper_0123456789876543210 CA CL = FalseSym0+ TFHelper_0123456789876543210 CA CM = FalseSym0+ TFHelper_0123456789876543210 CA CN = FalseSym0+ TFHelper_0123456789876543210 CA CO = FalseSym0+ TFHelper_0123456789876543210 CA CP = FalseSym0+ TFHelper_0123456789876543210 CA CQ = FalseSym0+ TFHelper_0123456789876543210 CA CR = FalseSym0+ TFHelper_0123456789876543210 CA CS = FalseSym0+ TFHelper_0123456789876543210 CA CT = FalseSym0+ TFHelper_0123456789876543210 CA CU = FalseSym0+ TFHelper_0123456789876543210 CA CV = FalseSym0+ TFHelper_0123456789876543210 CA CW = FalseSym0+ TFHelper_0123456789876543210 CA CX = FalseSym0+ TFHelper_0123456789876543210 CA CY = FalseSym0+ TFHelper_0123456789876543210 CA CZ = FalseSym0+ TFHelper_0123456789876543210 CB CA = FalseSym0+ TFHelper_0123456789876543210 CB CB = TrueSym0+ TFHelper_0123456789876543210 CB CC = FalseSym0+ TFHelper_0123456789876543210 CB CD = FalseSym0+ TFHelper_0123456789876543210 CB CE = FalseSym0+ TFHelper_0123456789876543210 CB CF = FalseSym0+ TFHelper_0123456789876543210 CB CG = FalseSym0+ TFHelper_0123456789876543210 CB CH = FalseSym0+ TFHelper_0123456789876543210 CB CI = FalseSym0+ TFHelper_0123456789876543210 CB CJ = FalseSym0+ TFHelper_0123456789876543210 CB CK = FalseSym0+ TFHelper_0123456789876543210 CB CL = FalseSym0+ TFHelper_0123456789876543210 CB CM = FalseSym0+ TFHelper_0123456789876543210 CB CN = FalseSym0+ TFHelper_0123456789876543210 CB CO = FalseSym0+ TFHelper_0123456789876543210 CB CP = FalseSym0+ TFHelper_0123456789876543210 CB CQ = FalseSym0+ TFHelper_0123456789876543210 CB CR = FalseSym0+ TFHelper_0123456789876543210 CB CS = FalseSym0+ TFHelper_0123456789876543210 CB CT = FalseSym0+ TFHelper_0123456789876543210 CB CU = FalseSym0+ TFHelper_0123456789876543210 CB CV = FalseSym0+ TFHelper_0123456789876543210 CB CW = FalseSym0+ TFHelper_0123456789876543210 CB CX = FalseSym0+ TFHelper_0123456789876543210 CB CY = FalseSym0+ TFHelper_0123456789876543210 CB CZ = FalseSym0+ TFHelper_0123456789876543210 CC CA = FalseSym0+ TFHelper_0123456789876543210 CC CB = FalseSym0+ TFHelper_0123456789876543210 CC CC = TrueSym0+ TFHelper_0123456789876543210 CC CD = FalseSym0+ TFHelper_0123456789876543210 CC CE = FalseSym0+ TFHelper_0123456789876543210 CC CF = FalseSym0+ TFHelper_0123456789876543210 CC CG = FalseSym0+ TFHelper_0123456789876543210 CC CH = FalseSym0+ TFHelper_0123456789876543210 CC CI = FalseSym0+ TFHelper_0123456789876543210 CC CJ = FalseSym0+ TFHelper_0123456789876543210 CC CK = FalseSym0+ TFHelper_0123456789876543210 CC CL = FalseSym0+ TFHelper_0123456789876543210 CC CM = FalseSym0+ TFHelper_0123456789876543210 CC CN = FalseSym0+ TFHelper_0123456789876543210 CC CO = FalseSym0+ TFHelper_0123456789876543210 CC CP = FalseSym0+ TFHelper_0123456789876543210 CC CQ = FalseSym0+ TFHelper_0123456789876543210 CC CR = FalseSym0+ TFHelper_0123456789876543210 CC CS = FalseSym0+ TFHelper_0123456789876543210 CC CT = FalseSym0+ TFHelper_0123456789876543210 CC CU = FalseSym0+ TFHelper_0123456789876543210 CC CV = FalseSym0+ TFHelper_0123456789876543210 CC CW = FalseSym0+ TFHelper_0123456789876543210 CC CX = FalseSym0+ TFHelper_0123456789876543210 CC CY = FalseSym0+ TFHelper_0123456789876543210 CC CZ = FalseSym0+ TFHelper_0123456789876543210 CD CA = FalseSym0+ TFHelper_0123456789876543210 CD CB = FalseSym0+ TFHelper_0123456789876543210 CD CC = FalseSym0+ TFHelper_0123456789876543210 CD CD = TrueSym0+ TFHelper_0123456789876543210 CD CE = FalseSym0+ TFHelper_0123456789876543210 CD CF = FalseSym0+ TFHelper_0123456789876543210 CD CG = FalseSym0+ TFHelper_0123456789876543210 CD CH = FalseSym0+ TFHelper_0123456789876543210 CD CI = FalseSym0+ TFHelper_0123456789876543210 CD CJ = FalseSym0+ TFHelper_0123456789876543210 CD CK = FalseSym0+ TFHelper_0123456789876543210 CD CL = FalseSym0+ TFHelper_0123456789876543210 CD CM = FalseSym0+ TFHelper_0123456789876543210 CD CN = FalseSym0+ TFHelper_0123456789876543210 CD CO = FalseSym0+ TFHelper_0123456789876543210 CD CP = FalseSym0+ TFHelper_0123456789876543210 CD CQ = FalseSym0+ TFHelper_0123456789876543210 CD CR = FalseSym0+ TFHelper_0123456789876543210 CD CS = FalseSym0+ TFHelper_0123456789876543210 CD CT = FalseSym0+ TFHelper_0123456789876543210 CD CU = FalseSym0+ TFHelper_0123456789876543210 CD CV = FalseSym0+ TFHelper_0123456789876543210 CD CW = FalseSym0+ TFHelper_0123456789876543210 CD CX = FalseSym0+ TFHelper_0123456789876543210 CD CY = FalseSym0+ TFHelper_0123456789876543210 CD CZ = FalseSym0+ TFHelper_0123456789876543210 CE CA = FalseSym0+ TFHelper_0123456789876543210 CE CB = FalseSym0+ TFHelper_0123456789876543210 CE CC = FalseSym0+ TFHelper_0123456789876543210 CE CD = FalseSym0+ TFHelper_0123456789876543210 CE CE = TrueSym0+ TFHelper_0123456789876543210 CE CF = FalseSym0+ TFHelper_0123456789876543210 CE CG = FalseSym0+ TFHelper_0123456789876543210 CE CH = FalseSym0+ TFHelper_0123456789876543210 CE CI = FalseSym0+ TFHelper_0123456789876543210 CE CJ = FalseSym0+ TFHelper_0123456789876543210 CE CK = FalseSym0+ TFHelper_0123456789876543210 CE CL = FalseSym0+ TFHelper_0123456789876543210 CE CM = FalseSym0+ TFHelper_0123456789876543210 CE CN = FalseSym0+ TFHelper_0123456789876543210 CE CO = FalseSym0+ TFHelper_0123456789876543210 CE CP = FalseSym0+ TFHelper_0123456789876543210 CE CQ = FalseSym0+ TFHelper_0123456789876543210 CE CR = FalseSym0+ TFHelper_0123456789876543210 CE CS = FalseSym0+ TFHelper_0123456789876543210 CE CT = FalseSym0+ TFHelper_0123456789876543210 CE CU = FalseSym0+ TFHelper_0123456789876543210 CE CV = FalseSym0+ TFHelper_0123456789876543210 CE CW = FalseSym0+ TFHelper_0123456789876543210 CE CX = FalseSym0+ TFHelper_0123456789876543210 CE CY = FalseSym0+ TFHelper_0123456789876543210 CE CZ = FalseSym0+ TFHelper_0123456789876543210 CF CA = FalseSym0+ TFHelper_0123456789876543210 CF CB = FalseSym0+ TFHelper_0123456789876543210 CF CC = FalseSym0+ TFHelper_0123456789876543210 CF CD = FalseSym0+ TFHelper_0123456789876543210 CF CE = FalseSym0+ TFHelper_0123456789876543210 CF CF = TrueSym0+ TFHelper_0123456789876543210 CF CG = FalseSym0+ TFHelper_0123456789876543210 CF CH = FalseSym0+ TFHelper_0123456789876543210 CF CI = FalseSym0+ TFHelper_0123456789876543210 CF CJ = FalseSym0+ TFHelper_0123456789876543210 CF CK = FalseSym0+ TFHelper_0123456789876543210 CF CL = FalseSym0+ TFHelper_0123456789876543210 CF CM = FalseSym0+ TFHelper_0123456789876543210 CF CN = FalseSym0+ TFHelper_0123456789876543210 CF CO = FalseSym0+ TFHelper_0123456789876543210 CF CP = FalseSym0+ TFHelper_0123456789876543210 CF CQ = FalseSym0+ TFHelper_0123456789876543210 CF CR = FalseSym0+ TFHelper_0123456789876543210 CF CS = FalseSym0+ TFHelper_0123456789876543210 CF CT = FalseSym0+ TFHelper_0123456789876543210 CF CU = FalseSym0+ TFHelper_0123456789876543210 CF CV = FalseSym0+ TFHelper_0123456789876543210 CF CW = FalseSym0+ TFHelper_0123456789876543210 CF CX = FalseSym0+ TFHelper_0123456789876543210 CF CY = FalseSym0+ TFHelper_0123456789876543210 CF CZ = FalseSym0+ TFHelper_0123456789876543210 CG CA = FalseSym0+ TFHelper_0123456789876543210 CG CB = FalseSym0+ TFHelper_0123456789876543210 CG CC = FalseSym0+ TFHelper_0123456789876543210 CG CD = FalseSym0+ TFHelper_0123456789876543210 CG CE = FalseSym0+ TFHelper_0123456789876543210 CG CF = FalseSym0+ TFHelper_0123456789876543210 CG CG = TrueSym0+ TFHelper_0123456789876543210 CG CH = FalseSym0+ TFHelper_0123456789876543210 CG CI = FalseSym0+ TFHelper_0123456789876543210 CG CJ = FalseSym0+ TFHelper_0123456789876543210 CG CK = FalseSym0+ TFHelper_0123456789876543210 CG CL = FalseSym0+ TFHelper_0123456789876543210 CG CM = FalseSym0+ TFHelper_0123456789876543210 CG CN = FalseSym0+ TFHelper_0123456789876543210 CG CO = FalseSym0+ TFHelper_0123456789876543210 CG CP = FalseSym0+ TFHelper_0123456789876543210 CG CQ = FalseSym0+ TFHelper_0123456789876543210 CG CR = FalseSym0+ TFHelper_0123456789876543210 CG CS = FalseSym0+ TFHelper_0123456789876543210 CG CT = FalseSym0+ TFHelper_0123456789876543210 CG CU = FalseSym0+ TFHelper_0123456789876543210 CG CV = FalseSym0+ TFHelper_0123456789876543210 CG CW = FalseSym0+ TFHelper_0123456789876543210 CG CX = FalseSym0+ TFHelper_0123456789876543210 CG CY = FalseSym0+ TFHelper_0123456789876543210 CG CZ = FalseSym0+ TFHelper_0123456789876543210 CH CA = FalseSym0+ TFHelper_0123456789876543210 CH CB = FalseSym0+ TFHelper_0123456789876543210 CH CC = FalseSym0+ TFHelper_0123456789876543210 CH CD = FalseSym0+ TFHelper_0123456789876543210 CH CE = FalseSym0+ TFHelper_0123456789876543210 CH CF = FalseSym0+ TFHelper_0123456789876543210 CH CG = FalseSym0+ TFHelper_0123456789876543210 CH CH = TrueSym0+ TFHelper_0123456789876543210 CH CI = FalseSym0+ TFHelper_0123456789876543210 CH CJ = FalseSym0+ TFHelper_0123456789876543210 CH CK = FalseSym0+ TFHelper_0123456789876543210 CH CL = FalseSym0+ TFHelper_0123456789876543210 CH CM = FalseSym0+ TFHelper_0123456789876543210 CH CN = FalseSym0+ TFHelper_0123456789876543210 CH CO = FalseSym0+ TFHelper_0123456789876543210 CH CP = FalseSym0+ TFHelper_0123456789876543210 CH CQ = FalseSym0+ TFHelper_0123456789876543210 CH CR = FalseSym0+ TFHelper_0123456789876543210 CH CS = FalseSym0+ TFHelper_0123456789876543210 CH CT = FalseSym0+ TFHelper_0123456789876543210 CH CU = FalseSym0+ TFHelper_0123456789876543210 CH CV = FalseSym0+ TFHelper_0123456789876543210 CH CW = FalseSym0+ TFHelper_0123456789876543210 CH CX = FalseSym0+ TFHelper_0123456789876543210 CH CY = FalseSym0+ TFHelper_0123456789876543210 CH CZ = FalseSym0+ TFHelper_0123456789876543210 CI CA = FalseSym0+ TFHelper_0123456789876543210 CI CB = FalseSym0+ TFHelper_0123456789876543210 CI CC = FalseSym0+ TFHelper_0123456789876543210 CI CD = FalseSym0+ TFHelper_0123456789876543210 CI CE = FalseSym0+ TFHelper_0123456789876543210 CI CF = FalseSym0+ TFHelper_0123456789876543210 CI CG = FalseSym0+ TFHelper_0123456789876543210 CI CH = FalseSym0+ TFHelper_0123456789876543210 CI CI = TrueSym0+ TFHelper_0123456789876543210 CI CJ = FalseSym0+ TFHelper_0123456789876543210 CI CK = FalseSym0+ TFHelper_0123456789876543210 CI CL = FalseSym0+ TFHelper_0123456789876543210 CI CM = FalseSym0+ TFHelper_0123456789876543210 CI CN = FalseSym0+ TFHelper_0123456789876543210 CI CO = FalseSym0+ TFHelper_0123456789876543210 CI CP = FalseSym0+ TFHelper_0123456789876543210 CI CQ = FalseSym0+ TFHelper_0123456789876543210 CI CR = FalseSym0+ TFHelper_0123456789876543210 CI CS = FalseSym0+ TFHelper_0123456789876543210 CI CT = FalseSym0+ TFHelper_0123456789876543210 CI CU = FalseSym0+ TFHelper_0123456789876543210 CI CV = FalseSym0+ TFHelper_0123456789876543210 CI CW = FalseSym0+ TFHelper_0123456789876543210 CI CX = FalseSym0+ TFHelper_0123456789876543210 CI CY = FalseSym0+ TFHelper_0123456789876543210 CI CZ = FalseSym0+ TFHelper_0123456789876543210 CJ CA = FalseSym0+ TFHelper_0123456789876543210 CJ CB = FalseSym0+ TFHelper_0123456789876543210 CJ CC = FalseSym0+ TFHelper_0123456789876543210 CJ CD = FalseSym0+ TFHelper_0123456789876543210 CJ CE = FalseSym0+ TFHelper_0123456789876543210 CJ CF = FalseSym0+ TFHelper_0123456789876543210 CJ CG = FalseSym0+ TFHelper_0123456789876543210 CJ CH = FalseSym0+ TFHelper_0123456789876543210 CJ CI = FalseSym0+ TFHelper_0123456789876543210 CJ CJ = TrueSym0+ TFHelper_0123456789876543210 CJ CK = FalseSym0+ TFHelper_0123456789876543210 CJ CL = FalseSym0+ TFHelper_0123456789876543210 CJ CM = FalseSym0+ TFHelper_0123456789876543210 CJ CN = FalseSym0+ TFHelper_0123456789876543210 CJ CO = FalseSym0+ TFHelper_0123456789876543210 CJ CP = FalseSym0+ TFHelper_0123456789876543210 CJ CQ = FalseSym0+ TFHelper_0123456789876543210 CJ CR = FalseSym0+ TFHelper_0123456789876543210 CJ CS = FalseSym0+ TFHelper_0123456789876543210 CJ CT = FalseSym0+ TFHelper_0123456789876543210 CJ CU = FalseSym0+ TFHelper_0123456789876543210 CJ CV = FalseSym0+ TFHelper_0123456789876543210 CJ CW = FalseSym0+ TFHelper_0123456789876543210 CJ CX = FalseSym0+ TFHelper_0123456789876543210 CJ CY = FalseSym0+ TFHelper_0123456789876543210 CJ CZ = FalseSym0+ TFHelper_0123456789876543210 CK CA = FalseSym0+ TFHelper_0123456789876543210 CK CB = FalseSym0+ TFHelper_0123456789876543210 CK CC = FalseSym0+ TFHelper_0123456789876543210 CK CD = FalseSym0+ TFHelper_0123456789876543210 CK CE = FalseSym0+ TFHelper_0123456789876543210 CK CF = FalseSym0+ TFHelper_0123456789876543210 CK CG = FalseSym0+ TFHelper_0123456789876543210 CK CH = FalseSym0+ TFHelper_0123456789876543210 CK CI = FalseSym0+ TFHelper_0123456789876543210 CK CJ = FalseSym0+ TFHelper_0123456789876543210 CK CK = TrueSym0+ TFHelper_0123456789876543210 CK CL = FalseSym0+ TFHelper_0123456789876543210 CK CM = FalseSym0+ TFHelper_0123456789876543210 CK CN = FalseSym0+ TFHelper_0123456789876543210 CK CO = FalseSym0+ TFHelper_0123456789876543210 CK CP = FalseSym0+ TFHelper_0123456789876543210 CK CQ = FalseSym0+ TFHelper_0123456789876543210 CK CR = FalseSym0+ TFHelper_0123456789876543210 CK CS = FalseSym0+ TFHelper_0123456789876543210 CK CT = FalseSym0+ TFHelper_0123456789876543210 CK CU = FalseSym0+ TFHelper_0123456789876543210 CK CV = FalseSym0+ TFHelper_0123456789876543210 CK CW = FalseSym0+ TFHelper_0123456789876543210 CK CX = FalseSym0+ TFHelper_0123456789876543210 CK CY = FalseSym0+ TFHelper_0123456789876543210 CK CZ = FalseSym0+ TFHelper_0123456789876543210 CL CA = FalseSym0+ TFHelper_0123456789876543210 CL CB = FalseSym0+ TFHelper_0123456789876543210 CL CC = FalseSym0+ TFHelper_0123456789876543210 CL CD = FalseSym0+ TFHelper_0123456789876543210 CL CE = FalseSym0+ TFHelper_0123456789876543210 CL CF = FalseSym0+ TFHelper_0123456789876543210 CL CG = FalseSym0+ TFHelper_0123456789876543210 CL CH = FalseSym0+ TFHelper_0123456789876543210 CL CI = FalseSym0+ TFHelper_0123456789876543210 CL CJ = FalseSym0+ TFHelper_0123456789876543210 CL CK = FalseSym0+ TFHelper_0123456789876543210 CL CL = TrueSym0+ TFHelper_0123456789876543210 CL CM = FalseSym0+ TFHelper_0123456789876543210 CL CN = FalseSym0+ TFHelper_0123456789876543210 CL CO = FalseSym0+ TFHelper_0123456789876543210 CL CP = FalseSym0+ TFHelper_0123456789876543210 CL CQ = FalseSym0+ TFHelper_0123456789876543210 CL CR = FalseSym0+ TFHelper_0123456789876543210 CL CS = FalseSym0+ TFHelper_0123456789876543210 CL CT = FalseSym0+ TFHelper_0123456789876543210 CL CU = FalseSym0+ TFHelper_0123456789876543210 CL CV = FalseSym0+ TFHelper_0123456789876543210 CL CW = FalseSym0+ TFHelper_0123456789876543210 CL CX = FalseSym0+ TFHelper_0123456789876543210 CL CY = FalseSym0+ TFHelper_0123456789876543210 CL CZ = FalseSym0+ TFHelper_0123456789876543210 CM CA = FalseSym0+ TFHelper_0123456789876543210 CM CB = FalseSym0+ TFHelper_0123456789876543210 CM CC = FalseSym0+ TFHelper_0123456789876543210 CM CD = FalseSym0+ TFHelper_0123456789876543210 CM CE = FalseSym0+ TFHelper_0123456789876543210 CM CF = FalseSym0+ TFHelper_0123456789876543210 CM CG = FalseSym0+ TFHelper_0123456789876543210 CM CH = FalseSym0+ TFHelper_0123456789876543210 CM CI = FalseSym0+ TFHelper_0123456789876543210 CM CJ = FalseSym0+ TFHelper_0123456789876543210 CM CK = FalseSym0+ TFHelper_0123456789876543210 CM CL = FalseSym0+ TFHelper_0123456789876543210 CM CM = TrueSym0+ TFHelper_0123456789876543210 CM CN = FalseSym0+ TFHelper_0123456789876543210 CM CO = FalseSym0+ TFHelper_0123456789876543210 CM CP = FalseSym0+ TFHelper_0123456789876543210 CM CQ = FalseSym0+ TFHelper_0123456789876543210 CM CR = FalseSym0+ TFHelper_0123456789876543210 CM CS = FalseSym0+ TFHelper_0123456789876543210 CM CT = FalseSym0+ TFHelper_0123456789876543210 CM CU = FalseSym0+ TFHelper_0123456789876543210 CM CV = FalseSym0+ TFHelper_0123456789876543210 CM CW = FalseSym0+ TFHelper_0123456789876543210 CM CX = FalseSym0+ TFHelper_0123456789876543210 CM CY = FalseSym0+ TFHelper_0123456789876543210 CM CZ = FalseSym0+ TFHelper_0123456789876543210 CN CA = FalseSym0+ TFHelper_0123456789876543210 CN CB = FalseSym0+ TFHelper_0123456789876543210 CN CC = FalseSym0+ TFHelper_0123456789876543210 CN CD = FalseSym0+ TFHelper_0123456789876543210 CN CE = FalseSym0+ TFHelper_0123456789876543210 CN CF = FalseSym0+ TFHelper_0123456789876543210 CN CG = FalseSym0+ TFHelper_0123456789876543210 CN CH = FalseSym0+ TFHelper_0123456789876543210 CN CI = FalseSym0+ TFHelper_0123456789876543210 CN CJ = FalseSym0+ TFHelper_0123456789876543210 CN CK = FalseSym0+ TFHelper_0123456789876543210 CN CL = FalseSym0+ TFHelper_0123456789876543210 CN CM = FalseSym0+ TFHelper_0123456789876543210 CN CN = TrueSym0+ TFHelper_0123456789876543210 CN CO = FalseSym0+ TFHelper_0123456789876543210 CN CP = FalseSym0+ TFHelper_0123456789876543210 CN CQ = FalseSym0+ TFHelper_0123456789876543210 CN CR = FalseSym0+ TFHelper_0123456789876543210 CN CS = FalseSym0+ TFHelper_0123456789876543210 CN CT = FalseSym0+ TFHelper_0123456789876543210 CN CU = FalseSym0+ TFHelper_0123456789876543210 CN CV = FalseSym0+ TFHelper_0123456789876543210 CN CW = FalseSym0+ TFHelper_0123456789876543210 CN CX = FalseSym0+ TFHelper_0123456789876543210 CN CY = FalseSym0+ TFHelper_0123456789876543210 CN CZ = FalseSym0+ TFHelper_0123456789876543210 CO CA = FalseSym0+ TFHelper_0123456789876543210 CO CB = FalseSym0+ TFHelper_0123456789876543210 CO CC = FalseSym0+ TFHelper_0123456789876543210 CO CD = FalseSym0+ TFHelper_0123456789876543210 CO CE = FalseSym0+ TFHelper_0123456789876543210 CO CF = FalseSym0+ TFHelper_0123456789876543210 CO CG = FalseSym0+ TFHelper_0123456789876543210 CO CH = FalseSym0+ TFHelper_0123456789876543210 CO CI = FalseSym0+ TFHelper_0123456789876543210 CO CJ = FalseSym0+ TFHelper_0123456789876543210 CO CK = FalseSym0+ TFHelper_0123456789876543210 CO CL = FalseSym0+ TFHelper_0123456789876543210 CO CM = FalseSym0+ TFHelper_0123456789876543210 CO CN = FalseSym0+ TFHelper_0123456789876543210 CO CO = TrueSym0+ TFHelper_0123456789876543210 CO CP = FalseSym0+ TFHelper_0123456789876543210 CO CQ = FalseSym0+ TFHelper_0123456789876543210 CO CR = FalseSym0+ TFHelper_0123456789876543210 CO CS = FalseSym0+ TFHelper_0123456789876543210 CO CT = FalseSym0+ TFHelper_0123456789876543210 CO CU = FalseSym0+ TFHelper_0123456789876543210 CO CV = FalseSym0+ TFHelper_0123456789876543210 CO CW = FalseSym0+ TFHelper_0123456789876543210 CO CX = FalseSym0+ TFHelper_0123456789876543210 CO CY = FalseSym0+ TFHelper_0123456789876543210 CO CZ = FalseSym0+ TFHelper_0123456789876543210 CP CA = FalseSym0+ TFHelper_0123456789876543210 CP CB = FalseSym0+ TFHelper_0123456789876543210 CP CC = FalseSym0+ TFHelper_0123456789876543210 CP CD = FalseSym0+ TFHelper_0123456789876543210 CP CE = FalseSym0+ TFHelper_0123456789876543210 CP CF = FalseSym0+ TFHelper_0123456789876543210 CP CG = FalseSym0+ TFHelper_0123456789876543210 CP CH = FalseSym0+ TFHelper_0123456789876543210 CP CI = FalseSym0+ TFHelper_0123456789876543210 CP CJ = FalseSym0+ TFHelper_0123456789876543210 CP CK = FalseSym0+ TFHelper_0123456789876543210 CP CL = FalseSym0+ TFHelper_0123456789876543210 CP CM = FalseSym0+ TFHelper_0123456789876543210 CP CN = FalseSym0+ TFHelper_0123456789876543210 CP CO = FalseSym0+ TFHelper_0123456789876543210 CP CP = TrueSym0+ TFHelper_0123456789876543210 CP CQ = FalseSym0+ TFHelper_0123456789876543210 CP CR = FalseSym0+ TFHelper_0123456789876543210 CP CS = FalseSym0+ TFHelper_0123456789876543210 CP CT = FalseSym0+ TFHelper_0123456789876543210 CP CU = FalseSym0+ TFHelper_0123456789876543210 CP CV = FalseSym0+ TFHelper_0123456789876543210 CP CW = FalseSym0+ TFHelper_0123456789876543210 CP CX = FalseSym0+ TFHelper_0123456789876543210 CP CY = FalseSym0+ TFHelper_0123456789876543210 CP CZ = FalseSym0+ TFHelper_0123456789876543210 CQ CA = FalseSym0+ TFHelper_0123456789876543210 CQ CB = FalseSym0+ TFHelper_0123456789876543210 CQ CC = FalseSym0+ TFHelper_0123456789876543210 CQ CD = FalseSym0+ TFHelper_0123456789876543210 CQ CE = FalseSym0+ TFHelper_0123456789876543210 CQ CF = FalseSym0+ TFHelper_0123456789876543210 CQ CG = FalseSym0+ TFHelper_0123456789876543210 CQ CH = FalseSym0+ TFHelper_0123456789876543210 CQ CI = FalseSym0+ TFHelper_0123456789876543210 CQ CJ = FalseSym0+ TFHelper_0123456789876543210 CQ CK = FalseSym0+ TFHelper_0123456789876543210 CQ CL = FalseSym0+ TFHelper_0123456789876543210 CQ CM = FalseSym0+ TFHelper_0123456789876543210 CQ CN = FalseSym0+ TFHelper_0123456789876543210 CQ CO = FalseSym0+ TFHelper_0123456789876543210 CQ CP = FalseSym0+ TFHelper_0123456789876543210 CQ CQ = TrueSym0+ TFHelper_0123456789876543210 CQ CR = FalseSym0+ TFHelper_0123456789876543210 CQ CS = FalseSym0+ TFHelper_0123456789876543210 CQ CT = FalseSym0+ TFHelper_0123456789876543210 CQ CU = FalseSym0+ TFHelper_0123456789876543210 CQ CV = FalseSym0+ TFHelper_0123456789876543210 CQ CW = FalseSym0+ TFHelper_0123456789876543210 CQ CX = FalseSym0+ TFHelper_0123456789876543210 CQ CY = FalseSym0+ TFHelper_0123456789876543210 CQ CZ = FalseSym0+ TFHelper_0123456789876543210 CR CA = FalseSym0+ TFHelper_0123456789876543210 CR CB = FalseSym0+ TFHelper_0123456789876543210 CR CC = FalseSym0+ TFHelper_0123456789876543210 CR CD = FalseSym0+ TFHelper_0123456789876543210 CR CE = FalseSym0+ TFHelper_0123456789876543210 CR CF = FalseSym0+ TFHelper_0123456789876543210 CR CG = FalseSym0+ TFHelper_0123456789876543210 CR CH = FalseSym0+ TFHelper_0123456789876543210 CR CI = FalseSym0+ TFHelper_0123456789876543210 CR CJ = FalseSym0+ TFHelper_0123456789876543210 CR CK = FalseSym0+ TFHelper_0123456789876543210 CR CL = FalseSym0+ TFHelper_0123456789876543210 CR CM = FalseSym0+ TFHelper_0123456789876543210 CR CN = FalseSym0+ TFHelper_0123456789876543210 CR CO = FalseSym0+ TFHelper_0123456789876543210 CR CP = FalseSym0+ TFHelper_0123456789876543210 CR CQ = FalseSym0+ TFHelper_0123456789876543210 CR CR = TrueSym0+ TFHelper_0123456789876543210 CR CS = FalseSym0+ TFHelper_0123456789876543210 CR CT = FalseSym0+ TFHelper_0123456789876543210 CR CU = FalseSym0+ TFHelper_0123456789876543210 CR CV = FalseSym0+ TFHelper_0123456789876543210 CR CW = FalseSym0+ TFHelper_0123456789876543210 CR CX = FalseSym0+ TFHelper_0123456789876543210 CR CY = FalseSym0+ TFHelper_0123456789876543210 CR CZ = FalseSym0+ TFHelper_0123456789876543210 CS CA = FalseSym0+ TFHelper_0123456789876543210 CS CB = FalseSym0+ TFHelper_0123456789876543210 CS CC = FalseSym0+ TFHelper_0123456789876543210 CS CD = FalseSym0+ TFHelper_0123456789876543210 CS CE = FalseSym0+ TFHelper_0123456789876543210 CS CF = FalseSym0+ TFHelper_0123456789876543210 CS CG = FalseSym0+ TFHelper_0123456789876543210 CS CH = FalseSym0+ TFHelper_0123456789876543210 CS CI = FalseSym0+ TFHelper_0123456789876543210 CS CJ = FalseSym0+ TFHelper_0123456789876543210 CS CK = FalseSym0+ TFHelper_0123456789876543210 CS CL = FalseSym0+ TFHelper_0123456789876543210 CS CM = FalseSym0+ TFHelper_0123456789876543210 CS CN = FalseSym0+ TFHelper_0123456789876543210 CS CO = FalseSym0+ TFHelper_0123456789876543210 CS CP = FalseSym0+ TFHelper_0123456789876543210 CS CQ = FalseSym0+ TFHelper_0123456789876543210 CS CR = FalseSym0+ TFHelper_0123456789876543210 CS CS = TrueSym0+ TFHelper_0123456789876543210 CS CT = FalseSym0+ TFHelper_0123456789876543210 CS CU = FalseSym0+ TFHelper_0123456789876543210 CS CV = FalseSym0+ TFHelper_0123456789876543210 CS CW = FalseSym0+ TFHelper_0123456789876543210 CS CX = FalseSym0+ TFHelper_0123456789876543210 CS CY = FalseSym0+ TFHelper_0123456789876543210 CS CZ = FalseSym0+ TFHelper_0123456789876543210 CT CA = FalseSym0+ TFHelper_0123456789876543210 CT CB = FalseSym0+ TFHelper_0123456789876543210 CT CC = FalseSym0+ TFHelper_0123456789876543210 CT CD = FalseSym0+ TFHelper_0123456789876543210 CT CE = FalseSym0+ TFHelper_0123456789876543210 CT CF = FalseSym0+ TFHelper_0123456789876543210 CT CG = FalseSym0+ TFHelper_0123456789876543210 CT CH = FalseSym0+ TFHelper_0123456789876543210 CT CI = FalseSym0+ TFHelper_0123456789876543210 CT CJ = FalseSym0+ TFHelper_0123456789876543210 CT CK = FalseSym0+ TFHelper_0123456789876543210 CT CL = FalseSym0+ TFHelper_0123456789876543210 CT CM = FalseSym0+ TFHelper_0123456789876543210 CT CN = FalseSym0+ TFHelper_0123456789876543210 CT CO = FalseSym0+ TFHelper_0123456789876543210 CT CP = FalseSym0+ TFHelper_0123456789876543210 CT CQ = FalseSym0+ TFHelper_0123456789876543210 CT CR = FalseSym0+ TFHelper_0123456789876543210 CT CS = FalseSym0+ TFHelper_0123456789876543210 CT CT = TrueSym0+ TFHelper_0123456789876543210 CT CU = FalseSym0+ TFHelper_0123456789876543210 CT CV = FalseSym0+ TFHelper_0123456789876543210 CT CW = FalseSym0+ TFHelper_0123456789876543210 CT CX = FalseSym0+ TFHelper_0123456789876543210 CT CY = FalseSym0+ TFHelper_0123456789876543210 CT CZ = FalseSym0+ TFHelper_0123456789876543210 CU CA = FalseSym0+ TFHelper_0123456789876543210 CU CB = FalseSym0+ TFHelper_0123456789876543210 CU CC = FalseSym0+ TFHelper_0123456789876543210 CU CD = FalseSym0+ TFHelper_0123456789876543210 CU CE = FalseSym0+ TFHelper_0123456789876543210 CU CF = FalseSym0+ TFHelper_0123456789876543210 CU CG = FalseSym0+ TFHelper_0123456789876543210 CU CH = FalseSym0+ TFHelper_0123456789876543210 CU CI = FalseSym0+ TFHelper_0123456789876543210 CU CJ = FalseSym0+ TFHelper_0123456789876543210 CU CK = FalseSym0+ TFHelper_0123456789876543210 CU CL = FalseSym0+ TFHelper_0123456789876543210 CU CM = FalseSym0+ TFHelper_0123456789876543210 CU CN = FalseSym0+ TFHelper_0123456789876543210 CU CO = FalseSym0+ TFHelper_0123456789876543210 CU CP = FalseSym0+ TFHelper_0123456789876543210 CU CQ = FalseSym0+ TFHelper_0123456789876543210 CU CR = FalseSym0+ TFHelper_0123456789876543210 CU CS = FalseSym0+ TFHelper_0123456789876543210 CU CT = FalseSym0+ TFHelper_0123456789876543210 CU CU = TrueSym0+ TFHelper_0123456789876543210 CU CV = FalseSym0+ TFHelper_0123456789876543210 CU CW = FalseSym0+ TFHelper_0123456789876543210 CU CX = FalseSym0+ TFHelper_0123456789876543210 CU CY = FalseSym0+ TFHelper_0123456789876543210 CU CZ = FalseSym0+ TFHelper_0123456789876543210 CV CA = FalseSym0+ TFHelper_0123456789876543210 CV CB = FalseSym0+ TFHelper_0123456789876543210 CV CC = FalseSym0+ TFHelper_0123456789876543210 CV CD = FalseSym0+ TFHelper_0123456789876543210 CV CE = FalseSym0+ TFHelper_0123456789876543210 CV CF = FalseSym0+ TFHelper_0123456789876543210 CV CG = FalseSym0+ TFHelper_0123456789876543210 CV CH = FalseSym0+ TFHelper_0123456789876543210 CV CI = FalseSym0+ TFHelper_0123456789876543210 CV CJ = FalseSym0+ TFHelper_0123456789876543210 CV CK = FalseSym0+ TFHelper_0123456789876543210 CV CL = FalseSym0+ TFHelper_0123456789876543210 CV CM = FalseSym0+ TFHelper_0123456789876543210 CV CN = FalseSym0+ TFHelper_0123456789876543210 CV CO = FalseSym0+ TFHelper_0123456789876543210 CV CP = FalseSym0+ TFHelper_0123456789876543210 CV CQ = FalseSym0+ TFHelper_0123456789876543210 CV CR = FalseSym0+ TFHelper_0123456789876543210 CV CS = FalseSym0+ TFHelper_0123456789876543210 CV CT = FalseSym0+ TFHelper_0123456789876543210 CV CU = FalseSym0+ TFHelper_0123456789876543210 CV CV = TrueSym0+ TFHelper_0123456789876543210 CV CW = FalseSym0+ TFHelper_0123456789876543210 CV CX = FalseSym0+ TFHelper_0123456789876543210 CV CY = FalseSym0+ TFHelper_0123456789876543210 CV CZ = FalseSym0+ TFHelper_0123456789876543210 CW CA = FalseSym0+ TFHelper_0123456789876543210 CW CB = FalseSym0+ TFHelper_0123456789876543210 CW CC = FalseSym0+ TFHelper_0123456789876543210 CW CD = FalseSym0+ TFHelper_0123456789876543210 CW CE = FalseSym0+ TFHelper_0123456789876543210 CW CF = FalseSym0+ TFHelper_0123456789876543210 CW CG = FalseSym0+ TFHelper_0123456789876543210 CW CH = FalseSym0+ TFHelper_0123456789876543210 CW CI = FalseSym0+ TFHelper_0123456789876543210 CW CJ = FalseSym0+ TFHelper_0123456789876543210 CW CK = FalseSym0+ TFHelper_0123456789876543210 CW CL = FalseSym0+ TFHelper_0123456789876543210 CW CM = FalseSym0+ TFHelper_0123456789876543210 CW CN = FalseSym0+ TFHelper_0123456789876543210 CW CO = FalseSym0+ TFHelper_0123456789876543210 CW CP = FalseSym0+ TFHelper_0123456789876543210 CW CQ = FalseSym0+ TFHelper_0123456789876543210 CW CR = FalseSym0+ TFHelper_0123456789876543210 CW CS = FalseSym0+ TFHelper_0123456789876543210 CW CT = FalseSym0+ TFHelper_0123456789876543210 CW CU = FalseSym0+ TFHelper_0123456789876543210 CW CV = FalseSym0+ TFHelper_0123456789876543210 CW CW = TrueSym0+ TFHelper_0123456789876543210 CW CX = FalseSym0+ TFHelper_0123456789876543210 CW CY = FalseSym0+ TFHelper_0123456789876543210 CW CZ = FalseSym0+ TFHelper_0123456789876543210 CX CA = FalseSym0+ TFHelper_0123456789876543210 CX CB = FalseSym0+ TFHelper_0123456789876543210 CX CC = FalseSym0+ TFHelper_0123456789876543210 CX CD = FalseSym0+ TFHelper_0123456789876543210 CX CE = FalseSym0+ TFHelper_0123456789876543210 CX CF = FalseSym0+ TFHelper_0123456789876543210 CX CG = FalseSym0+ TFHelper_0123456789876543210 CX CH = FalseSym0+ TFHelper_0123456789876543210 CX CI = FalseSym0+ TFHelper_0123456789876543210 CX CJ = FalseSym0+ TFHelper_0123456789876543210 CX CK = FalseSym0+ TFHelper_0123456789876543210 CX CL = FalseSym0+ TFHelper_0123456789876543210 CX CM = FalseSym0+ TFHelper_0123456789876543210 CX CN = FalseSym0+ TFHelper_0123456789876543210 CX CO = FalseSym0+ TFHelper_0123456789876543210 CX CP = FalseSym0+ TFHelper_0123456789876543210 CX CQ = FalseSym0+ TFHelper_0123456789876543210 CX CR = FalseSym0+ TFHelper_0123456789876543210 CX CS = FalseSym0+ TFHelper_0123456789876543210 CX CT = FalseSym0+ TFHelper_0123456789876543210 CX CU = FalseSym0+ TFHelper_0123456789876543210 CX CV = FalseSym0+ TFHelper_0123456789876543210 CX CW = FalseSym0+ TFHelper_0123456789876543210 CX CX = TrueSym0+ TFHelper_0123456789876543210 CX CY = FalseSym0+ TFHelper_0123456789876543210 CX CZ = FalseSym0+ TFHelper_0123456789876543210 CY CA = FalseSym0+ TFHelper_0123456789876543210 CY CB = FalseSym0+ TFHelper_0123456789876543210 CY CC = FalseSym0+ TFHelper_0123456789876543210 CY CD = FalseSym0+ TFHelper_0123456789876543210 CY CE = FalseSym0+ TFHelper_0123456789876543210 CY CF = FalseSym0+ TFHelper_0123456789876543210 CY CG = FalseSym0+ TFHelper_0123456789876543210 CY CH = FalseSym0+ TFHelper_0123456789876543210 CY CI = FalseSym0+ TFHelper_0123456789876543210 CY CJ = FalseSym0+ TFHelper_0123456789876543210 CY CK = FalseSym0+ TFHelper_0123456789876543210 CY CL = FalseSym0+ TFHelper_0123456789876543210 CY CM = FalseSym0+ TFHelper_0123456789876543210 CY CN = FalseSym0+ TFHelper_0123456789876543210 CY CO = FalseSym0+ TFHelper_0123456789876543210 CY CP = FalseSym0+ TFHelper_0123456789876543210 CY CQ = FalseSym0+ TFHelper_0123456789876543210 CY CR = FalseSym0+ TFHelper_0123456789876543210 CY CS = FalseSym0+ TFHelper_0123456789876543210 CY CT = FalseSym0+ TFHelper_0123456789876543210 CY CU = FalseSym0+ TFHelper_0123456789876543210 CY CV = FalseSym0+ TFHelper_0123456789876543210 CY CW = FalseSym0+ TFHelper_0123456789876543210 CY CX = FalseSym0+ TFHelper_0123456789876543210 CY CY = TrueSym0+ TFHelper_0123456789876543210 CY CZ = FalseSym0+ TFHelper_0123456789876543210 CZ CA = FalseSym0+ TFHelper_0123456789876543210 CZ CB = FalseSym0+ TFHelper_0123456789876543210 CZ CC = FalseSym0+ TFHelper_0123456789876543210 CZ CD = FalseSym0+ TFHelper_0123456789876543210 CZ CE = FalseSym0+ TFHelper_0123456789876543210 CZ CF = FalseSym0+ TFHelper_0123456789876543210 CZ CG = FalseSym0+ TFHelper_0123456789876543210 CZ CH = FalseSym0+ TFHelper_0123456789876543210 CZ CI = FalseSym0+ TFHelper_0123456789876543210 CZ CJ = FalseSym0+ TFHelper_0123456789876543210 CZ CK = FalseSym0+ TFHelper_0123456789876543210 CZ CL = FalseSym0+ TFHelper_0123456789876543210 CZ CM = FalseSym0+ TFHelper_0123456789876543210 CZ CN = FalseSym0+ TFHelper_0123456789876543210 CZ CO = FalseSym0+ TFHelper_0123456789876543210 CZ CP = FalseSym0+ TFHelper_0123456789876543210 CZ CQ = FalseSym0+ TFHelper_0123456789876543210 CZ CR = FalseSym0+ TFHelper_0123456789876543210 CZ CS = FalseSym0+ TFHelper_0123456789876543210 CZ CT = FalseSym0+ TFHelper_0123456789876543210 CZ CU = FalseSym0+ TFHelper_0123456789876543210 CZ CV = FalseSym0+ TFHelper_0123456789876543210 CZ CW = FalseSym0+ TFHelper_0123456789876543210 CZ CX = FalseSym0+ TFHelper_0123456789876543210 CZ CY = FalseSym0+ TFHelper_0123456789876543210 CZ CZ = TrueSym0+ type TFHelper_0123456789876543210Sym0 :: (~>) AChar ((~>) AChar Bool)+ data TFHelper_0123456789876543210Sym0 :: (~>) AChar ((~>) AChar Bool)+ where+ TFHelper_0123456789876543210Sym0KindInference :: SameKind (Apply TFHelper_0123456789876543210Sym0 arg) (TFHelper_0123456789876543210Sym1 arg) =>+ TFHelper_0123456789876543210Sym0 a0123456789876543210+ type instance Apply TFHelper_0123456789876543210Sym0 a0123456789876543210 = TFHelper_0123456789876543210Sym1 a0123456789876543210+ instance SuppressUnusedWarnings TFHelper_0123456789876543210Sym0 where+ suppressUnusedWarnings+ = snd (((,) TFHelper_0123456789876543210Sym0KindInference) ())+ type TFHelper_0123456789876543210Sym1 :: AChar -> (~>) AChar Bool+ data TFHelper_0123456789876543210Sym1 (a0123456789876543210 :: AChar) :: (~>) AChar Bool+ where+ TFHelper_0123456789876543210Sym1KindInference :: SameKind (Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) arg) (TFHelper_0123456789876543210Sym2 a0123456789876543210 arg) =>+ TFHelper_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210+ type instance Apply (TFHelper_0123456789876543210Sym1 a0123456789876543210) a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (TFHelper_0123456789876543210Sym1 a0123456789876543210) where+ suppressUnusedWarnings+ = snd (((,) TFHelper_0123456789876543210Sym1KindInference) ())+ type TFHelper_0123456789876543210Sym2 :: AChar -> AChar -> Bool+ type family TFHelper_0123456789876543210Sym2 (a0123456789876543210 :: AChar) (a0123456789876543210 :: AChar) :: Bool where+ TFHelper_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210+ instance PEq AChar where+ type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a+ sLookup ::+ forall (t :: [AChar]) (t :: Schema). Sing t+ -> Sing t -> Sing (Apply (Apply LookupSym0 t) t :: U)+ sOccurs ::+ forall (t :: [AChar]) (t :: Schema). Sing t+ -> Sing t -> Sing (Apply (Apply OccursSym0 t) t :: Bool)+ sDisjoint ::+ forall (t :: Schema) (t :: Schema). Sing t+ -> Sing t -> Sing (Apply (Apply DisjointSym0 t) t :: Bool)+ sAttrNotIn ::+ forall (t :: Attribute) (t :: Schema). Sing t+ -> Sing t+ -> Sing (Apply (Apply AttrNotInSym0 t) t :: Bool)+ sAppend ::+ forall (t :: Schema) (t :: Schema). Sing t+ -> Sing t -> Sing (Apply (Apply AppendSym0 t) t :: Schema)+ sLookup _ (SSch SNil) = sUndefined+ sLookup+ (sName :: Sing name)+ (SSch (SCons (SAttr (sName' :: Sing name') (sU :: Sing u))+ (sAttrs :: Sing attrs)))+ = let+ sScrutinee_0123456789876543210 ::+ Sing @_ (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name name' u attrs)+ sScrutinee_0123456789876543210+ = (applySing ((applySing ((singFun2 @(==@#@$)) (%==))) sName))+ sName'+ in+ (GHC.Base.id+ @(Sing (Case_0123456789876543210 name name' u attrs (Let0123456789876543210Scrutinee_0123456789876543210Sym4 name name' u attrs) :: U)))+ (case sScrutinee_0123456789876543210 of+ STrue -> sU+ SFalse+ -> (applySing ((applySing ((singFun2 @LookupSym0) sLookup)) sName))+ ((applySing ((singFun1 @SchSym0) SSch)) sAttrs))+ sOccurs _ (SSch SNil) = SFalse+ sOccurs+ (sName :: Sing name)+ (SSch (SCons (SAttr (sName' :: Sing name') _)+ (sAttrs :: Sing attrs)))+ = (applySing+ ((applySing ((singFun2 @(||@#@$)) (%||)))+ ((applySing ((applySing ((singFun2 @(==@#@$)) (%==))) sName))+ sName')))+ ((applySing ((applySing ((singFun2 @OccursSym0) sOccurs)) sName))+ ((applySing ((singFun1 @SchSym0) SSch)) sAttrs))+ sDisjoint (SSch SNil) _ = STrue+ sDisjoint+ (SSch (SCons (sH :: Sing h) (sT :: Sing t)))+ (sS :: Sing s)+ = (applySing+ ((applySing ((singFun2 @(&&@#@$)) (%&&)))+ ((applySing+ ((applySing ((singFun2 @AttrNotInSym0) sAttrNotIn)) sH))+ sS)))+ ((applySing+ ((applySing ((singFun2 @DisjointSym0) sDisjoint))+ ((applySing ((singFun1 @SchSym0) SSch)) sT)))+ sS)+ sAttrNotIn _ (SSch SNil) = STrue+ sAttrNotIn+ (SAttr (sName :: Sing name) (sU :: Sing u))+ (SSch (SCons (SAttr (sName' :: Sing name') _) (sT :: Sing t)))+ = (applySing+ ((applySing ((singFun2 @(&&@#@$)) (%&&)))+ ((applySing ((applySing ((singFun2 @(/=@#@$)) (%/=))) sName))+ sName')))+ ((applySing+ ((applySing ((singFun2 @AttrNotInSym0) sAttrNotIn))+ ((applySing ((applySing ((singFun2 @AttrSym0) SAttr)) sName)) sU)))+ ((applySing ((singFun1 @SchSym0) SSch)) sT))+ sAppend (SSch (sS1 :: Sing s1)) (SSch (sS2 :: Sing s2))+ = (applySing ((singFun1 @SchSym0) SSch))+ ((applySing ((applySing ((singFun2 @(++@#@$)) (%++))) sS1)) sS2)+ instance SingI (LookupSym0 :: (~>) [AChar] ((~>) Schema U)) where+ sing = (singFun2 @LookupSym0) sLookup+ instance SingI d =>+ SingI (LookupSym1 (d :: [AChar]) :: (~>) Schema U) where+ sing = (singFun1 @(LookupSym1 (d :: [AChar]))) (sLookup (sing @d))+ instance SingI1 (LookupSym1 :: [AChar] -> (~>) Schema U) where+ liftSing (s :: Sing (d :: [AChar]))+ = (singFun1 @(LookupSym1 (d :: [AChar]))) (sLookup s)+ instance SingI (OccursSym0 :: (~>) [AChar] ((~>) Schema Bool)) where+ sing = (singFun2 @OccursSym0) sOccurs+ instance SingI d =>+ SingI (OccursSym1 (d :: [AChar]) :: (~>) Schema Bool) where+ sing = (singFun1 @(OccursSym1 (d :: [AChar]))) (sOccurs (sing @d))+ instance SingI1 (OccursSym1 :: [AChar] -> (~>) Schema Bool) where+ liftSing (s :: Sing (d :: [AChar]))+ = (singFun1 @(OccursSym1 (d :: [AChar]))) (sOccurs s)+ instance SingI (DisjointSym0 :: (~>) Schema ((~>) Schema Bool)) where+ sing = (singFun2 @DisjointSym0) sDisjoint+ instance SingI d =>+ SingI (DisjointSym1 (d :: Schema) :: (~>) Schema Bool) where+ sing+ = (singFun1 @(DisjointSym1 (d :: Schema))) (sDisjoint (sing @d))+ instance SingI1 (DisjointSym1 :: Schema -> (~>) Schema Bool) where+ liftSing (s :: Sing (d :: Schema))+ = (singFun1 @(DisjointSym1 (d :: Schema))) (sDisjoint s)+ instance SingI (AttrNotInSym0 :: (~>) Attribute ((~>) Schema Bool)) where+ sing = (singFun2 @AttrNotInSym0) sAttrNotIn+ instance SingI d =>+ SingI (AttrNotInSym1 (d :: Attribute) :: (~>) Schema Bool) where+ sing+ = (singFun1 @(AttrNotInSym1 (d :: Attribute)))+ (sAttrNotIn (sing @d))+ instance SingI1 (AttrNotInSym1 :: Attribute+ -> (~>) Schema Bool) where+ liftSing (s :: Sing (d :: Attribute))+ = (singFun1 @(AttrNotInSym1 (d :: Attribute))) (sAttrNotIn s)+ instance SingI (AppendSym0 :: (~>) Schema ((~>) Schema Schema)) where+ sing = (singFun2 @AppendSym0) sAppend+ instance SingI d =>+ SingI (AppendSym1 (d :: Schema) :: (~>) Schema Schema) where+ sing = (singFun1 @(AppendSym1 (d :: Schema))) (sAppend (sing @d))+ instance SingI1 (AppendSym1 :: Schema -> (~>) Schema Schema) where+ liftSing (s :: Sing (d :: Schema))+ = (singFun1 @(AppendSym1 (d :: Schema))) (sAppend s)+ data SU :: U -> Type+ where+ SBOOL :: SU (BOOL :: U)+ SSTRING :: SU (STRING :: U)+ SNAT :: SU (NAT :: U)+ SVEC :: forall (n :: U) (n :: Nat).+ (Sing n) -> (Sing n) -> SU (VEC n n :: U)+ type instance Sing @U = SU+ instance SingKind U where+ type Demote U = U+ fromSing SBOOL = BOOL+ fromSing SSTRING = STRING+ fromSing SNAT = NAT+ fromSing (SVEC b b) = (VEC (fromSing b)) (fromSing b)+ toSing BOOL = SomeSing SBOOL+ toSing STRING = SomeSing SSTRING+ toSing NAT = SomeSing SNAT+ toSing (VEC (b :: Demote U) (b :: Demote Nat))+ = case ((,) (toSing b :: SomeSing U)) (toSing b :: SomeSing Nat) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SVEC c) c)+ data SAChar :: AChar -> Type+ where+ SCA :: SAChar (CA :: AChar)+ SCB :: SAChar (CB :: AChar)+ SCC :: SAChar (CC :: AChar)+ SCD :: SAChar (CD :: AChar)+ SCE :: SAChar (CE :: AChar)+ SCF :: SAChar (CF :: AChar)+ SCG :: SAChar (CG :: AChar)+ SCH :: SAChar (CH :: AChar)+ SCI :: SAChar (CI :: AChar)+ SCJ :: SAChar (CJ :: AChar)+ SCK :: SAChar (CK :: AChar)+ SCL :: SAChar (CL :: AChar)+ SCM :: SAChar (CM :: AChar)+ SCN :: SAChar (CN :: AChar)+ SCO :: SAChar (CO :: AChar)+ SCP :: SAChar (CP :: AChar)+ SCQ :: SAChar (CQ :: AChar)+ SCR :: SAChar (CR :: AChar)+ SCS :: SAChar (CS :: AChar)+ SCT :: SAChar (CT :: AChar)+ SCU :: SAChar (CU :: AChar)+ SCV :: SAChar (CV :: AChar)+ SCW :: SAChar (CW :: AChar)+ SCX :: SAChar (CX :: AChar)+ SCY :: SAChar (CY :: AChar)+ SCZ :: SAChar (CZ :: AChar)+ type instance Sing @AChar = SAChar+ instance SingKind AChar where+ type Demote AChar = AChar+ fromSing SCA = CA+ fromSing SCB = CB+ fromSing SCC = CC+ fromSing SCD = CD+ fromSing SCE = CE+ fromSing SCF = CF+ fromSing SCG = CG+ fromSing SCH = CH+ fromSing SCI = CI+ fromSing SCJ = CJ+ fromSing SCK = CK+ fromSing SCL = CL+ fromSing SCM = CM+ fromSing SCN = CN+ fromSing SCO = CO+ fromSing SCP = CP+ fromSing SCQ = CQ+ fromSing SCR = CR+ fromSing SCS = CS+ fromSing SCT = CT+ fromSing SCU = CU+ fromSing SCV = CV+ fromSing SCW = CW+ fromSing SCX = CX+ fromSing SCY = CY+ fromSing SCZ = CZ+ toSing CA = SomeSing SCA+ toSing CB = SomeSing SCB+ toSing CC = SomeSing SCC+ toSing CD = SomeSing SCD+ toSing CE = SomeSing SCE+ toSing CF = SomeSing SCF+ toSing CG = SomeSing SCG+ toSing CH = SomeSing SCH+ toSing CI = SomeSing SCI+ toSing CJ = SomeSing SCJ+ toSing CK = SomeSing SCK+ toSing CL = SomeSing SCL+ toSing CM = SomeSing SCM+ toSing CN = SomeSing SCN+ toSing CO = SomeSing SCO+ toSing CP = SomeSing SCP+ toSing CQ = SomeSing SCQ+ toSing CR = SomeSing SCR+ toSing CS = SomeSing SCS+ toSing CT = SomeSing SCT+ toSing CU = SomeSing SCU+ toSing CV = SomeSing SCV+ toSing CW = SomeSing SCW+ toSing CX = SomeSing SCX+ toSing CY = SomeSing SCY+ toSing CZ = SomeSing SCZ+ data SAttribute :: Attribute -> Type+ where+ SAttr :: forall (n :: [AChar]) (n :: U).+ (Sing n) -> (Sing n) -> SAttribute (Attr n n :: Attribute)+ type instance Sing @Attribute = SAttribute+ instance SingKind Attribute where+ type Demote Attribute = Attribute+ fromSing (SAttr b b) = (Attr (fromSing b)) (fromSing b)+ toSing (Attr (b :: Demote [AChar]) (b :: Demote U))+ = case+ ((,) (toSing b :: SomeSing [AChar])) (toSing b :: SomeSing U)+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SAttr c) c)+ data SSchema :: Schema -> Type+ where+ SSch :: forall (n :: [Attribute]).+ (Sing n) -> SSchema (Sch n :: Schema)+ type instance Sing @Schema = SSchema+ instance SingKind Schema where+ type Demote Schema = Schema+ fromSing (SSch b) = Sch (fromSing b)+ toSing (Sch (b :: Demote [Attribute]))+ = case toSing b :: SomeSing [Attribute] of+ SomeSing c -> SomeSing (SSch c)+ instance (SEq U, SEq Nat) => SEq U where+ (%==) ::+ forall (t1 :: U) (t2 :: U). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun U ((~>) U Bool)+ -> Type) t1) t2)+ (%==) SBOOL SBOOL = STrue+ (%==) SBOOL SSTRING = SFalse+ (%==) SBOOL SNAT = SFalse+ (%==) SBOOL (SVEC _ _) = SFalse+ (%==) SSTRING SBOOL = SFalse+ (%==) SSTRING SSTRING = STrue+ (%==) SSTRING SNAT = SFalse+ (%==) SSTRING (SVEC _ _) = SFalse+ (%==) SNAT SBOOL = SFalse+ (%==) SNAT SSTRING = SFalse+ (%==) SNAT SNAT = STrue+ (%==) SNAT (SVEC _ _) = SFalse+ (%==) (SVEC _ _) SBOOL = SFalse+ (%==) (SVEC _ _) SSTRING = SFalse+ (%==) (SVEC _ _) SNAT = SFalse+ (%==)+ (SVEC (sA_0123456789876543210 :: Sing a_0123456789876543210)+ (sA_0123456789876543210 :: Sing a_0123456789876543210))+ (SVEC (sB_0123456789876543210 :: Sing b_0123456789876543210)+ (sB_0123456789876543210 :: Sing b_0123456789876543210))+ = (applySing+ ((applySing ((singFun2 @(&&@#@$)) (%&&)))+ ((applySing+ ((applySing ((singFun2 @(==@#@$)) (%==))) sA_0123456789876543210))+ sB_0123456789876543210)))+ ((applySing+ ((applySing ((singFun2 @(==@#@$)) (%==))) sA_0123456789876543210))+ sB_0123456789876543210)+ instance (SShow U, SShow Nat) => SShow U where+ sShowsPrec ::+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: U)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) U ((~>) Symbol Symbol))+ -> Type) t1) t2) t3)+ sShowsPrec+ _+ SBOOL+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "BOOL")))+ sA_0123456789876543210+ sShowsPrec+ _+ SSTRING+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "STRING")))+ sA_0123456789876543210+ sShowsPrec+ _+ SNAT+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "NAT")))+ sA_0123456789876543210+ sShowsPrec+ (sP_0123456789876543210 :: Sing p_0123456789876543210)+ (SVEC (sArg_0123456789876543210 :: Sing arg_0123456789876543210)+ (sArg_0123456789876543210 :: Sing arg_0123456789876543210))+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing+ ((applySing ((singFun3 @ShowParenSym0) sShowParen))+ ((applySing+ ((applySing ((singFun2 @(>@#@$)) (%>))) sP_0123456789876543210))+ (sFromInteger (sing :: Sing 10)))))+ ((applySing+ ((applySing ((singFun3 @(.@#@$)) (%.)))+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "VEC "))))+ ((applySing+ ((applySing ((singFun3 @(.@#@$)) (%.)))+ ((applySing+ ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))+ (sFromInteger (sing :: Sing 11))))+ sArg_0123456789876543210)))+ ((applySing+ ((applySing ((singFun3 @(.@#@$)) (%.)))+ ((singFun1 @ShowSpaceSym0) sShowSpace)))+ ((applySing+ ((applySing ((singFun3 @ShowsPrecSym0) sShowsPrec))+ (sFromInteger (sing :: Sing 11))))+ sArg_0123456789876543210))))))+ sA_0123456789876543210+ instance SShow AChar where+ sShowsPrec ::+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: AChar)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) AChar ((~>) Symbol Symbol))+ -> Type) t1) t2) t3)+ sShowsPrec+ _+ SCA+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CA")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCB+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CB")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCC+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CC")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCD+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CD")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCE+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CE")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCF+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CF")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCG+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CG")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCH+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CH")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCI+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CI")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCJ+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CJ")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCK+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CK")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCL+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CL")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCM+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CM")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCN+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CN")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCO+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CO")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCP+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CP")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCQ+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CQ")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCR+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CR")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCS+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CS")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCT+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CT")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCU+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CU")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCV+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CV")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCW+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CW")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCX+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CX")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCY+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CY")))+ sA_0123456789876543210+ sShowsPrec+ _+ SCZ+ (sA_0123456789876543210 :: Sing a_0123456789876543210)+ = (applySing+ ((applySing ((singFun2 @ShowStringSym0) sShowString))+ (sing :: Sing "CZ")))+ sA_0123456789876543210+ instance SEq AChar where+ (%==) ::+ forall (t1 :: AChar) (t2 :: AChar). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun AChar ((~>) AChar Bool)+ -> Type) t1) t2)+ (%==) SCA SCA = STrue+ (%==) SCA SCB = SFalse+ (%==) SCA SCC = SFalse+ (%==) SCA SCD = SFalse+ (%==) SCA SCE = SFalse+ (%==) SCA SCF = SFalse+ (%==) SCA SCG = SFalse+ (%==) SCA SCH = SFalse+ (%==) SCA SCI = SFalse+ (%==) SCA SCJ = SFalse+ (%==) SCA SCK = SFalse+ (%==) SCA SCL = SFalse+ (%==) SCA SCM = SFalse+ (%==) SCA SCN = SFalse+ (%==) SCA SCO = SFalse+ (%==) SCA SCP = SFalse+ (%==) SCA SCQ = SFalse+ (%==) SCA SCR = SFalse+ (%==) SCA SCS = SFalse+ (%==) SCA SCT = SFalse+ (%==) SCA SCU = SFalse+ (%==) SCA SCV = SFalse+ (%==) SCA SCW = SFalse+ (%==) SCA SCX = SFalse+ (%==) SCA SCY = SFalse+ (%==) SCA SCZ = SFalse+ (%==) SCB SCA = SFalse+ (%==) SCB SCB = STrue+ (%==) SCB SCC = SFalse+ (%==) SCB SCD = SFalse+ (%==) SCB SCE = SFalse+ (%==) SCB SCF = SFalse+ (%==) SCB SCG = SFalse+ (%==) SCB SCH = SFalse+ (%==) SCB SCI = SFalse+ (%==) SCB SCJ = SFalse+ (%==) SCB SCK = SFalse+ (%==) SCB SCL = SFalse+ (%==) SCB SCM = SFalse+ (%==) SCB SCN = SFalse+ (%==) SCB SCO = SFalse+ (%==) SCB SCP = SFalse+ (%==) SCB SCQ = SFalse+ (%==) SCB SCR = SFalse+ (%==) SCB SCS = SFalse+ (%==) SCB SCT = SFalse+ (%==) SCB SCU = SFalse+ (%==) SCB SCV = SFalse+ (%==) SCB SCW = SFalse+ (%==) SCB SCX = SFalse+ (%==) SCB SCY = SFalse+ (%==) SCB SCZ = SFalse+ (%==) SCC SCA = SFalse+ (%==) SCC SCB = SFalse+ (%==) SCC SCC = STrue+ (%==) SCC SCD = SFalse+ (%==) SCC SCE = SFalse+ (%==) SCC SCF = SFalse+ (%==) SCC SCG = SFalse+ (%==) SCC SCH = SFalse+ (%==) SCC SCI = SFalse+ (%==) SCC SCJ = SFalse+ (%==) SCC SCK = SFalse+ (%==) SCC SCL = SFalse+ (%==) SCC SCM = SFalse+ (%==) SCC SCN = SFalse+ (%==) SCC SCO = SFalse+ (%==) SCC SCP = SFalse+ (%==) SCC SCQ = SFalse+ (%==) SCC SCR = SFalse+ (%==) SCC SCS = SFalse+ (%==) SCC SCT = SFalse+ (%==) SCC SCU = SFalse+ (%==) SCC SCV = SFalse+ (%==) SCC SCW = SFalse+ (%==) SCC SCX = SFalse+ (%==) SCC SCY = SFalse+ (%==) SCC SCZ = SFalse+ (%==) SCD SCA = SFalse+ (%==) SCD SCB = SFalse+ (%==) SCD SCC = SFalse+ (%==) SCD SCD = STrue+ (%==) SCD SCE = SFalse+ (%==) SCD SCF = SFalse+ (%==) SCD SCG = SFalse+ (%==) SCD SCH = SFalse+ (%==) SCD SCI = SFalse+ (%==) SCD SCJ = SFalse+ (%==) SCD SCK = SFalse+ (%==) SCD SCL = SFalse+ (%==) SCD SCM = SFalse+ (%==) SCD SCN = SFalse+ (%==) SCD SCO = SFalse+ (%==) SCD SCP = SFalse+ (%==) SCD SCQ = SFalse+ (%==) SCD SCR = SFalse+ (%==) SCD SCS = SFalse+ (%==) SCD SCT = SFalse+ (%==) SCD SCU = SFalse+ (%==) SCD SCV = SFalse+ (%==) SCD SCW = SFalse+ (%==) SCD SCX = SFalse+ (%==) SCD SCY = SFalse+ (%==) SCD SCZ = SFalse+ (%==) SCE SCA = SFalse+ (%==) SCE SCB = SFalse+ (%==) SCE SCC = SFalse+ (%==) SCE SCD = SFalse+ (%==) SCE SCE = STrue+ (%==) SCE SCF = SFalse+ (%==) SCE SCG = SFalse+ (%==) SCE SCH = SFalse+ (%==) SCE SCI = SFalse+ (%==) SCE SCJ = SFalse+ (%==) SCE SCK = SFalse+ (%==) SCE SCL = SFalse+ (%==) SCE SCM = SFalse+ (%==) SCE SCN = SFalse+ (%==) SCE SCO = SFalse+ (%==) SCE SCP = SFalse+ (%==) SCE SCQ = SFalse+ (%==) SCE SCR = SFalse+ (%==) SCE SCS = SFalse+ (%==) SCE SCT = SFalse+ (%==) SCE SCU = SFalse+ (%==) SCE SCV = SFalse+ (%==) SCE SCW = SFalse+ (%==) SCE SCX = SFalse+ (%==) SCE SCY = SFalse+ (%==) SCE SCZ = SFalse+ (%==) SCF SCA = SFalse+ (%==) SCF SCB = SFalse+ (%==) SCF SCC = SFalse+ (%==) SCF SCD = SFalse+ (%==) SCF SCE = SFalse+ (%==) SCF SCF = STrue+ (%==) SCF SCG = SFalse+ (%==) SCF SCH = SFalse+ (%==) SCF SCI = SFalse+ (%==) SCF SCJ = SFalse+ (%==) SCF SCK = SFalse+ (%==) SCF SCL = SFalse+ (%==) SCF SCM = SFalse+ (%==) SCF SCN = SFalse+ (%==) SCF SCO = SFalse+ (%==) SCF SCP = SFalse+ (%==) SCF SCQ = SFalse+ (%==) SCF SCR = SFalse+ (%==) SCF SCS = SFalse+ (%==) SCF SCT = SFalse+ (%==) SCF SCU = SFalse+ (%==) SCF SCV = SFalse+ (%==) SCF SCW = SFalse+ (%==) SCF SCX = SFalse+ (%==) SCF SCY = SFalse+ (%==) SCF SCZ = SFalse+ (%==) SCG SCA = SFalse+ (%==) SCG SCB = SFalse+ (%==) SCG SCC = SFalse+ (%==) SCG SCD = SFalse+ (%==) SCG SCE = SFalse+ (%==) SCG SCF = SFalse+ (%==) SCG SCG = STrue+ (%==) SCG SCH = SFalse+ (%==) SCG SCI = SFalse+ (%==) SCG SCJ = SFalse+ (%==) SCG SCK = SFalse+ (%==) SCG SCL = SFalse+ (%==) SCG SCM = SFalse+ (%==) SCG SCN = SFalse+ (%==) SCG SCO = SFalse+ (%==) SCG SCP = SFalse+ (%==) SCG SCQ = SFalse+ (%==) SCG SCR = SFalse+ (%==) SCG SCS = SFalse+ (%==) SCG SCT = SFalse+ (%==) SCG SCU = SFalse+ (%==) SCG SCV = SFalse+ (%==) SCG SCW = SFalse+ (%==) SCG SCX = SFalse+ (%==) SCG SCY = SFalse+ (%==) SCG SCZ = SFalse+ (%==) SCH SCA = SFalse+ (%==) SCH SCB = SFalse+ (%==) SCH SCC = SFalse+ (%==) SCH SCD = SFalse+ (%==) SCH SCE = SFalse+ (%==) SCH SCF = SFalse+ (%==) SCH SCG = SFalse+ (%==) SCH SCH = STrue+ (%==) SCH SCI = SFalse+ (%==) SCH SCJ = SFalse+ (%==) SCH SCK = SFalse+ (%==) SCH SCL = SFalse+ (%==) SCH SCM = SFalse+ (%==) SCH SCN = SFalse+ (%==) SCH SCO = SFalse+ (%==) SCH SCP = SFalse+ (%==) SCH SCQ = SFalse+ (%==) SCH SCR = SFalse+ (%==) SCH SCS = SFalse+ (%==) SCH SCT = SFalse+ (%==) SCH SCU = SFalse+ (%==) SCH SCV = SFalse+ (%==) SCH SCW = SFalse+ (%==) SCH SCX = SFalse+ (%==) SCH SCY = SFalse+ (%==) SCH SCZ = SFalse+ (%==) SCI SCA = SFalse+ (%==) SCI SCB = SFalse+ (%==) SCI SCC = SFalse+ (%==) SCI SCD = SFalse+ (%==) SCI SCE = SFalse+ (%==) SCI SCF = SFalse+ (%==) SCI SCG = SFalse+ (%==) SCI SCH = SFalse+ (%==) SCI SCI = STrue+ (%==) SCI SCJ = SFalse+ (%==) SCI SCK = SFalse+ (%==) SCI SCL = SFalse+ (%==) SCI SCM = SFalse+ (%==) SCI SCN = SFalse+ (%==) SCI SCO = SFalse+ (%==) SCI SCP = SFalse+ (%==) SCI SCQ = SFalse+ (%==) SCI SCR = SFalse+ (%==) SCI SCS = SFalse+ (%==) SCI SCT = SFalse+ (%==) SCI SCU = SFalse+ (%==) SCI SCV = SFalse+ (%==) SCI SCW = SFalse+ (%==) SCI SCX = SFalse+ (%==) SCI SCY = SFalse+ (%==) SCI SCZ = SFalse+ (%==) SCJ SCA = SFalse+ (%==) SCJ SCB = SFalse+ (%==) SCJ SCC = SFalse+ (%==) SCJ SCD = SFalse+ (%==) SCJ SCE = SFalse+ (%==) SCJ SCF = SFalse+ (%==) SCJ SCG = SFalse+ (%==) SCJ SCH = SFalse+ (%==) SCJ SCI = SFalse+ (%==) SCJ SCJ = STrue+ (%==) SCJ SCK = SFalse+ (%==) SCJ SCL = SFalse+ (%==) SCJ SCM = SFalse+ (%==) SCJ SCN = SFalse+ (%==) SCJ SCO = SFalse+ (%==) SCJ SCP = SFalse+ (%==) SCJ SCQ = SFalse+ (%==) SCJ SCR = SFalse+ (%==) SCJ SCS = SFalse+ (%==) SCJ SCT = SFalse+ (%==) SCJ SCU = SFalse+ (%==) SCJ SCV = SFalse+ (%==) SCJ SCW = SFalse+ (%==) SCJ SCX = SFalse+ (%==) SCJ SCY = SFalse+ (%==) SCJ SCZ = SFalse+ (%==) SCK SCA = SFalse+ (%==) SCK SCB = SFalse+ (%==) SCK SCC = SFalse+ (%==) SCK SCD = SFalse+ (%==) SCK SCE = SFalse+ (%==) SCK SCF = SFalse+ (%==) SCK SCG = SFalse+ (%==) SCK SCH = SFalse+ (%==) SCK SCI = SFalse+ (%==) SCK SCJ = SFalse+ (%==) SCK SCK = STrue+ (%==) SCK SCL = SFalse+ (%==) SCK SCM = SFalse+ (%==) SCK SCN = SFalse+ (%==) SCK SCO = SFalse+ (%==) SCK SCP = SFalse+ (%==) SCK SCQ = SFalse+ (%==) SCK SCR = SFalse+ (%==) SCK SCS = SFalse+ (%==) SCK SCT = SFalse+ (%==) SCK SCU = SFalse+ (%==) SCK SCV = SFalse+ (%==) SCK SCW = SFalse+ (%==) SCK SCX = SFalse+ (%==) SCK SCY = SFalse+ (%==) SCK SCZ = SFalse+ (%==) SCL SCA = SFalse+ (%==) SCL SCB = SFalse+ (%==) SCL SCC = SFalse+ (%==) SCL SCD = SFalse+ (%==) SCL SCE = SFalse+ (%==) SCL SCF = SFalse+ (%==) SCL SCG = SFalse+ (%==) SCL SCH = SFalse+ (%==) SCL SCI = SFalse+ (%==) SCL SCJ = SFalse+ (%==) SCL SCK = SFalse+ (%==) SCL SCL = STrue+ (%==) SCL SCM = SFalse+ (%==) SCL SCN = SFalse+ (%==) SCL SCO = SFalse+ (%==) SCL SCP = SFalse+ (%==) SCL SCQ = SFalse+ (%==) SCL SCR = SFalse+ (%==) SCL SCS = SFalse+ (%==) SCL SCT = SFalse+ (%==) SCL SCU = SFalse+ (%==) SCL SCV = SFalse+ (%==) SCL SCW = SFalse+ (%==) SCL SCX = SFalse+ (%==) SCL SCY = SFalse+ (%==) SCL SCZ = SFalse+ (%==) SCM SCA = SFalse+ (%==) SCM SCB = SFalse+ (%==) SCM SCC = SFalse+ (%==) SCM SCD = SFalse+ (%==) SCM SCE = SFalse+ (%==) SCM SCF = SFalse+ (%==) SCM SCG = SFalse+ (%==) SCM SCH = SFalse+ (%==) SCM SCI = SFalse+ (%==) SCM SCJ = SFalse+ (%==) SCM SCK = SFalse+ (%==) SCM SCL = SFalse+ (%==) SCM SCM = STrue+ (%==) SCM SCN = SFalse+ (%==) SCM SCO = SFalse+ (%==) SCM SCP = SFalse+ (%==) SCM SCQ = SFalse+ (%==) SCM SCR = SFalse+ (%==) SCM SCS = SFalse+ (%==) SCM SCT = SFalse+ (%==) SCM SCU = SFalse+ (%==) SCM SCV = SFalse+ (%==) SCM SCW = SFalse+ (%==) SCM SCX = SFalse+ (%==) SCM SCY = SFalse+ (%==) SCM SCZ = SFalse+ (%==) SCN SCA = SFalse+ (%==) SCN SCB = SFalse+ (%==) SCN SCC = SFalse+ (%==) SCN SCD = SFalse+ (%==) SCN SCE = SFalse+ (%==) SCN SCF = SFalse+ (%==) SCN SCG = SFalse+ (%==) SCN SCH = SFalse+ (%==) SCN SCI = SFalse+ (%==) SCN SCJ = SFalse+ (%==) SCN SCK = SFalse+ (%==) SCN SCL = SFalse+ (%==) SCN SCM = SFalse+ (%==) SCN SCN = STrue+ (%==) SCN SCO = SFalse+ (%==) SCN SCP = SFalse+ (%==) SCN SCQ = SFalse+ (%==) SCN SCR = SFalse+ (%==) SCN SCS = SFalse+ (%==) SCN SCT = SFalse+ (%==) SCN SCU = SFalse+ (%==) SCN SCV = SFalse+ (%==) SCN SCW = SFalse+ (%==) SCN SCX = SFalse+ (%==) SCN SCY = SFalse+ (%==) SCN SCZ = SFalse+ (%==) SCO SCA = SFalse+ (%==) SCO SCB = SFalse+ (%==) SCO SCC = SFalse+ (%==) SCO SCD = SFalse+ (%==) SCO SCE = SFalse+ (%==) SCO SCF = SFalse+ (%==) SCO SCG = SFalse+ (%==) SCO SCH = SFalse+ (%==) SCO SCI = SFalse+ (%==) SCO SCJ = SFalse+ (%==) SCO SCK = SFalse+ (%==) SCO SCL = SFalse+ (%==) SCO SCM = SFalse+ (%==) SCO SCN = SFalse+ (%==) SCO SCO = STrue+ (%==) SCO SCP = SFalse+ (%==) SCO SCQ = SFalse+ (%==) SCO SCR = SFalse+ (%==) SCO SCS = SFalse+ (%==) SCO SCT = SFalse+ (%==) SCO SCU = SFalse+ (%==) SCO SCV = SFalse+ (%==) SCO SCW = SFalse+ (%==) SCO SCX = SFalse+ (%==) SCO SCY = SFalse+ (%==) SCO SCZ = SFalse+ (%==) SCP SCA = SFalse+ (%==) SCP SCB = SFalse+ (%==) SCP SCC = SFalse+ (%==) SCP SCD = SFalse+ (%==) SCP SCE = SFalse+ (%==) SCP SCF = SFalse+ (%==) SCP SCG = SFalse+ (%==) SCP SCH = SFalse+ (%==) SCP SCI = SFalse+ (%==) SCP SCJ = SFalse+ (%==) SCP SCK = SFalse+ (%==) SCP SCL = SFalse+ (%==) SCP SCM = SFalse+ (%==) SCP SCN = SFalse+ (%==) SCP SCO = SFalse+ (%==) SCP SCP = STrue+ (%==) SCP SCQ = SFalse+ (%==) SCP SCR = SFalse+ (%==) SCP SCS = SFalse+ (%==) SCP SCT = SFalse+ (%==) SCP SCU = SFalse+ (%==) SCP SCV = SFalse+ (%==) SCP SCW = SFalse+ (%==) SCP SCX = SFalse+ (%==) SCP SCY = SFalse+ (%==) SCP SCZ = SFalse+ (%==) SCQ SCA = SFalse+ (%==) SCQ SCB = SFalse+ (%==) SCQ SCC = SFalse+ (%==) SCQ SCD = SFalse+ (%==) SCQ SCE = SFalse+ (%==) SCQ SCF = SFalse+ (%==) SCQ SCG = SFalse+ (%==) SCQ SCH = SFalse+ (%==) SCQ SCI = SFalse+ (%==) SCQ SCJ = SFalse+ (%==) SCQ SCK = SFalse+ (%==) SCQ SCL = SFalse+ (%==) SCQ SCM = SFalse+ (%==) SCQ SCN = SFalse+ (%==) SCQ SCO = SFalse+ (%==) SCQ SCP = SFalse+ (%==) SCQ SCQ = STrue+ (%==) SCQ SCR = SFalse+ (%==) SCQ SCS = SFalse+ (%==) SCQ SCT = SFalse+ (%==) SCQ SCU = SFalse+ (%==) SCQ SCV = SFalse+ (%==) SCQ SCW = SFalse+ (%==) SCQ SCX = SFalse+ (%==) SCQ SCY = SFalse+ (%==) SCQ SCZ = SFalse+ (%==) SCR SCA = SFalse+ (%==) SCR SCB = SFalse+ (%==) SCR SCC = SFalse+ (%==) SCR SCD = SFalse+ (%==) SCR SCE = SFalse+ (%==) SCR SCF = SFalse+ (%==) SCR SCG = SFalse+ (%==) SCR SCH = SFalse+ (%==) SCR SCI = SFalse+ (%==) SCR SCJ = SFalse+ (%==) SCR SCK = SFalse+ (%==) SCR SCL = SFalse+ (%==) SCR SCM = SFalse+ (%==) SCR SCN = SFalse+ (%==) SCR SCO = SFalse+ (%==) SCR SCP = SFalse+ (%==) SCR SCQ = SFalse+ (%==) SCR SCR = STrue+ (%==) SCR SCS = SFalse+ (%==) SCR SCT = SFalse+ (%==) SCR SCU = SFalse+ (%==) SCR SCV = SFalse+ (%==) SCR SCW = SFalse+ (%==) SCR SCX = SFalse+ (%==) SCR SCY = SFalse+ (%==) SCR SCZ = SFalse+ (%==) SCS SCA = SFalse+ (%==) SCS SCB = SFalse+ (%==) SCS SCC = SFalse+ (%==) SCS SCD = SFalse+ (%==) SCS SCE = SFalse+ (%==) SCS SCF = SFalse+ (%==) SCS SCG = SFalse+ (%==) SCS SCH = SFalse+ (%==) SCS SCI = SFalse+ (%==) SCS SCJ = SFalse+ (%==) SCS SCK = SFalse+ (%==) SCS SCL = SFalse+ (%==) SCS SCM = SFalse+ (%==) SCS SCN = SFalse+ (%==) SCS SCO = SFalse+ (%==) SCS SCP = SFalse+ (%==) SCS SCQ = SFalse+ (%==) SCS SCR = SFalse+ (%==) SCS SCS = STrue+ (%==) SCS SCT = SFalse+ (%==) SCS SCU = SFalse+ (%==) SCS SCV = SFalse+ (%==) SCS SCW = SFalse+ (%==) SCS SCX = SFalse+ (%==) SCS SCY = SFalse+ (%==) SCS SCZ = SFalse+ (%==) SCT SCA = SFalse+ (%==) SCT SCB = SFalse+ (%==) SCT SCC = SFalse+ (%==) SCT SCD = SFalse+ (%==) SCT SCE = SFalse+ (%==) SCT SCF = SFalse+ (%==) SCT SCG = SFalse+ (%==) SCT SCH = SFalse+ (%==) SCT SCI = SFalse+ (%==) SCT SCJ = SFalse+ (%==) SCT SCK = SFalse+ (%==) SCT SCL = SFalse+ (%==) SCT SCM = SFalse+ (%==) SCT SCN = SFalse+ (%==) SCT SCO = SFalse+ (%==) SCT SCP = SFalse+ (%==) SCT SCQ = SFalse+ (%==) SCT SCR = SFalse+ (%==) SCT SCS = SFalse+ (%==) SCT SCT = STrue+ (%==) SCT SCU = SFalse+ (%==) SCT SCV = SFalse+ (%==) SCT SCW = SFalse+ (%==) SCT SCX = SFalse+ (%==) SCT SCY = SFalse+ (%==) SCT SCZ = SFalse+ (%==) SCU SCA = SFalse+ (%==) SCU SCB = SFalse+ (%==) SCU SCC = SFalse+ (%==) SCU SCD = SFalse+ (%==) SCU SCE = SFalse+ (%==) SCU SCF = SFalse+ (%==) SCU SCG = SFalse+ (%==) SCU SCH = SFalse+ (%==) SCU SCI = SFalse+ (%==) SCU SCJ = SFalse+ (%==) SCU SCK = SFalse+ (%==) SCU SCL = SFalse+ (%==) SCU SCM = SFalse+ (%==) SCU SCN = SFalse+ (%==) SCU SCO = SFalse+ (%==) SCU SCP = SFalse+ (%==) SCU SCQ = SFalse+ (%==) SCU SCR = SFalse+ (%==) SCU SCS = SFalse+ (%==) SCU SCT = SFalse+ (%==) SCU SCU = STrue+ (%==) SCU SCV = SFalse+ (%==) SCU SCW = SFalse+ (%==) SCU SCX = SFalse+ (%==) SCU SCY = SFalse+ (%==) SCU SCZ = SFalse+ (%==) SCV SCA = SFalse+ (%==) SCV SCB = SFalse+ (%==) SCV SCC = SFalse+ (%==) SCV SCD = SFalse+ (%==) SCV SCE = SFalse+ (%==) SCV SCF = SFalse+ (%==) SCV SCG = SFalse+ (%==) SCV SCH = SFalse+ (%==) SCV SCI = SFalse+ (%==) SCV SCJ = SFalse+ (%==) SCV SCK = SFalse+ (%==) SCV SCL = SFalse+ (%==) SCV SCM = SFalse+ (%==) SCV SCN = SFalse+ (%==) SCV SCO = SFalse+ (%==) SCV SCP = SFalse+ (%==) SCV SCQ = SFalse+ (%==) SCV SCR = SFalse+ (%==) SCV SCS = SFalse+ (%==) SCV SCT = SFalse+ (%==) SCV SCU = SFalse+ (%==) SCV SCV = STrue+ (%==) SCV SCW = SFalse+ (%==) SCV SCX = SFalse+ (%==) SCV SCY = SFalse+ (%==) SCV SCZ = SFalse+ (%==) SCW SCA = SFalse+ (%==) SCW SCB = SFalse+ (%==) SCW SCC = SFalse+ (%==) SCW SCD = SFalse+ (%==) SCW SCE = SFalse+ (%==) SCW SCF = SFalse+ (%==) SCW SCG = SFalse+ (%==) SCW SCH = SFalse+ (%==) SCW SCI = SFalse+ (%==) SCW SCJ = SFalse+ (%==) SCW SCK = SFalse+ (%==) SCW SCL = SFalse+ (%==) SCW SCM = SFalse+ (%==) SCW SCN = SFalse+ (%==) SCW SCO = SFalse+ (%==) SCW SCP = SFalse+ (%==) SCW SCQ = SFalse+ (%==) SCW SCR = SFalse+ (%==) SCW SCS = SFalse+ (%==) SCW SCT = SFalse+ (%==) SCW SCU = SFalse+ (%==) SCW SCV = SFalse+ (%==) SCW SCW = STrue+ (%==) SCW SCX = SFalse+ (%==) SCW SCY = SFalse+ (%==) SCW SCZ = SFalse+ (%==) SCX SCA = SFalse+ (%==) SCX SCB = SFalse+ (%==) SCX SCC = SFalse+ (%==) SCX SCD = SFalse+ (%==) SCX SCE = SFalse+ (%==) SCX SCF = SFalse+ (%==) SCX SCG = SFalse+ (%==) SCX SCH = SFalse+ (%==) SCX SCI = SFalse+ (%==) SCX SCJ = SFalse+ (%==) SCX SCK = SFalse+ (%==) SCX SCL = SFalse+ (%==) SCX SCM = SFalse+ (%==) SCX SCN = SFalse+ (%==) SCX SCO = SFalse+ (%==) SCX SCP = SFalse+ (%==) SCX SCQ = SFalse+ (%==) SCX SCR = SFalse+ (%==) SCX SCS = SFalse+ (%==) SCX SCT = SFalse+ (%==) SCX SCU = SFalse+ (%==) SCX SCV = SFalse+ (%==) SCX SCW = SFalse+ (%==) SCX SCX = STrue+ (%==) SCX SCY = SFalse+ (%==) SCX SCZ = SFalse+ (%==) SCY SCA = SFalse+ (%==) SCY SCB = SFalse+ (%==) SCY SCC = SFalse+ (%==) SCY SCD = SFalse+ (%==) SCY SCE = SFalse+ (%==) SCY SCF = SFalse+ (%==) SCY SCG = SFalse+ (%==) SCY SCH = SFalse+ (%==) SCY SCI = SFalse+ (%==) SCY SCJ = SFalse+ (%==) SCY SCK = SFalse+ (%==) SCY SCL = SFalse+ (%==) SCY SCM = SFalse+ (%==) SCY SCN = SFalse+ (%==) SCY SCO = SFalse+ (%==) SCY SCP = SFalse+ (%==) SCY SCQ = SFalse+ (%==) SCY SCR = SFalse+ (%==) SCY SCS = SFalse+ (%==) SCY SCT = SFalse+ (%==) SCY SCU = SFalse+ (%==) SCY SCV = SFalse+ (%==) SCY SCW = SFalse+ (%==) SCY SCX = SFalse+ (%==) SCY SCY = STrue+ (%==) SCY SCZ = SFalse+ (%==) SCZ SCA = SFalse+ (%==) SCZ SCB = SFalse+ (%==) SCZ SCC = SFalse+ (%==) SCZ SCD = SFalse+ (%==) SCZ SCE = SFalse+ (%==) SCZ SCF = SFalse+ (%==) SCZ SCG = SFalse+ (%==) SCZ SCH = SFalse+ (%==) SCZ SCI = SFalse+ (%==) SCZ SCJ = SFalse+ (%==) SCZ SCK = SFalse+ (%==) SCZ SCL = SFalse+ (%==) SCZ SCM = SFalse+ (%==) SCZ SCN = SFalse+ (%==) SCZ SCO = SFalse+ (%==) SCZ SCP = SFalse+ (%==) SCZ SCQ = SFalse+ (%==) SCZ SCR = SFalse+ (%==) SCZ SCS = SFalse+ (%==) SCZ SCT = SFalse+ (%==) SCZ SCU = SFalse+ (%==) SCZ SCV = SFalse+ (%==) SCZ SCW = SFalse+ (%==) SCZ SCX = SFalse+ (%==) SCZ SCY = SFalse+ (%==) SCZ SCZ = STrue+ instance (SDecide U, SDecide Nat) => SDecide U where+ (%~) SBOOL SBOOL = Proved Refl+ (%~) SBOOL SSTRING = Disproved (\ x -> case x of {})+ (%~) SBOOL SNAT = Disproved (\ x -> case x of {})+ (%~) SBOOL (SVEC _ _) = Disproved (\ x -> case x of {})+ (%~) SSTRING SBOOL = Disproved (\ x -> case x of {})+ (%~) SSTRING SSTRING = Proved Refl+ (%~) SSTRING SNAT = Disproved (\ x -> case x of {})+ (%~) SSTRING (SVEC _ _) = Disproved (\ x -> case x of {})+ (%~) SNAT SBOOL = Disproved (\ x -> case x of {})+ (%~) SNAT SSTRING = Disproved (\ x -> case x of {})+ (%~) SNAT SNAT = Proved Refl+ (%~) SNAT (SVEC _ _) = Disproved (\ x -> case x of {})+ (%~) (SVEC _ _) SBOOL = Disproved (\ x -> case x of {})+ (%~) (SVEC _ _) SSTRING = Disproved (\ x -> case x of {})+ (%~) (SVEC _ _) SNAT = Disproved (\ x -> case x of {})+ (%~) (SVEC a a) (SVEC b b)+ = case ((,) (((%~) a) b)) (((%~) a) b) of+ (,) (Proved Refl) (Proved Refl) -> Proved Refl+ (,) (Disproved contra) _+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ (,) _ (Disproved contra)+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ instance (SDecide U, SDecide Nat) =>+ Data.Type.Equality.TestEquality (SU :: U -> Type) where+ Data.Type.Equality.testEquality+ = Data.Singletons.Decide.decideEquality+ instance (SDecide U, SDecide Nat) =>+ Data.Type.Coercion.TestCoercion (SU :: U -> Type) where+ Data.Type.Coercion.testCoercion+ = Data.Singletons.Decide.decideCoercion+ instance SDecide AChar where+ (%~) SCA SCA = Proved Refl+ (%~) SCA SCB = Disproved (\ x -> case x of {})+ (%~) SCA SCC = Disproved (\ x -> case x of {})+ (%~) SCA SCD = Disproved (\ x -> case x of {})+ (%~) SCA SCE = Disproved (\ x -> case x of {})+ (%~) SCA SCF = Disproved (\ x -> case x of {})+ (%~) SCA SCG = Disproved (\ x -> case x of {})+ (%~) SCA SCH = Disproved (\ x -> case x of {})+ (%~) SCA SCI = Disproved (\ x -> case x of {})+ (%~) SCA SCJ = Disproved (\ x -> case x of {})+ (%~) SCA SCK = Disproved (\ x -> case x of {})+ (%~) SCA SCL = Disproved (\ x -> case x of {})+ (%~) SCA SCM = Disproved (\ x -> case x of {})+ (%~) SCA SCN = Disproved (\ x -> case x of {})+ (%~) SCA SCO = Disproved (\ x -> case x of {})+ (%~) SCA SCP = Disproved (\ x -> case x of {})+ (%~) SCA SCQ = Disproved (\ x -> case x of {})+ (%~) SCA SCR = Disproved (\ x -> case x of {})+ (%~) SCA SCS = Disproved (\ x -> case x of {})+ (%~) SCA SCT = Disproved (\ x -> case x of {})+ (%~) SCA SCU = Disproved (\ x -> case x of {})+ (%~) SCA SCV = Disproved (\ x -> case x of {})+ (%~) SCA SCW = Disproved (\ x -> case x of {})+ (%~) SCA SCX = Disproved (\ x -> case x of {})+ (%~) SCA SCY = Disproved (\ x -> case x of {})+ (%~) SCA SCZ = Disproved (\ x -> case x of {})+ (%~) SCB SCA = Disproved (\ x -> case x of {})+ (%~) SCB SCB = Proved Refl+ (%~) SCB SCC = Disproved (\ x -> case x of {})+ (%~) SCB SCD = Disproved (\ x -> case x of {})+ (%~) SCB SCE = Disproved (\ x -> case x of {})+ (%~) SCB SCF = Disproved (\ x -> case x of {})+ (%~) SCB SCG = Disproved (\ x -> case x of {})+ (%~) SCB SCH = Disproved (\ x -> case x of {})+ (%~) SCB SCI = Disproved (\ x -> case x of {})+ (%~) SCB SCJ = Disproved (\ x -> case x of {})+ (%~) SCB SCK = Disproved (\ x -> case x of {})+ (%~) SCB SCL = Disproved (\ x -> case x of {})+ (%~) SCB SCM = Disproved (\ x -> case x of {})+ (%~) SCB SCN = Disproved (\ x -> case x of {})+ (%~) SCB SCO = Disproved (\ x -> case x of {})+ (%~) SCB SCP = Disproved (\ x -> case x of {})+ (%~) SCB SCQ = Disproved (\ x -> case x of {})+ (%~) SCB SCR = Disproved (\ x -> case x of {})+ (%~) SCB SCS = Disproved (\ x -> case x of {})+ (%~) SCB SCT = Disproved (\ x -> case x of {})+ (%~) SCB SCU = Disproved (\ x -> case x of {})+ (%~) SCB SCV = Disproved (\ x -> case x of {})+ (%~) SCB SCW = Disproved (\ x -> case x of {})+ (%~) SCB SCX = Disproved (\ x -> case x of {})+ (%~) SCB SCY = Disproved (\ x -> case x of {})+ (%~) SCB SCZ = Disproved (\ x -> case x of {})+ (%~) SCC SCA = Disproved (\ x -> case x of {})+ (%~) SCC SCB = Disproved (\ x -> case x of {})+ (%~) SCC SCC = Proved Refl+ (%~) SCC SCD = Disproved (\ x -> case x of {})+ (%~) SCC SCE = Disproved (\ x -> case x of {})+ (%~) SCC SCF = Disproved (\ x -> case x of {})+ (%~) SCC SCG = Disproved (\ x -> case x of {})+ (%~) SCC SCH = Disproved (\ x -> case x of {})+ (%~) SCC SCI = Disproved (\ x -> case x of {})+ (%~) SCC SCJ = Disproved (\ x -> case x of {})+ (%~) SCC SCK = Disproved (\ x -> case x of {})+ (%~) SCC SCL = Disproved (\ x -> case x of {})+ (%~) SCC SCM = Disproved (\ x -> case x of {})+ (%~) SCC SCN = Disproved (\ x -> case x of {})+ (%~) SCC SCO = Disproved (\ x -> case x of {})+ (%~) SCC SCP = Disproved (\ x -> case x of {})+ (%~) SCC SCQ = Disproved (\ x -> case x of {})+ (%~) SCC SCR = Disproved (\ x -> case x of {})+ (%~) SCC SCS = Disproved (\ x -> case x of {})+ (%~) SCC SCT = Disproved (\ x -> case x of {})+ (%~) SCC SCU = Disproved (\ x -> case x of {})+ (%~) SCC SCV = Disproved (\ x -> case x of {})+ (%~) SCC SCW = Disproved (\ x -> case x of {})+ (%~) SCC SCX = Disproved (\ x -> case x of {})+ (%~) SCC SCY = Disproved (\ x -> case x of {})+ (%~) SCC SCZ = Disproved (\ x -> case x of {})+ (%~) SCD SCA = Disproved (\ x -> case x of {})+ (%~) SCD SCB = Disproved (\ x -> case x of {})+ (%~) SCD SCC = Disproved (\ x -> case x of {})+ (%~) SCD SCD = Proved Refl+ (%~) SCD SCE = Disproved (\ x -> case x of {})+ (%~) SCD SCF = Disproved (\ x -> case x of {})+ (%~) SCD SCG = Disproved (\ x -> case x of {})+ (%~) SCD SCH = Disproved (\ x -> case x of {})+ (%~) SCD SCI = Disproved (\ x -> case x of {})+ (%~) SCD SCJ = Disproved (\ x -> case x of {})+ (%~) SCD SCK = Disproved (\ x -> case x of {})+ (%~) SCD SCL = Disproved (\ x -> case x of {})+ (%~) SCD SCM = Disproved (\ x -> case x of {})+ (%~) SCD SCN = Disproved (\ x -> case x of {})+ (%~) SCD SCO = Disproved (\ x -> case x of {})+ (%~) SCD SCP = Disproved (\ x -> case x of {})+ (%~) SCD SCQ = Disproved (\ x -> case x of {})+ (%~) SCD SCR = Disproved (\ x -> case x of {})+ (%~) SCD SCS = Disproved (\ x -> case x of {})+ (%~) SCD SCT = Disproved (\ x -> case x of {})+ (%~) SCD SCU = Disproved (\ x -> case x of {})+ (%~) SCD SCV = Disproved (\ x -> case x of {})+ (%~) SCD SCW = Disproved (\ x -> case x of {})+ (%~) SCD SCX = Disproved (\ x -> case x of {})+ (%~) SCD SCY = Disproved (\ x -> case x of {})+ (%~) SCD SCZ = Disproved (\ x -> case x of {})+ (%~) SCE SCA = Disproved (\ x -> case x of {})+ (%~) SCE SCB = Disproved (\ x -> case x of {})+ (%~) SCE SCC = Disproved (\ x -> case x of {})+ (%~) SCE SCD = Disproved (\ x -> case x of {})+ (%~) SCE SCE = Proved Refl+ (%~) SCE SCF = Disproved (\ x -> case x of {})+ (%~) SCE SCG = Disproved (\ x -> case x of {})+ (%~) SCE SCH = Disproved (\ x -> case x of {})+ (%~) SCE SCI = Disproved (\ x -> case x of {})+ (%~) SCE SCJ = Disproved (\ x -> case x of {})+ (%~) SCE SCK = Disproved (\ x -> case x of {})+ (%~) SCE SCL = Disproved (\ x -> case x of {})+ (%~) SCE SCM = Disproved (\ x -> case x of {})+ (%~) SCE SCN = Disproved (\ x -> case x of {})+ (%~) SCE SCO = Disproved (\ x -> case x of {})+ (%~) SCE SCP = Disproved (\ x -> case x of {})+ (%~) SCE SCQ = Disproved (\ x -> case x of {})+ (%~) SCE SCR = Disproved (\ x -> case x of {})+ (%~) SCE SCS = Disproved (\ x -> case x of {})+ (%~) SCE SCT = Disproved (\ x -> case x of {})+ (%~) SCE SCU = Disproved (\ x -> case x of {})+ (%~) SCE SCV = Disproved (\ x -> case x of {})+ (%~) SCE SCW = Disproved (\ x -> case x of {})+ (%~) SCE SCX = Disproved (\ x -> case x of {})+ (%~) SCE SCY = Disproved (\ x -> case x of {})+ (%~) SCE SCZ = Disproved (\ x -> case x of {})+ (%~) SCF SCA = Disproved (\ x -> case x of {})+ (%~) SCF SCB = Disproved (\ x -> case x of {})+ (%~) SCF SCC = Disproved (\ x -> case x of {})+ (%~) SCF SCD = Disproved (\ x -> case x of {})+ (%~) SCF SCE = Disproved (\ x -> case x of {})+ (%~) SCF SCF = Proved Refl+ (%~) SCF SCG = Disproved (\ x -> case x of {})+ (%~) SCF SCH = Disproved (\ x -> case x of {})+ (%~) SCF SCI = Disproved (\ x -> case x of {})+ (%~) SCF SCJ = Disproved (\ x -> case x of {})+ (%~) SCF SCK = Disproved (\ x -> case x of {})+ (%~) SCF SCL = Disproved (\ x -> case x of {})+ (%~) SCF SCM = Disproved (\ x -> case x of {})+ (%~) SCF SCN = Disproved (\ x -> case x of {})+ (%~) SCF SCO = Disproved (\ x -> case x of {})+ (%~) SCF SCP = Disproved (\ x -> case x of {})+ (%~) SCF SCQ = Disproved (\ x -> case x of {})+ (%~) SCF SCR = Disproved (\ x -> case x of {})+ (%~) SCF SCS = Disproved (\ x -> case x of {})+ (%~) SCF SCT = Disproved (\ x -> case x of {})+ (%~) SCF SCU = Disproved (\ x -> case x of {})+ (%~) SCF SCV = Disproved (\ x -> case x of {})+ (%~) SCF SCW = Disproved (\ x -> case x of {})+ (%~) SCF SCX = Disproved (\ x -> case x of {})+ (%~) SCF SCY = Disproved (\ x -> case x of {})+ (%~) SCF SCZ = Disproved (\ x -> case x of {})+ (%~) SCG SCA = Disproved (\ x -> case x of {})+ (%~) SCG SCB = Disproved (\ x -> case x of {})+ (%~) SCG SCC = Disproved (\ x -> case x of {})+ (%~) SCG SCD = Disproved (\ x -> case x of {})+ (%~) SCG SCE = Disproved (\ x -> case x of {})+ (%~) SCG SCF = Disproved (\ x -> case x of {})+ (%~) SCG SCG = Proved Refl+ (%~) SCG SCH = Disproved (\ x -> case x of {})+ (%~) SCG SCI = Disproved (\ x -> case x of {})+ (%~) SCG SCJ = Disproved (\ x -> case x of {})+ (%~) SCG SCK = Disproved (\ x -> case x of {})+ (%~) SCG SCL = Disproved (\ x -> case x of {})+ (%~) SCG SCM = Disproved (\ x -> case x of {})+ (%~) SCG SCN = Disproved (\ x -> case x of {})+ (%~) SCG SCO = Disproved (\ x -> case x of {})+ (%~) SCG SCP = Disproved (\ x -> case x of {})+ (%~) SCG SCQ = Disproved (\ x -> case x of {})+ (%~) SCG SCR = Disproved (\ x -> case x of {})+ (%~) SCG SCS = Disproved (\ x -> case x of {})+ (%~) SCG SCT = Disproved (\ x -> case x of {})+ (%~) SCG SCU = Disproved (\ x -> case x of {})+ (%~) SCG SCV = Disproved (\ x -> case x of {})+ (%~) SCG SCW = Disproved (\ x -> case x of {})+ (%~) SCG SCX = Disproved (\ x -> case x of {})+ (%~) SCG SCY = Disproved (\ x -> case x of {})+ (%~) SCG SCZ = Disproved (\ x -> case x of {})+ (%~) SCH SCA = Disproved (\ x -> case x of {})+ (%~) SCH SCB = Disproved (\ x -> case x of {})+ (%~) SCH SCC = Disproved (\ x -> case x of {})+ (%~) SCH SCD = Disproved (\ x -> case x of {})+ (%~) SCH SCE = Disproved (\ x -> case x of {})+ (%~) SCH SCF = Disproved (\ x -> case x of {})+ (%~) SCH SCG = Disproved (\ x -> case x of {})+ (%~) SCH SCH = Proved Refl+ (%~) SCH SCI = Disproved (\ x -> case x of {})+ (%~) SCH SCJ = Disproved (\ x -> case x of {})+ (%~) SCH SCK = Disproved (\ x -> case x of {})+ (%~) SCH SCL = Disproved (\ x -> case x of {})+ (%~) SCH SCM = Disproved (\ x -> case x of {})+ (%~) SCH SCN = Disproved (\ x -> case x of {})+ (%~) SCH SCO = Disproved (\ x -> case x of {})+ (%~) SCH SCP = Disproved (\ x -> case x of {})+ (%~) SCH SCQ = Disproved (\ x -> case x of {})+ (%~) SCH SCR = Disproved (\ x -> case x of {})+ (%~) SCH SCS = Disproved (\ x -> case x of {})+ (%~) SCH SCT = Disproved (\ x -> case x of {})+ (%~) SCH SCU = Disproved (\ x -> case x of {})+ (%~) SCH SCV = Disproved (\ x -> case x of {})+ (%~) SCH SCW = Disproved (\ x -> case x of {})+ (%~) SCH SCX = Disproved (\ x -> case x of {})+ (%~) SCH SCY = Disproved (\ x -> case x of {})+ (%~) SCH SCZ = Disproved (\ x -> case x of {})+ (%~) SCI SCA = Disproved (\ x -> case x of {})+ (%~) SCI SCB = Disproved (\ x -> case x of {})+ (%~) SCI SCC = Disproved (\ x -> case x of {})+ (%~) SCI SCD = Disproved (\ x -> case x of {})+ (%~) SCI SCE = Disproved (\ x -> case x of {})+ (%~) SCI SCF = Disproved (\ x -> case x of {})+ (%~) SCI SCG = Disproved (\ x -> case x of {})+ (%~) SCI SCH = Disproved (\ x -> case x of {})+ (%~) SCI SCI = Proved Refl+ (%~) SCI SCJ = Disproved (\ x -> case x of {})+ (%~) SCI SCK = Disproved (\ x -> case x of {})+ (%~) SCI SCL = Disproved (\ x -> case x of {})+ (%~) SCI SCM = Disproved (\ x -> case x of {})+ (%~) SCI SCN = Disproved (\ x -> case x of {})+ (%~) SCI SCO = Disproved (\ x -> case x of {})+ (%~) SCI SCP = Disproved (\ x -> case x of {})+ (%~) SCI SCQ = Disproved (\ x -> case x of {})+ (%~) SCI SCR = Disproved (\ x -> case x of {})+ (%~) SCI SCS = Disproved (\ x -> case x of {})+ (%~) SCI SCT = Disproved (\ x -> case x of {})+ (%~) SCI SCU = Disproved (\ x -> case x of {})+ (%~) SCI SCV = Disproved (\ x -> case x of {})+ (%~) SCI SCW = Disproved (\ x -> case x of {})+ (%~) SCI SCX = Disproved (\ x -> case x of {})+ (%~) SCI SCY = Disproved (\ x -> case x of {})+ (%~) SCI SCZ = Disproved (\ x -> case x of {})+ (%~) SCJ SCA = Disproved (\ x -> case x of {})+ (%~) SCJ SCB = Disproved (\ x -> case x of {})+ (%~) SCJ SCC = Disproved (\ x -> case x of {})+ (%~) SCJ SCD = Disproved (\ x -> case x of {})+ (%~) SCJ SCE = Disproved (\ x -> case x of {})+ (%~) SCJ SCF = Disproved (\ x -> case x of {})+ (%~) SCJ SCG = Disproved (\ x -> case x of {})+ (%~) SCJ SCH = Disproved (\ x -> case x of {})+ (%~) SCJ SCI = Disproved (\ x -> case x of {})+ (%~) SCJ SCJ = Proved Refl+ (%~) SCJ SCK = Disproved (\ x -> case x of {})+ (%~) SCJ SCL = Disproved (\ x -> case x of {})+ (%~) SCJ SCM = Disproved (\ x -> case x of {})+ (%~) SCJ SCN = Disproved (\ x -> case x of {})+ (%~) SCJ SCO = Disproved (\ x -> case x of {})+ (%~) SCJ SCP = Disproved (\ x -> case x of {})+ (%~) SCJ SCQ = Disproved (\ x -> case x of {})+ (%~) SCJ SCR = Disproved (\ x -> case x of {})+ (%~) SCJ SCS = Disproved (\ x -> case x of {})+ (%~) SCJ SCT = Disproved (\ x -> case x of {})+ (%~) SCJ SCU = Disproved (\ x -> case x of {})+ (%~) SCJ SCV = Disproved (\ x -> case x of {})+ (%~) SCJ SCW = Disproved (\ x -> case x of {})+ (%~) SCJ SCX = Disproved (\ x -> case x of {})+ (%~) SCJ SCY = Disproved (\ x -> case x of {})+ (%~) SCJ SCZ = Disproved (\ x -> case x of {})+ (%~) SCK SCA = Disproved (\ x -> case x of {})+ (%~) SCK SCB = Disproved (\ x -> case x of {})+ (%~) SCK SCC = Disproved (\ x -> case x of {})+ (%~) SCK SCD = Disproved (\ x -> case x of {})+ (%~) SCK SCE = Disproved (\ x -> case x of {})+ (%~) SCK SCF = Disproved (\ x -> case x of {})+ (%~) SCK SCG = Disproved (\ x -> case x of {})+ (%~) SCK SCH = Disproved (\ x -> case x of {})+ (%~) SCK SCI = Disproved (\ x -> case x of {})+ (%~) SCK SCJ = Disproved (\ x -> case x of {})+ (%~) SCK SCK = Proved Refl+ (%~) SCK SCL = Disproved (\ x -> case x of {})+ (%~) SCK SCM = Disproved (\ x -> case x of {})+ (%~) SCK SCN = Disproved (\ x -> case x of {})+ (%~) SCK SCO = Disproved (\ x -> case x of {})+ (%~) SCK SCP = Disproved (\ x -> case x of {})+ (%~) SCK SCQ = Disproved (\ x -> case x of {})+ (%~) SCK SCR = Disproved (\ x -> case x of {})+ (%~) SCK SCS = Disproved (\ x -> case x of {})+ (%~) SCK SCT = Disproved (\ x -> case x of {})+ (%~) SCK SCU = Disproved (\ x -> case x of {})+ (%~) SCK SCV = Disproved (\ x -> case x of {})+ (%~) SCK SCW = Disproved (\ x -> case x of {})+ (%~) SCK SCX = Disproved (\ x -> case x of {})+ (%~) SCK SCY = Disproved (\ x -> case x of {})+ (%~) SCK SCZ = Disproved (\ x -> case x of {})+ (%~) SCL SCA = Disproved (\ x -> case x of {})+ (%~) SCL SCB = Disproved (\ x -> case x of {})+ (%~) SCL SCC = Disproved (\ x -> case x of {})+ (%~) SCL SCD = Disproved (\ x -> case x of {})+ (%~) SCL SCE = Disproved (\ x -> case x of {})+ (%~) SCL SCF = Disproved (\ x -> case x of {})+ (%~) SCL SCG = Disproved (\ x -> case x of {})+ (%~) SCL SCH = Disproved (\ x -> case x of {})+ (%~) SCL SCI = Disproved (\ x -> case x of {})+ (%~) SCL SCJ = Disproved (\ x -> case x of {})+ (%~) SCL SCK = Disproved (\ x -> case x of {})+ (%~) SCL SCL = Proved Refl+ (%~) SCL SCM = Disproved (\ x -> case x of {})+ (%~) SCL SCN = Disproved (\ x -> case x of {})+ (%~) SCL SCO = Disproved (\ x -> case x of {})+ (%~) SCL SCP = Disproved (\ x -> case x of {})+ (%~) SCL SCQ = Disproved (\ x -> case x of {})+ (%~) SCL SCR = Disproved (\ x -> case x of {})+ (%~) SCL SCS = Disproved (\ x -> case x of {})+ (%~) SCL SCT = Disproved (\ x -> case x of {})+ (%~) SCL SCU = Disproved (\ x -> case x of {})+ (%~) SCL SCV = Disproved (\ x -> case x of {})+ (%~) SCL SCW = Disproved (\ x -> case x of {})+ (%~) SCL SCX = Disproved (\ x -> case x of {})+ (%~) SCL SCY = Disproved (\ x -> case x of {})+ (%~) SCL SCZ = Disproved (\ x -> case x of {})+ (%~) SCM SCA = Disproved (\ x -> case x of {})+ (%~) SCM SCB = Disproved (\ x -> case x of {})+ (%~) SCM SCC = Disproved (\ x -> case x of {})+ (%~) SCM SCD = Disproved (\ x -> case x of {})+ (%~) SCM SCE = Disproved (\ x -> case x of {})+ (%~) SCM SCF = Disproved (\ x -> case x of {})+ (%~) SCM SCG = Disproved (\ x -> case x of {})+ (%~) SCM SCH = Disproved (\ x -> case x of {})+ (%~) SCM SCI = Disproved (\ x -> case x of {})+ (%~) SCM SCJ = Disproved (\ x -> case x of {})+ (%~) SCM SCK = Disproved (\ x -> case x of {})+ (%~) SCM SCL = Disproved (\ x -> case x of {})+ (%~) SCM SCM = Proved Refl+ (%~) SCM SCN = Disproved (\ x -> case x of {})+ (%~) SCM SCO = Disproved (\ x -> case x of {})+ (%~) SCM SCP = Disproved (\ x -> case x of {})+ (%~) SCM SCQ = Disproved (\ x -> case x of {})+ (%~) SCM SCR = Disproved (\ x -> case x of {})+ (%~) SCM SCS = Disproved (\ x -> case x of {})+ (%~) SCM SCT = Disproved (\ x -> case x of {})+ (%~) SCM SCU = Disproved (\ x -> case x of {})+ (%~) SCM SCV = Disproved (\ x -> case x of {})+ (%~) SCM SCW = Disproved (\ x -> case x of {})+ (%~) SCM SCX = Disproved (\ x -> case x of {})+ (%~) SCM SCY = Disproved (\ x -> case x of {})+ (%~) SCM SCZ = Disproved (\ x -> case x of {})+ (%~) SCN SCA = Disproved (\ x -> case x of {})+ (%~) SCN SCB = Disproved (\ x -> case x of {})+ (%~) SCN SCC = Disproved (\ x -> case x of {})+ (%~) SCN SCD = Disproved (\ x -> case x of {})+ (%~) SCN SCE = Disproved (\ x -> case x of {})+ (%~) SCN SCF = Disproved (\ x -> case x of {})+ (%~) SCN SCG = Disproved (\ x -> case x of {})+ (%~) SCN SCH = Disproved (\ x -> case x of {})+ (%~) SCN SCI = Disproved (\ x -> case x of {})+ (%~) SCN SCJ = Disproved (\ x -> case x of {})+ (%~) SCN SCK = Disproved (\ x -> case x of {})+ (%~) SCN SCL = Disproved (\ x -> case x of {})+ (%~) SCN SCM = Disproved (\ x -> case x of {})+ (%~) SCN SCN = Proved Refl+ (%~) SCN SCO = Disproved (\ x -> case x of {})+ (%~) SCN SCP = Disproved (\ x -> case x of {})+ (%~) SCN SCQ = Disproved (\ x -> case x of {})+ (%~) SCN SCR = Disproved (\ x -> case x of {})+ (%~) SCN SCS = Disproved (\ x -> case x of {})+ (%~) SCN SCT = Disproved (\ x -> case x of {})+ (%~) SCN SCU = Disproved (\ x -> case x of {})+ (%~) SCN SCV = Disproved (\ x -> case x of {})+ (%~) SCN SCW = Disproved (\ x -> case x of {})+ (%~) SCN SCX = Disproved (\ x -> case x of {})+ (%~) SCN SCY = Disproved (\ x -> case x of {})+ (%~) SCN SCZ = Disproved (\ x -> case x of {})+ (%~) SCO SCA = Disproved (\ x -> case x of {})+ (%~) SCO SCB = Disproved (\ x -> case x of {})+ (%~) SCO SCC = Disproved (\ x -> case x of {})+ (%~) SCO SCD = Disproved (\ x -> case x of {})+ (%~) SCO SCE = Disproved (\ x -> case x of {})+ (%~) SCO SCF = Disproved (\ x -> case x of {})+ (%~) SCO SCG = Disproved (\ x -> case x of {})+ (%~) SCO SCH = Disproved (\ x -> case x of {})+ (%~) SCO SCI = Disproved (\ x -> case x of {})+ (%~) SCO SCJ = Disproved (\ x -> case x of {})+ (%~) SCO SCK = Disproved (\ x -> case x of {})+ (%~) SCO SCL = Disproved (\ x -> case x of {})+ (%~) SCO SCM = Disproved (\ x -> case x of {})+ (%~) SCO SCN = Disproved (\ x -> case x of {})+ (%~) SCO SCO = Proved Refl+ (%~) SCO SCP = Disproved (\ x -> case x of {})+ (%~) SCO SCQ = Disproved (\ x -> case x of {})+ (%~) SCO SCR = Disproved (\ x -> case x of {})+ (%~) SCO SCS = Disproved (\ x -> case x of {})+ (%~) SCO SCT = Disproved (\ x -> case x of {})+ (%~) SCO SCU = Disproved (\ x -> case x of {})+ (%~) SCO SCV = Disproved (\ x -> case x of {})+ (%~) SCO SCW = Disproved (\ x -> case x of {})+ (%~) SCO SCX = Disproved (\ x -> case x of {})+ (%~) SCO SCY = Disproved (\ x -> case x of {})+ (%~) SCO SCZ = Disproved (\ x -> case x of {})+ (%~) SCP SCA = Disproved (\ x -> case x of {})+ (%~) SCP SCB = Disproved (\ x -> case x of {})+ (%~) SCP SCC = Disproved (\ x -> case x of {})+ (%~) SCP SCD = Disproved (\ x -> case x of {})+ (%~) SCP SCE = Disproved (\ x -> case x of {})+ (%~) SCP SCF = Disproved (\ x -> case x of {})+ (%~) SCP SCG = Disproved (\ x -> case x of {})+ (%~) SCP SCH = Disproved (\ x -> case x of {})+ (%~) SCP SCI = Disproved (\ x -> case x of {})+ (%~) SCP SCJ = Disproved (\ x -> case x of {})+ (%~) SCP SCK = Disproved (\ x -> case x of {})+ (%~) SCP SCL = Disproved (\ x -> case x of {})+ (%~) SCP SCM = Disproved (\ x -> case x of {})+ (%~) SCP SCN = Disproved (\ x -> case x of {})+ (%~) SCP SCO = Disproved (\ x -> case x of {})+ (%~) SCP SCP = Proved Refl+ (%~) SCP SCQ = Disproved (\ x -> case x of {})+ (%~) SCP SCR = Disproved (\ x -> case x of {})+ (%~) SCP SCS = Disproved (\ x -> case x of {})+ (%~) SCP SCT = Disproved (\ x -> case x of {})+ (%~) SCP SCU = Disproved (\ x -> case x of {})+ (%~) SCP SCV = Disproved (\ x -> case x of {})+ (%~) SCP SCW = Disproved (\ x -> case x of {})+ (%~) SCP SCX = Disproved (\ x -> case x of {})+ (%~) SCP SCY = Disproved (\ x -> case x of {})+ (%~) SCP SCZ = Disproved (\ x -> case x of {})+ (%~) SCQ SCA = Disproved (\ x -> case x of {})+ (%~) SCQ SCB = Disproved (\ x -> case x of {})+ (%~) SCQ SCC = Disproved (\ x -> case x of {})+ (%~) SCQ SCD = Disproved (\ x -> case x of {})+ (%~) SCQ SCE = Disproved (\ x -> case x of {})+ (%~) SCQ SCF = Disproved (\ x -> case x of {})+ (%~) SCQ SCG = Disproved (\ x -> case x of {})+ (%~) SCQ SCH = Disproved (\ x -> case x of {})+ (%~) SCQ SCI = Disproved (\ x -> case x of {})+ (%~) SCQ SCJ = Disproved (\ x -> case x of {})+ (%~) SCQ SCK = Disproved (\ x -> case x of {})+ (%~) SCQ SCL = Disproved (\ x -> case x of {})+ (%~) SCQ SCM = Disproved (\ x -> case x of {})+ (%~) SCQ SCN = Disproved (\ x -> case x of {})+ (%~) SCQ SCO = Disproved (\ x -> case x of {})+ (%~) SCQ SCP = Disproved (\ x -> case x of {})+ (%~) SCQ SCQ = Proved Refl+ (%~) SCQ SCR = Disproved (\ x -> case x of {})+ (%~) SCQ SCS = Disproved (\ x -> case x of {})+ (%~) SCQ SCT = Disproved (\ x -> case x of {})+ (%~) SCQ SCU = Disproved (\ x -> case x of {})+ (%~) SCQ SCV = Disproved (\ x -> case x of {})+ (%~) SCQ SCW = Disproved (\ x -> case x of {})+ (%~) SCQ SCX = Disproved (\ x -> case x of {})+ (%~) SCQ SCY = Disproved (\ x -> case x of {})+ (%~) SCQ SCZ = Disproved (\ x -> case x of {})+ (%~) SCR SCA = Disproved (\ x -> case x of {})+ (%~) SCR SCB = Disproved (\ x -> case x of {})+ (%~) SCR SCC = Disproved (\ x -> case x of {})+ (%~) SCR SCD = Disproved (\ x -> case x of {})+ (%~) SCR SCE = Disproved (\ x -> case x of {})+ (%~) SCR SCF = Disproved (\ x -> case x of {})+ (%~) SCR SCG = Disproved (\ x -> case x of {})+ (%~) SCR SCH = Disproved (\ x -> case x of {})+ (%~) SCR SCI = Disproved (\ x -> case x of {})+ (%~) SCR SCJ = Disproved (\ x -> case x of {})+ (%~) SCR SCK = Disproved (\ x -> case x of {})+ (%~) SCR SCL = Disproved (\ x -> case x of {})+ (%~) SCR SCM = Disproved (\ x -> case x of {})+ (%~) SCR SCN = Disproved (\ x -> case x of {})+ (%~) SCR SCO = Disproved (\ x -> case x of {})+ (%~) SCR SCP = Disproved (\ x -> case x of {})+ (%~) SCR SCQ = Disproved (\ x -> case x of {})+ (%~) SCR SCR = Proved Refl+ (%~) SCR SCS = Disproved (\ x -> case x of {})+ (%~) SCR SCT = Disproved (\ x -> case x of {})+ (%~) SCR SCU = Disproved (\ x -> case x of {})+ (%~) SCR SCV = Disproved (\ x -> case x of {})+ (%~) SCR SCW = Disproved (\ x -> case x of {})+ (%~) SCR SCX = Disproved (\ x -> case x of {})+ (%~) SCR SCY = Disproved (\ x -> case x of {})+ (%~) SCR SCZ = Disproved (\ x -> case x of {})+ (%~) SCS SCA = Disproved (\ x -> case x of {})+ (%~) SCS SCB = Disproved (\ x -> case x of {})+ (%~) SCS SCC = Disproved (\ x -> case x of {})+ (%~) SCS SCD = Disproved (\ x -> case x of {})+ (%~) SCS SCE = Disproved (\ x -> case x of {})+ (%~) SCS SCF = Disproved (\ x -> case x of {})+ (%~) SCS SCG = Disproved (\ x -> case x of {})+ (%~) SCS SCH = Disproved (\ x -> case x of {})+ (%~) SCS SCI = Disproved (\ x -> case x of {})+ (%~) SCS SCJ = Disproved (\ x -> case x of {})+ (%~) SCS SCK = Disproved (\ x -> case x of {})+ (%~) SCS SCL = Disproved (\ x -> case x of {})+ (%~) SCS SCM = Disproved (\ x -> case x of {})+ (%~) SCS SCN = Disproved (\ x -> case x of {})+ (%~) SCS SCO = Disproved (\ x -> case x of {})+ (%~) SCS SCP = Disproved (\ x -> case x of {})+ (%~) SCS SCQ = Disproved (\ x -> case x of {})+ (%~) SCS SCR = Disproved (\ x -> case x of {})+ (%~) SCS SCS = Proved Refl+ (%~) SCS SCT = Disproved (\ x -> case x of {})+ (%~) SCS SCU = Disproved (\ x -> case x of {})+ (%~) SCS SCV = Disproved (\ x -> case x of {})+ (%~) SCS SCW = Disproved (\ x -> case x of {})+ (%~) SCS SCX = Disproved (\ x -> case x of {})+ (%~) SCS SCY = Disproved (\ x -> case x of {})+ (%~) SCS SCZ = Disproved (\ x -> case x of {})+ (%~) SCT SCA = Disproved (\ x -> case x of {})+ (%~) SCT SCB = Disproved (\ x -> case x of {})+ (%~) SCT SCC = Disproved (\ x -> case x of {})+ (%~) SCT SCD = Disproved (\ x -> case x of {})+ (%~) SCT SCE = Disproved (\ x -> case x of {})+ (%~) SCT SCF = Disproved (\ x -> case x of {})+ (%~) SCT SCG = Disproved (\ x -> case x of {})+ (%~) SCT SCH = Disproved (\ x -> case x of {})+ (%~) SCT SCI = Disproved (\ x -> case x of {})+ (%~) SCT SCJ = Disproved (\ x -> case x of {})+ (%~) SCT SCK = Disproved (\ x -> case x of {})+ (%~) SCT SCL = Disproved (\ x -> case x of {})+ (%~) SCT SCM = Disproved (\ x -> case x of {})+ (%~) SCT SCN = Disproved (\ x -> case x of {})+ (%~) SCT SCO = Disproved (\ x -> case x of {})+ (%~) SCT SCP = Disproved (\ x -> case x of {})+ (%~) SCT SCQ = Disproved (\ x -> case x of {})+ (%~) SCT SCR = Disproved (\ x -> case x of {})+ (%~) SCT SCS = Disproved (\ x -> case x of {})+ (%~) SCT SCT = Proved Refl+ (%~) SCT SCU = Disproved (\ x -> case x of {})+ (%~) SCT SCV = Disproved (\ x -> case x of {})+ (%~) SCT SCW = Disproved (\ x -> case x of {})+ (%~) SCT SCX = Disproved (\ x -> case x of {})+ (%~) SCT SCY = Disproved (\ x -> case x of {})+ (%~) SCT SCZ = Disproved (\ x -> case x of {})+ (%~) SCU SCA = Disproved (\ x -> case x of {})+ (%~) SCU SCB = Disproved (\ x -> case x of {})+ (%~) SCU SCC = Disproved (\ x -> case x of {})+ (%~) SCU SCD = Disproved (\ x -> case x of {})+ (%~) SCU SCE = Disproved (\ x -> case x of {})+ (%~) SCU SCF = Disproved (\ x -> case x of {})+ (%~) SCU SCG = Disproved (\ x -> case x of {})+ (%~) SCU SCH = Disproved (\ x -> case x of {})+ (%~) SCU SCI = Disproved (\ x -> case x of {})+ (%~) SCU SCJ = Disproved (\ x -> case x of {})+ (%~) SCU SCK = Disproved (\ x -> case x of {})+ (%~) SCU SCL = Disproved (\ x -> case x of {})+ (%~) SCU SCM = Disproved (\ x -> case x of {})+ (%~) SCU SCN = Disproved (\ x -> case x of {})+ (%~) SCU SCO = Disproved (\ x -> case x of {})+ (%~) SCU SCP = Disproved (\ x -> case x of {})+ (%~) SCU SCQ = Disproved (\ x -> case x of {})+ (%~) SCU SCR = Disproved (\ x -> case x of {})+ (%~) SCU SCS = Disproved (\ x -> case x of {})+ (%~) SCU SCT = Disproved (\ x -> case x of {})+ (%~) SCU SCU = Proved Refl+ (%~) SCU SCV = Disproved (\ x -> case x of {})+ (%~) SCU SCW = Disproved (\ x -> case x of {})+ (%~) SCU SCX = Disproved (\ x -> case x of {})+ (%~) SCU SCY = Disproved (\ x -> case x of {})+ (%~) SCU SCZ = Disproved (\ x -> case x of {})+ (%~) SCV SCA = Disproved (\ x -> case x of {})+ (%~) SCV SCB = Disproved (\ x -> case x of {})+ (%~) SCV SCC = Disproved (\ x -> case x of {})+ (%~) SCV SCD = Disproved (\ x -> case x of {})+ (%~) SCV SCE = Disproved (\ x -> case x of {})+ (%~) SCV SCF = Disproved (\ x -> case x of {})+ (%~) SCV SCG = Disproved (\ x -> case x of {})+ (%~) SCV SCH = Disproved (\ x -> case x of {})+ (%~) SCV SCI = Disproved (\ x -> case x of {})+ (%~) SCV SCJ = Disproved (\ x -> case x of {})+ (%~) SCV SCK = Disproved (\ x -> case x of {})+ (%~) SCV SCL = Disproved (\ x -> case x of {})+ (%~) SCV SCM = Disproved (\ x -> case x of {})+ (%~) SCV SCN = Disproved (\ x -> case x of {})+ (%~) SCV SCO = Disproved (\ x -> case x of {})+ (%~) SCV SCP = Disproved (\ x -> case x of {})+ (%~) SCV SCQ = Disproved (\ x -> case x of {})+ (%~) SCV SCR = Disproved (\ x -> case x of {})+ (%~) SCV SCS = Disproved (\ x -> case x of {})+ (%~) SCV SCT = Disproved (\ x -> case x of {})+ (%~) SCV SCU = Disproved (\ x -> case x of {})+ (%~) SCV SCV = Proved Refl+ (%~) SCV SCW = Disproved (\ x -> case x of {})+ (%~) SCV SCX = Disproved (\ x -> case x of {})+ (%~) SCV SCY = Disproved (\ x -> case x of {})+ (%~) SCV SCZ = Disproved (\ x -> case x of {})+ (%~) SCW SCA = Disproved (\ x -> case x of {})+ (%~) SCW SCB = Disproved (\ x -> case x of {})+ (%~) SCW SCC = Disproved (\ x -> case x of {})+ (%~) SCW SCD = Disproved (\ x -> case x of {})+ (%~) SCW SCE = Disproved (\ x -> case x of {})+ (%~) SCW SCF = Disproved (\ x -> case x of {})+ (%~) SCW SCG = Disproved (\ x -> case x of {})+ (%~) SCW SCH = Disproved (\ x -> case x of {})+ (%~) SCW SCI = Disproved (\ x -> case x of {})+ (%~) SCW SCJ = Disproved (\ x -> case x of {})+ (%~) SCW SCK = Disproved (\ x -> case x of {})+ (%~) SCW SCL = Disproved (\ x -> case x of {})+ (%~) SCW SCM = Disproved (\ x -> case x of {})+ (%~) SCW SCN = Disproved (\ x -> case x of {})+ (%~) SCW SCO = Disproved (\ x -> case x of {})+ (%~) SCW SCP = Disproved (\ x -> case x of {})+ (%~) SCW SCQ = Disproved (\ x -> case x of {})+ (%~) SCW SCR = Disproved (\ x -> case x of {})+ (%~) SCW SCS = Disproved (\ x -> case x of {})+ (%~) SCW SCT = Disproved (\ x -> case x of {})+ (%~) SCW SCU = Disproved (\ x -> case x of {})+ (%~) SCW SCV = Disproved (\ x -> case x of {})+ (%~) SCW SCW = Proved Refl+ (%~) SCW SCX = Disproved (\ x -> case x of {})+ (%~) SCW SCY = Disproved (\ x -> case x of {})+ (%~) SCW SCZ = Disproved (\ x -> case x of {})+ (%~) SCX SCA = Disproved (\ x -> case x of {})+ (%~) SCX SCB = Disproved (\ x -> case x of {})+ (%~) SCX SCC = Disproved (\ x -> case x of {})+ (%~) SCX SCD = Disproved (\ x -> case x of {})+ (%~) SCX SCE = Disproved (\ x -> case x of {})+ (%~) SCX SCF = Disproved (\ x -> case x of {})+ (%~) SCX SCG = Disproved (\ x -> case x of {})+ (%~) SCX SCH = Disproved (\ x -> case x of {})+ (%~) SCX SCI = Disproved (\ x -> case x of {})+ (%~) SCX SCJ = Disproved (\ x -> case x of {})+ (%~) SCX SCK = Disproved (\ x -> case x of {})+ (%~) SCX SCL = Disproved (\ x -> case x of {})+ (%~) SCX SCM = Disproved (\ x -> case x of {})+ (%~) SCX SCN = Disproved (\ x -> case x of {})+ (%~) SCX SCO = Disproved (\ x -> case x of {})+ (%~) SCX SCP = Disproved (\ x -> case x of {})+ (%~) SCX SCQ = Disproved (\ x -> case x of {})+ (%~) SCX SCR = Disproved (\ x -> case x of {})+ (%~) SCX SCS = Disproved (\ x -> case x of {})+ (%~) SCX SCT = Disproved (\ x -> case x of {})+ (%~) SCX SCU = Disproved (\ x -> case x of {})+ (%~) SCX SCV = Disproved (\ x -> case x of {})+ (%~) SCX SCW = Disproved (\ x -> case x of {})+ (%~) SCX SCX = Proved Refl+ (%~) SCX SCY = Disproved (\ x -> case x of {})+ (%~) SCX SCZ = Disproved (\ x -> case x of {})+ (%~) SCY SCA = Disproved (\ x -> case x of {})+ (%~) SCY SCB = Disproved (\ x -> case x of {})+ (%~) SCY SCC = Disproved (\ x -> case x of {})+ (%~) SCY SCD = Disproved (\ x -> case x of {})+ (%~) SCY SCE = Disproved (\ x -> case x of {})+ (%~) SCY SCF = Disproved (\ x -> case x of {})+ (%~) SCY SCG = Disproved (\ x -> case x of {})+ (%~) SCY SCH = Disproved (\ x -> case x of {})+ (%~) SCY SCI = Disproved (\ x -> case x of {})+ (%~) SCY SCJ = Disproved (\ x -> case x of {})+ (%~) SCY SCK = Disproved (\ x -> case x of {})+ (%~) SCY SCL = Disproved (\ x -> case x of {})+ (%~) SCY SCM = Disproved (\ x -> case x of {})+ (%~) SCY SCN = Disproved (\ x -> case x of {})+ (%~) SCY SCO = Disproved (\ x -> case x of {})+ (%~) SCY SCP = Disproved (\ x -> case x of {})+ (%~) SCY SCQ = Disproved (\ x -> case x of {})+ (%~) SCY SCR = Disproved (\ x -> case x of {})+ (%~) SCY SCS = Disproved (\ x -> case x of {})+ (%~) SCY SCT = Disproved (\ x -> case x of {})+ (%~) SCY SCU = Disproved (\ x -> case x of {})+ (%~) SCY SCV = Disproved (\ x -> case x of {})+ (%~) SCY SCW = Disproved (\ x -> case x of {})+ (%~) SCY SCX = Disproved (\ x -> case x of {})+ (%~) SCY SCY = Proved Refl+ (%~) SCY SCZ = Disproved (\ x -> case x of {})+ (%~) SCZ SCA = Disproved (\ x -> case x of {})+ (%~) SCZ SCB = Disproved (\ x -> case x of {})+ (%~) SCZ SCC = Disproved (\ x -> case x of {})+ (%~) SCZ SCD = Disproved (\ x -> case x of {})+ (%~) SCZ SCE = Disproved (\ x -> case x of {})+ (%~) SCZ SCF = Disproved (\ x -> case x of {})+ (%~) SCZ SCG = Disproved (\ x -> case x of {})+ (%~) SCZ SCH = Disproved (\ x -> case x of {})+ (%~) SCZ SCI = Disproved (\ x -> case x of {})+ (%~) SCZ SCJ = Disproved (\ x -> case x of {})+ (%~) SCZ SCK = Disproved (\ x -> case x of {})+ (%~) SCZ SCL = Disproved (\ x -> case x of {})+ (%~) SCZ SCM = Disproved (\ x -> case x of {})+ (%~) SCZ SCN = Disproved (\ x -> case x of {})+ (%~) SCZ SCO = Disproved (\ x -> case x of {})+ (%~) SCZ SCP = Disproved (\ x -> case x of {})+ (%~) SCZ SCQ = Disproved (\ x -> case x of {})+ (%~) SCZ SCR = Disproved (\ x -> case x of {})+ (%~) SCZ SCS = Disproved (\ x -> case x of {})+ (%~) SCZ SCT = Disproved (\ x -> case x of {})+ (%~) SCZ SCU = Disproved (\ x -> case x of {})+ (%~) SCZ SCV = Disproved (\ x -> case x of {})+ (%~) SCZ SCW = Disproved (\ x -> case x of {})+ (%~) SCZ SCX = Disproved (\ x -> case x of {})+ (%~) SCZ SCY = Disproved (\ x -> case x of {})+ (%~) SCZ SCZ = Proved Refl+ instance Data.Type.Equality.TestEquality (SAChar :: AChar+ -> Type) where+ Data.Type.Equality.testEquality+ = Data.Singletons.Decide.decideEquality+ instance Data.Type.Coercion.TestCoercion (SAChar :: AChar+ -> Type) where+ Data.Type.Coercion.testCoercion+ = Data.Singletons.Decide.decideCoercion+ deriving instance (Data.Singletons.ShowSing.ShowSing U,+ Data.Singletons.ShowSing.ShowSing Nat) =>+ Show (SU (z :: U))+ deriving instance Show (SAChar (z :: AChar))+ instance SingI BOOL where+ sing = SBOOL+ instance SingI STRING where+ sing = SSTRING+ instance SingI NAT where+ sing = SNAT+ instance (SingI n, SingI n) =>+ SingI (VEC (n :: U) (n :: Nat)) where+ sing = (SVEC sing) sing+ instance SingI n => SingI1 (VEC (n :: U)) where+ liftSing = SVEC sing+ instance SingI2 VEC where+ liftSing2 = SVEC+ instance SingI (VECSym0 :: (~>) U ((~>) Nat U)) where+ sing = (singFun2 @VECSym0) SVEC+ instance SingI d => SingI (VECSym1 (d :: U) :: (~>) Nat U) where+ sing = (singFun1 @(VECSym1 (d :: U))) (SVEC (sing @d))+ instance SingI1 (VECSym1 :: U -> (~>) Nat U) where+ liftSing (s :: Sing (d :: U))+ = (singFun1 @(VECSym1 (d :: U))) (SVEC s)+ instance SingI CA where+ sing = SCA+ instance SingI CB where+ sing = SCB+ instance SingI CC where+ sing = SCC+ instance SingI CD where+ sing = SCD+ instance SingI CE where+ sing = SCE+ instance SingI CF where+ sing = SCF+ instance SingI CG where+ sing = SCG+ instance SingI CH where+ sing = SCH+ instance SingI CI where+ sing = SCI+ instance SingI CJ where+ sing = SCJ+ instance SingI CK where+ sing = SCK+ instance SingI CL where+ sing = SCL+ instance SingI CM where+ sing = SCM+ instance SingI CN where+ sing = SCN+ instance SingI CO where+ sing = SCO+ instance SingI CP where+ sing = SCP+ instance SingI CQ where+ sing = SCQ+ instance SingI CR where+ sing = SCR+ instance SingI CS where+ sing = SCS+ instance SingI CT where+ sing = SCT+ instance SingI CU where+ sing = SCU+ instance SingI CV where+ sing = SCV+ instance SingI CW where+ sing = SCW+ instance SingI CX where+ sing = SCX+ instance SingI CY where+ sing = SCY+ instance SingI CZ where+ sing = SCZ+ instance (SingI n, SingI n) =>+ SingI (Attr (n :: [AChar]) (n :: U)) where+ sing = (SAttr sing) sing+ instance SingI n => SingI1 (Attr (n :: [AChar])) where+ liftSing = SAttr sing+ instance SingI2 Attr where+ liftSing2 = SAttr+ instance SingI (AttrSym0 :: (~>) [AChar] ((~>) U Attribute)) where+ sing = (singFun2 @AttrSym0) SAttr+ instance SingI d =>+ SingI (AttrSym1 (d :: [AChar]) :: (~>) U Attribute) where+ sing = (singFun1 @(AttrSym1 (d :: [AChar]))) (SAttr (sing @d))+ instance SingI1 (AttrSym1 :: [AChar] -> (~>) U Attribute) where+ liftSing (s :: Sing (d :: [AChar]))+ = (singFun1 @(AttrSym1 (d :: [AChar]))) (SAttr s)+ instance SingI n => SingI (Sch (n :: [Attribute])) where+ sing = SSch sing+ instance SingI1 Sch where+ liftSing = SSch instance SingI (SchSym0 :: (~>) [Attribute] Schema) where sing = (singFun1 @SchSym0) SSch GradingClient/Database.hs:0:0:: Splicing declarations
tests/compile-and-dump/GradingClient/Database.hs view
@@ -25,7 +25,7 @@ import Control.Monad import Control.Monad.Except ( throwError ) import Data.Kind (Type)-import Data.List hiding ( tail )+import qualified Data.List as List import Data.Singletons.Base.TH import Prelude hiding ( tail, id ) import Prelude.Singletons hiding ( Lookup, sLookup, LookupSym0, LookupSym1, LookupSym2 )@@ -434,11 +434,11 @@ query (Union ra rb) = do rowsa <- query ra rowsb <- query rb- return $ unionBy eqRow rowsa rowsb+ return $ List.unionBy eqRow rowsa rowsb query (Diff ra rb) = do rowsa <- query ra rowsb <- query rb- return $ deleteFirstsBy eqRow rowsa rowsb+ return $ List.deleteFirstsBy eqRow rowsa rowsb query (Product ra rb) = do rowsa <- query ra rowsb <- query rb
tests/compile-and-dump/InsertionSort/InsertionSortImp.golden view
@@ -27,12 +27,13 @@ fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ (b :: Demote Nat))- = case toSing b :: SomeSing Nat of {- SomeSing c -> SomeSing (SSucc c) }+ = case toSing b :: SomeSing Nat of SomeSing c -> SomeSing (SSucc c) instance SingI Zero where sing = SZero instance SingI n => SingI (Succ (n :: Nat)) where sing = SSucc sing+ instance SingI1 Succ where+ liftSing = SSucc instance SingI (SuccSym0 :: (~>) Nat Nat) where sing = (singFun1 @SuccSym0) SSucc InsertionSort/InsertionSortImp.hs:(0,0)-(0,0): Splicing declarations@@ -164,14 +165,14 @@ Leq ('Succ _) 'Zero = FalseSym0 Leq ('Succ a) ('Succ b) = Apply (Apply LeqSym0 a) b sInsertionSort ::- forall (t :: [Nat]).- Sing t -> Sing (Apply InsertionSortSym0 t :: [Nat])+ forall (t :: [Nat]). Sing t+ -> Sing (Apply InsertionSortSym0 t :: [Nat]) sInsert ::- forall (t :: Nat) (t :: [Nat]).- Sing t -> Sing t -> Sing (Apply (Apply InsertSym0 t) t :: [Nat])+ forall (t :: Nat) (t :: [Nat]). Sing t+ -> Sing t -> Sing (Apply (Apply InsertSym0 t) t :: [Nat]) sLeq ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply LeqSym0 t) t :: Bool)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t -> Sing (Apply (Apply LeqSym0 t) t :: Bool) sInsertionSort SNil = SNil sInsertionSort (SCons (sH :: Sing h) (sT :: Sing t)) = (applySing ((applySing ((singFun2 @InsertSym0) sInsert)) sH))@@ -205,8 +206,14 @@ instance SingI d => SingI (InsertSym1 (d :: Nat) :: (~>) [Nat] [Nat]) where sing = (singFun1 @(InsertSym1 (d :: Nat))) (sInsert (sing @d))+ instance SingI1 (InsertSym1 :: Nat -> (~>) [Nat] [Nat]) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @(InsertSym1 (d :: Nat))) (sInsert s) instance SingI (LeqSym0 :: (~>) Nat ((~>) Nat Bool)) where sing = (singFun2 @LeqSym0) sLeq instance SingI d => SingI (LeqSym1 (d :: Nat) :: (~>) Nat Bool) where sing = (singFun1 @(LeqSym1 (d :: Nat))) (sLeq (sing @d))+ instance SingI1 (LeqSym1 :: Nat -> (~>) Nat Bool) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @(LeqSym1 (d :: Nat))) (sLeq s)
tests/compile-and-dump/Promote/GenDefunSymbols.golden view
@@ -1,8 +1,8 @@ Promote/GenDefunSymbols.hs:0:0:: Splicing declarations genDefunSymbols [''LiftMaybe, ''NatT, ''(:+)] ======>- type LiftMaybeSym0 :: forall (a :: Type) (b :: Type).- (~>) ((~>) a b) ((~>) (Maybe a) (Maybe b))+ type LiftMaybeSym0 :: forall (a :: Type)+ (b :: Type). (~>) ((~>) a b) ((~>) (Maybe a) (Maybe b)) data LiftMaybeSym0 :: (~>) ((~>) a b) ((~>) (Maybe a) (Maybe b)) where LiftMaybeSym0KindInference :: Data.Singletons.SameKind (Apply LiftMaybeSym0 arg) (LiftMaybeSym1 arg) =>@@ -11,8 +11,8 @@ instance Data.Singletons.TH.SuppressUnusedWarnings.SuppressUnusedWarnings LiftMaybeSym0 where Data.Singletons.TH.SuppressUnusedWarnings.suppressUnusedWarnings = snd (((,) LiftMaybeSym0KindInference) ())- type LiftMaybeSym1 :: forall (a :: Type) (b :: Type).- (~>) a b -> (~>) (Maybe a) (Maybe b)+ type LiftMaybeSym1 :: forall (a :: Type) (b :: Type). (~>) a b+ -> (~>) (Maybe a) (Maybe b) data LiftMaybeSym1 (a0123456789876543210 :: (~>) a b) :: (~>) (Maybe a) (Maybe b) where LiftMaybeSym1KindInference :: Data.Singletons.SameKind (Apply (LiftMaybeSym1 a0123456789876543210) arg) (LiftMaybeSym2 a0123456789876543210 arg) =>@@ -21,8 +21,8 @@ instance Data.Singletons.TH.SuppressUnusedWarnings.SuppressUnusedWarnings (LiftMaybeSym1 a0123456789876543210) where Data.Singletons.TH.SuppressUnusedWarnings.suppressUnusedWarnings = snd (((,) LiftMaybeSym1KindInference) ())- type LiftMaybeSym2 :: forall (a :: Type) (b :: Type).- (~>) a b -> Maybe a -> Maybe b+ type LiftMaybeSym2 :: forall (a :: Type) (b :: Type). (~>) a b+ -> Maybe a -> Maybe b type family LiftMaybeSym2 (a0123456789876543210 :: (~>) a b) (a0123456789876543210 :: Maybe a) :: Maybe b where LiftMaybeSym2 a0123456789876543210 a0123456789876543210 = LiftMaybe a0123456789876543210 a0123456789876543210 type ZeroSym0 :: NatT@@ -40,8 +40,8 @@ type SuccSym1 :: NatT -> NatT type family SuccSym1 (a0123456789876543210 :: NatT) :: NatT where SuccSym1 a0123456789876543210 = 'Succ a0123456789876543210- type (:+@#@$) :: (~>) Nat ((~>) Nat Nat)- data (:+@#@$) :: (~>) Nat ((~>) Nat Nat)+ type (:+@#@$) :: (~>) Natural ((~>) Natural Natural)+ data (:+@#@$) :: (~>) Natural ((~>) Natural Natural) where (::+@#@$###) :: Data.Singletons.SameKind (Apply (:+@#@$) arg) ((:+@#@$$) arg) => (:+@#@$) a0123456789876543210@@ -49,8 +49,8 @@ instance Data.Singletons.TH.SuppressUnusedWarnings.SuppressUnusedWarnings (:+@#@$) where Data.Singletons.TH.SuppressUnusedWarnings.suppressUnusedWarnings = snd (((,) (::+@#@$###)) ())- type (:+@#@$$) :: Nat -> (~>) Nat Nat- data (:+@#@$$) (a0123456789876543210 :: Nat) :: (~>) Nat Nat+ type (:+@#@$$) :: Natural -> (~>) Natural Natural+ data (:+@#@$$) (a0123456789876543210 :: Natural) :: (~>) Natural Natural where (::+@#@$$###) :: Data.Singletons.SameKind (Apply ((:+@#@$$) a0123456789876543210) arg) ((:+@#@$$$) a0123456789876543210 arg) => (:+@#@$$) a0123456789876543210 a0123456789876543210@@ -58,6 +58,6 @@ instance Data.Singletons.TH.SuppressUnusedWarnings.SuppressUnusedWarnings ((:+@#@$$) a0123456789876543210) where Data.Singletons.TH.SuppressUnusedWarnings.suppressUnusedWarnings = snd (((,) (::+@#@$$###)) ())- type (:+@#@$$$) :: Nat -> Nat -> Nat- type family (:+@#@$$$) (a0123456789876543210 :: Nat) (a0123456789876543210 :: Nat) :: Nat where+ type (:+@#@$$$) :: Natural -> Natural -> Natural+ type family (:+@#@$$$) (a0123456789876543210 :: Natural) (a0123456789876543210 :: Natural) :: Natural where (:+@#@$$$) a0123456789876543210 a0123456789876543210 = (:+) a0123456789876543210 a0123456789876543210
tests/compile-and-dump/Promote/Newtypes.golden view
@@ -2,7 +2,7 @@ promote [d| newtype Foo = Foo Nat- deriving Eq+ deriving (Eq) newtype Bar = Bar {unBar :: Nat} |] ======> newtype Foo
tests/compile-and-dump/Promote/Prelude.golden view
@@ -1,21 +1,21 @@ Promote/Prelude.hs:(0,0)-(0,0): Splicing declarations promoteOnly- [d| odd :: Nat -> Bool+ [d| odd :: Natural -> Bool odd 0 = False odd n = not . odd $ n - 1 |] ======>- type OddSym0 :: (~>) Nat Bool- data OddSym0 :: (~>) Nat Bool+ type OddSym0 :: (~>) Natural Bool+ data OddSym0 :: (~>) Natural Bool where OddSym0KindInference :: SameKind (Apply OddSym0 arg) (OddSym1 arg) => OddSym0 a0123456789876543210 type instance Apply OddSym0 a0123456789876543210 = Odd a0123456789876543210 instance SuppressUnusedWarnings OddSym0 where suppressUnusedWarnings = snd (((,) OddSym0KindInference) ())- type OddSym1 :: Nat -> Bool- type family OddSym1 (a0123456789876543210 :: Nat) :: Bool where+ type OddSym1 :: Natural -> Bool+ type family OddSym1 (a0123456789876543210 :: Natural) :: Bool where OddSym1 a0123456789876543210 = Odd a0123456789876543210- type Odd :: Nat -> Bool- type family Odd (a :: Nat) :: Bool where+ type Odd :: Natural -> Bool+ type family Odd (a :: Natural) :: Bool where Odd 0 = FalseSym0 Odd n = Apply (Apply ($@#@$) (Apply (Apply (.@#@$) NotSym0) OddSym0)) (Apply (Apply (-@#@$) n) (FromInteger 1))
tests/compile-and-dump/Promote/Prelude.hs view
@@ -102,7 +102,7 @@ replicateTest2b = Proxy $(promoteOnly [d|- odd :: Nat -> Bool+ odd :: Natural -> Bool odd 0 = False odd n = not . odd $ n - 1 |])
tests/compile-and-dump/Singletons/AsPattern.golden view
@@ -253,17 +253,17 @@ sFoo :: forall (t :: [Nat]). Sing t -> Sing (Apply FooSym0 t :: [Nat]) sTup ::- forall (t :: (Nat, Nat)).- Sing t -> Sing (Apply TupSym0 t :: (Nat, Nat))+ forall (t :: (Nat, Nat)). Sing t+ -> Sing (Apply TupSym0 t :: (Nat, Nat)) sBaz_ ::- forall (t :: Maybe Baz).- Sing t -> Sing (Apply Baz_Sym0 t :: Maybe Baz)+ forall (t :: Maybe Baz). Sing t+ -> Sing (Apply Baz_Sym0 t :: Maybe Baz) sBar ::- forall (t :: Maybe Nat).- Sing t -> Sing (Apply BarSym0 t :: Maybe Nat)+ forall (t :: Maybe Nat). Sing t+ -> Sing (Apply BarSym0 t :: Maybe Nat) sMaybePlus ::- forall (t :: Maybe Nat).- Sing t -> Sing (Apply MaybePlusSym0 t :: Maybe Nat)+ forall (t :: Maybe Nat). Sing t+ -> Sing (Apply MaybePlusSym0 t :: Maybe Nat) sFoo SNil = let sP :: Sing @_ Let0123456789876543210PSym0@@ -373,19 +373,34 @@ = case (((,,) (toSing b :: SomeSing Nat)) (toSing b :: SomeSing Nat)) (toSing b :: SomeSing Nat)- of {+ of (,,) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing (((SBaz c) c) c) }+ -> SomeSing (((SBaz c) c) c) instance (SingI n, SingI n, SingI n) => SingI (Baz (n :: Nat) (n :: Nat) (n :: Nat)) where sing = ((SBaz sing) sing) sing+ instance (SingI n, SingI n) =>+ SingI1 (Baz (n :: Nat) (n :: Nat)) where+ liftSing = (SBaz sing) sing+ instance SingI n => SingI2 (Baz (n :: Nat)) where+ liftSing2 = SBaz sing instance SingI (BazSym0 :: (~>) Nat ((~>) Nat ((~>) Nat Baz))) where sing = (singFun3 @BazSym0) SBaz instance SingI d => SingI (BazSym1 (d :: Nat) :: (~>) Nat ((~>) Nat Baz)) where sing = (singFun2 @(BazSym1 (d :: Nat))) (SBaz (sing @d))+ instance SingI1 (BazSym1 :: Nat -> (~>) Nat ((~>) Nat Baz)) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun2 @(BazSym1 (d :: Nat))) (SBaz s) instance (SingI d, SingI d) => SingI (BazSym2 (d :: Nat) (d :: Nat) :: (~>) Nat Baz) where sing = (singFun1 @(BazSym2 (d :: Nat) (d :: Nat))) ((SBaz (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (BazSym2 (d :: Nat) :: Nat -> (~>) Nat Baz) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @(BazSym2 (d :: Nat) (d :: Nat))) ((SBaz (sing @d)) s)+ instance SingI2 (BazSym2 :: Nat -> Nat -> (~>) Nat Baz) where+ liftSing2 (s :: Sing (d :: Nat)) (s :: Sing (d :: Nat))+ = (singFun1 @(BazSym2 (d :: Nat) (d :: Nat))) ((SBaz s) s)
tests/compile-and-dump/Singletons/BoundedDeriving.golden view
@@ -2,13 +2,13 @@ singletons [d| data Foo1 = Foo1- deriving Bounded+ deriving (Bounded) data Foo2 = A | B | C | D | E- deriving Bounded+ deriving (Bounded) data Foo3 a = Foo3 a- deriving Bounded+ deriving (Bounded) data Foo4 (a :: Type) (b :: Type) = Foo41 | Foo42 deriving Bounded@@ -60,12 +60,12 @@ type Foo3Sym1 :: forall a. a -> Foo3 a type family Foo3Sym1 (a0123456789876543210 :: a) :: Foo3 a where Foo3Sym1 a0123456789876543210 = Foo3 a0123456789876543210- type Foo41Sym0 :: forall (a :: Type) (b :: Type).- Foo4 (a :: Type) (b :: Type)+ type Foo41Sym0 :: forall (a :: Type)+ (b :: Type). Foo4 (a :: Type) (b :: Type) type family Foo41Sym0 :: Foo4 (a :: Type) (b :: Type) where Foo41Sym0 = Foo41- type Foo42Sym0 :: forall (a :: Type) (b :: Type).- Foo4 (a :: Type) (b :: Type)+ type Foo42Sym0 :: forall (a :: Type)+ (b :: Type). Foo4 (a :: Type) (b :: Type) type family Foo42Sym0 :: Foo4 (a :: Type) (b :: Type) where Foo42Sym0 = Foo42 type PairSym0 :: (~>) Bool ((~>) Bool Pair)@@ -196,8 +196,7 @@ type Demote (Foo3 a) = Foo3 (Demote a) fromSing (SFoo3 b) = Foo3 (fromSing b) toSing (Foo3 (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SFoo3 c) }+ = case toSing b :: SomeSing a of SomeSing c -> SomeSing (SFoo3 c) data SFoo4 :: forall (a :: Type) (b :: Type). Foo4 a b -> Type where SFoo41 :: forall (a :: Type) (b :: Type).@@ -222,8 +221,8 @@ toSing (Pair (b :: Demote Bool) (b :: Demote Bool)) = case ((,) (toSing b :: SomeSing Bool)) (toSing b :: SomeSing Bool)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SPair c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SPair c) c) instance SBounded Foo1 where sMinBound :: Sing (MinBoundSym0 :: Foo1) sMaxBound :: Sing (MaxBoundSym0 :: Foo1)@@ -267,6 +266,8 @@ sing = SE instance SingI n => SingI (Foo3 (n :: a)) where sing = SFoo3 sing+ instance SingI1 Foo3 where+ liftSing = SFoo3 instance SingI (Foo3Sym0 :: (~>) a (Foo3 a)) where sing = (singFun1 @Foo3Sym0) SFoo3 instance SingI Foo41 where@@ -276,8 +277,15 @@ instance (SingI n, SingI n) => SingI (Pair (n :: Bool) (n :: Bool)) where sing = (SPair sing) sing+ instance SingI n => SingI1 (Pair (n :: Bool)) where+ liftSing = SPair sing+ instance SingI2 Pair where+ liftSing2 = SPair instance SingI (PairSym0 :: (~>) Bool ((~>) Bool Pair)) where sing = (singFun2 @PairSym0) SPair instance SingI d => SingI (PairSym1 (d :: Bool) :: (~>) Bool Pair) where sing = (singFun1 @(PairSym1 (d :: Bool))) (SPair (sing @d))+ instance SingI1 (PairSym1 :: Bool -> (~>) Bool Pair) where+ liftSing (s :: Sing (d :: Bool))+ = (singFun1 @(PairSym1 (d :: Bool))) (SPair s)
tests/compile-and-dump/Singletons/BoxUnBox.golden view
@@ -46,9 +46,10 @@ type Demote (Box a) = Box (Demote a) fromSing (SFBox b) = FBox (fromSing b) toSing (FBox (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SFBox c) }+ = case toSing b :: SomeSing a of SomeSing c -> SomeSing (SFBox c) instance SingI n => SingI (FBox (n :: a)) where sing = SFBox sing+ instance SingI1 FBox where+ liftSing = SFBox instance SingI (FBoxSym0 :: (~>) a (Box a)) where sing = (singFun1 @FBoxSym0) SFBox
tests/compile-and-dump/Singletons/CaseExpressions.golden view
@@ -6,18 +6,18 @@ Just y -> y Nothing -> d foo2 :: a -> Maybe a -> a- foo2 d _ = case (Just d) of { Just y -> y }+ foo2 d _ = case (Just d) of Just y -> y foo3 :: a -> b -> a- foo3 a b = case (a, b) of { (p, _) -> p }+ foo3 a b = case (a, b) of (p, _) -> p foo4 :: forall a. a -> a foo4 x- = case x of {+ = case x of y -> let z :: a z = y- in z }+ in z foo5 :: a -> a- foo5 x = case x of { y -> (\ _ -> x) y } |]+ foo5 x = case x of y -> (\ _ -> x) y |] ======> foo1 :: a -> Maybe a -> a foo1 d x@@ -25,18 +25,18 @@ Just y -> y Nothing -> d foo2 :: a -> Maybe a -> a- foo2 d _ = case Just d of { Just y -> y }+ foo2 d _ = case Just d of Just y -> y foo3 :: a -> b -> a- foo3 a b = case (a, b) of { (p, _) -> p }+ foo3 a b = case (a, b) of (p, _) -> p foo4 :: forall a. a -> a foo4 x- = case x of {+ = case x of y -> let z :: a z = y- in z }+ in z foo5 :: a -> a- foo5 x = case x of { y -> (\ _ -> x) y }+ foo5 x = case x of y -> (\ _ -> x) y type family Case_0123456789876543210 arg_0123456789876543210 y x t where Case_0123456789876543210 arg_0123456789876543210 y x _ = x type family Lambda_0123456789876543210 y x arg_0123456789876543210 where@@ -236,35 +236,35 @@ sFoo5 :: forall a (t :: a). Sing t -> Sing (Apply Foo5Sym0 t :: a) sFoo4 :: forall a (t :: a). Sing t -> Sing (Apply Foo4Sym0 t :: a) sFoo3 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo3Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo3Sym0 t) t :: a) sFoo2 ::- forall a (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a)+ forall a (t :: a) (t :: Maybe a). Sing t+ -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a) sFoo1 ::- forall a (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a)+ forall a (t :: a) (t :: Maybe a). Sing t+ -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a) sFoo5 (sX :: Sing x) = (id @(Sing (Case_0123456789876543210 x x :: a)))- (case sX of {+ (case sX of (sY :: Sing y) -> (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 y) x)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 y x arg_0123456789876543210)))- (case sArg_0123456789876543210 of { _ -> sX }) })))- sY })+ (case sArg_0123456789876543210 of _ -> sX))))+ sY) sFoo4 (sX :: Sing x) = (id @(Sing (Case_0123456789876543210 x x :: a)))- (case sX of {+ (case sX of (sY :: Sing y) -> let sZ :: Sing (Let0123456789876543210ZSym2 y x :: a) sZ = sY- in sZ })+ in sZ) sFoo3 (sA :: Sing a) (sB :: Sing b) = let sScrutinee_0123456789876543210 ::@@ -274,8 +274,8 @@ in (id @(Sing (Case_0123456789876543210 a b (Let0123456789876543210Scrutinee_0123456789876543210Sym2 a b) :: a)))- (case sScrutinee_0123456789876543210 of {- STuple2 (sP :: Sing p) _ -> sP })+ (case sScrutinee_0123456789876543210 of+ STuple2 (sP :: Sing p) _ -> sP) sFoo2 (sD :: Sing d) _ = let sScrutinee_0123456789876543210 ::@@ -285,8 +285,7 @@ in (id @(Sing (Case_0123456789876543210 d (Let0123456789876543210Scrutinee_0123456789876543210Sym1 d) :: a)))- (case sScrutinee_0123456789876543210 of {- SJust (sY :: Sing y) -> sY })+ (case sScrutinee_0123456789876543210 of SJust (sY :: Sing y) -> sY) sFoo1 (sD :: Sing d) (sX :: Sing x) = (id @(Sing (Case_0123456789876543210 d x x :: a))) (case sX of@@ -300,13 +299,22 @@ sing = (singFun2 @Foo3Sym0) sFoo3 instance SingI d => SingI (Foo3Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Foo3Sym1 (d :: a))) (sFoo3 (sing @d))+ instance SingI1 (Foo3Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo3Sym1 (d :: a))) (sFoo3 s) instance SingI (Foo2Sym0 :: (~>) a ((~>) (Maybe a) a)) where sing = (singFun2 @Foo2Sym0) sFoo2 instance SingI d => SingI (Foo2Sym1 (d :: a) :: (~>) (Maybe a) a) where sing = (singFun1 @(Foo2Sym1 (d :: a))) (sFoo2 (sing @d))+ instance SingI1 (Foo2Sym1 :: a -> (~>) (Maybe a) a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo2Sym1 (d :: a))) (sFoo2 s) instance SingI (Foo1Sym0 :: (~>) a ((~>) (Maybe a) a)) where sing = (singFun2 @Foo1Sym0) sFoo1 instance SingI d => SingI (Foo1Sym1 (d :: a) :: (~>) (Maybe a) a) where sing = (singFun1 @(Foo1Sym1 (d :: a))) (sFoo1 (sing @d))+ instance SingI1 (Foo1Sym1 :: a -> (~>) (Maybe a) a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo1Sym1 (d :: a))) (sFoo1 s)
tests/compile-and-dump/Singletons/Classes.golden view
@@ -184,8 +184,8 @@ type family TFHelper_0123456789876543210Sym2 (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: Ordering where TFHelper_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210 class PMyOrd a where- type Mycompare (arg :: a) (arg :: a) :: Ordering- type (<=>) (arg :: a) (arg :: a) :: Ordering+ type family Mycompare (arg :: a) (arg :: a) :: Ordering+ type family (<=>) (arg :: a) (arg :: a) :: Ordering type (<=>) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a type Mycompare_0123456789876543210 :: Nat -> Nat -> Ordering type family Mycompare_0123456789876543210 (a :: Nat) (a :: Nat) :: Ordering where@@ -298,12 +298,11 @@ instance PEq Foo2 where type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a sFooCompare ::- forall (t :: Foo) (t :: Foo).- Sing t- -> Sing t -> Sing (Apply (Apply FooCompareSym0 t) t :: Ordering)+ forall (t :: Foo) (t :: Foo). Sing t+ -> Sing t -> Sing (Apply (Apply FooCompareSym0 t) t :: Ordering) sConst ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply ConstSym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply ConstSym0 t) t :: a) sFooCompare SA SA = SEQ sFooCompare SA SB = SLT sFooCompare SB SB = SGT@@ -315,10 +314,16 @@ SingI (FooCompareSym1 (d :: Foo) :: (~>) Foo Ordering) where sing = (singFun1 @(FooCompareSym1 (d :: Foo))) (sFooCompare (sing @d))+ instance SingI1 (FooCompareSym1 :: Foo -> (~>) Foo Ordering) where+ liftSing (s :: Sing (d :: Foo))+ = (singFun1 @(FooCompareSym1 (d :: Foo))) (sFooCompare s) instance SingI (ConstSym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @ConstSym0) sConst instance SingI d => SingI (ConstSym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(ConstSym1 (d :: a))) (sConst (sing @d))+ instance SingI1 (ConstSym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(ConstSym1 (d :: a))) (sConst s) data SFoo :: Foo -> GHC.Types.Type where SA :: SFoo (A :: Foo)@@ -343,18 +348,17 @@ toSing G = SomeSing SG class SMyOrd a where sMycompare ::- forall (t :: a) (t :: a).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)+ forall (t :: a) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering) (%<=>) ::- forall (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (<=>@#@$) t) t :: Ordering)+ forall (t :: a) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply (<=>@#@$) t) t :: Ordering) infix 4 %<=> default (%<=>) ::- forall (t :: a) (t :: a).- ((Apply (Apply (<=>@#@$) t) t :: Ordering)- ~ Apply (Apply TFHelper_0123456789876543210Sym0 t) t) =>- Sing t -> Sing t -> Sing (Apply (Apply (<=>@#@$) t) t :: Ordering)+ forall (t :: a)+ (t :: a). ((Apply (Apply (<=>@#@$) t) t :: Ordering)+ ~ Apply (Apply TFHelper_0123456789876543210Sym0 t) t) =>+ Sing t -> Sing t -> Sing (Apply (Apply (<=>@#@$) t) t :: Ordering) (%<=>) (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -364,9 +368,9 @@ sA_0123456789876543210 instance SMyOrd Nat where sMycompare ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t+ -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering) sMycompare SZero SZero = SEQ sMycompare SZero (SSucc _) = SLT sMycompare (SSucc _) SZero = SGT@@ -376,17 +380,16 @@ sN instance SMyOrd () where sMycompare ::- forall (t :: ()) (t :: ()).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)+ forall (t :: ()) (t :: ()). Sing t+ -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering) sMycompare _ (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((applySing ((singFun2 @ConstSym0) sConst)) SEQ)) sA_0123456789876543210 instance SMyOrd Foo where sMycompare ::- forall (t :: Foo) (t :: Foo).- Sing t- -> Sing t -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering)+ forall (t :: Foo) (t :: Foo). Sing t+ -> Sing t+ -> Sing (Apply (Apply MycompareSym0 t) t :: Ordering) sMycompare (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -396,11 +399,10 @@ sA_0123456789876543210 instance SEq Foo2 where (%==) ::- forall (t1 :: Foo2) (t2 :: Foo2).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Foo2 ((~>) Foo2 Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Foo2) (t2 :: Foo2). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Foo2 ((~>) Foo2 Bool)+ -> GHC.Types.Type) t1) t2) (%==) SF SF = STrue (%==) SG SG = STrue (%==) SF SG = SFalse@@ -420,11 +422,19 @@ SingI (MycompareSym1 (d :: a) :: (~>) a Ordering) where sing = (singFun1 @(MycompareSym1 (d :: a))) (sMycompare (sing @d)) instance SMyOrd a =>+ SingI1 (MycompareSym1 :: a -> (~>) a Ordering) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(MycompareSym1 (d :: a))) (sMycompare s)+ instance SMyOrd a => SingI ((<=>@#@$) :: (~>) a ((~>) a Ordering)) where sing = (singFun2 @(<=>@#@$)) (%<=>) instance (SMyOrd a, SingI d) => SingI ((<=>@#@$$) (d :: a) :: (~>) a Ordering) where sing = (singFun1 @((<=>@#@$$) (d :: a))) ((%<=>) (sing @d))+ instance SMyOrd a =>+ SingI1 ((<=>@#@$$) :: a -> (~>) a Ordering) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((<=>@#@$$) (d :: a))) ((%<=>) s) Singletons/Classes.hs:(0,0)-(0,0): Splicing declarations promote [d| instance Ord Foo2 where@@ -572,15 +582,14 @@ fromSing (SSucc' b) = Succ' (fromSing b) toSing Zero' = SomeSing SZero' toSing (Succ' (b :: Demote Nat'))- = case toSing b :: SomeSing Nat' of {- SomeSing c -> SomeSing (SSucc' c) }+ = case toSing b :: SomeSing Nat' of+ SomeSing c -> SomeSing (SSucc' c) instance SMyOrd Nat' where sMycompare ::- forall (t :: Nat') (t :: Nat').- Sing t- -> Sing t- -> Sing (Apply (Apply (MycompareSym0 :: TyFun Nat' ((~>) Nat' Ordering)- -> GHC.Types.Type) t) t)+ forall (t :: Nat') (t :: Nat'). Sing t+ -> Sing t+ -> Sing (Apply (Apply (MycompareSym0 :: TyFun Nat' ((~>) Nat' Ordering)+ -> GHC.Types.Type) t) t) sMycompare SZero' SZero' = SEQ sMycompare SZero' (SSucc' _) = SLT sMycompare (SSucc' _) SZero' = SGT@@ -592,5 +601,7 @@ sing = SZero' instance SingI n => SingI (Succ' (n :: Nat')) where sing = SSucc' sing+ instance SingI1 Succ' where+ liftSing = SSucc' instance SingI (Succ'Sym0 :: (~>) Nat' Nat') where sing = (singFun1 @Succ'Sym0) SSucc'
tests/compile-and-dump/Singletons/Classes2.golden view
@@ -71,15 +71,14 @@ fromSing (SSuccFoo b) = SuccFoo (fromSing b) toSing ZeroFoo = SomeSing SZeroFoo toSing (SuccFoo (b :: Demote NatFoo))- = case toSing b :: SomeSing NatFoo of {- SomeSing c -> SomeSing (SSuccFoo c) }+ = case toSing b :: SomeSing NatFoo of+ SomeSing c -> SomeSing (SSuccFoo c) instance SMyOrd NatFoo where sMycompare ::- forall (t1 :: NatFoo) (t2 :: NatFoo).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (MycompareSym0 :: TyFun NatFoo ((~>) NatFoo Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: NatFoo) (t2 :: NatFoo). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (MycompareSym0 :: TyFun NatFoo ((~>) NatFoo Ordering)+ -> GHC.Types.Type) t1) t2) sMycompare SZeroFoo SZeroFoo = SEQ sMycompare SZeroFoo (SSuccFoo _) = SLT sMycompare (SSuccFoo _) SZeroFoo = SGT@@ -91,5 +90,7 @@ sing = SZeroFoo instance SingI n => SingI (SuccFoo (n :: NatFoo)) where sing = SSuccFoo sing+ instance SingI1 SuccFoo where+ liftSing = SSuccFoo instance SingI (SuccFooSym0 :: (~>) NatFoo NatFoo) where sing = (singFun1 @SuccFooSym0) SSuccFoo
tests/compile-and-dump/Singletons/Contains.golden view
@@ -31,9 +31,9 @@ Contains _ '[] = FalseSym0 Contains elt ('(:) h t) = Apply (Apply (||@#@$) (Apply (Apply (==@#@$) elt) h)) (Apply (Apply ContainsSym0 elt) t) sContains ::- forall a (t :: a) (t :: [a]).- SEq a =>- Sing t -> Sing t -> Sing (Apply (Apply ContainsSym0 t) t :: Bool)+ forall a (t :: a) (t :: [a]). SEq a =>+ Sing t+ -> Sing t -> Sing (Apply (Apply ContainsSym0 t) t :: Bool) sContains _ SNil = SFalse sContains (sElt :: Sing elt) (SCons (sH :: Sing h) (sT :: Sing t)) = (applySing@@ -48,3 +48,6 @@ instance (SEq a, SingI d) => SingI (ContainsSym1 (d :: a) :: (~>) [a] Bool) where sing = (singFun1 @(ContainsSym1 (d :: a))) (sContains (sing @d))+ instance SEq a => SingI1 (ContainsSym1 :: a -> (~>) [a] Bool) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(ContainsSym1 (d :: a))) (sContains s)
tests/compile-and-dump/Singletons/DataValues.golden view
@@ -51,12 +51,12 @@ Complex = Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0 type family Pr where Pr = Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:@#@$) ZeroSym0) NilSym0)- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Pair a b -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Pair a b) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Pair a b) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 p_0123456789876543210 (Pair arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "Pair ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Pair a b) ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Pair a b) ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Pair a b) ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Pair a b) ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -64,9 +64,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) (Pair a b) ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) (Pair a b) ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (Pair a b) ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -74,9 +74,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Pair a b -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Pair a b) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Pair a b) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -84,9 +84,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Pair a b -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Pair a b) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Pair a b) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow (Pair a b) where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -131,16 +131,17 @@ type Demote (Pair a b) = Pair (Demote a) (Demote b) fromSing (SPair b b) = (Pair (fromSing b)) (fromSing b) toSing (Pair (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SPair c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SPair c) c) instance (SShow a, SShow b) => SShow (Pair a b) where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Pair a b) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (Pair a b) ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Pair a b)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (Pair a b) ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec (sP_0123456789876543210 :: Sing p_0123456789876543210) (SPair (sArg_0123456789876543210 :: Sing arg_0123456789876543210)@@ -175,8 +176,15 @@ Show (SPair (z :: Pair a b)) instance (SingI n, SingI n) => SingI (Pair (n :: a) (n :: b)) where sing = (SPair sing) sing+ instance SingI n => SingI1 (Pair (n :: a)) where+ liftSing = SPair sing+ instance SingI2 Pair where+ liftSing2 = SPair instance SingI (PairSym0 :: (~>) a ((~>) b (Pair a b))) where sing = (singFun2 @PairSym0) SPair instance SingI d => SingI (PairSym1 (d :: a) :: (~>) b (Pair a b)) where sing = (singFun1 @(PairSym1 (d :: a))) (SPair (sing @d))+ instance SingI1 (PairSym1 :: a -> (~>) b (Pair a b)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(PairSym1 (d :: a))) (SPair s)
tests/compile-and-dump/Singletons/Empty.golden view
@@ -6,5 +6,5 @@ type instance Sing @Empty = SEmpty instance SingKind Empty where type Demote Empty = Empty- fromSing x = case x of- toSing x = SomeSing (case x of)+ fromSing x = case x of {}+ toSing x = SomeSing (case x of {})
tests/compile-and-dump/Singletons/EmptyShowDeriving.golden view
@@ -7,12 +7,12 @@ data Foo deriving instance Show Foo type family Case_0123456789876543210 v_0123456789876543210 a_0123456789876543210 t where- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Foo -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Foo) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Foo) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210 _ v_0123456789876543210 a_0123456789876543210 = Apply (Case_0123456789876543210 v_0123456789876543210 a_0123456789876543210 v_0123456789876543210) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -20,9 +20,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -30,9 +30,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Foo -> (~>) GHC.Types.Symbol GHC.Types.Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo) :: (~>) GHC.Types.Symbol GHC.Types.Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo) :: (~>) GHC.Types.Symbol GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -40,9 +40,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Foo -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow Foo where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -50,16 +50,17 @@ type instance Sing @Foo = SFoo instance SingKind Foo where type Demote Foo = Foo- fromSing x = case x of- toSing x = SomeSing (case x of)+ fromSing x = case x of {}+ toSing x = SomeSing (case x of {}) instance SShow Foo where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Foo) (t3 :: GHC.Types.Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Foo)+ (t3 :: GHC.Types.Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) Foo ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec _ (sV_0123456789876543210 :: Sing v_0123456789876543210)@@ -67,6 +68,6 @@ = (applySing ((id @(Sing (Case_0123456789876543210 v_0123456789876543210 a_0123456789876543210 v_0123456789876543210)))- (case sV_0123456789876543210 of)))+ (case sV_0123456789876543210 of {}))) sA_0123456789876543210 deriving instance Show (SFoo (z :: Foo))
tests/compile-and-dump/Singletons/EnumDeriving.golden view
@@ -33,11 +33,11 @@ type family Case_0123456789876543210 n t where Case_0123456789876543210 n 'True = BarSym0 Case_0123456789876543210 n 'False = Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 1))- type ToEnum_0123456789876543210 :: GHC.Types.Nat -> Foo- type family ToEnum_0123456789876543210 (a :: GHC.Types.Nat) :: Foo where+ type ToEnum_0123456789876543210 :: GHC.Num.Natural.Natural -> Foo+ type family ToEnum_0123456789876543210 (a :: GHC.Num.Natural.Natural) :: Foo where ToEnum_0123456789876543210 n = Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0))- type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat Foo- data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat Foo+ type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural Foo+ data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural Foo where ToEnum_0123456789876543210Sym0KindInference :: SameKind (Apply ToEnum_0123456789876543210Sym0 arg) (ToEnum_0123456789876543210Sym1 arg) => ToEnum_0123456789876543210Sym0 a0123456789876543210@@ -45,16 +45,17 @@ instance SuppressUnusedWarnings ToEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ToEnum_0123456789876543210Sym0KindInference) ())- type ToEnum_0123456789876543210Sym1 :: GHC.Types.Nat -> Foo- type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: Foo where+ type ToEnum_0123456789876543210Sym1 :: GHC.Num.Natural.Natural+ -> Foo+ type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: Foo where ToEnum_0123456789876543210Sym1 a0123456789876543210 = ToEnum_0123456789876543210 a0123456789876543210- type FromEnum_0123456789876543210 :: Foo -> GHC.Types.Nat- type family FromEnum_0123456789876543210 (a :: Foo) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210 :: Foo -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210 (a :: Foo) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210 Bar = FromInteger 0 FromEnum_0123456789876543210 Baz = FromInteger 1 FromEnum_0123456789876543210 Bum = FromInteger 2- type FromEnum_0123456789876543210Sym0 :: (~>) Foo GHC.Types.Nat- data FromEnum_0123456789876543210Sym0 :: (~>) Foo GHC.Types.Nat+ type FromEnum_0123456789876543210Sym0 :: (~>) Foo GHC.Num.Natural.Natural+ data FromEnum_0123456789876543210Sym0 :: (~>) Foo GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym0KindInference :: SameKind (Apply FromEnum_0123456789876543210Sym0 arg) (FromEnum_0123456789876543210Sym1 arg) => FromEnum_0123456789876543210Sym0 a0123456789876543210@@ -62,8 +63,9 @@ instance SuppressUnusedWarnings FromEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) FromEnum_0123456789876543210Sym0KindInference) ())- type FromEnum_0123456789876543210Sym1 :: Foo -> GHC.Types.Nat- type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: Foo) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210Sym1 :: Foo+ -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: Foo) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym1 a0123456789876543210 = FromEnum_0123456789876543210 a0123456789876543210 instance PEnum Foo where type ToEnum a = Apply ToEnum_0123456789876543210Sym0 a@@ -95,15 +97,13 @@ toSing Q2 = SomeSing SQ2 instance SEnum Foo where sToEnum ::- forall (t :: GHC.Types.Nat).- Sing t- -> Sing (Apply (Data.Singletons.Base.Enum.ToEnumSym0 :: TyFun GHC.Types.Nat Foo- -> GHC.Types.Type) t)+ forall (t :: GHC.Num.Natural.Natural). Sing t+ -> Sing (Apply (Data.Singletons.Base.Enum.ToEnumSym0 :: TyFun GHC.Num.Natural.Natural Foo+ -> GHC.Types.Type) t) sFromEnum ::- forall (t :: Foo).- Sing t- -> Sing (Apply (Data.Singletons.Base.Enum.FromEnumSym0 :: TyFun Foo GHC.Types.Nat- -> GHC.Types.Type) t)+ forall (t :: Foo). Sing t+ -> Sing (Apply (Data.Singletons.Base.Enum.FromEnumSym0 :: TyFun Foo GHC.Num.Natural.Natural+ -> GHC.Types.Type) t) sToEnum (sN :: Sing n) = (id @(Sing (Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0)))))@@ -151,11 +151,11 @@ type family Case_0123456789876543210 n t where Case_0123456789876543210 n 'True = Q1Sym0 Case_0123456789876543210 n 'False = Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 1))- type ToEnum_0123456789876543210 :: GHC.Types.Nat -> Quux- type family ToEnum_0123456789876543210 (a :: GHC.Types.Nat) :: Quux where+ type ToEnum_0123456789876543210 :: GHC.Num.Natural.Natural -> Quux+ type family ToEnum_0123456789876543210 (a :: GHC.Num.Natural.Natural) :: Quux where ToEnum_0123456789876543210 n = Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0))- type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat Quux- data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat Quux+ type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural Quux+ data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural Quux where ToEnum_0123456789876543210Sym0KindInference :: SameKind (Apply ToEnum_0123456789876543210Sym0 arg) (ToEnum_0123456789876543210Sym1 arg) => ToEnum_0123456789876543210Sym0 a0123456789876543210@@ -163,15 +163,17 @@ instance SuppressUnusedWarnings ToEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ToEnum_0123456789876543210Sym0KindInference) ())- type ToEnum_0123456789876543210Sym1 :: GHC.Types.Nat -> Quux- type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: Quux where+ type ToEnum_0123456789876543210Sym1 :: GHC.Num.Natural.Natural+ -> Quux+ type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: Quux where ToEnum_0123456789876543210Sym1 a0123456789876543210 = ToEnum_0123456789876543210 a0123456789876543210- type FromEnum_0123456789876543210 :: Quux -> GHC.Types.Nat- type family FromEnum_0123456789876543210 (a :: Quux) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210 :: Quux+ -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210 (a :: Quux) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210 'Q1 = FromInteger 0 FromEnum_0123456789876543210 'Q2 = FromInteger 1- type FromEnum_0123456789876543210Sym0 :: (~>) Quux GHC.Types.Nat- data FromEnum_0123456789876543210Sym0 :: (~>) Quux GHC.Types.Nat+ type FromEnum_0123456789876543210Sym0 :: (~>) Quux GHC.Num.Natural.Natural+ data FromEnum_0123456789876543210Sym0 :: (~>) Quux GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym0KindInference :: SameKind (Apply FromEnum_0123456789876543210Sym0 arg) (FromEnum_0123456789876543210Sym1 arg) => FromEnum_0123456789876543210Sym0 a0123456789876543210@@ -179,23 +181,22 @@ instance SuppressUnusedWarnings FromEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) FromEnum_0123456789876543210Sym0KindInference) ())- type FromEnum_0123456789876543210Sym1 :: Quux -> GHC.Types.Nat- type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: Quux) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210Sym1 :: Quux+ -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: Quux) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym1 a0123456789876543210 = FromEnum_0123456789876543210 a0123456789876543210 instance PEnum Quux where type ToEnum a = Apply ToEnum_0123456789876543210Sym0 a type FromEnum a = Apply FromEnum_0123456789876543210Sym0 a instance SEnum Quux where sToEnum ::- forall (t :: GHC.Types.Nat).- Sing t- -> Sing (Apply (Data.Singletons.Base.Enum.ToEnumSym0 :: TyFun GHC.Types.Nat Quux- -> GHC.Types.Type) t)+ forall (t :: GHC.Num.Natural.Natural). Sing t+ -> Sing (Apply (Data.Singletons.Base.Enum.ToEnumSym0 :: TyFun GHC.Num.Natural.Natural Quux+ -> GHC.Types.Type) t) sFromEnum ::- forall (t :: Quux).- Sing t- -> Sing (Apply (Data.Singletons.Base.Enum.FromEnumSym0 :: TyFun Quux GHC.Types.Nat- -> GHC.Types.Type) t)+ forall (t :: Quux). Sing t+ -> Sing (Apply (Data.Singletons.Base.Enum.FromEnumSym0 :: TyFun Quux GHC.Num.Natural.Natural+ -> GHC.Types.Type) t) sToEnum (sN :: Sing n) = (id @(Sing (Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0)))))
tests/compile-and-dump/Singletons/EqInstances.golden view
@@ -32,11 +32,10 @@ type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a instance SEq Foo => SEq Foo where (%==) ::- forall (t1 :: Foo) (t2 :: Foo).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Foo ((~>) Foo Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Foo) (t2 :: Foo). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Foo ((~>) Foo Bool)+ -> GHC.Types.Type) t1) t2) (%==) SFLeaf SFLeaf = STrue (%==) SFLeaf ((:%+:) _ _) = SFalse (%==) ((:%+:) _ _) SFLeaf = SFalse@@ -81,9 +80,8 @@ type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a instance SEq Empty where (%==) ::- forall (t1 :: Empty) (t2 :: Empty).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Empty ((~>) Empty Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Empty) (t2 :: Empty). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Empty ((~>) Empty Bool)+ -> GHC.Types.Type) t1) t2) (%==) _ _ = STrue
tests/compile-and-dump/Singletons/Fixity.golden view
@@ -63,20 +63,23 @@ (<=>@#@$$$) a0123456789876543210 a0123456789876543210 = (<=>) a0123456789876543210 a0123456789876543210 infix 4 <=>@#@$$$ class PMyOrd a where- type (<=>) (arg :: a) (arg :: a) :: Ordering+ type family (<=>) (arg :: a) (arg :: a) :: Ordering infix 4 %==== (%====) ::- forall a (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (====@#@$) t) t :: a)+ forall a (t :: a) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply (====@#@$) t) t :: a) (%====) (sA :: Sing a) _ = sA instance SingI ((====@#@$) :: (~>) a ((~>) a a)) where sing = (singFun2 @(====@#@$)) (%====) instance SingI d => SingI ((====@#@$$) (d :: a) :: (~>) a a) where sing = (singFun1 @((====@#@$$) (d :: a))) ((%====) (sing @d))+ instance SingI1 ((====@#@$$) :: a -> (~>) a a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((====@#@$$) (d :: a))) ((%====) s) class SMyOrd a where (%<=>) ::- forall (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (<=>@#@$) t) t :: Ordering)+ forall (t :: a) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply (<=>@#@$) t) t :: Ordering) infix 4 %<=> instance SMyOrd a => SingI ((<=>@#@$) :: (~>) a ((~>) a Ordering)) where@@ -84,3 +87,7 @@ instance (SMyOrd a, SingI d) => SingI ((<=>@#@$$) (d :: a) :: (~>) a Ordering) where sing = (singFun1 @((<=>@#@$$) (d :: a))) ((%<=>) (sing @d))+ instance SMyOrd a =>+ SingI1 ((<=>@#@$$) :: a -> (~>) a Ordering) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((<=>@#@$$) (d :: a))) ((%<=>) s)
tests/compile-and-dump/Singletons/FunDeps.golden view
@@ -6,7 +6,7 @@ meth :: a -> a l2r :: a -> b - instance FD Bool Nat where+ instance FD Bool Natural where meth = not l2r False = 0 l2r True = 1 |]@@ -14,7 +14,7 @@ class FD a b | a -> b where meth :: a -> a l2r :: a -> b- instance FD Bool Nat where+ instance FD Bool Natural where meth = not l2r False = 0 l2r True = 1@@ -46,8 +46,8 @@ type family L2rSym1 (a0123456789876543210 :: a) :: b where L2rSym1 a0123456789876543210 = L2r a0123456789876543210 class PFD a b | a -> b where- type Meth (arg :: a) :: a- type L2r (arg :: a) :: b+ type family Meth (arg :: a) :: a+ type family L2r (arg :: a) :: b type Meth_0123456789876543210 :: Bool -> Bool type family Meth_0123456789876543210 (a :: Bool) :: Bool where Meth_0123456789876543210 a_0123456789876543210 = Apply NotSym0 a_0123456789876543210@@ -63,12 +63,12 @@ type Meth_0123456789876543210Sym1 :: Bool -> Bool type family Meth_0123456789876543210Sym1 (a0123456789876543210 :: Bool) :: Bool where Meth_0123456789876543210Sym1 a0123456789876543210 = Meth_0123456789876543210 a0123456789876543210- type L2r_0123456789876543210 :: Bool -> Nat- type family L2r_0123456789876543210 (a :: Bool) :: Nat where+ type L2r_0123456789876543210 :: Bool -> Natural+ type family L2r_0123456789876543210 (a :: Bool) :: Natural where L2r_0123456789876543210 'False = FromInteger 0 L2r_0123456789876543210 'True = FromInteger 1- type L2r_0123456789876543210Sym0 :: (~>) Bool Nat- data L2r_0123456789876543210Sym0 :: (~>) Bool Nat+ type L2r_0123456789876543210Sym0 :: (~>) Bool Natural+ data L2r_0123456789876543210Sym0 :: (~>) Bool Natural where L2r_0123456789876543210Sym0KindInference :: SameKind (Apply L2r_0123456789876543210Sym0 arg) (L2r_0123456789876543210Sym1 arg) => L2r_0123456789876543210Sym0 a0123456789876543210@@ -76,10 +76,10 @@ instance SuppressUnusedWarnings L2r_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) L2r_0123456789876543210Sym0KindInference) ())- type L2r_0123456789876543210Sym1 :: Bool -> Nat- type family L2r_0123456789876543210Sym1 (a0123456789876543210 :: Bool) :: Nat where+ type L2r_0123456789876543210Sym1 :: Bool -> Natural+ type family L2r_0123456789876543210Sym1 (a0123456789876543210 :: Bool) :: Natural where L2r_0123456789876543210Sym1 a0123456789876543210 = L2r_0123456789876543210 a0123456789876543210- instance PFD Bool Nat where+ instance PFD Bool Natural where type Meth a = Apply Meth_0123456789876543210Sym0 a type L2r a = Apply L2r_0123456789876543210Sym0 a sT1 :: Sing @_ T1Sym0@@ -87,10 +87,11 @@ class SFD a b | a -> b where sMeth :: forall (t :: a). Sing t -> Sing (Apply MethSym0 t :: a) sL2r :: forall (t :: a). Sing t -> Sing (Apply L2rSym0 t :: b)- instance SFD Bool Nat where+ instance SFD Bool Natural where sMeth :: forall (t :: Bool). Sing t -> Sing (Apply MethSym0 t :: Bool)- sL2r :: forall (t :: Bool). Sing t -> Sing (Apply L2rSym0 t :: Nat)+ sL2r ::+ forall (t :: Bool). Sing t -> Sing (Apply L2rSym0 t :: Natural) sMeth (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((singFun1 @NotSym0) sNot)) sA_0123456789876543210 sL2r SFalse = sFromInteger (sing :: Sing 0)
tests/compile-and-dump/Singletons/FunDeps.hs view
@@ -11,7 +11,7 @@ meth :: a -> a l2r :: a -> b - instance FD Bool Nat where+ instance FD Bool Natural where meth = not l2r False = 0 l2r True = 1
tests/compile-and-dump/Singletons/FunctorLikeDeriving.golden view
@@ -9,8 +9,8 @@ = MkT1 x a (Maybe a) (Maybe (Maybe a)) | MkT2 (Maybe x) deriving (Functor, Foldable, Traversable) data Empty (a :: Type) deriving (Functor, Foldable, Traversable)- type MkT1Sym0 :: forall x a.- (~>) x ((~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))))+ type MkT1Sym0 :: forall x+ a. (~>) x ((~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a)))) data MkT1Sym0 :: (~>) x ((~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a)))) where MkT1Sym0KindInference :: SameKind (Apply MkT1Sym0 arg) (MkT1Sym1 arg) =>@@ -18,8 +18,8 @@ type instance Apply MkT1Sym0 a0123456789876543210 = MkT1Sym1 a0123456789876543210 instance SuppressUnusedWarnings MkT1Sym0 where suppressUnusedWarnings = snd (((,) MkT1Sym0KindInference) ())- type MkT1Sym1 :: forall x a.- x -> (~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a)))+ type MkT1Sym1 :: forall x a. x+ -> (~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))) data MkT1Sym1 (a0123456789876543210 :: x) :: (~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))) where MkT1Sym1KindInference :: SameKind (Apply (MkT1Sym1 a0123456789876543210) arg) (MkT1Sym2 a0123456789876543210 arg) =>@@ -27,8 +27,8 @@ type instance Apply (MkT1Sym1 a0123456789876543210) a0123456789876543210 = MkT1Sym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (MkT1Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) MkT1Sym1KindInference) ())- type MkT1Sym2 :: forall x a.- x -> a -> (~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))+ type MkT1Sym2 :: forall x a. x+ -> a -> (~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a)) data MkT1Sym2 (a0123456789876543210 :: x) (a0123456789876543210 :: a) :: (~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a)) where MkT1Sym2KindInference :: SameKind (Apply (MkT1Sym2 a0123456789876543210 a0123456789876543210) arg) (MkT1Sym3 a0123456789876543210 a0123456789876543210 arg) =>@@ -36,8 +36,8 @@ type instance Apply (MkT1Sym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = MkT1Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (MkT1Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) MkT1Sym2KindInference) ())- type MkT1Sym3 :: forall x a.- x -> a -> Maybe a -> (~>) (Maybe (Maybe a)) (T x a)+ type MkT1Sym3 :: forall x a. x+ -> a -> Maybe a -> (~>) (Maybe (Maybe a)) (T x a) data MkT1Sym3 (a0123456789876543210 :: x) (a0123456789876543210 :: a) (a0123456789876543210 :: Maybe a) :: (~>) (Maybe (Maybe a)) (T x a) where MkT1Sym3KindInference :: SameKind (Apply (MkT1Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210) arg) (MkT1Sym4 a0123456789876543210 a0123456789876543210 a0123456789876543210 arg) =>@@ -45,8 +45,8 @@ type instance Apply (MkT1Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210) a0123456789876543210 = MkT1 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (MkT1Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) MkT1Sym3KindInference) ())- type MkT1Sym4 :: forall x a.- x -> a -> Maybe a -> Maybe (Maybe a) -> T x a+ type MkT1Sym4 :: forall x a. x+ -> a -> Maybe a -> Maybe (Maybe a) -> T x a type family MkT1Sym4 (a0123456789876543210 :: x) (a0123456789876543210 :: a) (a0123456789876543210 :: Maybe a) (a0123456789876543210 :: Maybe (Maybe a)) :: T x a where MkT1Sym4 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 = MkT1 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 type MkT2Sym0 :: forall x a. (~>) (Maybe x) (T x a)@@ -974,31 +974,32 @@ ((((,,,) (toSing b :: SomeSing x)) (toSing b :: SomeSing a)) (toSing b :: SomeSing (Maybe a))) (toSing b :: SomeSing (Maybe (Maybe a)))- of {+ of (,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing ((((SMkT1 c) c) c) c) }+ -> SomeSing ((((SMkT1 c) c) c) c) toSing (MkT2 (b :: Demote (Maybe x)))- = case toSing b :: SomeSing (Maybe x) of {- SomeSing c -> SomeSing (SMkT2 c) }+ = case toSing b :: SomeSing (Maybe x) of+ SomeSing c -> SomeSing (SMkT2 c) data SEmpty :: forall (a :: Type). Empty a -> Type type instance Sing @(Empty a) = SEmpty instance SingKind a => SingKind (Empty a) where type Demote (Empty a) = Empty (Demote a)- fromSing x = case x of- toSing x = SomeSing (case x of)+ fromSing x = case x of {}+ toSing x = SomeSing (case x of {}) instance SFunctor (T x) where sFmap ::- forall (a :: Type) (b :: Type) (t1 :: (~>) a b) (t2 :: T x a).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (FmapSym0 :: TyFun ((~>) a b) ((~>) (T x a) (T x b))- -> Type) t1) t2)+ forall (a :: Type)+ (b :: Type)+ (t1 :: (~>) a b)+ (t2 :: T x a). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (FmapSym0 :: TyFun ((~>) a b) ((~>) (T x a) (T x b))+ -> Type) t1) t2) (%<$) ::- forall (a :: Type) (b :: Type) (t1 :: a) (t2 :: T x b).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((<$@#@$) :: TyFun a ((~>) (T x b) (T x a))- -> Type) t1) t2)+ forall (a :: Type) (b :: Type) (t1 :: a) (t2 :: T x b). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((<$@#@$) :: TyFun a ((~>) (T x b) (T x a))+ -> Type) t1) t2) sFmap (_sf_0123456789876543210 :: Sing _f_0123456789876543210) (SMkT1 (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -1013,9 +1014,9 @@ ((singFun1 @(Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210)) (\ sN_0123456789876543210- -> case sN_0123456789876543210 of {+ -> case sN_0123456789876543210 of (_ :: Sing n_0123456789876543210)- -> sN_0123456789876543210 })))+ -> sN_0123456789876543210))) sA_0123456789876543210))) ((applySing _sf_0123456789876543210) sA_0123456789876543210))) ((applySing@@ -1034,8 +1035,8 @@ ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) a_0123456789876543210)) (\ sN_0123456789876543210- -> case sN_0123456789876543210 of {- (_ :: Sing n_0123456789876543210) -> sN_0123456789876543210 })))+ -> case sN_0123456789876543210 of+ (_ :: Sing n_0123456789876543210) -> sN_0123456789876543210))) sA_0123456789876543210) (%<$) (_sz_0123456789876543210 :: Sing _z_0123456789876543210)@@ -1051,16 +1052,16 @@ ((singFun1 @(Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 _z_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210)) (\ sN_0123456789876543210- -> case sN_0123456789876543210 of {+ -> case sN_0123456789876543210 of (_ :: Sing n_0123456789876543210)- -> sN_0123456789876543210 })))+ -> sN_0123456789876543210))) sA_0123456789876543210))) ((applySing ((singFun1 @(Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 _z_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210)) (\ sN_0123456789876543210- -> case sN_0123456789876543210 of {- (_ :: Sing n_0123456789876543210) -> _sz_0123456789876543210 })))+ -> case sN_0123456789876543210 of+ (_ :: Sing n_0123456789876543210) -> _sz_0123456789876543210))) sA_0123456789876543210))) ((applySing ((applySing ((singFun2 @(<$@#@$)) (%<$))) _sz_0123456789876543210))@@ -1078,28 +1079,29 @@ ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 _z_0123456789876543210) a_0123456789876543210)) (\ sN_0123456789876543210- -> case sN_0123456789876543210 of {- (_ :: Sing n_0123456789876543210) -> sN_0123456789876543210 })))+ -> case sN_0123456789876543210 of+ (_ :: Sing n_0123456789876543210) -> sN_0123456789876543210))) sA_0123456789876543210) instance SFoldable (T x) where sFoldMap ::- forall (a :: Type) (m :: Type) (t1 :: (~>) a m) (t2 :: T x a).- SMonoid m =>- Sing t1- -> Sing t2- -> Sing (Apply (Apply (FoldMapSym0 :: TyFun ((~>) a m) ((~>) (T x a) m)- -> Type) t1) t2)+ forall (a :: Type)+ (m :: Type)+ (t1 :: (~>) a m)+ (t2 :: T x a). SMonoid m =>+ Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (FoldMapSym0 :: TyFun ((~>) a m) ((~>) (T x a) m)+ -> Type) t1) t2) sFoldr :: forall (a :: Type) (b :: Type) (t1 :: (~>) a ((~>) b b)) (t2 :: b)- (t3 :: T x a).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (FoldrSym0 :: TyFun ((~>) a ((~>) b b)) ((~>) b ((~>) (T x a) b))- -> Type) t1) t2) t3)+ (t3 :: T x a). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (FoldrSym0 :: TyFun ((~>) a ((~>) b b)) ((~>) b ((~>) (T x a) b))+ -> Type) t1) t2) t3) sFoldMap (_sf_0123456789876543210 :: Sing _f_0123456789876543210) (SMkT1 (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -1112,8 +1114,8 @@ ((singFun1 @(Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210)) (\ sN_0123456789876543210- -> case sN_0123456789876543210 of {- (_ :: Sing n_0123456789876543210) -> sMempty })))+ -> case sN_0123456789876543210 of+ (_ :: Sing n_0123456789876543210) -> sMempty))) sA_0123456789876543210))) ((applySing ((applySing ((singFun2 @MappendSym0) sMappend))@@ -1136,8 +1138,8 @@ ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) a_0123456789876543210)) (\ sN_0123456789876543210- -> case sN_0123456789876543210 of {- (_ :: Sing n_0123456789876543210) -> sMempty })))+ -> case sN_0123456789876543210 of+ (_ :: Sing n_0123456789876543210) -> sMempty))) sA_0123456789876543210 sFoldr (_sf_0123456789876543210 :: Sing _f_0123456789876543210)@@ -1151,10 +1153,10 @@ ((singFun2 @(Apply (Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) _z_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210)) (\ sN1_0123456789876543210 sN2_0123456789876543210- -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of {+ -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of (,) (_ :: Sing n1_0123456789876543210) (_ :: Sing n2_0123456789876543210)- -> sN2_0123456789876543210 })))+ -> sN2_0123456789876543210))) sA_0123456789876543210)) ((applySing ((applySing _sf_0123456789876543210) sA_0123456789876543210))@@ -1163,7 +1165,7 @@ ((singFun2 @(Apply (Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) _z_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210)) (\ sN1_0123456789876543210 sN2_0123456789876543210- -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of {+ -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of (,) (_ :: Sing n1_0123456789876543210) (_ :: Sing n2_0123456789876543210) -> (applySing@@ -1171,14 +1173,14 @@ ((applySing ((singFun3 @FoldrSym0) sFoldr)) _sf_0123456789876543210)) sN2_0123456789876543210))- sN1_0123456789876543210 })))+ sN1_0123456789876543210))) sA_0123456789876543210)) ((applySing ((applySing ((singFun2 @(Apply (Apply (Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) _z_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210) a_0123456789876543210)) (\ sN1_0123456789876543210 sN2_0123456789876543210- -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of {+ -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of (,) (_ :: Sing n1_0123456789876543210) (_ :: Sing n2_0123456789876543210) -> (applySing@@ -1191,7 +1193,7 @@ -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210- of {+ of (,) (_ :: Sing n1_0123456789876543210) (_ :: Sing n2_0123456789876543210) -> (applySing@@ -1202,9 +1204,9 @@ sFoldr)) _sf_0123456789876543210)) sN2_0123456789876543210))- sN1_0123456789876543210 }))))+ sN1_0123456789876543210)))) sN2_0123456789876543210))- sN1_0123456789876543210 })))+ sN1_0123456789876543210))) sA_0123456789876543210)) _sz_0123456789876543210))) sFoldr@@ -1216,10 +1218,10 @@ ((singFun2 @(Apply (Apply (Apply Lambda_0123456789876543210Sym0 _f_0123456789876543210) _z_0123456789876543210) a_0123456789876543210)) (\ sN1_0123456789876543210 sN2_0123456789876543210- -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of {+ -> case ((,) sN1_0123456789876543210) sN2_0123456789876543210 of (,) (_ :: Sing n1_0123456789876543210) (_ :: Sing n2_0123456789876543210)- -> sN2_0123456789876543210 })))+ -> sN2_0123456789876543210))) sA_0123456789876543210)) _sz_0123456789876543210 instance STraversable (T x) where@@ -1228,12 +1230,11 @@ (f :: Type -> Type) (b :: Type) (t1 :: (~>) a (f b))- (t2 :: T x a).- SApplicative f =>- Sing t1- -> Sing t2- -> Sing (Apply (Apply (TraverseSym0 :: TyFun ((~>) a (f b)) ((~>) (T x a) (f (T x b)))- -> Type) t1) t2)+ (t2 :: T x a). SApplicative f =>+ Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (TraverseSym0 :: TyFun ((~>) a (f b)) ((~>) (T x a) (f (T x b)))+ -> Type) t1) t2) sTraverse (_sf_0123456789876543210 :: Sing _f_0123456789876543210) (SMkT1 (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -1268,33 +1269,36 @@ ((applySing ((singFun1 @PureSym0) sPure)) sA_0123456789876543210) instance SFunctor Empty where sFmap ::- forall (a :: Type) (b :: Type) (t1 :: (~>) a b) (t2 :: Empty a).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (FmapSym0 :: TyFun ((~>) a b) ((~>) (Empty a) (Empty b))- -> Type) t1) t2)+ forall (a :: Type)+ (b :: Type)+ (t1 :: (~>) a b)+ (t2 :: Empty a). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (FmapSym0 :: TyFun ((~>) a b) ((~>) (Empty a) (Empty b))+ -> Type) t1) t2) (%<$) ::- forall (a :: Type) (b :: Type) (t1 :: a) (t2 :: Empty b).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((<$@#@$) :: TyFun a ((~>) (Empty b) (Empty a))- -> Type) t1) t2)+ forall (a :: Type) (b :: Type) (t1 :: a) (t2 :: Empty b). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((<$@#@$) :: TyFun a ((~>) (Empty b) (Empty a))+ -> Type) t1) t2) sFmap _ (sV_0123456789876543210 :: Sing v_0123456789876543210) = (id @(Sing (Case_0123456789876543210 v_0123456789876543210 v_0123456789876543210)))- (case sV_0123456789876543210 of)+ (case sV_0123456789876543210 of {}) (%<$) _ (sV_0123456789876543210 :: Sing v_0123456789876543210) = (id @(Sing (Case_0123456789876543210 v_0123456789876543210 v_0123456789876543210)))- (case sV_0123456789876543210 of)+ (case sV_0123456789876543210 of {}) instance SFoldable Empty where sFoldMap ::- forall (a :: Type) (m :: Type) (t1 :: (~>) a m) (t2 :: Empty a).- SMonoid m =>- Sing t1- -> Sing t2- -> Sing (Apply (Apply (FoldMapSym0 :: TyFun ((~>) a m) ((~>) (Empty a) m)- -> Type) t1) t2)+ forall (a :: Type)+ (m :: Type)+ (t1 :: (~>) a m)+ (t2 :: Empty a). SMonoid m =>+ Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (FoldMapSym0 :: TyFun ((~>) a m) ((~>) (Empty a) m)+ -> Type) t1) t2) sFoldMap _ _ = sMempty instance STraversable Empty where sTraverse ::@@ -1302,36 +1306,68 @@ (f :: Type -> Type) (b :: Type) (t1 :: (~>) a (f b))- (t2 :: Empty a).- SApplicative f =>- Sing t1- -> Sing t2- -> Sing (Apply (Apply (TraverseSym0 :: TyFun ((~>) a (f b)) ((~>) (Empty a) (f (Empty b)))- -> Type) t1) t2)+ (t2 :: Empty a). SApplicative f =>+ Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (TraverseSym0 :: TyFun ((~>) a (f b)) ((~>) (Empty a) (f (Empty b)))+ -> Type) t1) t2) sTraverse _ (sV_0123456789876543210 :: Sing v_0123456789876543210) = (applySing ((singFun1 @PureSym0) sPure)) ((id @(Sing (Case_0123456789876543210 v_0123456789876543210 v_0123456789876543210)))- (case sV_0123456789876543210 of))+ (case sV_0123456789876543210 of {})) instance (SingI n, SingI n, SingI n, SingI n) => SingI (MkT1 (n :: x) (n :: a) (n :: Maybe a) (n :: Maybe (Maybe a))) where sing = (((SMkT1 sing) sing) sing) sing+ instance (SingI n, SingI n, SingI n) =>+ SingI1 (MkT1 (n :: x) (n :: a) (n :: Maybe a)) where+ liftSing = ((SMkT1 sing) sing) sing+ instance (SingI n, SingI n) =>+ SingI2 (MkT1 (n :: x) (n :: a)) where+ liftSing2 = (SMkT1 sing) sing instance SingI (MkT1Sym0 :: (~>) x ((~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))))) where sing = (singFun4 @MkT1Sym0) SMkT1 instance SingI d => SingI (MkT1Sym1 (d :: x) :: (~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a)))) where sing = (singFun3 @(MkT1Sym1 (d :: x))) (SMkT1 (sing @d))+ instance SingI1 (MkT1Sym1 :: x+ -> (~>) a ((~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a)))) where+ liftSing (s :: Sing (d :: x))+ = (singFun3 @(MkT1Sym1 (d :: x))) (SMkT1 s) instance (SingI d, SingI d) => SingI (MkT1Sym2 (d :: x) (d :: a) :: (~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))) where sing = (singFun2 @(MkT1Sym2 (d :: x) (d :: a))) ((SMkT1 (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (MkT1Sym2 (d :: x) :: a+ -> (~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))) where+ liftSing (s :: Sing (d :: a))+ = (singFun2 @(MkT1Sym2 (d :: x) (d :: a))) ((SMkT1 (sing @d)) s)+ instance SingI2 (MkT1Sym2 :: x+ -> a -> (~>) (Maybe a) ((~>) (Maybe (Maybe a)) (T x a))) where+ liftSing2 (s :: Sing (d :: x)) (s :: Sing (d :: a))+ = (singFun2 @(MkT1Sym2 (d :: x) (d :: a))) ((SMkT1 s) s) instance (SingI d, SingI d, SingI d) => SingI (MkT1Sym3 (d :: x) (d :: a) (d :: Maybe a) :: (~>) (Maybe (Maybe a)) (T x a)) where sing = (singFun1 @(MkT1Sym3 (d :: x) (d :: a) (d :: Maybe a))) (((SMkT1 (sing @d)) (sing @d)) (sing @d))+ instance (SingI d, SingI d) =>+ SingI1 (MkT1Sym3 (d :: x) (d :: a) :: Maybe a+ -> (~>) (Maybe (Maybe a)) (T x a)) where+ liftSing (s :: Sing (d :: Maybe a))+ = (singFun1 @(MkT1Sym3 (d :: x) (d :: a) (d :: Maybe a)))+ (((SMkT1 (sing @d)) (sing @d)) s)+ instance SingI d =>+ SingI2 (MkT1Sym3 (d :: x) :: a+ -> Maybe a -> (~>) (Maybe (Maybe a)) (T x a)) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: Maybe a))+ = (singFun1 @(MkT1Sym3 (d :: x) (d :: a) (d :: Maybe a)))+ (((SMkT1 (sing @d)) s) s) instance SingI n => SingI (MkT2 (n :: Maybe x)) where sing = SMkT2 sing+ instance SingI1 MkT2 where+ liftSing = SMkT2 instance SingI (MkT2Sym0 :: (~>) (Maybe x) (T x a)) where sing = (singFun1 @MkT2Sym0) SMkT2
tests/compile-and-dump/Singletons/HigherOrder.golden view
@@ -295,32 +295,31 @@ Map _ '[] = NilSym0 Map f ('(:) h t) = Apply (Apply (:@#@$) (Apply f h)) (Apply (Apply MapSym0 f) t) sEtad ::- forall (t :: [Nat]) (t :: [Bool]).- Sing t -> Sing t -> Sing (Apply (Apply EtadSym0 t) t :: [Nat])+ forall (t :: [Nat]) (t :: [Bool]). Sing t+ -> Sing t -> Sing (Apply (Apply EtadSym0 t) t :: [Nat]) sSplunge ::- forall (t :: [Nat]) (t :: [Bool]).- Sing t -> Sing t -> Sing (Apply (Apply SplungeSym0 t) t :: [Nat])+ forall (t :: [Nat]) (t :: [Bool]). Sing t+ -> Sing t -> Sing (Apply (Apply SplungeSym0 t) t :: [Nat]) sFoo :: forall a b (t :: (~>) ((~>) a b) ((~>) a b)) (t :: (~>) a b)- (t :: a).- Sing t- -> Sing t- -> Sing t -> Sing (Apply (Apply (Apply FooSym0 t) t) t :: b)+ (t :: a). Sing t+ -> Sing t+ -> Sing t -> Sing (Apply (Apply (Apply FooSym0 t) t) t :: b) sZipWith ::- forall a b c (t :: (~>) a ((~>) b c)) (t :: [a]) (t :: [b]).- Sing t- -> Sing t- -> Sing t -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t :: [c])+ forall a b c (t :: (~>) a ((~>) b c)) (t :: [a]) (t :: [b]). Sing t+ -> Sing t+ -> Sing t+ -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t :: [c]) sLiftMaybe ::- forall a b (t :: (~>) a b) (t :: Maybe a).- Sing t- -> Sing t -> Sing (Apply (Apply LiftMaybeSym0 t) t :: Maybe b)+ forall a b (t :: (~>) a b) (t :: Maybe a). Sing t+ -> Sing t+ -> Sing (Apply (Apply LiftMaybeSym0 t) t :: Maybe b) sMap ::- forall a b (t :: (~>) a b) (t :: [a]).- Sing t -> Sing t -> Sing (Apply (Apply MapSym0 t) t :: [b])+ forall a b (t :: (~>) a b) (t :: [a]). Sing t+ -> Sing t -> Sing (Apply (Apply MapSym0 t) t :: [b]) sEtad (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -330,7 +329,7 @@ ((singFun2 @(Apply (Apply Lambda_0123456789876543210Sym0 a_0123456789876543210) a_0123456789876543210)) (\ sN sB- -> case ((,) sN) sB of {+ -> case ((,) sN) sB of (,) (_ :: Sing n) (_ :: Sing b) -> (id @(Sing (Case_0123456789876543210 n b a_0123456789876543210 a_0123456789876543210 b)))@@ -338,7 +337,7 @@ STrue -> (applySing ((singFun1 @SuccSym0) SSucc)) ((applySing ((singFun1 @SuccSym0) SSucc)) sN)- SFalse -> sN) }))))+ SFalse -> sN))))) sA_0123456789876543210)) sA_0123456789876543210 sSplunge (sNs :: Sing ns) (sBs :: Sing bs)@@ -347,14 +346,14 @@ ((applySing ((singFun3 @ZipWithSym0) sZipWith)) ((singFun2 @(Apply (Apply Lambda_0123456789876543210Sym0 ns) bs)) (\ sN sB- -> case ((,) sN) sB of {+ -> case ((,) sN) sB of (,) (_ :: Sing n) (_ :: Sing b) -> (id @(Sing (Case_0123456789876543210 n b ns bs b))) (case sB of STrue -> (applySing ((singFun1 @SuccSym0) SSucc)) ((applySing ((singFun1 @SuccSym0) SSucc)) sN)- SFalse -> sN) }))))+ SFalse -> sN))))) sNs)) sBs sFoo (sF :: Sing f) (sG :: Sing g) (sA :: Sing a)@@ -386,11 +385,17 @@ instance SingI d => SingI (EtadSym1 (d :: [Nat]) :: (~>) [Bool] [Nat]) where sing = (singFun1 @(EtadSym1 (d :: [Nat]))) (sEtad (sing @d))+ instance SingI1 (EtadSym1 :: [Nat] -> (~>) [Bool] [Nat]) where+ liftSing (s :: Sing (d :: [Nat]))+ = (singFun1 @(EtadSym1 (d :: [Nat]))) (sEtad s) instance SingI (SplungeSym0 :: (~>) [Nat] ((~>) [Bool] [Nat])) where sing = (singFun2 @SplungeSym0) sSplunge instance SingI d => SingI (SplungeSym1 (d :: [Nat]) :: (~>) [Bool] [Nat]) where sing = (singFun1 @(SplungeSym1 (d :: [Nat]))) (sSplunge (sing @d))+ instance SingI1 (SplungeSym1 :: [Nat] -> (~>) [Bool] [Nat]) where+ liftSing (s :: Sing (d :: [Nat]))+ = (singFun1 @(SplungeSym1 (d :: [Nat]))) (sSplunge s) instance SingI (FooSym0 :: (~>) ((~>) ((~>) a b) ((~>) a b)) ((~>) ((~>) a b) ((~>) a b))) where sing = (singFun3 @FooSym0) sFoo instance SingI d =>@@ -398,12 +403,31 @@ sing = (singFun2 @(FooSym1 (d :: (~>) ((~>) a b) ((~>) a b)))) (sFoo (sing @d))+ instance SingI1 (FooSym1 :: (~>) ((~>) a b) ((~>) a b)+ -> (~>) ((~>) a b) ((~>) a b)) where+ liftSing (s :: Sing (d :: (~>) ((~>) a b) ((~>) a b)))+ = (singFun2 @(FooSym1 (d :: (~>) ((~>) a b) ((~>) a b)))) (sFoo s) instance (SingI d, SingI d) => SingI (FooSym2 (d :: (~>) ((~>) a b) ((~>) a b)) (d :: (~>) a b) :: (~>) a b) where sing = (singFun1 @(FooSym2 (d :: (~>) ((~>) a b) ((~>) a b)) (d :: (~>) a b))) ((sFoo (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (FooSym2 (d :: (~>) ((~>) a b) ((~>) a b)) :: (~>) a b+ -> (~>) a b) where+ liftSing (s :: Sing (d :: (~>) a b))+ = (singFun1+ @(FooSym2 (d :: (~>) ((~>) a b) ((~>) a b)) (d :: (~>) a b)))+ ((sFoo (sing @d)) s)+ instance SingI2 (FooSym2 :: (~>) ((~>) a b) ((~>) a b)+ -> (~>) a b -> (~>) a b) where+ liftSing2+ (s :: Sing (d :: (~>) ((~>) a b) ((~>) a b)))+ (s :: Sing (d :: (~>) a b))+ = (singFun1+ @(FooSym2 (d :: (~>) ((~>) a b) ((~>) a b)) (d :: (~>) a b)))+ ((sFoo s) s) instance SingI (ZipWithSym0 :: (~>) ((~>) a ((~>) b c)) ((~>) [a] ((~>) [b] [c]))) where sing = (singFun3 @ZipWithSym0) sZipWith instance SingI d =>@@ -411,11 +435,28 @@ sing = (singFun2 @(ZipWithSym1 (d :: (~>) a ((~>) b c)))) (sZipWith (sing @d))+ instance SingI1 (ZipWithSym1 :: (~>) a ((~>) b c)+ -> (~>) [a] ((~>) [b] [c])) where+ liftSing (s :: Sing (d :: (~>) a ((~>) b c)))+ = (singFun2 @(ZipWithSym1 (d :: (~>) a ((~>) b c)))) (sZipWith s) instance (SingI d, SingI d) => SingI (ZipWithSym2 (d :: (~>) a ((~>) b c)) (d :: [a]) :: (~>) [b] [c]) where sing = (singFun1 @(ZipWithSym2 (d :: (~>) a ((~>) b c)) (d :: [a]))) ((sZipWith (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (ZipWithSym2 (d :: (~>) a ((~>) b c)) :: [a]+ -> (~>) [b] [c]) where+ liftSing (s :: Sing (d :: [a]))+ = (singFun1 @(ZipWithSym2 (d :: (~>) a ((~>) b c)) (d :: [a])))+ ((sZipWith (sing @d)) s)+ instance SingI2 (ZipWithSym2 :: (~>) a ((~>) b c)+ -> [a] -> (~>) [b] [c]) where+ liftSing2+ (s :: Sing (d :: (~>) a ((~>) b c)))+ (s :: Sing (d :: [a]))+ = (singFun1 @(ZipWithSym2 (d :: (~>) a ((~>) b c)) (d :: [a])))+ ((sZipWith s) s) instance SingI (LiftMaybeSym0 :: (~>) ((~>) a b) ((~>) (Maybe a) (Maybe b))) where sing = (singFun2 @LiftMaybeSym0) sLiftMaybe instance SingI d =>@@ -423,11 +464,18 @@ sing = (singFun1 @(LiftMaybeSym1 (d :: (~>) a b))) (sLiftMaybe (sing @d))+ instance SingI1 (LiftMaybeSym1 :: (~>) a b+ -> (~>) (Maybe a) (Maybe b)) where+ liftSing (s :: Sing (d :: (~>) a b))+ = (singFun1 @(LiftMaybeSym1 (d :: (~>) a b))) (sLiftMaybe s) instance SingI (MapSym0 :: (~>) ((~>) a b) ((~>) [a] [b])) where sing = (singFun2 @MapSym0) sMap instance SingI d => SingI (MapSym1 (d :: (~>) a b) :: (~>) [a] [b]) where sing = (singFun1 @(MapSym1 (d :: (~>) a b))) (sMap (sing @d))+ instance SingI1 (MapSym1 :: (~>) a b -> (~>) [a] [b]) where+ liftSing (s :: Sing (d :: (~>) a b))+ = (singFun1 @(MapSym1 (d :: (~>) a b))) (sMap s) data SEither :: forall a b. Either a b -> GHC.Types.Type where SLeft :: forall a b (n :: a).@@ -440,16 +488,18 @@ fromSing (SLeft b) = Left (fromSing b) fromSing (SRight b) = Right (fromSing b) toSing (Left (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SLeft c) }+ = case toSing b :: SomeSing a of SomeSing c -> SomeSing (SLeft c) toSing (Right (b :: Demote b))- = case toSing b :: SomeSing b of {- SomeSing c -> SomeSing (SRight c) }+ = case toSing b :: SomeSing b of SomeSing c -> SomeSing (SRight c) instance SingI n => SingI (Left (n :: a)) where sing = SLeft sing+ instance SingI1 Left where+ liftSing = SLeft instance SingI (LeftSym0 :: (~>) a (Either a b)) where sing = (singFun1 @LeftSym0) SLeft instance SingI n => SingI (Right (n :: b)) where sing = SRight sing+ instance SingI1 Right where+ liftSing = SRight instance SingI (RightSym0 :: (~>) b (Either a b)) where sing = (singFun1 @RightSym0) SRight
tests/compile-and-dump/Singletons/LambdaCase.golden view
@@ -180,60 +180,68 @@ type family Foo1 (a :: a) (a :: Maybe a) :: a where Foo1 d x = Apply (Apply (Apply Lambda_0123456789876543210Sym0 d) x) x sFoo3 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo3Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo3Sym0 t) t :: a) sFoo2 ::- forall a (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a)+ forall a (t :: a) (t :: Maybe a). Sing t+ -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a) sFoo1 ::- forall a (t :: a) (t :: Maybe a).- Sing t -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a)+ forall a (t :: a) (t :: Maybe a). Sing t+ -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a) sFoo3 (sA :: Sing a) (sB :: Sing b) = (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 a) b)) (\ sX_0123456789876543210- -> case sX_0123456789876543210 of {+ -> case sX_0123456789876543210 of (_ :: Sing x_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 x_0123456789876543210 a b x_0123456789876543210)))- (case sX_0123456789876543210 of {- STuple2 (sP :: Sing p) _ -> sP }) })))+ (case sX_0123456789876543210 of STuple2 (sP :: Sing p) _ -> sP)))) ((applySing ((applySing ((singFun2 @Tuple2Sym0) STuple2)) sA)) sB) sFoo2 (sD :: Sing d) _ = (applySing ((singFun1 @(Apply Lambda_0123456789876543210Sym0 d)) (\ sX_0123456789876543210- -> case sX_0123456789876543210 of {+ -> case sX_0123456789876543210 of (_ :: Sing x_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 x_0123456789876543210 d x_0123456789876543210))) (case sX_0123456789876543210 of SJust (sY :: Sing y) -> sY- SNothing -> sD) })))+ SNothing -> sD)))) ((applySing ((singFun1 @JustSym0) SJust)) sD) sFoo1 (sD :: Sing d) (sX :: Sing x) = (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 d) x)) (\ sX_0123456789876543210- -> case sX_0123456789876543210 of {+ -> case sX_0123456789876543210 of (_ :: Sing x_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 x_0123456789876543210 d x x_0123456789876543210))) (case sX_0123456789876543210 of SJust (sY :: Sing y) -> sY- SNothing -> sD) })))+ SNothing -> sD)))) sX instance SingI (Foo3Sym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @Foo3Sym0) sFoo3 instance SingI d => SingI (Foo3Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Foo3Sym1 (d :: a))) (sFoo3 (sing @d))+ instance SingI1 (Foo3Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo3Sym1 (d :: a))) (sFoo3 s) instance SingI (Foo2Sym0 :: (~>) a ((~>) (Maybe a) a)) where sing = (singFun2 @Foo2Sym0) sFoo2 instance SingI d => SingI (Foo2Sym1 (d :: a) :: (~>) (Maybe a) a) where sing = (singFun1 @(Foo2Sym1 (d :: a))) (sFoo2 (sing @d))+ instance SingI1 (Foo2Sym1 :: a -> (~>) (Maybe a) a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo2Sym1 (d :: a))) (sFoo2 s) instance SingI (Foo1Sym0 :: (~>) a ((~>) (Maybe a) a)) where sing = (singFun2 @Foo1Sym0) sFoo1 instance SingI d => SingI (Foo1Sym1 (d :: a) :: (~>) (Maybe a) a) where sing = (singFun1 @(Foo1Sym1 (d :: a))) (sFoo1 (sing @d))+ instance SingI1 (Foo1Sym1 :: a -> (~>) (Maybe a) a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo1Sym1 (d :: a))) (sFoo1 s)
tests/compile-and-dump/Singletons/Lambdas.golden view
@@ -561,73 +561,71 @@ sFoo8 :: forall a b (t :: Foo a b). Sing t -> Sing (Apply Foo8Sym0 t :: a) sFoo7 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo7Sym0 t) t :: b)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo7Sym0 t) t :: b) sFoo6 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo6Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo6Sym0 t) t :: a) sFoo5 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo5Sym0 t) t :: b)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo5Sym0 t) t :: b) sFoo4 ::- forall a b c (t :: a) (t :: b) (t :: c).- Sing t- -> Sing t- -> Sing t -> Sing (Apply (Apply (Apply Foo4Sym0 t) t) t :: a)+ forall a b c (t :: a) (t :: b) (t :: c). Sing t+ -> Sing t+ -> Sing t+ -> Sing (Apply (Apply (Apply Foo4Sym0 t) t) t :: a) sFoo3 :: forall a (t :: a). Sing t -> Sing (Apply Foo3Sym0 t :: a) sFoo2 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo2Sym0 t) t :: a) sFoo1 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo1Sym0 t) t :: a) sFoo0 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo0Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo0Sym0 t) t :: a) sFoo8 (sX :: Sing x) = (applySing ((singFun1 @(Apply Lambda_0123456789876543210Sym0 x)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 x arg_0123456789876543210)))- (case sArg_0123456789876543210 of {- SFoo (sA :: Sing a) _ -> sA }) })))+ (case sArg_0123456789876543210 of SFoo (sA :: Sing a) _ -> sA)))) sX sFoo7 (sX :: Sing x) (sY :: Sing y) = (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) y)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 x y arg_0123456789876543210)))- (case sArg_0123456789876543210 of {- STuple2 _ (sB :: Sing b) -> sB }) })))+ (case sArg_0123456789876543210 of+ STuple2 _ (sB :: Sing b) -> sB)))) ((applySing ((applySing ((singFun2 @Tuple2Sym0) STuple2)) sX)) sY) sFoo6 (sA :: Sing a) (sB :: Sing b) = (applySing ((applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 a) b)) (\ sX- -> case sX of {+ -> case sX of (_ :: Sing x) -> (singFun1 @(Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) a) b)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 x a b arg_0123456789876543210)))- (case sArg_0123456789876543210 of {- _ -> sX }) }) })))+ (case sArg_0123456789876543210 of _ -> sX))))) sA)) sB sFoo5 (sX :: Sing x) (sY :: Sing y) = (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) y))- (\ sX -> case sX of { (_ :: Sing x) -> sX })))+ (\ sX -> case sX of (_ :: Sing x) -> sX))) sY sFoo4 (sX :: Sing x) (sY :: Sing y) (sZ :: Sing z) = (applySing@@ -635,9 +633,7 @@ ((singFun2 @(Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) y) z)) (\ sArg_0123456789876543210 sArg_0123456789876543210- -> case- ((,) sArg_0123456789876543210) sArg_0123456789876543210- of {+ -> case ((,) sArg_0123456789876543210) sArg_0123456789876543210 of (,) (_ :: Sing arg_0123456789876543210) (_ :: Sing arg_0123456789876543210) -> (id@@ -647,24 +643,24 @@ ((applySing ((singFun2 @Tuple2Sym0) STuple2)) sArg_0123456789876543210)) sArg_0123456789876543210- of {- STuple2 _ _ -> sX }) })))+ of+ STuple2 _ _ -> sX)))) sY)) sZ sFoo3 (sX :: Sing x) = (applySing ((singFun1 @(Apply Lambda_0123456789876543210Sym0 x))- (\ sY -> case sY of { (_ :: Sing y) -> sY })))+ (\ sY -> case sY of (_ :: Sing y) -> sY))) sX sFoo2 (sX :: Sing x) (sY :: Sing y) = (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) y)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 x y arg_0123456789876543210)))- (case sArg_0123456789876543210 of { _ -> sX }) })))+ (case sArg_0123456789876543210 of _ -> sX)))) sY sFoo1 (sX :: Sing x)@@ -673,11 +669,11 @@ ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) a_0123456789876543210)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 x a_0123456789876543210 arg_0123456789876543210)))- (case sArg_0123456789876543210 of { _ -> sX }) })))+ (case sArg_0123456789876543210 of _ -> sX)))) sA_0123456789876543210 sFoo0 (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -687,7 +683,7 @@ ((singFun2 @(Apply (Apply Lambda_0123456789876543210Sym0 a_0123456789876543210) a_0123456789876543210)) (\ sX sY- -> case ((,) sX) sY of { (,) (_ :: Sing x) (_ :: Sing y) -> sX })))+ -> case ((,) sX) sY of (,) (_ :: Sing x) (_ :: Sing y) -> sX))) sA_0123456789876543210)) sA_0123456789876543210 instance SingI (Foo8Sym0 :: (~>) (Foo a b) a) where@@ -696,38 +692,66 @@ sing = (singFun2 @Foo7Sym0) sFoo7 instance SingI d => SingI (Foo7Sym1 (d :: a) :: (~>) b b) where sing = (singFun1 @(Foo7Sym1 (d :: a))) (sFoo7 (sing @d))+ instance SingI1 (Foo7Sym1 :: a -> (~>) b b) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo7Sym1 (d :: a))) (sFoo7 s) instance SingI (Foo6Sym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @Foo6Sym0) sFoo6 instance SingI d => SingI (Foo6Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Foo6Sym1 (d :: a))) (sFoo6 (sing @d))+ instance SingI1 (Foo6Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo6Sym1 (d :: a))) (sFoo6 s) instance SingI (Foo5Sym0 :: (~>) a ((~>) b b)) where sing = (singFun2 @Foo5Sym0) sFoo5 instance SingI d => SingI (Foo5Sym1 (d :: a) :: (~>) b b) where sing = (singFun1 @(Foo5Sym1 (d :: a))) (sFoo5 (sing @d))+ instance SingI1 (Foo5Sym1 :: a -> (~>) b b) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo5Sym1 (d :: a))) (sFoo5 s) instance SingI (Foo4Sym0 :: (~>) a ((~>) b ((~>) c a))) where sing = (singFun3 @Foo4Sym0) sFoo4 instance SingI d => SingI (Foo4Sym1 (d :: a) :: (~>) b ((~>) c a)) where sing = (singFun2 @(Foo4Sym1 (d :: a))) (sFoo4 (sing @d))+ instance SingI1 (Foo4Sym1 :: a -> (~>) b ((~>) c a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun2 @(Foo4Sym1 (d :: a))) (sFoo4 s) instance (SingI d, SingI d) => SingI (Foo4Sym2 (d :: a) (d :: b) :: (~>) c a) where sing = (singFun1 @(Foo4Sym2 (d :: a) (d :: b))) ((sFoo4 (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (Foo4Sym2 (d :: a) :: b -> (~>) c a) where+ liftSing (s :: Sing (d :: b))+ = (singFun1 @(Foo4Sym2 (d :: a) (d :: b))) ((sFoo4 (sing @d)) s)+ instance SingI2 (Foo4Sym2 :: a -> b -> (~>) c a) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun1 @(Foo4Sym2 (d :: a) (d :: b))) ((sFoo4 s) s) instance SingI (Foo3Sym0 :: (~>) a a) where sing = (singFun1 @Foo3Sym0) sFoo3 instance SingI (Foo2Sym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @Foo2Sym0) sFoo2 instance SingI d => SingI (Foo2Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Foo2Sym1 (d :: a))) (sFoo2 (sing @d))+ instance SingI1 (Foo2Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo2Sym1 (d :: a))) (sFoo2 s) instance SingI (Foo1Sym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @Foo1Sym0) sFoo1 instance SingI d => SingI (Foo1Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Foo1Sym1 (d :: a))) (sFoo1 (sing @d))+ instance SingI1 (Foo1Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo1Sym1 (d :: a))) (sFoo1 s) instance SingI (Foo0Sym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @Foo0Sym0) sFoo0 instance SingI d => SingI (Foo0Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Foo0Sym1 (d :: a))) (sFoo0 (sing @d))+ instance SingI1 (Foo0Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo0Sym1 (d :: a))) (sFoo0 s) data SFoo :: forall a b. Foo a b -> GHC.Types.Type where SFoo :: forall a b (n :: a) (n :: b).@@ -737,12 +761,19 @@ type Demote (Foo a b) = Foo (Demote a) (Demote b) fromSing (SFoo b b) = (Foo (fromSing b)) (fromSing b) toSing (Foo (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SFoo c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SFoo c) c) instance (SingI n, SingI n) => SingI (Foo (n :: a) (n :: b)) where sing = (SFoo sing) sing+ instance SingI n => SingI1 (Foo (n :: a)) where+ liftSing = SFoo sing+ instance SingI2 Foo where+ liftSing2 = SFoo instance SingI (FooSym0 :: (~>) a ((~>) b (Foo a b))) where sing = (singFun2 @FooSym0) SFoo instance SingI d => SingI (FooSym1 (d :: a) :: (~>) b (Foo a b)) where sing = (singFun1 @(FooSym1 (d :: a))) (SFoo (sing @d))+ instance SingI1 (FooSym1 :: a -> (~>) b (Foo a b)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(FooSym1 (d :: a))) (SFoo s)
tests/compile-and-dump/Singletons/LambdasComprehensive.golden view
@@ -58,14 +58,14 @@ ((applySing ((singFun2 @MapSym0) sMap)) ((singFun1 @Lambda_0123456789876543210Sym0) (\ sX- -> case sX of {+ -> case sX of (_ :: Sing x) -> (applySing ((applySing ((applySing ((singFun3 @Either_Sym0) sEither_)) ((singFun1 @PredSym0) sPred))) ((singFun1 @SuccSym0) SSucc)))- sX }))))+ sX)))) ((applySing ((applySing ((singFun2 @(:@#@$)) SCons)) ((applySing ((singFun1 @LeftSym0) SLeft)) SZero)))
tests/compile-and-dump/Singletons/LetStatements.golden view
@@ -801,15 +801,15 @@ sZ = (id @(Sing (Case_0123456789876543210 x (Let0123456789876543210X_0123456789876543210Sym1 x))))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of STuple2 _ (sY_0123456789876543210 :: Sing y_0123456789876543210)- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sY = (id @(Sing (Case_0123456789876543210 x (Let0123456789876543210X_0123456789876543210Sym1 x))))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of STuple2 (sY_0123456789876543210 :: Sing y_0123456789876543210) _- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sX_0123456789876543210 = (applySing ((applySing ((singFun2 @Tuple2Sym0) STuple2))@@ -825,10 +825,9 @@ sFoo12 (sX :: Sing x) = let (%+) ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t- -> Sing (Apply (Apply ((<<<%%%%%%%%%%%%%%%%%%%%@#@$$) x) t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t+ -> Sing (Apply (Apply ((<<<%%%%%%%%%%%%%%%%%%%%@#@$$) x) t) t :: Nat) (%+) SZero (sM :: Sing m) = sM (%+) (SSucc (sN :: Sing n)) (sM :: Sing m) = (applySing ((singFun1 @SuccSym0) SSucc))@@ -846,10 +845,9 @@ = let sZ :: Sing (Let0123456789876543210ZSym1 x :: Nat) (%+) ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t- -> Sing (Apply (Apply ((<<<%%%%%%%%%%%%%%%%%%%%@#@$$) x) t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t+ -> Sing (Apply (Apply ((<<<%%%%%%%%%%%%%%%%%%%%@#@$$) x) t) t :: Nat) sZ = sX (%+) SZero (sM :: Sing m) = sM (%+) (SSucc (sN :: Sing n)) (sM :: Sing m)@@ -866,10 +864,9 @@ sFoo10 (sX :: Sing x) = let (%+) ::- forall (t :: Nat) (t :: Nat).- Sing t- -> Sing t- -> Sing (Apply (Apply ((<<<%%%%%%%%%%%%%%%%%%%%@#@$$) x) t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t+ -> Sing (Apply (Apply ((<<<%%%%%%%%%%%%%%%%%%%%@#@$$) x) t) t :: Nat) (%+) SZero (sM :: Sing m) = sM (%+) (SSucc (sN :: Sing n)) (sM :: Sing m) = (applySing ((singFun1 @SuccSym0) SSucc))@@ -885,13 +882,13 @@ sFoo9 (sX :: Sing x) = let sZ ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789876543210ZSym1 x) t :: Nat)+ forall (t :: Nat). Sing t+ -> Sing (Apply (Let0123456789876543210ZSym1 x) t :: Nat) sZ (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 a_0123456789876543210) x))- (\ sX -> case sX of { (_ :: Sing x) -> sX })))+ (\ sX -> case sX of (_ :: Sing x) -> sX))) sA_0123456789876543210 in (applySing ((singFun1 @(Let0123456789876543210ZSym1 x)) sZ)) sX sFoo8 (sX :: Sing x)@@ -900,7 +897,7 @@ sZ = (applySing ((singFun1 @(Apply Lambda_0123456789876543210Sym0 x))- (\ sX -> case sX of { (_ :: Sing x) -> sX })))+ (\ sX -> case sX of (_ :: Sing x) -> sX))) SZero in sZ sFoo7 (sX :: Sing x)@@ -911,8 +908,8 @@ sFoo6 (sX :: Sing x) = let sF ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789876543210FSym1 x) t :: Nat)+ forall (t :: Nat). Sing t+ -> Sing (Apply (Let0123456789876543210FSym1 x) t :: Nat) sF (sY :: Sing y) = (applySing ((singFun1 @SuccSym0) SSucc)) sY in let sZ :: Sing (Let0123456789876543210ZSym1 x :: Nat)@@ -922,8 +919,8 @@ sFoo5 (sX :: Sing x) = let sF ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789876543210FSym1 x) t :: Nat)+ forall (t :: Nat). Sing t+ -> Sing (Apply (Let0123456789876543210FSym1 x) t :: Nat) sF (sY :: Sing y) = let sZ :: Sing (Let0123456789876543210ZSym2 y x :: Nat)@@ -933,8 +930,8 @@ sFoo4 (sX :: Sing x) = let sF ::- forall (t :: Nat).- Sing t -> Sing (Apply (Let0123456789876543210FSym1 x) t :: Nat)+ forall (t :: Nat). Sing t+ -> Sing (Apply (Let0123456789876543210FSym1 x) t :: Nat) sF (sY :: Sing y) = (applySing ((singFun1 @SuccSym0) SSucc)) sY in (applySing ((singFun1 @(Let0123456789876543210FSym1 x)) sF)) sX sFoo3 (sX :: Sing x)
tests/compile-and-dump/Singletons/Maybe.golden view
@@ -51,13 +51,13 @@ TFHelper_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210 instance PEq (Maybe a) where type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Maybe a -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Maybe a) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Maybe a) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210 _ Nothing a_0123456789876543210 = Apply (Apply ShowStringSym0 "Nothing") a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 (Just arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "Just ")) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -65,9 +65,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -75,9 +75,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Maybe a -> (~>) GHC.Types.Symbol GHC.Types.Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Maybe a) :: (~>) GHC.Types.Symbol GHC.Types.Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Maybe a) :: (~>) GHC.Types.Symbol GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -85,9 +85,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Maybe a -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Maybe a) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Maybe a) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow (Maybe a) where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -102,15 +102,13 @@ fromSing (SJust b) = Just (fromSing b) toSing Nothing = SomeSing SNothing toSing (Just (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SJust c) }+ = case toSing b :: SomeSing a of SomeSing c -> SomeSing (SJust c) instance SEq a => SEq (Maybe a) where (%==) ::- forall (t1 :: Maybe a) (t2 :: Maybe a).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun (Maybe a) ((~>) (Maybe a) Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Maybe a) (t2 :: Maybe a). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun (Maybe a) ((~>) (Maybe a) Bool)+ -> GHC.Types.Type) t1) t2) (%==) SNothing SNothing = STrue (%==) SNothing (SJust _) = SFalse (%==) (SJust _) SNothing = SFalse@@ -122,14 +120,13 @@ sB_0123456789876543210 instance SShow a => SShow (Maybe a) where sShowsPrec ::- forall (t1 :: GHC.Types.Nat)+ forall (t1 :: GHC.Num.Natural.Natural) (t2 :: Maybe a)- (t3 :: GHC.Types.Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))- -> GHC.Types.Type) t1) t2) t3)+ (t3 :: GHC.Types.Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (Maybe a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec _ SNothing@@ -159,13 +156,13 @@ sA_0123456789876543210 instance SDecide a => SDecide (Maybe a) where (%~) SNothing SNothing = Proved Refl- (%~) SNothing (SJust _) = Disproved (\ x -> case x of)- (%~) (SJust _) SNothing = Disproved (\ x -> case x of)+ (%~) SNothing (SJust _) = Disproved (\ x -> case x of {})+ (%~) (SJust _) SNothing = Disproved (\ x -> case x of {}) (%~) (SJust a) (SJust b) = case ((%~) a) b of Proved Refl -> Proved Refl Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance SDecide a => Data.Type.Equality.TestEquality (SMaybe :: Maybe a -> GHC.Types.Type) where@@ -182,5 +179,7 @@ sing = SNothing instance SingI n => SingI (Just (n :: a)) where sing = SJust sing+ instance SingI1 Just where+ liftSing = SJust instance SingI (JustSym0 :: (~>) a (Maybe a)) where sing = (singFun1 @JustSym0) SJust
tests/compile-and-dump/Singletons/Nat.golden view
@@ -105,13 +105,13 @@ TFHelper_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = TFHelper_0123456789876543210 a0123456789876543210 a0123456789876543210 instance PEq Nat where type (==) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Nat -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Nat) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Nat) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210 _ Zero a_0123456789876543210 = Apply (Apply ShowStringSym0 "Zero") a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 (Succ arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "Succ ")) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -119,9 +119,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -129,9 +129,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Nat -> (~>) GHC.Types.Symbol GHC.Types.Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Nat) :: (~>) GHC.Types.Symbol GHC.Types.Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Nat) :: (~>) GHC.Types.Symbol GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -139,9 +139,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Nat -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Nat) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Nat) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow Nat where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -177,8 +177,8 @@ sPred :: forall (t :: Nat). Sing t -> Sing (Apply PredSym0 t :: Nat) sPlus ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply PlusSym0 t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t -> Sing (Apply (Apply PlusSym0 t) t :: Nat) sPred SZero = SZero sPred (SSucc (sN :: Sing n)) = sN sPlus SZero (sM :: Sing m) = sM@@ -192,6 +192,9 @@ instance SingI d => SingI (PlusSym1 (d :: Nat) :: (~>) Nat Nat) where sing = (singFun1 @(PlusSym1 (d :: Nat))) (sPlus (sing @d))+ instance SingI1 (PlusSym1 :: Nat -> (~>) Nat Nat) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @(PlusSym1 (d :: Nat))) (sPlus s) data SNat :: Nat -> GHC.Types.Type where SZero :: SNat (Zero :: Nat)@@ -203,15 +206,13 @@ fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ (b :: Demote Nat))- = case toSing b :: SomeSing Nat of {- SomeSing c -> SomeSing (SSucc c) }+ = case toSing b :: SomeSing Nat of SomeSing c -> SomeSing (SSucc c) instance SEq Nat => SEq Nat where (%==) ::- forall (t1 :: Nat) (t2 :: Nat).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Nat ((~>) Nat Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Nat) (t2 :: Nat). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Nat ((~>) Nat Bool)+ -> GHC.Types.Type) t1) t2) (%==) SZero SZero = STrue (%==) SZero (SSucc _) = SFalse (%==) (SSucc _) SZero = SFalse@@ -223,12 +224,13 @@ sB_0123456789876543210 instance SShow Nat => SShow Nat where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Nat) (t3 :: GHC.Types.Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Nat)+ (t3 :: GHC.Types.Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) Nat ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec _ SZero@@ -258,11 +260,10 @@ sA_0123456789876543210 instance SOrd Nat => SOrd Nat where sCompare ::- forall (t1 :: Nat) (t2 :: Nat).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat ((~>) Nat Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Nat) (t2 :: Nat). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat ((~>) Nat Ordering)+ -> GHC.Types.Type) t1) t2) sCompare SZero SZero = (applySing ((applySing@@ -289,13 +290,13 @@ sCompare (SSucc _) SZero = SGT instance SDecide Nat => SDecide Nat where (%~) SZero SZero = Proved Refl- (%~) SZero (SSucc _) = Disproved (\ x -> case x of)- (%~) (SSucc _) SZero = Disproved (\ x -> case x of)+ (%~) SZero (SSucc _) = Disproved (\ x -> case x of {})+ (%~) (SSucc _) SZero = Disproved (\ x -> case x of {}) (%~) (SSucc a) (SSucc b) = case ((%~) a) b of Proved Refl -> Proved Refl Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance SDecide Nat => Data.Type.Equality.TestEquality (SNat :: Nat -> GHC.Types.Type) where@@ -312,5 +313,7 @@ sing = SZero instance SingI n => SingI (Succ (n :: Nat)) where sing = SSucc sing+ instance SingI1 Succ where+ liftSing = SSucc instance SingI (SuccSym0 :: (~>) Nat Nat) where sing = (singFun1 @SuccSym0) SSucc
tests/compile-and-dump/Singletons/NatSymbolReflexive.hs view
@@ -4,7 +4,7 @@ import GHC.TypeLits import Prelude.Singletons -test1 :: forall (a :: Nat). Sing a -> (a == a) :~: True+test1 :: forall (a :: Natural). Sing a -> (a == a) :~: True test1 _ = Refl test2 :: forall (a :: Symbol). Sing a -> (a == a) :~: True
+ tests/compile-and-dump/Singletons/Natural.golden view
@@ -0,0 +1,78 @@+Singletons/Natural.hs:(0,0)-(0,0): Splicing declarations+ singletons+ [d| addAge :: Age -> Age -> Age+ addAge (MkAge (x :: Natural)) (MkAge (y :: Natural))+ = MkAge (x + y :: Natural)+ + newtype Age = MkAge Natural |]+ ======>+ newtype Age = MkAge Natural+ addAge :: Age -> Age -> Age+ addAge (MkAge (x :: Natural)) (MkAge (y :: Natural))+ = MkAge ((x + y) :: Natural)+ type MkAgeSym0 :: (~>) Natural Age+ data MkAgeSym0 :: (~>) Natural Age+ where+ MkAgeSym0KindInference :: SameKind (Apply MkAgeSym0 arg) (MkAgeSym1 arg) =>+ MkAgeSym0 a0123456789876543210+ type instance Apply MkAgeSym0 a0123456789876543210 = MkAge a0123456789876543210+ instance SuppressUnusedWarnings MkAgeSym0 where+ suppressUnusedWarnings = snd (((,) MkAgeSym0KindInference) ())+ type MkAgeSym1 :: Natural -> Age+ type family MkAgeSym1 (a0123456789876543210 :: Natural) :: Age where+ MkAgeSym1 a0123456789876543210 = MkAge a0123456789876543210+ type AddAgeSym0 :: (~>) Age ((~>) Age Age)+ data AddAgeSym0 :: (~>) Age ((~>) Age Age)+ where+ AddAgeSym0KindInference :: SameKind (Apply AddAgeSym0 arg) (AddAgeSym1 arg) =>+ AddAgeSym0 a0123456789876543210+ type instance Apply AddAgeSym0 a0123456789876543210 = AddAgeSym1 a0123456789876543210+ instance SuppressUnusedWarnings AddAgeSym0 where+ suppressUnusedWarnings = snd (((,) AddAgeSym0KindInference) ())+ type AddAgeSym1 :: Age -> (~>) Age Age+ data AddAgeSym1 (a0123456789876543210 :: Age) :: (~>) Age Age+ where+ AddAgeSym1KindInference :: SameKind (Apply (AddAgeSym1 a0123456789876543210) arg) (AddAgeSym2 a0123456789876543210 arg) =>+ AddAgeSym1 a0123456789876543210 a0123456789876543210+ type instance Apply (AddAgeSym1 a0123456789876543210) a0123456789876543210 = AddAge a0123456789876543210 a0123456789876543210+ instance SuppressUnusedWarnings (AddAgeSym1 a0123456789876543210) where+ suppressUnusedWarnings = snd (((,) AddAgeSym1KindInference) ())+ type AddAgeSym2 :: Age -> Age -> Age+ type family AddAgeSym2 (a0123456789876543210 :: Age) (a0123456789876543210 :: Age) :: Age where+ AddAgeSym2 a0123456789876543210 a0123456789876543210 = AddAge a0123456789876543210 a0123456789876543210+ type AddAge :: Age -> Age -> Age+ type family AddAge (a :: Age) (a :: Age) :: Age where+ AddAge (MkAge (x :: Natural)) (MkAge (y :: Natural)) = Apply MkAgeSym0 (Apply (Apply (+@#@$) x) y :: Natural)+ sAddAge ::+ forall (t :: Age) (t :: Age). Sing t+ -> Sing t -> Sing (Apply (Apply AddAgeSym0 t) t :: Age)+ sAddAge (SMkAge (sX :: Sing x)) (SMkAge (sY :: Sing y))+ = case ((,) (sX :: Sing x)) (sY :: Sing y) of+ (,) (_ :: Sing (x :: Natural)) (_ :: Sing (y :: Natural))+ -> (applySing ((singFun1 @MkAgeSym0) SMkAge))+ ((applySing ((applySing ((singFun2 @(+@#@$)) (%+))) sX)) sY ::+ Sing (Apply (Apply (+@#@$) x) y :: Natural))+ instance SingI (AddAgeSym0 :: (~>) Age ((~>) Age Age)) where+ sing = (singFun2 @AddAgeSym0) sAddAge+ instance SingI d =>+ SingI (AddAgeSym1 (d :: Age) :: (~>) Age Age) where+ sing = (singFun1 @(AddAgeSym1 (d :: Age))) (sAddAge (sing @d))+ instance SingI1 (AddAgeSym1 :: Age -> (~>) Age Age) where+ liftSing (s :: Sing (d :: Age))+ = (singFun1 @(AddAgeSym1 (d :: Age))) (sAddAge s)+ data SAge :: Age -> GHC.Types.Type+ where+ SMkAge :: forall (n :: Natural). (Sing n) -> SAge (MkAge n :: Age)+ type instance Sing @Age = SAge+ instance SingKind Age where+ type Demote Age = Age+ fromSing (SMkAge b) = MkAge (fromSing b)+ toSing (MkAge (b :: Demote Natural))+ = case toSing b :: SomeSing Natural of+ SomeSing c -> SomeSing (SMkAge c)+ instance SingI n => SingI (MkAge (n :: Natural)) where+ sing = SMkAge sing+ instance SingI1 MkAge where+ liftSing = SMkAge+ instance SingI (MkAgeSym0 :: (~>) Natural Age) where+ sing = (singFun1 @MkAgeSym0) SMkAge
+ tests/compile-and-dump/Singletons/Natural.hs view
@@ -0,0 +1,13 @@+module Singletons.Natural where++import Data.Singletons.TH+import Numeric.Natural (Natural)+import Prelude.Singletons++$(singletons [d|+ newtype Age = MkAge Natural++ addAge :: Age -> Age -> Age+ addAge (MkAge (x :: Natural)) (MkAge (y :: Natural)) =+ MkAge (x + y :: Natural)+ |])
tests/compile-and-dump/Singletons/NegativeLiterals.golden view
@@ -1,15 +1,21 @@ Singletons/NegativeLiterals.hs:(0,0)-(0,0): Splicing declarations singletons- [d| f :: Nat+ [d| f :: Natural f = -1 |] ======>- f :: Nat+ f :: Natural f = (-1)- type FSym0 :: Nat- type family FSym0 :: Nat where+ type FSym0 :: Natural+ type family FSym0 :: Natural where FSym0 = F- type F :: Nat- type family F :: Nat where+ type F :: Natural+ type family F :: Natural where F = Negate (FromInteger 1)- sF :: Sing (FSym0 :: Nat)+ sF :: Sing (FSym0 :: Natural) sF = sNegate (sFromInteger (sing :: Sing 1))++Singletons/NegativeLiterals.hs:0:0: warning: [-Woverflowed-literals]+ Literal -1 is negative but Natural only supports positive numbers+ |+7 | $(singletons [d|+ | ^^^^^^^^^^^^^^^...
tests/compile-and-dump/Singletons/NegativeLiterals.hs view
@@ -2,9 +2,9 @@ module Singletons.NegativeLiterals where import Data.Singletons.Base.TH-import GHC.TypeNats (Nat)+import Numeric.Natural (Natural) $(singletons [d|- f :: Nat+ f :: Natural f = -1 |])
tests/compile-and-dump/Singletons/Operators.golden view
@@ -83,8 +83,8 @@ Child FLeaf = FLeafSym0 Child ((:+:) a _) = a (%+) ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply (+@#@$) t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t -> Sing (Apply (Apply (+@#@$) t) t :: Nat) sChild :: forall (t :: Foo). Sing t -> Sing (Apply ChildSym0 t :: Foo) (%+) SZero (sM :: Sing m) = sM@@ -98,6 +98,9 @@ instance SingI d => SingI ((+@#@$$) (d :: Nat) :: (~>) Nat Nat) where sing = (singFun1 @((+@#@$$) (d :: Nat))) ((%+) (sing @d))+ instance SingI1 ((+@#@$$) :: Nat -> (~>) Nat Nat) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @((+@#@$$) (d :: Nat))) ((%+) s) instance SingI (ChildSym0 :: (~>) Foo Foo) where sing = (singFun1 @ChildSym0) sChild data SFoo :: Foo -> GHC.Types.Type@@ -114,15 +117,22 @@ toSing ((:+:) (b :: Demote Foo) (b :: Demote Foo)) = case ((,) (toSing b :: SomeSing Foo)) (toSing b :: SomeSing Foo)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%+:) c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%+:) c) c) instance SingI FLeaf where sing = SFLeaf instance (SingI n, SingI n) => SingI ((:+:) (n :: Foo) (n :: Foo)) where sing = ((:%+:) sing) sing+ instance SingI n => SingI1 ((:+:) (n :: Foo)) where+ liftSing = (:%+:) sing+ instance SingI2 (:+:) where+ liftSing2 = (:%+:) instance SingI ((:+:@#@$) :: (~>) Foo ((~>) Foo Foo)) where sing = (singFun2 @(:+:@#@$)) (:%+:) instance SingI d => SingI ((:+:@#@$$) (d :: Foo) :: (~>) Foo Foo) where sing = (singFun1 @((:+:@#@$$) (d :: Foo))) ((:%+:) (sing @d))+ instance SingI1 ((:+:@#@$$) :: Foo -> (~>) Foo Foo) where+ liftSing (s :: Sing (d :: Foo))+ = (singFun1 @((:+:@#@$$) (d :: Foo))) ((:%+:) s)
tests/compile-and-dump/Singletons/OrdDeriving.golden view
@@ -37,8 +37,10 @@ type SuccSym1 :: Nat -> Nat type family SuccSym1 (a0123456789876543210 :: Nat) :: Nat where SuccSym1 a0123456789876543210 = Succ a0123456789876543210- type ASym0 :: forall a b c d.- (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))+ type ASym0 :: forall a+ b+ c+ d. (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) data ASym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) where ASym0KindInference :: SameKind (Apply ASym0 arg) (ASym1 arg) =>@@ -46,8 +48,8 @@ type instance Apply ASym0 a0123456789876543210 = ASym1 a0123456789876543210 instance SuppressUnusedWarnings ASym0 where suppressUnusedWarnings = snd (((,) ASym0KindInference) ())- type ASym1 :: forall a b c d.- a -> (~>) b ((~>) c ((~>) d (Foo a b c d)))+ type ASym1 :: forall a b c d. a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d))) data ASym1 (a0123456789876543210 :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d))) where ASym1KindInference :: SameKind (Apply (ASym1 a0123456789876543210) arg) (ASym2 a0123456789876543210 arg) =>@@ -55,8 +57,8 @@ type instance Apply (ASym1 a0123456789876543210) a0123456789876543210 = ASym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (ASym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ASym1KindInference) ())- type ASym2 :: forall a b c d.- a -> b -> (~>) c ((~>) d (Foo a b c d))+ type ASym2 :: forall a b c d. a+ -> b -> (~>) c ((~>) d (Foo a b c d)) data ASym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: (~>) c ((~>) d (Foo a b c d)) where ASym2KindInference :: SameKind (Apply (ASym2 a0123456789876543210 a0123456789876543210) arg) (ASym3 a0123456789876543210 a0123456789876543210 arg) =>@@ -75,8 +77,10 @@ type ASym4 :: forall a b c d. a -> b -> c -> d -> Foo a b c d type family ASym4 (a0123456789876543210 :: a) (a0123456789876543210 :: b) (a0123456789876543210 :: c) (a0123456789876543210 :: d) :: Foo a b c d where ASym4 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 = A a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- type BSym0 :: forall a b c d.- (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))+ type BSym0 :: forall a+ b+ c+ d. (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) data BSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) where BSym0KindInference :: SameKind (Apply BSym0 arg) (BSym1 arg) =>@@ -84,8 +88,8 @@ type instance Apply BSym0 a0123456789876543210 = BSym1 a0123456789876543210 instance SuppressUnusedWarnings BSym0 where suppressUnusedWarnings = snd (((,) BSym0KindInference) ())- type BSym1 :: forall a b c d.- a -> (~>) b ((~>) c ((~>) d (Foo a b c d)))+ type BSym1 :: forall a b c d. a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d))) data BSym1 (a0123456789876543210 :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d))) where BSym1KindInference :: SameKind (Apply (BSym1 a0123456789876543210) arg) (BSym2 a0123456789876543210 arg) =>@@ -93,8 +97,8 @@ type instance Apply (BSym1 a0123456789876543210) a0123456789876543210 = BSym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (BSym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) BSym1KindInference) ())- type BSym2 :: forall a b c d.- a -> b -> (~>) c ((~>) d (Foo a b c d))+ type BSym2 :: forall a b c d. a+ -> b -> (~>) c ((~>) d (Foo a b c d)) data BSym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: (~>) c ((~>) d (Foo a b c d)) where BSym2KindInference :: SameKind (Apply (BSym2 a0123456789876543210 a0123456789876543210) arg) (BSym3 a0123456789876543210 a0123456789876543210 arg) =>@@ -113,8 +117,10 @@ type BSym4 :: forall a b c d. a -> b -> c -> d -> Foo a b c d type family BSym4 (a0123456789876543210 :: a) (a0123456789876543210 :: b) (a0123456789876543210 :: c) (a0123456789876543210 :: d) :: Foo a b c d where BSym4 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 = B a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- type CSym0 :: forall a b c d.- (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))+ type CSym0 :: forall a+ b+ c+ d. (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) data CSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) where CSym0KindInference :: SameKind (Apply CSym0 arg) (CSym1 arg) =>@@ -122,8 +128,8 @@ type instance Apply CSym0 a0123456789876543210 = CSym1 a0123456789876543210 instance SuppressUnusedWarnings CSym0 where suppressUnusedWarnings = snd (((,) CSym0KindInference) ())- type CSym1 :: forall a b c d.- a -> (~>) b ((~>) c ((~>) d (Foo a b c d)))+ type CSym1 :: forall a b c d. a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d))) data CSym1 (a0123456789876543210 :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d))) where CSym1KindInference :: SameKind (Apply (CSym1 a0123456789876543210) arg) (CSym2 a0123456789876543210 arg) =>@@ -131,8 +137,8 @@ type instance Apply (CSym1 a0123456789876543210) a0123456789876543210 = CSym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (CSym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) CSym1KindInference) ())- type CSym2 :: forall a b c d.- a -> b -> (~>) c ((~>) d (Foo a b c d))+ type CSym2 :: forall a b c d. a+ -> b -> (~>) c ((~>) d (Foo a b c d)) data CSym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: (~>) c ((~>) d (Foo a b c d)) where CSym2KindInference :: SameKind (Apply (CSym2 a0123456789876543210 a0123456789876543210) arg) (CSym3 a0123456789876543210 a0123456789876543210 arg) =>@@ -151,8 +157,10 @@ type CSym4 :: forall a b c d. a -> b -> c -> d -> Foo a b c d type family CSym4 (a0123456789876543210 :: a) (a0123456789876543210 :: b) (a0123456789876543210 :: c) (a0123456789876543210 :: d) :: Foo a b c d where CSym4 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 = C a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- type DSym0 :: forall a b c d.- (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))+ type DSym0 :: forall a+ b+ c+ d. (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) data DSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) where DSym0KindInference :: SameKind (Apply DSym0 arg) (DSym1 arg) =>@@ -160,8 +168,8 @@ type instance Apply DSym0 a0123456789876543210 = DSym1 a0123456789876543210 instance SuppressUnusedWarnings DSym0 where suppressUnusedWarnings = snd (((,) DSym0KindInference) ())- type DSym1 :: forall a b c d.- a -> (~>) b ((~>) c ((~>) d (Foo a b c d)))+ type DSym1 :: forall a b c d. a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d))) data DSym1 (a0123456789876543210 :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d))) where DSym1KindInference :: SameKind (Apply (DSym1 a0123456789876543210) arg) (DSym2 a0123456789876543210 arg) =>@@ -169,8 +177,8 @@ type instance Apply (DSym1 a0123456789876543210) a0123456789876543210 = DSym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (DSym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) DSym1KindInference) ())- type DSym2 :: forall a b c d.- a -> b -> (~>) c ((~>) d (Foo a b c d))+ type DSym2 :: forall a b c d. a+ -> b -> (~>) c ((~>) d (Foo a b c d)) data DSym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: (~>) c ((~>) d (Foo a b c d)) where DSym2KindInference :: SameKind (Apply (DSym2 a0123456789876543210 a0123456789876543210) arg) (DSym3 a0123456789876543210 a0123456789876543210 arg) =>@@ -189,8 +197,10 @@ type DSym4 :: forall a b c d. a -> b -> c -> d -> Foo a b c d type family DSym4 (a0123456789876543210 :: a) (a0123456789876543210 :: b) (a0123456789876543210 :: c) (a0123456789876543210 :: d) :: Foo a b c d where DSym4 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 = D a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- type ESym0 :: forall a b c d.- (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))+ type ESym0 :: forall a+ b+ c+ d. (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) data ESym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) where ESym0KindInference :: SameKind (Apply ESym0 arg) (ESym1 arg) =>@@ -198,8 +208,8 @@ type instance Apply ESym0 a0123456789876543210 = ESym1 a0123456789876543210 instance SuppressUnusedWarnings ESym0 where suppressUnusedWarnings = snd (((,) ESym0KindInference) ())- type ESym1 :: forall a b c d.- a -> (~>) b ((~>) c ((~>) d (Foo a b c d)))+ type ESym1 :: forall a b c d. a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d))) data ESym1 (a0123456789876543210 :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d))) where ESym1KindInference :: SameKind (Apply (ESym1 a0123456789876543210) arg) (ESym2 a0123456789876543210 arg) =>@@ -207,8 +217,8 @@ type instance Apply (ESym1 a0123456789876543210) a0123456789876543210 = ESym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (ESym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ESym1KindInference) ())- type ESym2 :: forall a b c d.- a -> b -> (~>) c ((~>) d (Foo a b c d))+ type ESym2 :: forall a b c d. a+ -> b -> (~>) c ((~>) d (Foo a b c d)) data ESym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: (~>) c ((~>) d (Foo a b c d)) where ESym2KindInference :: SameKind (Apply (ESym2 a0123456789876543210 a0123456789876543210) arg) (ESym3 a0123456789876543210 a0123456789876543210 arg) =>@@ -227,8 +237,10 @@ type ESym4 :: forall a b c d. a -> b -> c -> d -> Foo a b c d type family ESym4 (a0123456789876543210 :: a) (a0123456789876543210 :: b) (a0123456789876543210 :: c) (a0123456789876543210 :: d) :: Foo a b c d where ESym4 a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 = E a0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210- type FSym0 :: forall a b c d.- (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))+ type FSym0 :: forall a+ b+ c+ d. (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) data FSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d)))) where FSym0KindInference :: SameKind (Apply FSym0 arg) (FSym1 arg) =>@@ -236,8 +248,8 @@ type instance Apply FSym0 a0123456789876543210 = FSym1 a0123456789876543210 instance SuppressUnusedWarnings FSym0 where suppressUnusedWarnings = snd (((,) FSym0KindInference) ())- type FSym1 :: forall a b c d.- a -> (~>) b ((~>) c ((~>) d (Foo a b c d)))+ type FSym1 :: forall a b c d. a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d))) data FSym1 (a0123456789876543210 :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d))) where FSym1KindInference :: SameKind (Apply (FSym1 a0123456789876543210) arg) (FSym2 a0123456789876543210 arg) =>@@ -245,8 +257,8 @@ type instance Apply (FSym1 a0123456789876543210) a0123456789876543210 = FSym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (FSym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) FSym1KindInference) ())- type FSym2 :: forall a b c d.- a -> b -> (~>) c ((~>) d (Foo a b c d))+ type FSym2 :: forall a b c d. a+ -> b -> (~>) c ((~>) d (Foo a b c d)) data FSym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: (~>) c ((~>) d (Foo a b c d)) where FSym2KindInference :: SameKind (Apply (FSym2 a0123456789876543210 a0123456789876543210) arg) (FSym3 a0123456789876543210 a0123456789876543210 arg) =>@@ -462,8 +474,7 @@ fromSing (SSucc b) = Succ (fromSing b) toSing Zero = SomeSing SZero toSing (Succ (b :: Demote Nat))- = case toSing b :: SomeSing Nat of {- SomeSing c -> SomeSing (SSucc c) }+ = case toSing b :: SomeSing Nat of SomeSing c -> SomeSing (SSucc c) data SFoo :: forall a b c d. Foo a b c d -> GHC.Types.Type where SA :: forall a b c d (n :: a) (n :: b) (n :: c) (n :: d).@@ -524,61 +535,60 @@ ((((,,,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b)) (toSing b :: SomeSing c)) (toSing b :: SomeSing d)- of {+ of (,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing ((((SA c) c) c) c) }+ -> SomeSing ((((SA c) c) c) c) toSing (B (b :: Demote a) (b :: Demote b) (b :: Demote c) (b :: Demote d)) = case ((((,,,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b)) (toSing b :: SomeSing c)) (toSing b :: SomeSing d)- of {+ of (,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing ((((SB c) c) c) c) }+ -> SomeSing ((((SB c) c) c) c) toSing (C (b :: Demote a) (b :: Demote b) (b :: Demote c) (b :: Demote d)) = case ((((,,,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b)) (toSing b :: SomeSing c)) (toSing b :: SomeSing d)- of {+ of (,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing ((((SC c) c) c) c) }+ -> SomeSing ((((SC c) c) c) c) toSing (D (b :: Demote a) (b :: Demote b) (b :: Demote c) (b :: Demote d)) = case ((((,,,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b)) (toSing b :: SomeSing c)) (toSing b :: SomeSing d)- of {+ of (,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing ((((SD c) c) c) c) }+ -> SomeSing ((((SD c) c) c) c) toSing (E (b :: Demote a) (b :: Demote b) (b :: Demote c) (b :: Demote d)) = case ((((,,,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b)) (toSing b :: SomeSing c)) (toSing b :: SomeSing d)- of {+ of (,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing ((((SE c) c) c) c) }+ -> SomeSing ((((SE c) c) c) c) toSing (F (b :: Demote a) (b :: Demote b) (b :: Demote c) (b :: Demote d)) = case ((((,,,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b)) (toSing b :: SomeSing c)) (toSing b :: SomeSing d)- of {+ of (,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c)- -> SomeSing ((((SF c) c) c) c) }+ -> SomeSing ((((SF c) c) c) c) instance SEq Nat => SEq Nat where (%==) ::- forall (t1 :: Nat) (t2 :: Nat).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Nat ((~>) Nat Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Nat) (t2 :: Nat). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Nat ((~>) Nat Bool)+ -> GHC.Types.Type) t1) t2) (%==) SZero SZero = STrue (%==) SZero (SSucc _) = SFalse (%==) (SSucc _) SZero = SFalse@@ -590,11 +600,10 @@ sB_0123456789876543210 instance SOrd Nat => SOrd Nat where sCompare ::- forall (t1 :: Nat) (t2 :: Nat).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat ((~>) Nat Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Nat) (t2 :: Nat). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun Nat ((~>) Nat Ordering)+ -> GHC.Types.Type) t1) t2) sCompare SZero SZero = (applySing ((applySing@@ -621,11 +630,10 @@ sCompare (SSucc _) SZero = SGT instance (SEq a, SEq b, SEq c, SEq d) => SEq (Foo a b c d) where (%==) ::- forall (t1 :: Foo a b c d) (t2 :: Foo a b c d).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun (Foo a b c d) ((~>) (Foo a b c d) Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Foo a b c d) (t2 :: Foo a b c d). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun (Foo a b c d) ((~>) (Foo a b c d) Bool)+ -> GHC.Types.Type) t1) t2) (%==) (SA (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -821,11 +829,10 @@ instance (SOrd a, SOrd b, SOrd c, SOrd d) => SOrd (Foo a b c d) where sCompare ::- forall (t1 :: Foo a b c d) (t2 :: Foo a b c d).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun (Foo a b c d) ((~>) (Foo a b c d) Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Foo a b c d) (t2 :: Foo a b c d). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun (Foo a b c d) ((~>) (Foo a b c d) Ordering)+ -> GHC.Types.Type) t1) t2) sCompare (SA (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -1092,13 +1099,13 @@ sCompare (SF _ _ _ _) (SE _ _ _ _) = SGT instance SDecide Nat => SDecide Nat where (%~) SZero SZero = Proved Refl- (%~) SZero (SSucc _) = Disproved (\ x -> case x of)- (%~) (SSucc _) SZero = Disproved (\ x -> case x of)+ (%~) SZero (SSucc _) = Disproved (\ x -> case x of {})+ (%~) (SSucc _) SZero = Disproved (\ x -> case x of {}) (%~) (SSucc a) (SSucc b) = case ((%~) a) b of Proved Refl -> Proved Refl Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance SDecide Nat => Data.Type.Equality.TestEquality (SNat :: Nat -> GHC.Types.Type) where@@ -1118,19 +1125,19 @@ (,,,) (Proved Refl) (Proved Refl) (Proved Refl) (Proved Refl) -> Proved Refl (,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- (%~) (SA _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SA _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SA _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SA _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SA _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SB _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of)+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ (%~) (SA _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SA _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SA _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SA _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SA _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SB _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of {}) (%~) (SB a a a a) (SB b b b b) = case ((((,,,) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)@@ -1138,19 +1145,19 @@ (,,,) (Proved Refl) (Proved Refl) (Proved Refl) (Proved Refl) -> Proved Refl (,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- (%~) (SB _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SB _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SB _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SB _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SC _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SC _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of)+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ (%~) (SB _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SB _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SB _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SB _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SC _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SC _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of {}) (%~) (SC a a a a) (SC b b b b) = case ((((,,,) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)@@ -1158,19 +1165,19 @@ (,,,) (Proved Refl) (Proved Refl) (Proved Refl) (Proved Refl) -> Proved Refl (,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- (%~) (SC _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SC _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SC _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SD _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SD _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SD _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of)+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ (%~) (SC _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SC _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SC _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SD _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SD _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SD _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of {}) (%~) (SD a a a a) (SD b b b b) = case ((((,,,) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)@@ -1178,19 +1185,19 @@ (,,,) (Proved Refl) (Proved Refl) (Proved Refl) (Proved Refl) -> Proved Refl (,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- (%~) (SD _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SD _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SE _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SE _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SE _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SE _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of)+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ (%~) (SD _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SD _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SE _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SE _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SE _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SE _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of {}) (%~) (SE a a a a) (SE b b b b) = case ((((,,,) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)@@ -1198,19 +1205,19 @@ (,,,) (Proved Refl) (Proved Refl) (Proved Refl) (Proved Refl) -> Proved Refl (,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- (%~) (SE _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SF _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SF _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SF _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SF _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of)- (%~) (SF _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of)+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ (%~) (SE _ _ _ _) (SF _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SF _ _ _ _) (SA _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SF _ _ _ _) (SB _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SF _ _ _ _) (SC _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SF _ _ _ _) (SD _ _ _ _) = Disproved (\ x -> case x of {})+ (%~) (SF _ _ _ _) (SE _ _ _ _) = Disproved (\ x -> case x of {}) (%~) (SF a a a a) (SF b b b b) = case ((((,,,) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)) (((%~) a) b)@@ -1218,13 +1225,13 @@ (,,,) (Proved Refl) (Proved Refl) (Proved Refl) (Proved Refl) -> Proved Refl (,,,) (Disproved contra) _ _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ (Disproved contra) _ _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,,,) _ _ _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance (SDecide a, SDecide b, SDecide c, SDecide d) => Data.Type.Equality.TestEquality (SFoo :: Foo a b c d -> GHC.Types.Type) where@@ -1239,107 +1246,265 @@ sing = SZero instance SingI n => SingI (Succ (n :: Nat)) where sing = SSucc sing+ instance SingI1 Succ where+ liftSing = SSucc instance SingI (SuccSym0 :: (~>) Nat Nat) where sing = (singFun1 @SuccSym0) SSucc instance (SingI n, SingI n, SingI n, SingI n) => SingI (A (n :: a) (n :: b) (n :: c) (n :: d)) where sing = (((SA sing) sing) sing) sing+ instance (SingI n, SingI n, SingI n) =>+ SingI1 (A (n :: a) (n :: b) (n :: c)) where+ liftSing = ((SA sing) sing) sing+ instance (SingI n, SingI n) => SingI2 (A (n :: a) (n :: b)) where+ liftSing2 = (SA sing) sing instance SingI (ASym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))) where sing = (singFun4 @ASym0) SA instance SingI d => SingI (ASym1 (d :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d)))) where sing = (singFun3 @(ASym1 (d :: a))) (SA (sing @d))+ instance SingI1 (ASym1 :: a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d)))) where+ liftSing (s :: Sing (d :: a)) = (singFun3 @(ASym1 (d :: a))) (SA s) instance (SingI d, SingI d) => SingI (ASym2 (d :: a) (d :: b) :: (~>) c ((~>) d (Foo a b c d))) where sing = (singFun2 @(ASym2 (d :: a) (d :: b))) ((SA (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (ASym2 (d :: a) :: b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing (s :: Sing (d :: b))+ = (singFun2 @(ASym2 (d :: a) (d :: b))) ((SA (sing @d)) s)+ instance SingI2 (ASym2 :: a+ -> b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun2 @(ASym2 (d :: a) (d :: b))) ((SA s) s) instance (SingI d, SingI d, SingI d) => SingI (ASym3 (d :: a) (d :: b) (d :: c) :: (~>) d (Foo a b c d)) where sing = (singFun1 @(ASym3 (d :: a) (d :: b) (d :: c))) (((SA (sing @d)) (sing @d)) (sing @d))+ instance (SingI d, SingI d) =>+ SingI1 (ASym3 (d :: a) (d :: b) :: c -> (~>) d (Foo a b c d)) where+ liftSing (s :: Sing (d :: c))+ = (singFun1 @(ASym3 (d :: a) (d :: b) (d :: c)))+ (((SA (sing @d)) (sing @d)) s)+ instance SingI d =>+ SingI2 (ASym3 (d :: a) :: b -> c -> (~>) d (Foo a b c d)) where+ liftSing2 (s :: Sing (d :: b)) (s :: Sing (d :: c))+ = (singFun1 @(ASym3 (d :: a) (d :: b) (d :: c)))+ (((SA (sing @d)) s) s) instance (SingI n, SingI n, SingI n, SingI n) => SingI (B (n :: a) (n :: b) (n :: c) (n :: d)) where sing = (((SB sing) sing) sing) sing+ instance (SingI n, SingI n, SingI n) =>+ SingI1 (B (n :: a) (n :: b) (n :: c)) where+ liftSing = ((SB sing) sing) sing+ instance (SingI n, SingI n) => SingI2 (B (n :: a) (n :: b)) where+ liftSing2 = (SB sing) sing instance SingI (BSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))) where sing = (singFun4 @BSym0) SB instance SingI d => SingI (BSym1 (d :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d)))) where sing = (singFun3 @(BSym1 (d :: a))) (SB (sing @d))+ instance SingI1 (BSym1 :: a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d)))) where+ liftSing (s :: Sing (d :: a)) = (singFun3 @(BSym1 (d :: a))) (SB s) instance (SingI d, SingI d) => SingI (BSym2 (d :: a) (d :: b) :: (~>) c ((~>) d (Foo a b c d))) where sing = (singFun2 @(BSym2 (d :: a) (d :: b))) ((SB (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (BSym2 (d :: a) :: b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing (s :: Sing (d :: b))+ = (singFun2 @(BSym2 (d :: a) (d :: b))) ((SB (sing @d)) s)+ instance SingI2 (BSym2 :: a+ -> b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun2 @(BSym2 (d :: a) (d :: b))) ((SB s) s) instance (SingI d, SingI d, SingI d) => SingI (BSym3 (d :: a) (d :: b) (d :: c) :: (~>) d (Foo a b c d)) where sing = (singFun1 @(BSym3 (d :: a) (d :: b) (d :: c))) (((SB (sing @d)) (sing @d)) (sing @d))+ instance (SingI d, SingI d) =>+ SingI1 (BSym3 (d :: a) (d :: b) :: c -> (~>) d (Foo a b c d)) where+ liftSing (s :: Sing (d :: c))+ = (singFun1 @(BSym3 (d :: a) (d :: b) (d :: c)))+ (((SB (sing @d)) (sing @d)) s)+ instance SingI d =>+ SingI2 (BSym3 (d :: a) :: b -> c -> (~>) d (Foo a b c d)) where+ liftSing2 (s :: Sing (d :: b)) (s :: Sing (d :: c))+ = (singFun1 @(BSym3 (d :: a) (d :: b) (d :: c)))+ (((SB (sing @d)) s) s) instance (SingI n, SingI n, SingI n, SingI n) => SingI (C (n :: a) (n :: b) (n :: c) (n :: d)) where sing = (((SC sing) sing) sing) sing+ instance (SingI n, SingI n, SingI n) =>+ SingI1 (C (n :: a) (n :: b) (n :: c)) where+ liftSing = ((SC sing) sing) sing+ instance (SingI n, SingI n) => SingI2 (C (n :: a) (n :: b)) where+ liftSing2 = (SC sing) sing instance SingI (CSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))) where sing = (singFun4 @CSym0) SC instance SingI d => SingI (CSym1 (d :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d)))) where sing = (singFun3 @(CSym1 (d :: a))) (SC (sing @d))+ instance SingI1 (CSym1 :: a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d)))) where+ liftSing (s :: Sing (d :: a)) = (singFun3 @(CSym1 (d :: a))) (SC s) instance (SingI d, SingI d) => SingI (CSym2 (d :: a) (d :: b) :: (~>) c ((~>) d (Foo a b c d))) where sing = (singFun2 @(CSym2 (d :: a) (d :: b))) ((SC (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (CSym2 (d :: a) :: b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing (s :: Sing (d :: b))+ = (singFun2 @(CSym2 (d :: a) (d :: b))) ((SC (sing @d)) s)+ instance SingI2 (CSym2 :: a+ -> b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun2 @(CSym2 (d :: a) (d :: b))) ((SC s) s) instance (SingI d, SingI d, SingI d) => SingI (CSym3 (d :: a) (d :: b) (d :: c) :: (~>) d (Foo a b c d)) where sing = (singFun1 @(CSym3 (d :: a) (d :: b) (d :: c))) (((SC (sing @d)) (sing @d)) (sing @d))+ instance (SingI d, SingI d) =>+ SingI1 (CSym3 (d :: a) (d :: b) :: c -> (~>) d (Foo a b c d)) where+ liftSing (s :: Sing (d :: c))+ = (singFun1 @(CSym3 (d :: a) (d :: b) (d :: c)))+ (((SC (sing @d)) (sing @d)) s)+ instance SingI d =>+ SingI2 (CSym3 (d :: a) :: b -> c -> (~>) d (Foo a b c d)) where+ liftSing2 (s :: Sing (d :: b)) (s :: Sing (d :: c))+ = (singFun1 @(CSym3 (d :: a) (d :: b) (d :: c)))+ (((SC (sing @d)) s) s) instance (SingI n, SingI n, SingI n, SingI n) => SingI (D (n :: a) (n :: b) (n :: c) (n :: d)) where sing = (((SD sing) sing) sing) sing+ instance (SingI n, SingI n, SingI n) =>+ SingI1 (D (n :: a) (n :: b) (n :: c)) where+ liftSing = ((SD sing) sing) sing+ instance (SingI n, SingI n) => SingI2 (D (n :: a) (n :: b)) where+ liftSing2 = (SD sing) sing instance SingI (DSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))) where sing = (singFun4 @DSym0) SD instance SingI d => SingI (DSym1 (d :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d)))) where sing = (singFun3 @(DSym1 (d :: a))) (SD (sing @d))+ instance SingI1 (DSym1 :: a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d)))) where+ liftSing (s :: Sing (d :: a)) = (singFun3 @(DSym1 (d :: a))) (SD s) instance (SingI d, SingI d) => SingI (DSym2 (d :: a) (d :: b) :: (~>) c ((~>) d (Foo a b c d))) where sing = (singFun2 @(DSym2 (d :: a) (d :: b))) ((SD (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (DSym2 (d :: a) :: b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing (s :: Sing (d :: b))+ = (singFun2 @(DSym2 (d :: a) (d :: b))) ((SD (sing @d)) s)+ instance SingI2 (DSym2 :: a+ -> b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun2 @(DSym2 (d :: a) (d :: b))) ((SD s) s) instance (SingI d, SingI d, SingI d) => SingI (DSym3 (d :: a) (d :: b) (d :: c) :: (~>) d (Foo a b c d)) where sing = (singFun1 @(DSym3 (d :: a) (d :: b) (d :: c))) (((SD (sing @d)) (sing @d)) (sing @d))+ instance (SingI d, SingI d) =>+ SingI1 (DSym3 (d :: a) (d :: b) :: c -> (~>) d (Foo a b c d)) where+ liftSing (s :: Sing (d :: c))+ = (singFun1 @(DSym3 (d :: a) (d :: b) (d :: c)))+ (((SD (sing @d)) (sing @d)) s)+ instance SingI d =>+ SingI2 (DSym3 (d :: a) :: b -> c -> (~>) d (Foo a b c d)) where+ liftSing2 (s :: Sing (d :: b)) (s :: Sing (d :: c))+ = (singFun1 @(DSym3 (d :: a) (d :: b) (d :: c)))+ (((SD (sing @d)) s) s) instance (SingI n, SingI n, SingI n, SingI n) => SingI (E (n :: a) (n :: b) (n :: c) (n :: d)) where sing = (((SE sing) sing) sing) sing+ instance (SingI n, SingI n, SingI n) =>+ SingI1 (E (n :: a) (n :: b) (n :: c)) where+ liftSing = ((SE sing) sing) sing+ instance (SingI n, SingI n) => SingI2 (E (n :: a) (n :: b)) where+ liftSing2 = (SE sing) sing instance SingI (ESym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))) where sing = (singFun4 @ESym0) SE instance SingI d => SingI (ESym1 (d :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d)))) where sing = (singFun3 @(ESym1 (d :: a))) (SE (sing @d))+ instance SingI1 (ESym1 :: a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d)))) where+ liftSing (s :: Sing (d :: a)) = (singFun3 @(ESym1 (d :: a))) (SE s) instance (SingI d, SingI d) => SingI (ESym2 (d :: a) (d :: b) :: (~>) c ((~>) d (Foo a b c d))) where sing = (singFun2 @(ESym2 (d :: a) (d :: b))) ((SE (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (ESym2 (d :: a) :: b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing (s :: Sing (d :: b))+ = (singFun2 @(ESym2 (d :: a) (d :: b))) ((SE (sing @d)) s)+ instance SingI2 (ESym2 :: a+ -> b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun2 @(ESym2 (d :: a) (d :: b))) ((SE s) s) instance (SingI d, SingI d, SingI d) => SingI (ESym3 (d :: a) (d :: b) (d :: c) :: (~>) d (Foo a b c d)) where sing = (singFun1 @(ESym3 (d :: a) (d :: b) (d :: c))) (((SE (sing @d)) (sing @d)) (sing @d))+ instance (SingI d, SingI d) =>+ SingI1 (ESym3 (d :: a) (d :: b) :: c -> (~>) d (Foo a b c d)) where+ liftSing (s :: Sing (d :: c))+ = (singFun1 @(ESym3 (d :: a) (d :: b) (d :: c)))+ (((SE (sing @d)) (sing @d)) s)+ instance SingI d =>+ SingI2 (ESym3 (d :: a) :: b -> c -> (~>) d (Foo a b c d)) where+ liftSing2 (s :: Sing (d :: b)) (s :: Sing (d :: c))+ = (singFun1 @(ESym3 (d :: a) (d :: b) (d :: c)))+ (((SE (sing @d)) s) s) instance (SingI n, SingI n, SingI n, SingI n) => SingI (F (n :: a) (n :: b) (n :: c) (n :: d)) where sing = (((SF sing) sing) sing) sing+ instance (SingI n, SingI n, SingI n) =>+ SingI1 (F (n :: a) (n :: b) (n :: c)) where+ liftSing = ((SF sing) sing) sing+ instance (SingI n, SingI n) => SingI2 (F (n :: a) (n :: b)) where+ liftSing2 = (SF sing) sing instance SingI (FSym0 :: (~>) a ((~>) b ((~>) c ((~>) d (Foo a b c d))))) where sing = (singFun4 @FSym0) SF instance SingI d => SingI (FSym1 (d :: a) :: (~>) b ((~>) c ((~>) d (Foo a b c d)))) where sing = (singFun3 @(FSym1 (d :: a))) (SF (sing @d))+ instance SingI1 (FSym1 :: a+ -> (~>) b ((~>) c ((~>) d (Foo a b c d)))) where+ liftSing (s :: Sing (d :: a)) = (singFun3 @(FSym1 (d :: a))) (SF s) instance (SingI d, SingI d) => SingI (FSym2 (d :: a) (d :: b) :: (~>) c ((~>) d (Foo a b c d))) where sing = (singFun2 @(FSym2 (d :: a) (d :: b))) ((SF (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (FSym2 (d :: a) :: b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing (s :: Sing (d :: b))+ = (singFun2 @(FSym2 (d :: a) (d :: b))) ((SF (sing @d)) s)+ instance SingI2 (FSym2 :: a+ -> b -> (~>) c ((~>) d (Foo a b c d))) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun2 @(FSym2 (d :: a) (d :: b))) ((SF s) s) instance (SingI d, SingI d, SingI d) => SingI (FSym3 (d :: a) (d :: b) (d :: c) :: (~>) d (Foo a b c d)) where sing = (singFun1 @(FSym3 (d :: a) (d :: b) (d :: c))) (((SF (sing @d)) (sing @d)) (sing @d))+ instance (SingI d, SingI d) =>+ SingI1 (FSym3 (d :: a) (d :: b) :: c -> (~>) d (Foo a b c d)) where+ liftSing (s :: Sing (d :: c))+ = (singFun1 @(FSym3 (d :: a) (d :: b) (d :: c)))+ (((SF (sing @d)) (sing @d)) s)+ instance SingI d =>+ SingI2 (FSym3 (d :: a) :: b -> c -> (~>) d (Foo a b c d)) where+ liftSing2 (s :: Sing (d :: b)) (s :: Sing (d :: c))+ = (singFun1 @(FSym3 (d :: a) (d :: b) (d :: c)))+ (((SF (sing @d)) s) s)
tests/compile-and-dump/Singletons/PatternMatching.golden view
@@ -51,12 +51,12 @@ Complex = Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0 type family Pr where Pr = Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:@#@$) ZeroSym0) NilSym0)- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Pair a b -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Pair a b) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Pair a b) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 p_0123456789876543210 (Pair arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "Pair ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Pair a b) ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Pair a b) ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Pair a b) ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Pair a b) ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -64,9 +64,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) (Pair a b) ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) (Pair a b) ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (Pair a b) ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -74,9 +74,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Pair a b -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Pair a b) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Pair a b) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -84,9 +84,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Pair a b -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Pair a b) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Pair a b) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow (Pair a b) where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -131,16 +131,17 @@ type Demote (Pair a b) = Pair (Demote a) (Demote b) fromSing (SPair b b) = (Pair (fromSing b)) (fromSing b) toSing (Pair (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SPair c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SPair c) c) instance (SShow a, SShow b) => SShow (Pair a b) where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Pair a b) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (Pair a b) ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Pair a b)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (Pair a b) ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec (sP_0123456789876543210 :: Sing p_0123456789876543210) (SPair (sArg_0123456789876543210 :: Sing arg_0123456789876543210)@@ -175,11 +176,18 @@ Show (SPair (z :: Pair a b)) instance (SingI n, SingI n) => SingI (Pair (n :: a) (n :: b)) where sing = (SPair sing) sing+ instance SingI n => SingI1 (Pair (n :: a)) where+ liftSing = SPair sing+ instance SingI2 Pair where+ liftSing2 = SPair instance SingI (PairSym0 :: (~>) a ((~>) b (Pair a b))) where sing = (singFun2 @PairSym0) SPair instance SingI d => SingI (PairSym1 (d :: a) :: (~>) b (Pair a b)) where sing = (singFun1 @(PairSym1 (d :: a))) (SPair (sing @d))+ instance SingI1 (PairSym1 :: a -> (~>) b (Pair a b)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(PairSym1 (d :: a))) (SPair s) Singletons/PatternMatching.hs:(0,0)-(0,0): Splicing declarations singletons [d| Pair sz lz = pr@@ -191,9 +199,9 @@ foo1 :: (a, b) -> a foo1 (x, y) = (\ _ -> x) y foo2 :: (# a, b #) -> a- foo2 t@(# x, y #) = case t of { (# a, b #) -> (\ _ -> a) b }+ foo2 t@(# x, y #) = case t of (# a, b #) -> (\ _ -> a) b silly :: a -> ()- silly x = case x of { _ -> () } |]+ silly x = case x of _ -> () |] ======> Pair sz lz = pr Pair (Pair jz zz) fls = complex@@ -204,9 +212,9 @@ foo1 :: (a, b) -> a foo1 (x, y) = (\ _ -> x) y foo2 :: (# a, b #) -> a- foo2 t@(# x, y #) = case t of { (# a, b #) -> (\ _ -> a) b }+ foo2 t@(# x, y #) = case t of (# a, b #) -> (\ _ -> a) b silly :: a -> ()- silly x = case x of { _ -> () }+ silly x = case x of _ -> () type family Case_0123456789876543210 x t where Case_0123456789876543210 x _ = Tuple0Sym0 data Let0123456789876543210TSym0 x0123456789876543210@@ -464,7 +472,7 @@ sX_0123456789876543210 :: Sing @_ X_0123456789876543210Sym0 sSilly (sX :: Sing x) = (id @(Sing (Case_0123456789876543210 x x :: ())))- (case sX of { _ -> STuple0 })+ (case sX of _ -> STuple0) sFoo2 (STuple2 (sX :: Sing x) (sY :: Sing y)) = let sT :: Sing @_ (Let0123456789876543210TSym2 x y)@@ -473,93 +481,93 @@ in (id @(Sing (Case_0123456789876543210 x y (Let0123456789876543210TSym2 x y) :: a)))- (case sT of {+ (case sT of STuple2 (sA :: Sing a) (sB :: Sing b) -> (applySing ((singFun1 @(Apply (Apply (Apply (Apply Lambda_0123456789876543210Sym0 a) b) x) y)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 a b x y arg_0123456789876543210)))- (case sArg_0123456789876543210 of { _ -> sA }) })))- sB })+ (case sArg_0123456789876543210 of _ -> sA))))+ sB) sFoo1 (STuple2 (sX :: Sing x) (sY :: Sing y)) = (applySing ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 x) y)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 x y arg_0123456789876543210)))- (case sArg_0123456789876543210 of { _ -> sX }) })))+ (case sArg_0123456789876543210 of _ -> sX)))) sY sBlimy = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SCons _ (SCons _ (SCons (SSucc (sY_0123456789876543210 :: Sing y_0123456789876543210)) SNil))- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sLsz = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0 :: Nat)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SCons _ (SCons (sY_0123456789876543210 :: Sing y_0123456789876543210) (SCons (SSucc _) SNil))- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sX_0123456789876543210 = sAList sTt = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of STuple3 _ _ (sY_0123456789876543210 :: Sing y_0123456789876543210)- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sTjz = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of STuple3 _ (sY_0123456789876543210 :: Sing y_0123456789876543210) _- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sTf = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of STuple3 (sY_0123456789876543210 :: Sing y_0123456789876543210) _ _- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sX_0123456789876543210 = sTuple sFls = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0 :: Bool)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SPair (SPair _ _) (sY_0123456789876543210 :: Sing y_0123456789876543210)- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sZz = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SPair (SPair _ (sY_0123456789876543210 :: Sing y_0123456789876543210)) _- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sJz = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SPair (SPair (sY_0123456789876543210 :: Sing y_0123456789876543210) _) _- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sX_0123456789876543210 = sComplex sLz = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SPair _ (sY_0123456789876543210 :: Sing y_0123456789876543210)- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sSz = (id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SPair (sY_0123456789876543210 :: Sing y_0123456789876543210) _- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sX_0123456789876543210 = sPr instance SingI (SillySym0 :: (~>) a ()) where sing = (singFun1 @SillySym0) sSilly
tests/compile-and-dump/Singletons/PolyKinds.golden view
@@ -17,11 +17,11 @@ type family FffSym1 (a0123456789876543210 :: Proxy (a :: k)) :: () where FffSym1 a0123456789876543210 = Fff a0123456789876543210 class PCls (a :: k) where- type Fff (arg :: Proxy (a :: k)) :: ()+ type family Fff (arg :: Proxy (a :: k)) :: () class SCls (a :: k) where sFff ::- forall (t :: Proxy (a :: k)).- Sing t -> Sing (Apply FffSym0 t :: ())+ forall (t :: Proxy (a :: k)). Sing t+ -> Sing (Apply FffSym0 t :: ()) instance SCls a => SingI (FffSym0 :: (~>) (Proxy (a :: k)) ()) where sing = (singFun1 @FffSym0) sFff
tests/compile-and-dump/Singletons/PolyKindsApp.golden view
@@ -5,12 +5,12 @@ ======> class Cls (a :: k -> Type) where fff :: (a :: k -> Type) (b :: k)- type FffSym0 :: forall k (a :: k -> Type) (b :: k).- (a :: k -> Type) (b :: k)+ type FffSym0 :: forall k (a :: k -> Type) (b :: k). (a :: k+ -> Type) (b :: k) type family FffSym0 :: (a :: k -> Type) (b :: k) where FffSym0 = Fff class PCls (a :: k -> Type) where- type Fff :: (a :: k -> Type) (b :: k)+ type family Fff :: (a :: k -> Type) (b :: k) class SCls (a :: k -> Type) where sFff :: forall (b :: k). Sing (FffSym0 :: (a :: k -> Type) (b :: k))
tests/compile-and-dump/Singletons/Records.golden view
@@ -51,8 +51,8 @@ type family Field1 (a :: Record a) :: a where Field1 (MkRecord field _) = field sField2 ::- forall a (t :: Record a).- Sing t -> Sing (Apply Field2Sym0 t :: Bool)+ forall a (t :: Record a). Sing t+ -> Sing (Apply Field2Sym0 t :: Bool) sField1 :: forall a (t :: Record a). Sing t -> Sing (Apply Field1Sym0 t :: a) sField2 (SMkRecord _ (sField :: Sing field)) = sField@@ -72,13 +72,20 @@ toSing (MkRecord (b :: Demote a) (b :: Demote Bool)) = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing Bool)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkRecord c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkRecord c) c) instance (SingI n, SingI n) => SingI (MkRecord (n :: a) (n :: Bool)) where sing = (SMkRecord sing) sing+ instance SingI n => SingI1 (MkRecord (n :: a)) where+ liftSing = SMkRecord sing+ instance SingI2 MkRecord where+ liftSing2 = SMkRecord instance SingI (MkRecordSym0 :: (~>) a ((~>) Bool (Record a))) where sing = (singFun2 @MkRecordSym0) SMkRecord instance SingI d => SingI (MkRecordSym1 (d :: a) :: (~>) Bool (Record a)) where sing = (singFun1 @(MkRecordSym1 (d :: a))) (SMkRecord (sing @d))+ instance SingI1 (MkRecordSym1 :: a -> (~>) Bool (Record a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(MkRecordSym1 (d :: a))) (SMkRecord s)
tests/compile-and-dump/Singletons/ReturnFunc.golden view
@@ -72,12 +72,12 @@ type family ReturnFunc (a :: Nat) (a :: Nat) :: Nat where ReturnFunc _ a_0123456789876543210 = Apply SuccSym0 a_0123456789876543210 sIdFoo ::- forall c a (t :: c) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply IdFooSym0 t) t :: a)+ forall c a (t :: c) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply IdFooSym0 t) t :: a) sId :: forall a (t :: a). Sing t -> Sing (Apply IdSym0 t :: a) sReturnFunc ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply ReturnFuncSym0 t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t -> Sing (Apply (Apply ReturnFuncSym0 t) t :: Nat) sIdFoo _ (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((singFun1 @IdSym0) sId)) sA_0123456789876543210 sId (sX :: Sing x) = sX@@ -89,6 +89,9 @@ sing = (singFun2 @IdFooSym0) sIdFoo instance SingI d => SingI (IdFooSym1 (d :: c) :: (~>) a a) where sing = (singFun1 @(IdFooSym1 (d :: c))) (sIdFoo (sing @d))+ instance SingI1 (IdFooSym1 :: c -> (~>) a a) where+ liftSing (s :: Sing (d :: c))+ = (singFun1 @(IdFooSym1 (d :: c))) (sIdFoo s) instance SingI (IdSym0 :: (~>) a a) where sing = (singFun1 @IdSym0) sId instance SingI (ReturnFuncSym0 :: (~>) Nat ((~>) Nat Nat)) where@@ -97,3 +100,6 @@ SingI (ReturnFuncSym1 (d :: Nat) :: (~>) Nat Nat) where sing = (singFun1 @(ReturnFuncSym1 (d :: Nat))) (sReturnFunc (sing @d))+ instance SingI1 (ReturnFuncSym1 :: Nat -> (~>) Nat Nat) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @(ReturnFuncSym1 (d :: Nat))) (sReturnFunc s)
tests/compile-and-dump/Singletons/Sections.golden view
@@ -76,8 +76,8 @@ sFoo2 :: Sing (Foo2Sym0 :: [Nat]) sFoo1 :: Sing (Foo1Sym0 :: [Nat]) (%+) ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply (+@#@$) t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t -> Sing (Apply (Apply (+@#@$) t) t :: Nat) sFoo3 = (applySing ((applySing@@ -100,11 +100,11 @@ ((applySing ((singFun2 @MapSym0) sMap)) ((singFun1 @Lambda_0123456789876543210Sym0) (\ sLhs_0123456789876543210- -> case sLhs_0123456789876543210 of {+ -> case sLhs_0123456789876543210 of (_ :: Sing lhs_0123456789876543210) -> (applySing ((applySing ((singFun2 @(+@#@$)) (%+))) sLhs_0123456789876543210))- ((applySing ((singFun1 @SuccSym0) SSucc)) SZero) }))))+ ((applySing ((singFun1 @SuccSym0) SSucc)) SZero))))) ((applySing ((applySing ((singFun2 @(:@#@$)) SCons)) SZero)) ((applySing ((applySing ((singFun2 @(:@#@$)) SCons))@@ -129,3 +129,6 @@ instance SingI d => SingI ((+@#@$$) (d :: Nat) :: (~>) Nat Nat) where sing = (singFun1 @((+@#@$$) (d :: Nat))) ((%+) (sing @d))+ instance SingI1 ((+@#@$$) :: Nat -> (~>) Nat Nat) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @((+@#@$$) (d :: Nat))) ((%+) s)
tests/compile-and-dump/Singletons/ShowDeriving.golden view
@@ -9,7 +9,7 @@ = MkFoo2a a a | a `MkFoo2b` a | (:*:) a a | a :&: a deriving Show data Foo3- = MkFoo3 {getFoo3a :: Bool, *** :: Bool}+ = MkFoo3 {getFoo3a :: Bool, (***) :: Bool} deriving Show |] ======> data Foo1@@ -22,7 +22,7 @@ = MkFoo2a a a | a `MkFoo2b` a | (:*:) a a | a :&: a deriving Show data Foo3- = MkFoo3 {getFoo3a :: Bool, *** :: Bool}+ = MkFoo3 {getFoo3a :: Bool, (***) :: Bool} deriving Show type MkFoo1Sym0 :: Foo1 type family MkFoo1Sym0 :: Foo1 where@@ -159,12 +159,12 @@ type GetFoo3a :: Foo3 -> Bool type family GetFoo3a (a :: Foo3) :: Bool where GetFoo3a (MkFoo3 field _) = field- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Foo1 -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Foo1) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Foo1) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 _ MkFoo1 a_0123456789876543210 = Apply (Apply ShowStringSym0 "MkFoo1") a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo1 ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo1 ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo1 ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo1 ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -172,9 +172,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) Foo1 ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) Foo1 ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) Foo1 ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -182,9 +182,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Foo1 -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo1) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo1) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -192,21 +192,21 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Foo1 -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo1) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo1) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow Foo1 where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Foo2 a -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Foo2 a) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Foo2 a) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo2a arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "MkFoo2a ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo2b argL_0123456789876543210 argR_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 5))) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argL_0123456789876543210)) (Apply (Apply (.@#@$) (Apply ShowStringSym0 " `MkFoo2b` ")) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argR_0123456789876543210)))) a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 ((:*:) arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "(:*:) ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 ((:&:) argL_0123456789876543210 argR_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 5))) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argL_0123456789876543210)) (Apply (Apply (.@#@$) (Apply ShowStringSym0 " :&: ")) (Apply (Apply ShowsPrecSym0 (FromInteger 6)) argR_0123456789876543210)))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Foo2 a) ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Foo2 a) ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Foo2 a) ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Foo2 a) ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -214,9 +214,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) (Foo2 a) ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) (Foo2 a) ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (Foo2 a) ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -224,9 +224,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Foo2 a -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo2 a) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo2 a) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -234,18 +234,18 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Foo2 a -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo2 a) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo2 a) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow (Foo2 a) where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Foo3 -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Foo3) (a :: Symbol) :: Symbol where- ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo3 arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "MkFoo3 ")) (Apply (Apply (.@#@$) (Apply ShowCharSym0 "{")) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "getFoo3a = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowCommaSpaceSym0) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "(***) = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply ShowCharSym0 "}"))))))))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo3 ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Foo3 ((~>) Symbol Symbol))+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Foo3) (a :: Symbol) :: Symbol where+ ShowsPrec_0123456789876543210 p_0123456789876543210 (MkFoo3 arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "MkFoo3 ")) (Apply (Apply (.@#@$) (Apply ShowCharSym0 '{')) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "getFoo3a = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowCommaSpaceSym0) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "(***) = ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 0)) arg_0123456789876543210)) (Apply ShowCharSym0 '}'))))))))) a_0123456789876543210+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo3 ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Foo3 ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -253,9 +253,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) Foo3 ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) Foo3 ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) Foo3 ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -263,9 +263,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Foo3 -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo3) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo3) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -273,9 +273,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Foo3 -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Foo3) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Foo3) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow Foo3 where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -317,17 +317,17 @@ fromSing ((:%*:) b b) = ((:*:) (fromSing b)) (fromSing b) fromSing ((:%&:) b b) = ((:&:) (fromSing b)) (fromSing b) toSing (MkFoo2a (b :: Demote a) (b :: Demote a))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo2a c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo2a c) c) toSing (MkFoo2b (b :: Demote a) (b :: Demote a))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo2b c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo2b c) c) toSing ((:*:) (b :: Demote a) (b :: Demote a))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%*:) c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%*:) c) c) toSing ((:&:) (b :: Demote a) (b :: Demote a))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%&:) c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%&:) c) c) data SFoo3 :: Foo3 -> GHC.Types.Type where SMkFoo3 :: forall (n :: Bool) (n :: Bool).@@ -339,16 +339,17 @@ toSing (MkFoo3 (b :: Demote Bool) (b :: Demote Bool)) = case ((,) (toSing b :: SomeSing Bool)) (toSing b :: SomeSing Bool)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo3 c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkFoo3 c) c) instance SShow Foo1 where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Foo1) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) Foo1 ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Foo1)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) Foo1 ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec _ SMkFoo1@@ -359,12 +360,13 @@ sA_0123456789876543210 instance SShow a => SShow (Foo2 a) where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Foo2 a) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (Foo2 a) ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Foo2 a)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (Foo2 a) ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec (sP_0123456789876543210 :: Sing p_0123456789876543210) (SMkFoo2a (sArg_0123456789876543210 :: Sing arg_0123456789876543210)@@ -477,12 +479,13 @@ sA_0123456789876543210 instance SShow Bool => SShow Foo3 where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Foo3) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) Foo3 ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Foo3)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) Foo3 ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec (sP_0123456789876543210 :: Sing p_0123456789876543210) (SMkFoo3 (sArg_0123456789876543210 :: Sing arg_0123456789876543210)@@ -501,7 +504,7 @@ ((applySing ((applySing ((singFun3 @(.@#@$)) (%.))) ((applySing ((singFun2 @ShowCharSym0) sShowChar))- (sing :: Sing "{"))))+ (sing :: Sing '{')))) ((applySing ((applySing ((singFun3 @(.@#@$)) (%.))) ((applySing ((singFun2 @ShowStringSym0) sShowString))@@ -526,7 +529,7 @@ (sFromInteger (sing :: Sing 0)))) sArg_0123456789876543210))) ((applySing ((singFun2 @ShowCharSym0) sShowChar))- (sing :: Sing "}")))))))))))+ (sing :: Sing '}'))))))))))) sA_0123456789876543210 deriving instance Show (SFoo1 (z :: Foo1)) deriving instance Data.Singletons.ShowSing.ShowSing a =>@@ -538,40 +541,75 @@ instance (SingI n, SingI n) => SingI (MkFoo2a (n :: a) (n :: a)) where sing = (SMkFoo2a sing) sing+ instance SingI n => SingI1 (MkFoo2a (n :: a)) where+ liftSing = SMkFoo2a sing+ instance SingI2 MkFoo2a where+ liftSing2 = SMkFoo2a instance SingI (MkFoo2aSym0 :: (~>) a ((~>) a (Foo2 a))) where sing = (singFun2 @MkFoo2aSym0) SMkFoo2a instance SingI d => SingI (MkFoo2aSym1 (d :: a) :: (~>) a (Foo2 a)) where sing = (singFun1 @(MkFoo2aSym1 (d :: a))) (SMkFoo2a (sing @d))+ instance SingI1 (MkFoo2aSym1 :: a -> (~>) a (Foo2 a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(MkFoo2aSym1 (d :: a))) (SMkFoo2a s) instance (SingI n, SingI n) => SingI (MkFoo2b (n :: a) (n :: a)) where sing = (SMkFoo2b sing) sing+ instance SingI n => SingI1 (MkFoo2b (n :: a)) where+ liftSing = SMkFoo2b sing+ instance SingI2 MkFoo2b where+ liftSing2 = SMkFoo2b instance SingI (MkFoo2bSym0 :: (~>) a ((~>) a (Foo2 a))) where sing = (singFun2 @MkFoo2bSym0) SMkFoo2b instance SingI d => SingI (MkFoo2bSym1 (d :: a) :: (~>) a (Foo2 a)) where sing = (singFun1 @(MkFoo2bSym1 (d :: a))) (SMkFoo2b (sing @d))+ instance SingI1 (MkFoo2bSym1 :: a -> (~>) a (Foo2 a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(MkFoo2bSym1 (d :: a))) (SMkFoo2b s) instance (SingI n, SingI n) => SingI ((:*:) (n :: a) (n :: a)) where sing = ((:%*:) sing) sing+ instance SingI n => SingI1 ((:*:) (n :: a)) where+ liftSing = (:%*:) sing+ instance SingI2 (:*:) where+ liftSing2 = (:%*:) instance SingI ((:*:@#@$) :: (~>) a ((~>) a (Foo2 a))) where sing = (singFun2 @(:*:@#@$)) (:%*:) instance SingI d => SingI ((:*:@#@$$) (d :: a) :: (~>) a (Foo2 a)) where sing = (singFun1 @((:*:@#@$$) (d :: a))) ((:%*:) (sing @d))+ instance SingI1 ((:*:@#@$$) :: a -> (~>) a (Foo2 a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((:*:@#@$$) (d :: a))) ((:%*:) s) instance (SingI n, SingI n) => SingI ((:&:) (n :: a) (n :: a)) where sing = ((:%&:) sing) sing+ instance SingI n => SingI1 ((:&:) (n :: a)) where+ liftSing = (:%&:) sing+ instance SingI2 (:&:) where+ liftSing2 = (:%&:) instance SingI ((:&:@#@$) :: (~>) a ((~>) a (Foo2 a))) where sing = (singFun2 @(:&:@#@$)) (:%&:) instance SingI d => SingI ((:&:@#@$$) (d :: a) :: (~>) a (Foo2 a)) where sing = (singFun1 @((:&:@#@$$) (d :: a))) ((:%&:) (sing @d))+ instance SingI1 ((:&:@#@$$) :: a -> (~>) a (Foo2 a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((:&:@#@$$) (d :: a))) ((:%&:) s) instance (SingI n, SingI n) => SingI (MkFoo3 (n :: Bool) (n :: Bool)) where sing = (SMkFoo3 sing) sing+ instance SingI n => SingI1 (MkFoo3 (n :: Bool)) where+ liftSing = SMkFoo3 sing+ instance SingI2 MkFoo3 where+ liftSing2 = SMkFoo3 instance SingI (MkFoo3Sym0 :: (~>) Bool ((~>) Bool Foo3)) where sing = (singFun2 @MkFoo3Sym0) SMkFoo3 instance SingI d => SingI (MkFoo3Sym1 (d :: Bool) :: (~>) Bool Foo3) where sing = (singFun1 @(MkFoo3Sym1 (d :: Bool))) (SMkFoo3 (sing @d))+ instance SingI1 (MkFoo3Sym1 :: Bool -> (~>) Bool Foo3) where+ liftSing (s :: Sing (d :: Bool))+ = (singFun1 @(MkFoo3Sym1 (d :: Bool))) (SMkFoo3 s)
tests/compile-and-dump/Singletons/StandaloneDeriving.golden view
@@ -108,12 +108,12 @@ Compare_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = Compare_0123456789876543210 a0123456789876543210 a0123456789876543210 instance POrd (T a ()) where type Compare a a = Apply (Apply Compare_0123456789876543210Sym0 a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> T a () -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: T a ()) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: T a ()) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 p_0123456789876543210 ((:*:) argL_0123456789876543210 argR_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 6))) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 7)) argL_0123456789876543210)) (Apply (Apply (.@#@$) (Apply ShowStringSym0 " :*: ")) (Apply (Apply ShowsPrecSym0 (FromInteger 7)) argR_0123456789876543210)))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (T a ()) ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (T a ()) ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (T a ()) ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (T a ()) ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -121,9 +121,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) (T a ()) ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) (T a ()) ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (T a ()) ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -131,9 +131,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> T a () -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: T a ()) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: T a ()) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -141,9 +141,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> T a () -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: T a ()) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: T a ()) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow (T a ()) where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -205,13 +205,13 @@ Compare_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = Compare_0123456789876543210 a0123456789876543210 a0123456789876543210 instance POrd S where type Compare a a = Apply (Apply Compare_0123456789876543210Sym0 a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> S -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: S) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: S) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 _ S1 a_0123456789876543210 = Apply (Apply ShowStringSym0 "S1") a_0123456789876543210 ShowsPrec_0123456789876543210 _ S2 a_0123456789876543210 = Apply (Apply ShowStringSym0 "S2") a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) S ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) S ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) S ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) S ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -219,9 +219,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) S ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) S ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) S ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -229,9 +229,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> S -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: S) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: S) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -239,9 +239,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> S -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: S) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: S) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow S where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -266,11 +266,11 @@ type family Case_0123456789876543210 n t where Case_0123456789876543210 n 'True = S1Sym0 Case_0123456789876543210 n 'False = Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 1))- type ToEnum_0123456789876543210 :: GHC.Types.Nat -> S- type family ToEnum_0123456789876543210 (a :: GHC.Types.Nat) :: S where+ type ToEnum_0123456789876543210 :: GHC.Num.Natural.Natural -> S+ type family ToEnum_0123456789876543210 (a :: GHC.Num.Natural.Natural) :: S where ToEnum_0123456789876543210 n = Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0))- type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat S- data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat S+ type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural S+ data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural S where ToEnum_0123456789876543210Sym0KindInference :: SameKind (Apply ToEnum_0123456789876543210Sym0 arg) (ToEnum_0123456789876543210Sym1 arg) => ToEnum_0123456789876543210Sym0 a0123456789876543210@@ -278,15 +278,15 @@ instance SuppressUnusedWarnings ToEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ToEnum_0123456789876543210Sym0KindInference) ())- type ToEnum_0123456789876543210Sym1 :: GHC.Types.Nat -> S- type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: S where+ type ToEnum_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> S+ type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: S where ToEnum_0123456789876543210Sym1 a0123456789876543210 = ToEnum_0123456789876543210 a0123456789876543210- type FromEnum_0123456789876543210 :: S -> GHC.Types.Nat- type family FromEnum_0123456789876543210 (a :: S) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210 :: S -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210 (a :: S) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210 S1 = FromInteger 0 FromEnum_0123456789876543210 S2 = FromInteger 1- type FromEnum_0123456789876543210Sym0 :: (~>) S GHC.Types.Nat- data FromEnum_0123456789876543210Sym0 :: (~>) S GHC.Types.Nat+ type FromEnum_0123456789876543210Sym0 :: (~>) S GHC.Num.Natural.Natural+ data FromEnum_0123456789876543210Sym0 :: (~>) S GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym0KindInference :: SameKind (Apply FromEnum_0123456789876543210Sym0 arg) (FromEnum_0123456789876543210Sym1 arg) => FromEnum_0123456789876543210Sym0 a0123456789876543210@@ -294,8 +294,9 @@ instance SuppressUnusedWarnings FromEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) FromEnum_0123456789876543210Sym0KindInference) ())- type FromEnum_0123456789876543210Sym1 :: S -> GHC.Types.Nat- type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: S) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210Sym1 :: S+ -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: S) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym1 a0123456789876543210 = FromEnum_0123456789876543210 a0123456789876543210 instance PEnum S where type ToEnum a = Apply ToEnum_0123456789876543210Sym0 a@@ -310,8 +311,8 @@ type Demote (T a b) = T (Demote a) (Demote b) fromSing ((:%*:) b b) = ((:*:) (fromSing b)) (fromSing b) toSing ((:*:) (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%*:) c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%*:) c) c) data SS :: S -> GHC.Types.Type where SS1 :: SS (S1 :: S)@@ -325,11 +326,10 @@ toSing S2 = SomeSing SS2 instance SEq a => SEq (T a ()) where (%==) ::- forall (t1 :: T a ()) (t2 :: T a ()).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun (T a ()) ((~>) (T a ()) Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: T a ()) (t2 :: T a ()). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun (T a ()) ((~>) (T a ()) Bool)+ -> GHC.Types.Type) t1) t2) (%==) ((:%*:) (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210))@@ -345,11 +345,10 @@ sB_0123456789876543210) instance SOrd a => SOrd (T a ()) where sCompare ::- forall (t1 :: T a ()) (t2 :: T a ()).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun (T a ()) ((~>) (T a ()) Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: T a ()) (t2 :: T a ()). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun (T a ()) ((~>) (T a ()) Ordering)+ -> GHC.Types.Type) t1) t2) sCompare ((:%*:) (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210))@@ -375,12 +374,13 @@ SNil)) instance SShow a => SShow (T a ()) where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: T a ()) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (T a ()) ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: T a ())+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (T a ()) ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec (sP_0123456789876543210 :: Sing p_0123456789876543210) ((:%*:) (sArgL_0123456789876543210 :: Sing argL_0123456789876543210)@@ -409,22 +409,20 @@ sA_0123456789876543210 instance SEq S where (%==) ::- forall (t1 :: S) (t2 :: S).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun S ((~>) S Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: S) (t2 :: S). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun S ((~>) S Bool)+ -> GHC.Types.Type) t1) t2) (%==) SS1 SS1 = STrue (%==) SS1 SS2 = SFalse (%==) SS2 SS1 = SFalse (%==) SS2 SS2 = STrue instance SOrd S where sCompare ::- forall (t1 :: S) (t2 :: S).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun S ((~>) S Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: S) (t2 :: S). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun S ((~>) S Ordering)+ -> GHC.Types.Type) t1) t2) sCompare SS1 SS1 = (applySing ((applySing@@ -443,12 +441,13 @@ sCompare SS2 SS1 = SGT instance SShow S where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: S) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) S ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: S)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) S ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec _ SS1@@ -472,15 +471,13 @@ sMaxBound = SS2 instance SEnum S where sToEnum ::- forall (t :: GHC.Types.Nat).- Sing t- -> Sing (Apply (ToEnumSym0 :: TyFun GHC.Types.Nat S- -> GHC.Types.Type) t)+ forall (t :: GHC.Num.Natural.Natural). Sing t+ -> Sing (Apply (ToEnumSym0 :: TyFun GHC.Num.Natural.Natural S+ -> GHC.Types.Type) t) sFromEnum ::- forall (t :: S).- Sing t- -> Sing (Apply (FromEnumSym0 :: TyFun S GHC.Types.Nat- -> GHC.Types.Type) t)+ forall (t :: S). Sing t+ -> Sing (Apply (FromEnumSym0 :: TyFun S GHC.Num.Natural.Natural+ -> GHC.Types.Type) t) sToEnum (sN :: Sing n) = (id @(Sing (Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0)))))@@ -505,9 +502,9 @@ = case ((,) (((%~) a) b)) (((%~) a) b) of (,) (Proved Refl) (Proved Refl) -> Proved Refl (,) (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,) _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance SDecide a => Data.Type.Equality.TestEquality (ST :: T a () -> GHC.Types.Type) where@@ -520,8 +517,8 @@ = Data.Singletons.Decide.decideCoercion instance SDecide S where (%~) SS1 SS1 = Proved Refl- (%~) SS1 SS2 = Disproved (\ x -> case x of)- (%~) SS2 SS1 = Disproved (\ x -> case x of)+ (%~) SS1 SS2 = Disproved (\ x -> case x of {})+ (%~) SS2 SS1 = Disproved (\ x -> case x of {}) (%~) SS2 SS2 = Proved Refl instance Data.Type.Equality.TestEquality (SS :: S -> GHC.Types.Type) where@@ -537,11 +534,18 @@ instance (SingI n, SingI n) => SingI ((:*:) (n :: a) (n :: b)) where sing = ((:%*:) sing) sing+ instance SingI n => SingI1 ((:*:) (n :: a)) where+ liftSing = (:%*:) sing+ instance SingI2 (:*:) where+ liftSing2 = (:%*:) instance SingI ((:*:@#@$) :: (~>) a ((~>) b (T a b))) where sing = (singFun2 @(:*:@#@$)) (:%*:) instance SingI d => SingI ((:*:@#@$$) (d :: a) :: (~>) b (T a b)) where sing = (singFun1 @((:*:@#@$$) (d :: a))) ((:%*:) (sing @d))+ instance SingI1 ((:*:@#@$$) :: a -> (~>) b (T a b)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((:*:@#@$$) (d :: a))) ((:%*:) s) instance SingI S1 where sing = SS1 instance SingI S2 where
tests/compile-and-dump/Singletons/Star.golden view
@@ -148,16 +148,16 @@ Compare_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = Compare_0123456789876543210 a0123456789876543210 a0123456789876543210 instance POrd Type where type Compare a a = Apply (Apply Compare_0123456789876543210Sym0 a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Type -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Type) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Type) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 _ Nat a_0123456789876543210 = Apply (Apply ShowStringSym0 "Nat") a_0123456789876543210 ShowsPrec_0123456789876543210 _ Int a_0123456789876543210 = Apply (Apply ShowStringSym0 "Int") a_0123456789876543210 ShowsPrec_0123456789876543210 _ String a_0123456789876543210 = Apply (Apply ShowStringSym0 "String") a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 (Maybe arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "Maybe ")) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))) a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 (Vec arg_0123456789876543210 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "Vec ")) (Apply (Apply (.@#@$) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210)) (Apply (Apply (.@#@$) ShowSpaceSym0) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Type ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) Type ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Type ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) Type ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -165,9 +165,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) Type ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) Type ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) Type ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -175,9 +175,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Type -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Type) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Type) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -185,9 +185,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Type -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Type) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Type) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow Type where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -212,49 +212,49 @@ toSing Singletons.Star.Int = SomeSing SInt toSing Singletons.Star.String = SomeSing SString toSing (Singletons.Star.Maybe (b :: Demote Type))- = case toSing b :: SomeSing Type of {- SomeSing c -> SomeSing (SMaybe c) }+ = case toSing b :: SomeSing Type of+ SomeSing c -> SomeSing (SMaybe c) toSing (Singletons.Star.Vec (b :: Demote Type) (b :: Demote Nat)) = case ((,) (toSing b :: SomeSing Type)) (toSing b :: SomeSing Nat)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SVec c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SVec c) c) instance (SDecide Type, SDecide Nat) => SDecide Type where (%~) SNat SNat = Proved Refl- (%~) SNat SInt = Disproved (\ x -> case x of)- (%~) SNat SString = Disproved (\ x -> case x of)- (%~) SNat (SMaybe _) = Disproved (\ x -> case x of)- (%~) SNat (SVec _ _) = Disproved (\ x -> case x of)- (%~) SInt SNat = Disproved (\ x -> case x of)+ (%~) SNat SInt = Disproved (\ x -> case x of {})+ (%~) SNat SString = Disproved (\ x -> case x of {})+ (%~) SNat (SMaybe _) = Disproved (\ x -> case x of {})+ (%~) SNat (SVec _ _) = Disproved (\ x -> case x of {})+ (%~) SInt SNat = Disproved (\ x -> case x of {}) (%~) SInt SInt = Proved Refl- (%~) SInt SString = Disproved (\ x -> case x of)- (%~) SInt (SMaybe _) = Disproved (\ x -> case x of)- (%~) SInt (SVec _ _) = Disproved (\ x -> case x of)- (%~) SString SNat = Disproved (\ x -> case x of)- (%~) SString SInt = Disproved (\ x -> case x of)+ (%~) SInt SString = Disproved (\ x -> case x of {})+ (%~) SInt (SMaybe _) = Disproved (\ x -> case x of {})+ (%~) SInt (SVec _ _) = Disproved (\ x -> case x of {})+ (%~) SString SNat = Disproved (\ x -> case x of {})+ (%~) SString SInt = Disproved (\ x -> case x of {}) (%~) SString SString = Proved Refl- (%~) SString (SMaybe _) = Disproved (\ x -> case x of)- (%~) SString (SVec _ _) = Disproved (\ x -> case x of)- (%~) (SMaybe _) SNat = Disproved (\ x -> case x of)- (%~) (SMaybe _) SInt = Disproved (\ x -> case x of)- (%~) (SMaybe _) SString = Disproved (\ x -> case x of)+ (%~) SString (SMaybe _) = Disproved (\ x -> case x of {})+ (%~) SString (SVec _ _) = Disproved (\ x -> case x of {})+ (%~) (SMaybe _) SNat = Disproved (\ x -> case x of {})+ (%~) (SMaybe _) SInt = Disproved (\ x -> case x of {})+ (%~) (SMaybe _) SString = Disproved (\ x -> case x of {}) (%~) (SMaybe a) (SMaybe b) = case ((%~) a) b of Proved Refl -> Proved Refl Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })- (%~) (SMaybe _) (SVec _ _) = Disproved (\ x -> case x of)- (%~) (SVec _ _) SNat = Disproved (\ x -> case x of)- (%~) (SVec _ _) SInt = Disproved (\ x -> case x of)- (%~) (SVec _ _) SString = Disproved (\ x -> case x of)- (%~) (SVec _ _) (SMaybe _) = Disproved (\ x -> case x of)+ -> Disproved (\ refl -> case refl of Refl -> contra Refl)+ (%~) (SMaybe _) (SVec _ _) = Disproved (\ x -> case x of {})+ (%~) (SVec _ _) SNat = Disproved (\ x -> case x of {})+ (%~) (SVec _ _) SInt = Disproved (\ x -> case x of {})+ (%~) (SVec _ _) SString = Disproved (\ x -> case x of {})+ (%~) (SVec _ _) (SMaybe _) = Disproved (\ x -> case x of {}) (%~) (SVec a a) (SVec b b) = case ((,) (((%~) a) b)) (((%~) a) b) of (,) (Proved Refl) (Proved Refl) -> Proved Refl (,) (Disproved contra) _- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) (,) _ (Disproved contra)- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance (SDecide Type, SDecide Nat) => Data.Type.Equality.TestEquality (SRep :: Type -> Type) where Data.Type.Equality.testEquality = decideEquality@@ -263,11 +263,10 @@ Data.Type.Coercion.testCoercion = decideCoercion instance (SEq Type, SEq Nat) => SEq Type where (%==) ::- forall (t1 :: Type) (t2 :: Type).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Type ((~>) Type Bool)- -> Type) t1) t2)+ forall (t1 :: Type) (t2 :: Type). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Type ((~>) Type Bool)+ -> Type) t1) t2) (%==) SNat SNat = STrue (%==) SNat SInt = SFalse (%==) SNat SString = SFalse@@ -312,11 +311,10 @@ sB_0123456789876543210) instance (SOrd Type, SOrd Nat) => SOrd Type where sCompare ::- forall (t1 :: Type) (t2 :: Type).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun Type ((~>) Type Ordering)- -> Type) t1) t2)+ forall (t1 :: Type) (t2 :: Type). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun Type ((~>) Type Ordering)+ -> Type) t1) t2) sCompare SNat SNat = (applySing ((applySing@@ -398,12 +396,13 @@ sCompare (SVec _ _) (SMaybe _) = SGT instance (SShow Type, SShow Nat) => SShow Type where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Type) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) Type ((~>) Symbol Symbol))- -> Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Type)+ (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) Type ((~>) Symbol Symbol))+ -> Type) t1) t2) t3) sShowsPrec _ SNat@@ -484,13 +483,22 @@ sing = SString instance SingI n => SingI (Maybe (n :: Type)) where sing = SMaybe sing+ instance SingI1 Maybe where+ liftSing = SMaybe instance SingI (MaybeSym0 :: (~>) Type Type) where sing = (singFun1 @MaybeSym0) SMaybe instance (SingI n, SingI n) => SingI (Vec (n :: Type) (n :: Nat)) where sing = (SVec sing) sing+ instance SingI n => SingI1 (Vec (n :: Type)) where+ liftSing = SVec sing+ instance SingI2 Vec where+ liftSing2 = SVec instance SingI (VecSym0 :: (~>) Type ((~>) Nat Type)) where sing = (singFun2 @VecSym0) SVec instance SingI d => SingI (VecSym1 (d :: Type) :: (~>) Nat Type) where sing = (singFun1 @(VecSym1 (d :: Type))) (SVec (sing @d))+ instance SingI1 (VecSym1 :: Type -> (~>) Nat Type) where+ liftSing (s :: Sing (d :: Type))+ = (singFun1 @(VecSym1 (d :: Type))) (SVec s)
tests/compile-and-dump/Singletons/T136.golden view
@@ -71,11 +71,12 @@ Case_0123456789876543210 i arg_0123456789876543210 'False = Case_0123456789876543210 i arg_0123456789876543210 (Apply (Apply (==@#@$) i) (FromInteger 0)) type family Case_0123456789876543210 arg_0123456789876543210 t where Case_0123456789876543210 arg_0123456789876543210 i = Case_0123456789876543210 i arg_0123456789876543210 (Apply (Apply (<@#@$) i) (FromInteger 0))- type ToEnum_0123456789876543210 :: GHC.Types.Nat -> [Bool]- type family ToEnum_0123456789876543210 (a :: GHC.Types.Nat) :: [Bool] where+ type ToEnum_0123456789876543210 :: GHC.Num.Natural.Natural+ -> [Bool]+ type family ToEnum_0123456789876543210 (a :: GHC.Num.Natural.Natural) :: [Bool] where ToEnum_0123456789876543210 arg_0123456789876543210 = Case_0123456789876543210 arg_0123456789876543210 arg_0123456789876543210- type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat [Bool]- data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat [Bool]+ type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural [Bool]+ data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural [Bool] where ToEnum_0123456789876543210Sym0KindInference :: SameKind (Apply ToEnum_0123456789876543210Sym0 arg) (ToEnum_0123456789876543210Sym1 arg) => ToEnum_0123456789876543210Sym0 a0123456789876543210@@ -83,16 +84,18 @@ instance SuppressUnusedWarnings ToEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ToEnum_0123456789876543210Sym0KindInference) ())- type ToEnum_0123456789876543210Sym1 :: GHC.Types.Nat -> [Bool]- type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: [Bool] where+ type ToEnum_0123456789876543210Sym1 :: GHC.Num.Natural.Natural+ -> [Bool]+ type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: [Bool] where ToEnum_0123456789876543210Sym1 a0123456789876543210 = ToEnum_0123456789876543210 a0123456789876543210- type FromEnum_0123456789876543210 :: [Bool] -> GHC.Types.Nat- type family FromEnum_0123456789876543210 (a :: [Bool]) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210 :: [Bool]+ -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210 (a :: [Bool]) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210 '[] = FromInteger 0 FromEnum_0123456789876543210 ('(:) 'False as) = Apply (Apply (*@#@$) (FromInteger 2)) (Apply FromEnumSym0 as) FromEnum_0123456789876543210 ('(:) 'True as) = Apply (Apply (+@#@$) (FromInteger 1)) (Apply (Apply (*@#@$) (FromInteger 2)) (Apply FromEnumSym0 as))- type FromEnum_0123456789876543210Sym0 :: (~>) [Bool] GHC.Types.Nat- data FromEnum_0123456789876543210Sym0 :: (~>) [Bool] GHC.Types.Nat+ type FromEnum_0123456789876543210Sym0 :: (~>) [Bool] GHC.Num.Natural.Natural+ data FromEnum_0123456789876543210Sym0 :: (~>) [Bool] GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym0KindInference :: SameKind (Apply FromEnum_0123456789876543210Sym0 arg) (FromEnum_0123456789876543210Sym1 arg) => FromEnum_0123456789876543210Sym0 a0123456789876543210@@ -100,8 +103,9 @@ instance SuppressUnusedWarnings FromEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) FromEnum_0123456789876543210Sym0KindInference) ())- type FromEnum_0123456789876543210Sym1 :: [Bool] -> GHC.Types.Nat- type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: [Bool]) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210Sym1 :: [Bool]+ -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: [Bool]) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym1 a0123456789876543210 = FromEnum_0123456789876543210 a0123456789876543210 instance PEnum [Bool] where type Succ a = Apply Succ_0123456789876543210Sym0 a@@ -110,25 +114,21 @@ type FromEnum a = Apply FromEnum_0123456789876543210Sym0 a instance SEnum [Bool] where sSucc ::- forall (t :: [Bool]).- Sing t- -> Sing (Apply (SuccSym0 :: TyFun [Bool] [Bool]- -> GHC.Types.Type) t)+ forall (t :: [Bool]). Sing t+ -> Sing (Apply (SuccSym0 :: TyFun [Bool] [Bool]+ -> GHC.Types.Type) t) sPred ::- forall (t :: [Bool]).- Sing t- -> Sing (Apply (PredSym0 :: TyFun [Bool] [Bool]- -> GHC.Types.Type) t)+ forall (t :: [Bool]). Sing t+ -> Sing (Apply (PredSym0 :: TyFun [Bool] [Bool]+ -> GHC.Types.Type) t) sToEnum ::- forall (t :: GHC.Types.Nat).- Sing t- -> Sing (Apply (ToEnumSym0 :: TyFun GHC.Types.Nat [Bool]- -> GHC.Types.Type) t)+ forall (t :: GHC.Num.Natural.Natural). Sing t+ -> Sing (Apply (ToEnumSym0 :: TyFun GHC.Num.Natural.Natural [Bool]+ -> GHC.Types.Type) t) sFromEnum ::- forall (t :: [Bool]).- Sing t- -> Sing (Apply (FromEnumSym0 :: TyFun [Bool] GHC.Types.Nat- -> GHC.Types.Type) t)+ forall (t :: [Bool]). Sing t+ -> Sing (Apply (FromEnumSym0 :: TyFun [Bool] GHC.Num.Natural.Natural+ -> GHC.Types.Type) t) sSucc SNil = (applySing ((applySing ((singFun2 @(:@#@$)) SCons)) STrue)) SNil sSucc (SCons SFalse (sAs :: Sing as))@@ -145,7 +145,7 @@ sToEnum (sArg_0123456789876543210 :: Sing arg_0123456789876543210) = (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 arg_0123456789876543210)))- (case sArg_0123456789876543210 of {+ (case sArg_0123456789876543210 of (sI :: Sing i) -> (id @(Sing (Case_0123456789876543210 i arg_0123456789876543210 (Apply (Apply (<@#@$) i) (FromInteger 0)))))@@ -165,7 +165,7 @@ SFalse -> (applySing ((singFun1 @SuccSym0) sSucc)) ((applySing ((singFun1 @ToEnumSym0) sToEnum))- ((applySing ((singFun1 @PredSym0) sPred)) sI)))) })+ ((applySing ((singFun1 @PredSym0) sPred)) sI))))) sFromEnum SNil = sFromInteger (sing :: Sing 0) sFromEnum (SCons SFalse (sAs :: Sing as)) = (applySing
tests/compile-and-dump/Singletons/T136b.golden view
@@ -17,7 +17,7 @@ type family MethSym1 (a0123456789876543210 :: a) :: a where MethSym1 a0123456789876543210 = Meth a0123456789876543210 class PC a where- type Meth (arg :: a) :: a+ type family Meth (arg :: a) :: a class SC a where sMeth :: forall (t :: a). Sing t -> Sing (Apply MethSym0 t :: a) instance SC a => SingI (MethSym0 :: (~>) a a) where@@ -48,8 +48,7 @@ type Meth a = Apply Meth_0123456789876543210Sym0 a instance SC Bool where sMeth ::- forall (t :: Bool).- Sing t- -> Sing (Apply (MethSym0 :: TyFun Bool Bool -> GHC.Types.Type) t)+ forall (t :: Bool). Sing t+ -> Sing (Apply (MethSym0 :: TyFun Bool Bool -> GHC.Types.Type) t) sMeth (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((singFun1 @NotSym0) sNot)) sA_0123456789876543210
tests/compile-and-dump/Singletons/T145.golden view
@@ -25,14 +25,17 @@ type family ColSym2 (a0123456789876543210 :: f a) (a0123456789876543210 :: a) :: Bool where ColSym2 a0123456789876543210 a0123456789876543210 = Col a0123456789876543210 a0123456789876543210 class PColumn (f :: Type -> Type) where- type Col (arg :: f a) (arg :: a) :: Bool+ type family Col (arg :: f a) (arg :: a) :: Bool class SColumn (f :: Type -> Type) where sCol ::- forall a (t :: f a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply ColSym0 t) t :: Bool)+ forall a (t :: f a) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply ColSym0 t) t :: Bool) instance SColumn f => SingI (ColSym0 :: (~>) (f a) ((~>) a Bool)) where sing = (singFun2 @ColSym0) sCol instance (SColumn f, SingI d) => SingI (ColSym1 (d :: f a) :: (~>) a Bool) where sing = (singFun1 @(ColSym1 (d :: f a))) (sCol (sing @d))+ instance SColumn f => SingI1 (ColSym1 :: f a -> (~>) a Bool) where+ liftSing (s :: Sing (d :: f a))+ = (singFun1 @(ColSym1 (d :: f a))) (sCol s)
tests/compile-and-dump/Singletons/T150.golden view
@@ -9,7 +9,7 @@ (!) :: Vec n a -> Fin n -> a VCons x _ ! FZ = x VCons _ xs ! FS n = xs ! n- VNil ! n = case n of+ VNil ! n = case n of {} mapVec :: (a -> b) -> Vec n a -> Vec n b mapVec _ VNil = VNil mapVec f (VCons x xs) = VCons (f x) (mapVec f xs)@@ -56,7 +56,7 @@ (!) :: Vec n a -> Fin n -> a (!) (VCons x _) FZ = x (!) (VCons _ xs) (FS n) = (xs ! n)- (!) VNil n = case n of+ (!) VNil n = case n of {} mapVec :: (a -> b) -> Vec n a -> Vec n b mapVec _ VNil = VNil mapVec f (VCons x xs) = (VCons (f x)) ((mapVec f) xs)@@ -263,24 +263,25 @@ type family HeadVec (a :: Vec ('Succ n) a) :: a where HeadVec (VCons x _) = x sTransitivity ::- forall a b c (t :: Equal a b) (t :: Equal b c).- Sing t- -> Sing t -> Sing (Apply (Apply TransitivitySym0 t) t :: Equal a c)+ forall a b c (t :: Equal a b) (t :: Equal b c). Sing t+ -> Sing t+ -> Sing (Apply (Apply TransitivitySym0 t) t :: Equal a c) sSymmetry ::- forall a b (t :: Equal a b).- Sing t -> Sing (Apply SymmetrySym0 t :: Equal b a)+ forall a b (t :: Equal a b). Sing t+ -> Sing (Apply SymmetrySym0 t :: Equal b a) sMapVec ::- forall a b n (t :: (~>) a b) (t :: Vec n a).- Sing t -> Sing t -> Sing (Apply (Apply MapVecSym0 t) t :: Vec n b)+ forall a b n (t :: (~>) a b) (t :: Vec n a). Sing t+ -> Sing t+ -> Sing (Apply (Apply MapVecSym0 t) t :: Vec n b) (%!) ::- forall n a (t :: Vec n a) (t :: Fin n).- Sing t -> Sing t -> Sing (Apply (Apply (!@#@$) t) t :: a)+ forall n a (t :: Vec n a) (t :: Fin n). Sing t+ -> Sing t -> Sing (Apply (Apply (!@#@$) t) t :: a) sTailVec ::- forall n a (t :: Vec ('Succ n) a).- Sing t -> Sing (Apply TailVecSym0 t :: Vec n a)+ forall n a (t :: Vec ('Succ n) a). Sing t+ -> Sing (Apply TailVecSym0 t :: Vec n a) sHeadVec ::- forall n a (t :: Vec ('Succ n) a).- Sing t -> Sing (Apply HeadVecSym0 t :: a)+ forall n a (t :: Vec ('Succ n) a). Sing t+ -> Sing (Apply HeadVecSym0 t :: a) sTransitivity SReflexive SReflexive = SReflexive sSymmetry SReflexive = SReflexive sMapVec _ SVNil = SVNil@@ -292,7 +293,7 @@ (%!) (SVCons _ (sXs :: Sing xs)) (SFS (sN :: Sing n)) = (applySing ((applySing ((singFun2 @(!@#@$)) (%!))) sXs)) sN (%!) SVNil (sN :: Sing n)- = (id @(Sing (Case_0123456789876543210 n n :: a))) (case sN of)+ = (id @(Sing (Case_0123456789876543210 n n :: a))) (case sN of {}) sTailVec (SVCons _ (sXs :: Sing xs)) = sXs sHeadVec (SVCons (sX :: Sing x) _) = sX instance SingI (TransitivitySym0 :: (~>) (Equal a b) ((~>) (Equal b c) (Equal a c))) where@@ -302,6 +303,10 @@ sing = (singFun1 @(TransitivitySym1 (d :: Equal a b))) (sTransitivity (sing @d))+ instance SingI1 (TransitivitySym1 :: Equal a b+ -> (~>) (Equal b c) (Equal a c)) where+ liftSing (s :: Sing (d :: Equal a b))+ = (singFun1 @(TransitivitySym1 (d :: Equal a b))) (sTransitivity s) instance SingI (SymmetrySym0 :: (~>) (Equal a b) (Equal b a)) where sing = (singFun1 @SymmetrySym0) sSymmetry instance SingI (MapVecSym0 :: (~>) ((~>) a b) ((~>) (Vec n a) (Vec n b))) where@@ -309,11 +314,18 @@ instance SingI d => SingI (MapVecSym1 (d :: (~>) a b) :: (~>) (Vec n a) (Vec n b)) where sing = (singFun1 @(MapVecSym1 (d :: (~>) a b))) (sMapVec (sing @d))+ instance SingI1 (MapVecSym1 :: (~>) a b+ -> (~>) (Vec n a) (Vec n b)) where+ liftSing (s :: Sing (d :: (~>) a b))+ = (singFun1 @(MapVecSym1 (d :: (~>) a b))) (sMapVec s) instance SingI ((!@#@$) :: (~>) (Vec n a) ((~>) (Fin n) a)) where sing = (singFun2 @(!@#@$)) (%!) instance SingI d => SingI ((!@#@$$) (d :: Vec n a) :: (~>) (Fin n) a) where sing = (singFun1 @((!@#@$$) (d :: Vec n a))) ((%!) (sing @d))+ instance SingI1 ((!@#@$$) :: Vec n a -> (~>) (Fin n) a) where+ liftSing (s :: Sing (d :: Vec n a))+ = (singFun1 @((!@#@$$) (d :: Vec n a))) ((%!) s) instance SingI (TailVecSym0 :: (~>) (Vec ('Succ n) a) (Vec n a)) where sing = (singFun1 @TailVecSym0) sTailVec instance SingI (HeadVecSym0 :: (~>) (Vec ('Succ n) a) a) where@@ -351,6 +363,8 @@ sing = SFZ instance SingI n => SingI (FS (n :: Fin n)) where sing = SFS sing+ instance SingI1 FS where+ liftSing = SFS instance SingI (FSSym0 :: (~>) (Fin n) (Fin ('Succ n))) where sing = (singFun1 @FSSym0) SFS instance SingI MkFoo1 where@@ -362,11 +376,19 @@ instance (SingI n, SingI n) => SingI (VCons (n :: a) (n :: Vec n a)) where sing = (SVCons sing) sing+ instance SingI n => SingI1 (VCons (n :: a)) where+ liftSing = SVCons sing+ instance SingI2 VCons where+ liftSing2 = SVCons instance SingI (VConsSym0 :: (~>) a ((~>) (Vec n a) (Vec ('Succ n) a))) where sing = (singFun2 @VConsSym0) SVCons instance SingI d => SingI (VConsSym1 (d :: a) :: (~>) (Vec n a) (Vec ('Succ n) a)) where sing = (singFun1 @(VConsSym1 (d :: a))) (SVCons (sing @d))+ instance SingI1 (VConsSym1 :: a+ -> (~>) (Vec n a) (Vec ('Succ n) a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(VConsSym1 (d :: a))) (SVCons s) instance SingI Reflexive where sing = SReflexive instance SingI HNil where@@ -374,12 +396,22 @@ instance (SingI n, SingI n) => SingI (HCons (n :: x) (n :: HList xs)) where sing = (SHCons sing) sing+ instance SingI n => SingI1 (HCons (n :: x)) where+ liftSing = SHCons sing+ instance SingI2 HCons where+ liftSing2 = SHCons instance SingI (HConsSym0 :: (~>) x ((~>) (HList xs) (HList ('(:) x xs)))) where sing = (singFun2 @HConsSym0) SHCons instance SingI d => SingI (HConsSym1 (d :: x) :: (~>) (HList xs) (HList ('(:) x xs))) where sing = (singFun1 @(HConsSym1 (d :: x))) (SHCons (sing @d))+ instance SingI1 (HConsSym1 :: x+ -> (~>) (HList xs) (HList ('(:) x xs))) where+ liftSing (s :: Sing (d :: x))+ = (singFun1 @(HConsSym1 (d :: x))) (SHCons s) instance SingI n => SingI (Obj (n :: a)) where sing = SObj sing+ instance SingI1 Obj where+ liftSing = SObj instance SingI (ObjSym0 :: (~>) a Obj) where sing = (singFun1 @ObjSym0) SObj
tests/compile-and-dump/Singletons/T159.golden view
@@ -118,15 +118,11 @@ fromSing ((:%&&) b b) = ((:&&) (fromSing b)) (fromSing b) toSing N1 = SomeSing SN1 toSing (C1 (b :: Demote T0) (b :: Demote T1))- = case- ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T1)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SC1 c) c) }+ = case ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T1) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SC1 c) c) toSing ((:&&) (b :: Demote T0) (b :: Demote T1))- = case- ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T1)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%&&) c) c) }+ = case ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T1) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%&&) c) c) infixr 5 `SC1` infixr 5 :%&& instance SingI 'N1 where@@ -134,18 +130,32 @@ instance (SingI n, SingI n) => SingI ('C1 (n :: T0) (n :: T1)) where sing = (SC1 sing) sing+ instance SingI n => SingI1 ('C1 (n :: T0)) where+ liftSing = SC1 sing+ instance SingI2 'C1 where+ liftSing2 = SC1 instance SingI (C1Sym0 :: (~>) T0 ((~>) T1 T1)) where sing = (singFun2 @C1Sym0) SC1 instance SingI d => SingI (C1Sym1 (d :: T0) :: (~>) T1 T1) where sing = (singFun1 @(C1Sym1 (d :: T0))) (SC1 (sing @d))+ instance SingI1 (C1Sym1 :: T0 -> (~>) T1 T1) where+ liftSing (s :: Sing (d :: T0))+ = (singFun1 @(C1Sym1 (d :: T0))) (SC1 s) instance (SingI n, SingI n) => SingI ('(:&&) (n :: T0) (n :: T1)) where sing = ((:%&&) sing) sing+ instance SingI n => SingI1 ('(:&&) (n :: T0)) where+ liftSing = (:%&&) sing+ instance SingI2 '(:&&) where+ liftSing2 = (:%&&) instance SingI ((:&&@#@$) :: (~>) T0 ((~>) T1 T1)) where sing = (singFun2 @(:&&@#@$)) (:%&&) instance SingI d => SingI ((:&&@#@$$) (d :: T0) :: (~>) T1 T1) where sing = (singFun1 @((:&&@#@$$) (d :: T0))) ((:%&&) (sing @d))+ instance SingI1 ((:&&@#@$$) :: T0 -> (~>) T1 T1) where+ liftSing (s :: Sing (d :: T0))+ = (singFun1 @((:&&@#@$$) (d :: T0))) ((:%&&) s) Singletons/T159.hs:(0,0)-(0,0): Splicing declarations singletons [d| infixr 5 :||@@ -220,28 +230,38 @@ fromSing ((:%||) b b) = ((:||) (fromSing b)) (fromSing b) toSing N2 = SomeSing SN2 toSing (C2 (b :: Demote T0) (b :: Demote T2))- = case- ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T2)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SC2 c) c) }+ = case ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T2) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SC2 c) c) toSing ((:||) (b :: Demote T0) (b :: Demote T2))- = case- ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T2)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%||) c) c) }+ = case ((,) (toSing b :: SomeSing T0)) (toSing b :: SomeSing T2) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%||) c) c) instance SingI N2 where sing = SN2 instance (SingI n, SingI n) => SingI (C2 (n :: T0) (n :: T2)) where sing = (SC2 sing) sing+ instance SingI n => SingI1 (C2 (n :: T0)) where+ liftSing = SC2 sing+ instance SingI2 C2 where+ liftSing2 = SC2 instance SingI (C2Sym0 :: (~>) T0 ((~>) T2 T2)) where sing = (singFun2 @C2Sym0) SC2 instance SingI d => SingI (C2Sym1 (d :: T0) :: (~>) T2 T2) where sing = (singFun1 @(C2Sym1 (d :: T0))) (SC2 (sing @d))+ instance SingI1 (C2Sym1 :: T0 -> (~>) T2 T2) where+ liftSing (s :: Sing (d :: T0))+ = (singFun1 @(C2Sym1 (d :: T0))) (SC2 s) instance (SingI n, SingI n) => SingI ((:||) (n :: T0) (n :: T2)) where sing = ((:%||) sing) sing+ instance SingI n => SingI1 ((:||) (n :: T0)) where+ liftSing = (:%||) sing+ instance SingI2 (:||) where+ liftSing2 = (:%||) instance SingI ((:||@#@$) :: (~>) T0 ((~>) T2 T2)) where sing = (singFun2 @(:||@#@$)) (:%||) instance SingI d => SingI ((:||@#@$$) (d :: T0) :: (~>) T2 T2) where sing = (singFun1 @((:||@#@$$) (d :: T0))) ((:%||) (sing @d))+ instance SingI1 ((:||@#@$$) :: T0 -> (~>) T2 T2) where+ liftSing (s :: Sing (d :: T0))+ = (singFun1 @((:||@#@$$) (d :: T0))) ((:%||) s)
tests/compile-and-dump/Singletons/T160.golden view
@@ -38,8 +38,8 @@ type family Foo (a :: a) :: a where Foo x = Case_0123456789876543210 x (Let0123456789876543210Scrutinee_0123456789876543210Sym1 x) sFoo ::- forall a (t :: a).- (SNum a, SEq a) => Sing t -> Sing (Apply FooSym0 t :: a)+ forall a (t :: a). (SNum a, SEq a) =>+ Sing t -> Sing (Apply FooSym0 t :: a) sFoo (sX :: Sing x) = let sScrutinee_0123456789876543210 ::
tests/compile-and-dump/Singletons/T163.golden view
@@ -34,14 +34,18 @@ fromSing (SL b) = L (fromSing b) fromSing (SR b) = R (fromSing b) toSing (L (b :: Demote a))- = case toSing b :: SomeSing a of { SomeSing c -> SomeSing (SL c) }+ = case toSing b :: SomeSing a of SomeSing c -> SomeSing (SL c) toSing (R (b :: Demote b))- = case toSing b :: SomeSing b of { SomeSing c -> SomeSing (SR c) }+ = case toSing b :: SomeSing b of SomeSing c -> SomeSing (SR c) instance SingI n => SingI (L (n :: a)) where sing = SL sing+ instance SingI1 L where+ liftSing = SL instance SingI (LSym0 :: (~>) a ((+) a b)) where sing = (singFun1 @LSym0) SL instance SingI n => SingI (R (n :: b)) where sing = SR sing+ instance SingI1 R where+ liftSing = SR instance SingI (RSym0 :: (~>) b ((+) a b)) where sing = (singFun1 @RSym0) SR
tests/compile-and-dump/Singletons/T166.golden view
@@ -1,37 +1,37 @@ Singletons/T166.hs:(0,0)-(0,0): Splicing declarations singletonsOnly [d| class Foo a where- foosPrec :: Nat -> a -> [Bool] -> [Bool]+ foosPrec :: Natural -> a -> [Bool] -> [Bool] foo :: a -> [Bool] foo x s = foosPrec 0 x s |] ======>- type FoosPrecSym0 :: forall a.- (~>) Nat ((~>) a ((~>) [Bool] [Bool]))- data FoosPrecSym0 :: (~>) Nat ((~>) a ((~>) [Bool] [Bool]))+ type FoosPrecSym0 :: forall a. (~>) Natural ((~>) a ((~>) [Bool] [Bool]))+ data FoosPrecSym0 :: (~>) Natural ((~>) a ((~>) [Bool] [Bool])) where FoosPrecSym0KindInference :: SameKind (Apply FoosPrecSym0 arg) (FoosPrecSym1 arg) => FoosPrecSym0 a0123456789876543210 type instance Apply FoosPrecSym0 a0123456789876543210 = FoosPrecSym1 a0123456789876543210 instance SuppressUnusedWarnings FoosPrecSym0 where suppressUnusedWarnings = snd (((,) FoosPrecSym0KindInference) ())- type FoosPrecSym1 :: forall a. Nat -> (~>) a ((~>) [Bool] [Bool])- data FoosPrecSym1 (a0123456789876543210 :: Nat) :: (~>) a ((~>) [Bool] [Bool])+ type FoosPrecSym1 :: forall a. Natural+ -> (~>) a ((~>) [Bool] [Bool])+ data FoosPrecSym1 (a0123456789876543210 :: Natural) :: (~>) a ((~>) [Bool] [Bool]) where FoosPrecSym1KindInference :: SameKind (Apply (FoosPrecSym1 a0123456789876543210) arg) (FoosPrecSym2 a0123456789876543210 arg) => FoosPrecSym1 a0123456789876543210 a0123456789876543210 type instance Apply (FoosPrecSym1 a0123456789876543210) a0123456789876543210 = FoosPrecSym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (FoosPrecSym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) FoosPrecSym1KindInference) ())- type FoosPrecSym2 :: forall a. Nat -> a -> (~>) [Bool] [Bool]- data FoosPrecSym2 (a0123456789876543210 :: Nat) (a0123456789876543210 :: a) :: (~>) [Bool] [Bool]+ type FoosPrecSym2 :: forall a. Natural -> a -> (~>) [Bool] [Bool]+ data FoosPrecSym2 (a0123456789876543210 :: Natural) (a0123456789876543210 :: a) :: (~>) [Bool] [Bool] where FoosPrecSym2KindInference :: SameKind (Apply (FoosPrecSym2 a0123456789876543210 a0123456789876543210) arg) (FoosPrecSym3 a0123456789876543210 a0123456789876543210 arg) => FoosPrecSym2 a0123456789876543210 a0123456789876543210 a0123456789876543210 type instance Apply (FoosPrecSym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = FoosPrec a0123456789876543210 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (FoosPrecSym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) FoosPrecSym2KindInference) ())- type FoosPrecSym3 :: forall a. Nat -> a -> [Bool] -> [Bool]- type family FoosPrecSym3 (a0123456789876543210 :: Nat) (a0123456789876543210 :: a) (a0123456789876543210 :: [Bool]) :: [Bool] where+ type FoosPrecSym3 :: forall a. Natural -> a -> [Bool] -> [Bool]+ type family FoosPrecSym3 (a0123456789876543210 :: Natural) (a0123456789876543210 :: a) (a0123456789876543210 :: [Bool]) :: [Bool] where FoosPrecSym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = FoosPrec a0123456789876543210 a0123456789876543210 a0123456789876543210 type FooSym0 :: forall a. (~>) a [Bool] data FooSym0 :: (~>) a [Bool]@@ -80,44 +80,59 @@ type family Foo_0123456789876543210Sym1 (a0123456789876543210 :: a) :: [Bool] where Foo_0123456789876543210Sym1 a0123456789876543210 = Foo_0123456789876543210 a0123456789876543210 class PFoo a where- type FoosPrec (arg :: Nat) (arg :: a) (arg :: [Bool]) :: [Bool]- type Foo (arg :: a) :: [Bool]+ type family FoosPrec (arg :: Natural) (arg :: a) (arg :: [Bool]) :: [Bool]+ type family Foo (arg :: a) :: [Bool] type Foo a = Apply Foo_0123456789876543210Sym0 a class SFoo a where sFoosPrec ::- forall (t :: Nat) (t :: a) (t :: [Bool]).- Sing t- -> Sing t- -> Sing t- -> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool])+ forall (t :: Natural) (t :: a) (t :: [Bool]). Sing t+ -> Sing t+ -> Sing t+ -> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool]) sFoo :: forall (t :: a). Sing t -> Sing (Apply FooSym0 t :: [Bool]) default sFoo ::- forall (t :: a).- ((Apply FooSym0 t :: [Bool])- ~ Apply Foo_0123456789876543210Sym0 t) =>- Sing t -> Sing (Apply FooSym0 t :: [Bool])+ forall (t :: a). ((Apply FooSym0 t :: [Bool])+ ~ Apply Foo_0123456789876543210Sym0 t) =>+ Sing t -> Sing (Apply FooSym0 t :: [Bool]) sFoo (sX :: Sing x) = (singFun1 @(Apply Lambda_0123456789876543210Sym0 x)) (\ sS- -> case sS of {+ -> case sS of (_ :: Sing s) -> (applySing ((applySing ((applySing ((singFun3 @FoosPrecSym0) sFoosPrec)) (sFromInteger (sing :: Sing 0)))) sX))- sS })+ sS) instance SFoo a =>- SingI (FoosPrecSym0 :: (~>) Nat ((~>) a ((~>) [Bool] [Bool]))) where+ SingI (FoosPrecSym0 :: (~>) Natural ((~>) a ((~>) [Bool] [Bool]))) where sing = (singFun3 @FoosPrecSym0) sFoosPrec instance (SFoo a, SingI d) =>- SingI (FoosPrecSym1 (d :: Nat) :: (~>) a ((~>) [Bool] [Bool])) where- sing = (singFun2 @(FoosPrecSym1 (d :: Nat))) (sFoosPrec (sing @d))+ SingI (FoosPrecSym1 (d :: Natural) :: (~>) a ((~>) [Bool] [Bool])) where+ sing+ = (singFun2 @(FoosPrecSym1 (d :: Natural))) (sFoosPrec (sing @d))+ instance SFoo a =>+ SingI1 (FoosPrecSym1 :: Natural+ -> (~>) a ((~>) [Bool] [Bool])) where+ liftSing (s :: Sing (d :: Natural))+ = (singFun2 @(FoosPrecSym1 (d :: Natural))) (sFoosPrec s) instance (SFoo a, SingI d, SingI d) =>- SingI (FoosPrecSym2 (d :: Nat) (d :: a) :: (~>) [Bool] [Bool]) where+ SingI (FoosPrecSym2 (d :: Natural) (d :: a) :: (~>) [Bool] [Bool]) where sing- = (singFun1 @(FoosPrecSym2 (d :: Nat) (d :: a)))+ = (singFun1 @(FoosPrecSym2 (d :: Natural) (d :: a))) ((sFoosPrec (sing @d)) (sing @d))+ instance (SFoo a, SingI d) =>+ SingI1 (FoosPrecSym2 (d :: Natural) :: a+ -> (~>) [Bool] [Bool]) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(FoosPrecSym2 (d :: Natural) (d :: a)))+ ((sFoosPrec (sing @d)) s)+ instance SFoo a =>+ SingI2 (FoosPrecSym2 :: Natural -> a -> (~>) [Bool] [Bool]) where+ liftSing2 (s :: Sing (d :: Natural)) (s :: Sing (d :: a))+ = (singFun1 @(FoosPrecSym2 (d :: Natural) (d :: a)))+ ((sFoosPrec s) s) instance SFoo a => SingI (FooSym0 :: (~>) a [Bool]) where sing = (singFun1 @FooSym0) sFoo
tests/compile-and-dump/Singletons/T166.hs view
@@ -13,7 +13,7 @@ $(singletonsOnly [d| class Foo a where- foosPrec :: Nat -> a -> [Bool] -> [Bool]+ foosPrec :: Natural -> a -> [Bool] -> [Bool] foo :: a -> [Bool] foo x s = foosPrec 0 x s
tests/compile-and-dump/Singletons/T167.golden view
@@ -1,40 +1,40 @@ Singletons/T167.hs:(0,0)-(0,0): Splicing declarations singletonsOnly [d| class Foo a where- foosPrec :: Nat -> a -> DiffList+ foosPrec :: Natural -> a -> DiffList fooList :: a -> DiffList fooList = undefined instance Foo a => Foo [a] where foosPrec _ = fooList |] ======>- type FoosPrecSym0 :: forall a.- (~>) Nat ((~>) a ((~>) [Bool] [Bool]))- data FoosPrecSym0 :: (~>) Nat ((~>) a ((~>) [Bool] [Bool]))+ type FoosPrecSym0 :: forall a. (~>) Natural ((~>) a ((~>) [Bool] [Bool]))+ data FoosPrecSym0 :: (~>) Natural ((~>) a ((~>) [Bool] [Bool])) where FoosPrecSym0KindInference :: SameKind (Apply FoosPrecSym0 arg) (FoosPrecSym1 arg) => FoosPrecSym0 a0123456789876543210 type instance Apply FoosPrecSym0 a0123456789876543210 = FoosPrecSym1 a0123456789876543210 instance SuppressUnusedWarnings FoosPrecSym0 where suppressUnusedWarnings = snd (((,) FoosPrecSym0KindInference) ())- type FoosPrecSym1 :: forall a. Nat -> (~>) a ((~>) [Bool] [Bool])- data FoosPrecSym1 (a0123456789876543210 :: Nat) :: (~>) a ((~>) [Bool] [Bool])+ type FoosPrecSym1 :: forall a. Natural+ -> (~>) a ((~>) [Bool] [Bool])+ data FoosPrecSym1 (a0123456789876543210 :: Natural) :: (~>) a ((~>) [Bool] [Bool]) where FoosPrecSym1KindInference :: SameKind (Apply (FoosPrecSym1 a0123456789876543210) arg) (FoosPrecSym2 a0123456789876543210 arg) => FoosPrecSym1 a0123456789876543210 a0123456789876543210 type instance Apply (FoosPrecSym1 a0123456789876543210) a0123456789876543210 = FoosPrecSym2 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (FoosPrecSym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) FoosPrecSym1KindInference) ())- type FoosPrecSym2 :: forall a. Nat -> a -> (~>) [Bool] [Bool]- data FoosPrecSym2 (a0123456789876543210 :: Nat) (a0123456789876543210 :: a) :: (~>) [Bool] [Bool]+ type FoosPrecSym2 :: forall a. Natural -> a -> (~>) [Bool] [Bool]+ data FoosPrecSym2 (a0123456789876543210 :: Natural) (a0123456789876543210 :: a) :: (~>) [Bool] [Bool] where FoosPrecSym2KindInference :: SameKind (Apply (FoosPrecSym2 a0123456789876543210 a0123456789876543210) arg) (FoosPrecSym3 a0123456789876543210 a0123456789876543210 arg) => FoosPrecSym2 a0123456789876543210 a0123456789876543210 a0123456789876543210 type instance Apply (FoosPrecSym2 a0123456789876543210 a0123456789876543210) a0123456789876543210 = FoosPrec a0123456789876543210 a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (FoosPrecSym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) FoosPrecSym2KindInference) ())- type FoosPrecSym3 :: forall a. Nat -> a -> [Bool] -> [Bool]- type family FoosPrecSym3 (a0123456789876543210 :: Nat) (a0123456789876543210 :: a) (a0123456789876543210 :: [Bool]) :: [Bool] where+ type FoosPrecSym3 :: forall a. Natural -> a -> [Bool] -> [Bool]+ type family FoosPrecSym3 (a0123456789876543210 :: Natural) (a0123456789876543210 :: a) (a0123456789876543210 :: [Bool]) :: [Bool] where FoosPrecSym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = FoosPrec a0123456789876543210 a0123456789876543210 a0123456789876543210 type FooListSym0 :: forall a. (~>) a ((~>) [Bool] [Bool]) data FooListSym0 :: (~>) a ((~>) [Bool] [Bool])@@ -80,14 +80,15 @@ type family FooList_0123456789876543210Sym2 (a0123456789876543210 :: a) (a0123456789876543210 :: [Bool]) :: [Bool] where FooList_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = FooList_0123456789876543210 a0123456789876543210 a0123456789876543210 class PFoo a where- type FoosPrec (arg :: Nat) (arg :: a) (arg :: [Bool]) :: [Bool]- type FooList (arg :: a) (arg :: [Bool]) :: [Bool]+ type family FoosPrec (arg :: Natural) (arg :: a) (arg :: [Bool]) :: [Bool]+ type family FooList (arg :: a) (arg :: [Bool]) :: [Bool] type FooList a a = Apply (Apply FooList_0123456789876543210Sym0 a) a- type FoosPrec_0123456789876543210 :: Nat -> [a] -> [Bool] -> [Bool]- type family FoosPrec_0123456789876543210 (a :: Nat) (a :: [a]) (a :: [Bool]) :: [Bool] where+ type FoosPrec_0123456789876543210 :: Natural+ -> [a] -> [Bool] -> [Bool]+ type family FoosPrec_0123456789876543210 (a :: Natural) (a :: [a]) (a :: [Bool]) :: [Bool] where FoosPrec_0123456789876543210 _ a_0123456789876543210 a_0123456789876543210 = Apply (Apply FooListSym0 a_0123456789876543210) a_0123456789876543210- type FoosPrec_0123456789876543210Sym0 :: (~>) Nat ((~>) [a] ((~>) [Bool] [Bool]))- data FoosPrec_0123456789876543210Sym0 :: (~>) Nat ((~>) [a] ((~>) [Bool] [Bool]))+ type FoosPrec_0123456789876543210Sym0 :: (~>) Natural ((~>) [a] ((~>) [Bool] [Bool]))+ data FoosPrec_0123456789876543210Sym0 :: (~>) Natural ((~>) [a] ((~>) [Bool] [Bool])) where FoosPrec_0123456789876543210Sym0KindInference :: SameKind (Apply FoosPrec_0123456789876543210Sym0 arg) (FoosPrec_0123456789876543210Sym1 arg) => FoosPrec_0123456789876543210Sym0 a0123456789876543210@@ -95,9 +96,9 @@ instance SuppressUnusedWarnings FoosPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) FoosPrec_0123456789876543210Sym0KindInference) ())- type FoosPrec_0123456789876543210Sym1 :: Nat+ type FoosPrec_0123456789876543210Sym1 :: Natural -> (~>) [a] ((~>) [Bool] [Bool])- data FoosPrec_0123456789876543210Sym1 (a0123456789876543210 :: Nat) :: (~>) [a] ((~>) [Bool] [Bool])+ data FoosPrec_0123456789876543210Sym1 (a0123456789876543210 :: Natural) :: (~>) [a] ((~>) [Bool] [Bool]) where FoosPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (FoosPrec_0123456789876543210Sym1 a0123456789876543210) arg) (FoosPrec_0123456789876543210Sym2 a0123456789876543210 arg) => FoosPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -105,9 +106,9 @@ instance SuppressUnusedWarnings (FoosPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) FoosPrec_0123456789876543210Sym1KindInference) ())- type FoosPrec_0123456789876543210Sym2 :: Nat+ type FoosPrec_0123456789876543210Sym2 :: Natural -> [a] -> (~>) [Bool] [Bool]- data FoosPrec_0123456789876543210Sym2 (a0123456789876543210 :: Nat) (a0123456789876543210 :: [a]) :: (~>) [Bool] [Bool]+ data FoosPrec_0123456789876543210Sym2 (a0123456789876543210 :: Natural) (a0123456789876543210 :: [a]) :: (~>) [Bool] [Bool] where FoosPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (FoosPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (FoosPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => FoosPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -115,38 +116,37 @@ instance SuppressUnusedWarnings (FoosPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) FoosPrec_0123456789876543210Sym2KindInference) ())- type FoosPrec_0123456789876543210Sym3 :: Nat+ type FoosPrec_0123456789876543210Sym3 :: Natural -> [a] -> [Bool] -> [Bool]- type family FoosPrec_0123456789876543210Sym3 (a0123456789876543210 :: Nat) (a0123456789876543210 :: [a]) (a0123456789876543210 :: [Bool]) :: [Bool] where+ type family FoosPrec_0123456789876543210Sym3 (a0123456789876543210 :: Natural) (a0123456789876543210 :: [a]) (a0123456789876543210 :: [Bool]) :: [Bool] where FoosPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = FoosPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PFoo [a] where type FoosPrec a a a = Apply (Apply (Apply FoosPrec_0123456789876543210Sym0 a) a) a class SFoo a where sFoosPrec ::- forall (t :: Nat) (t :: a) (t :: [Bool]).- Sing t- -> Sing t- -> Sing t- -> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool])+ forall (t :: Natural) (t :: a) (t :: [Bool]). Sing t+ -> Sing t+ -> Sing t+ -> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool]) sFooList ::- forall (t :: a) (t :: [Bool]).- Sing t -> Sing t -> Sing (Apply (Apply FooListSym0 t) t :: [Bool])+ forall (t :: a) (t :: [Bool]). Sing t+ -> Sing t -> Sing (Apply (Apply FooListSym0 t) t :: [Bool]) default sFooList ::- forall (t :: a) (t :: [Bool]).- ((Apply (Apply FooListSym0 t) t :: [Bool])- ~ Apply (Apply FooList_0123456789876543210Sym0 t) t) =>- Sing t -> Sing t -> Sing (Apply (Apply FooListSym0 t) t :: [Bool])+ forall (t :: a)+ (t :: [Bool]). ((Apply (Apply FooListSym0 t) t :: [Bool])+ ~ Apply (Apply FooList_0123456789876543210Sym0 t) t) =>+ Sing t+ -> Sing t -> Sing (Apply (Apply FooListSym0 t) t :: [Bool]) sFooList (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210) = (sUndefined sA_0123456789876543210) sA_0123456789876543210 instance SFoo a => SFoo [a] where sFoosPrec ::- forall (t :: Nat) (t :: [a]) (t :: [Bool]).- Sing t- -> Sing t- -> Sing t- -> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool])+ forall (t :: Natural) (t :: [a]) (t :: [Bool]). Sing t+ -> Sing t+ -> Sing t+ -> Sing (Apply (Apply (Apply FoosPrecSym0 t) t) t :: [Bool]) sFoosPrec _ (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -156,19 +156,40 @@ sA_0123456789876543210)) sA_0123456789876543210 instance SFoo a =>- SingI (FoosPrecSym0 :: (~>) Nat ((~>) a ((~>) [Bool] [Bool]))) where+ SingI (FoosPrecSym0 :: (~>) Natural ((~>) a ((~>) [Bool] [Bool]))) where sing = (singFun3 @FoosPrecSym0) sFoosPrec instance (SFoo a, SingI d) =>- SingI (FoosPrecSym1 (d :: Nat) :: (~>) a ((~>) [Bool] [Bool])) where- sing = (singFun2 @(FoosPrecSym1 (d :: Nat))) (sFoosPrec (sing @d))+ SingI (FoosPrecSym1 (d :: Natural) :: (~>) a ((~>) [Bool] [Bool])) where+ sing+ = (singFun2 @(FoosPrecSym1 (d :: Natural))) (sFoosPrec (sing @d))+ instance SFoo a =>+ SingI1 (FoosPrecSym1 :: Natural+ -> (~>) a ((~>) [Bool] [Bool])) where+ liftSing (s :: Sing (d :: Natural))+ = (singFun2 @(FoosPrecSym1 (d :: Natural))) (sFoosPrec s) instance (SFoo a, SingI d, SingI d) =>- SingI (FoosPrecSym2 (d :: Nat) (d :: a) :: (~>) [Bool] [Bool]) where+ SingI (FoosPrecSym2 (d :: Natural) (d :: a) :: (~>) [Bool] [Bool]) where sing- = (singFun1 @(FoosPrecSym2 (d :: Nat) (d :: a)))+ = (singFun1 @(FoosPrecSym2 (d :: Natural) (d :: a))) ((sFoosPrec (sing @d)) (sing @d))+ instance (SFoo a, SingI d) =>+ SingI1 (FoosPrecSym2 (d :: Natural) :: a+ -> (~>) [Bool] [Bool]) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(FoosPrecSym2 (d :: Natural) (d :: a)))+ ((sFoosPrec (sing @d)) s) instance SFoo a =>+ SingI2 (FoosPrecSym2 :: Natural -> a -> (~>) [Bool] [Bool]) where+ liftSing2 (s :: Sing (d :: Natural)) (s :: Sing (d :: a))+ = (singFun1 @(FoosPrecSym2 (d :: Natural) (d :: a)))+ ((sFoosPrec s) s)+ instance SFoo a => SingI (FooListSym0 :: (~>) a ((~>) [Bool] [Bool])) where sing = (singFun2 @FooListSym0) sFooList instance (SFoo a, SingI d) => SingI (FooListSym1 (d :: a) :: (~>) [Bool] [Bool]) where sing = (singFun1 @(FooListSym1 (d :: a))) (sFooList (sing @d))+ instance SFoo a =>+ SingI1 (FooListSym1 :: a -> (~>) [Bool] [Bool]) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(FooListSym1 (d :: a))) (sFooList s)
tests/compile-and-dump/Singletons/T167.hs view
@@ -17,7 +17,7 @@ $(singletonsOnly [d| class Foo a where- foosPrec :: Nat -> a -> DiffList+ foosPrec :: Natural -> a -> DiffList fooList :: a -> DiffList fooList = undefined
tests/compile-and-dump/Singletons/T172.golden view
@@ -1,41 +1,46 @@ Singletons/T172.hs:(0,0)-(0,0): Splicing declarations singletonsOnly- [d| ($>) :: Nat -> Nat -> Nat+ [d| ($>) :: Natural -> Natural -> Natural ($>) = (+) |] ======>- type ($>@#@$) :: (~>) Nat ((~>) Nat Nat)- data ($>@#@$) :: (~>) Nat ((~>) Nat Nat)+ type ($>@#@$) :: (~>) Natural ((~>) Natural Natural)+ data ($>@#@$) :: (~>) Natural ((~>) Natural Natural) where (:$>@#@$###) :: SameKind (Apply ($>@#@$) arg) (($>@#@$$) arg) => ($>@#@$) a0123456789876543210 type instance Apply ($>@#@$) a0123456789876543210 = ($>@#@$$) a0123456789876543210 instance SuppressUnusedWarnings ($>@#@$) where suppressUnusedWarnings = snd (((,) (:$>@#@$###)) ())- type ($>@#@$$) :: Nat -> (~>) Nat Nat- data ($>@#@$$) (a0123456789876543210 :: Nat) :: (~>) Nat Nat+ type ($>@#@$$) :: Natural -> (~>) Natural Natural+ data ($>@#@$$) (a0123456789876543210 :: Natural) :: (~>) Natural Natural where (:$>@#@$$###) :: SameKind (Apply (($>@#@$$) a0123456789876543210) arg) (($>@#@$$$) a0123456789876543210 arg) => ($>@#@$$) a0123456789876543210 a0123456789876543210 type instance Apply (($>@#@$$) a0123456789876543210) a0123456789876543210 = ($>) a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (($>@#@$$) a0123456789876543210) where suppressUnusedWarnings = snd (((,) (:$>@#@$$###)) ())- type ($>@#@$$$) :: Nat -> Nat -> Nat- type family ($>@#@$$$) (a0123456789876543210 :: Nat) (a0123456789876543210 :: Nat) :: Nat where+ type ($>@#@$$$) :: Natural -> Natural -> Natural+ type family ($>@#@$$$) (a0123456789876543210 :: Natural) (a0123456789876543210 :: Natural) :: Natural where ($>@#@$$$) a0123456789876543210 a0123456789876543210 = ($>) a0123456789876543210 a0123456789876543210- type ($>) :: Nat -> Nat -> Nat- type family ($>) (a :: Nat) (a :: Nat) :: Nat where+ type ($>) :: Natural -> Natural -> Natural+ type family ($>) (a :: Natural) (a :: Natural) :: Natural where ($>) a_0123456789876543210 a_0123456789876543210 = Apply (Apply (+@#@$) a_0123456789876543210) a_0123456789876543210 (%$>) ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply ($>@#@$) t) t :: Nat)+ forall (t :: Natural) (t :: Natural). Sing t+ -> Sing t+ -> Sing (Apply (Apply ($>@#@$) t) t :: Natural) (%$>) (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((applySing ((singFun2 @(+@#@$)) (%+))) sA_0123456789876543210)) sA_0123456789876543210- instance SingI (($>@#@$) :: (~>) Nat ((~>) Nat Nat)) where+ instance SingI (($>@#@$) :: (~>) Natural ((~>) Natural Natural)) where sing = (singFun2 @($>@#@$)) (%$>) instance SingI d =>- SingI (($>@#@$$) (d :: Nat) :: (~>) Nat Nat) where- sing = (singFun1 @(($>@#@$$) (d :: Nat))) ((%$>) (sing @d))+ SingI (($>@#@$$) (d :: Natural) :: (~>) Natural Natural) where+ sing = (singFun1 @(($>@#@$$) (d :: Natural))) ((%$>) (sing @d))+ instance SingI1 (($>@#@$$) :: Natural+ -> (~>) Natural Natural) where+ liftSing (s :: Sing (d :: Natural))+ = (singFun1 @(($>@#@$$) (d :: Natural))) ((%$>) s)
tests/compile-and-dump/Singletons/T172.hs view
@@ -13,6 +13,6 @@ import Prelude.Singletons $(singletonsOnly [d|- ($>) :: Nat -> Nat -> Nat+ ($>) :: Natural -> Natural -> Natural ($>) = (+) |])
tests/compile-and-dump/Singletons/T175.golden view
@@ -28,7 +28,7 @@ type family BazSym0 :: a where BazSym0 = Baz class PFoo a where- type Baz :: a+ type family Baz :: a type Quux1Sym0 :: forall a. a type family Quux1Sym0 :: a where Quux1Sym0 = Quux1@@ -39,7 +39,7 @@ type family Quux1_0123456789876543210Sym0 :: a where Quux1_0123456789876543210Sym0 = Quux1_0123456789876543210 class PBar1 a where- type Quux1 :: a+ type family Quux1 :: a type Quux1 = Quux1_0123456789876543210Sym0 class PBar2 a sQuux2 :: forall a. SBar2 a => Sing (Quux2Sym0 :: a)
tests/compile-and-dump/Singletons/T176.golden view
@@ -95,8 +95,8 @@ type family Baz1Sym0 :: a where Baz1Sym0 = Baz1 class PFoo1 a where- type Bar1 (arg :: a) (arg :: (~>) a b) :: b- type Baz1 :: a+ type family Bar1 (arg :: a) (arg :: (~>) a b) :: b+ type family Baz1 :: a type Bar2Sym0 :: forall a b. (~>) a ((~>) b b) data Bar2Sym0 :: (~>) a ((~>) b b) where@@ -120,38 +120,38 @@ type family Baz2Sym0 :: a where Baz2Sym0 = Baz2 class PFoo2 a where- type Bar2 (arg :: a) (arg :: b) :: b- type Baz2 :: a+ type family Bar2 (arg :: a) (arg :: b) :: b+ type family Baz2 :: a sQuux2 ::- forall a (t :: a).- SFoo2 a => Sing t -> Sing (Apply Quux2Sym0 t :: a)+ forall a (t :: a). SFoo2 a =>+ Sing t -> Sing (Apply Quux2Sym0 t :: a) sQuux1 ::- forall a (t :: a).- SFoo1 a => Sing t -> Sing (Apply Quux1Sym0 t :: a)+ forall a (t :: a). SFoo1 a =>+ Sing t -> Sing (Apply Quux1Sym0 t :: a) sQuux2 (sX :: Sing x) = (applySing ((applySing ((singFun2 @Bar2Sym0) sBar2)) sX)) sBaz2 sQuux1 (sX :: Sing x) = (applySing ((applySing ((singFun2 @Bar1Sym0) sBar1)) sX)) ((singFun1 @(Apply Lambda_0123456789876543210Sym0 x)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 x arg_0123456789876543210)))- (case sArg_0123456789876543210 of { _ -> sBaz1 }) }))+ (case sArg_0123456789876543210 of _ -> sBaz1))) instance SFoo2 a => SingI (Quux2Sym0 :: (~>) a a) where sing = (singFun1 @Quux2Sym0) sQuux2 instance SFoo1 a => SingI (Quux1Sym0 :: (~>) a a) where sing = (singFun1 @Quux1Sym0) sQuux1 class SFoo1 a where sBar1 ::- forall b (t :: a) (t :: (~>) a b).- Sing t -> Sing t -> Sing (Apply (Apply Bar1Sym0 t) t :: b)+ forall b (t :: a) (t :: (~>) a b). Sing t+ -> Sing t -> Sing (Apply (Apply Bar1Sym0 t) t :: b) sBaz1 :: Sing (Baz1Sym0 :: a) class SFoo2 a where sBar2 ::- forall b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Bar2Sym0 t) t :: b)+ forall b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Bar2Sym0 t) t :: b) sBaz2 :: Sing (Baz2Sym0 :: a) instance SFoo1 a => SingI (Bar1Sym0 :: (~>) a ((~>) ((~>) a b) b)) where@@ -159,8 +159,15 @@ instance (SFoo1 a, SingI d) => SingI (Bar1Sym1 (d :: a) :: (~>) ((~>) a b) b) where sing = (singFun1 @(Bar1Sym1 (d :: a))) (sBar1 (sing @d))+ instance SFoo1 a =>+ SingI1 (Bar1Sym1 :: a -> (~>) ((~>) a b) b) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Bar1Sym1 (d :: a))) (sBar1 s) instance SFoo2 a => SingI (Bar2Sym0 :: (~>) a ((~>) b b)) where sing = (singFun2 @Bar2Sym0) sBar2 instance (SFoo2 a, SingI d) => SingI (Bar2Sym1 (d :: a) :: (~>) b b) where sing = (singFun1 @(Bar2Sym1 (d :: a))) (sBar2 (sing @d))+ instance SFoo2 a => SingI1 (Bar2Sym1 :: a -> (~>) b b) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Bar2Sym1 (d :: a))) (sBar2 s)
tests/compile-and-dump/Singletons/T178.golden view
@@ -99,14 +99,14 @@ Compare_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = Compare_0123456789876543210 a0123456789876543210 a0123456789876543210 instance POrd Occ where type Compare a a = Apply (Apply Compare_0123456789876543210Sym0 a) a- type ShowsPrec_0123456789876543210 :: Nat+ type ShowsPrec_0123456789876543210 :: Natural -> Occ -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210 (a :: Nat) (a :: Occ) (a :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210 (a :: Natural) (a :: Occ) (a :: Symbol) :: Symbol where ShowsPrec_0123456789876543210 _ Str a_0123456789876543210 = Apply (Apply ShowStringSym0 "Str") a_0123456789876543210 ShowsPrec_0123456789876543210 _ Opt a_0123456789876543210 = Apply (Apply ShowStringSym0 "Opt") a_0123456789876543210 ShowsPrec_0123456789876543210 _ Many a_0123456789876543210 = Apply (Apply ShowStringSym0 "Many") a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) Nat ((~>) Occ ((~>) Symbol Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) Nat ((~>) Occ ((~>) Symbol Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) Natural ((~>) Occ ((~>) Symbol Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) Natural ((~>) Occ ((~>) Symbol Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -114,9 +114,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: Nat+ type ShowsPrec_0123456789876543210Sym1 :: Natural -> (~>) Occ ((~>) Symbol Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: Nat) :: (~>) Occ ((~>) Symbol Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: Natural) :: (~>) Occ ((~>) Symbol Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -124,9 +124,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: Nat+ type ShowsPrec_0123456789876543210Sym2 :: Natural -> Occ -> (~>) Symbol Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: Nat) (a0123456789876543210 :: Occ) :: (~>) Symbol Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: Natural) (a0123456789876543210 :: Occ) :: (~>) Symbol Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -134,9 +134,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: Nat+ type ShowsPrec_0123456789876543210Sym3 :: Natural -> Occ -> Symbol -> Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: Nat) (a0123456789876543210 :: Occ) (a0123456789876543210 :: Symbol) :: Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: Natural) (a0123456789876543210 :: Occ) (a0123456789876543210 :: Symbol) :: Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow Occ where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -158,11 +158,10 @@ toSing Many = SomeSing SMany instance SEq Occ where (%==) ::- forall (t1 :: Occ) (t2 :: Occ).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Occ ((~>) Occ Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Occ) (t2 :: Occ). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Occ ((~>) Occ Bool)+ -> GHC.Types.Type) t1) t2) (%==) SStr SStr = STrue (%==) SStr SOpt = SFalse (%==) SStr SMany = SFalse@@ -174,11 +173,10 @@ (%==) SMany SMany = STrue instance SOrd Occ where sCompare ::- forall (t1 :: Occ) (t2 :: Occ).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun Occ ((~>) Occ Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Occ) (t2 :: Occ). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun Occ ((~>) Occ Ordering)+ -> GHC.Types.Type) t1) t2) sCompare SStr SStr = (applySing ((applySing@@ -208,12 +206,11 @@ sCompare SMany SOpt = SGT instance SShow Occ where sShowsPrec ::- forall (t1 :: Nat) (t2 :: Occ) (t3 :: Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun Nat ((~>) Occ ((~>) Symbol Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: Natural) (t2 :: Occ) (t3 :: Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun Natural ((~>) Occ ((~>) Symbol Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec _ SStr@@ -240,13 +237,13 @@ sA_0123456789876543210 instance SDecide Occ where (%~) SStr SStr = Proved Refl- (%~) SStr SOpt = Disproved (\ x -> case x of)- (%~) SStr SMany = Disproved (\ x -> case x of)- (%~) SOpt SStr = Disproved (\ x -> case x of)+ (%~) SStr SOpt = Disproved (\ x -> case x of {})+ (%~) SStr SMany = Disproved (\ x -> case x of {})+ (%~) SOpt SStr = Disproved (\ x -> case x of {}) (%~) SOpt SOpt = Proved Refl- (%~) SOpt SMany = Disproved (\ x -> case x of)- (%~) SMany SStr = Disproved (\ x -> case x of)- (%~) SMany SOpt = Disproved (\ x -> case x of)+ (%~) SOpt SMany = Disproved (\ x -> case x of {})+ (%~) SMany SStr = Disproved (\ x -> case x of {})+ (%~) SMany SOpt = Disproved (\ x -> case x of {}) (%~) SMany SMany = Proved Refl instance Data.Type.Equality.TestEquality (SOcc :: Occ -> GHC.Types.Type) where
tests/compile-and-dump/Singletons/T183.golden view
@@ -3,7 +3,7 @@ [d| f1 (x :: Maybe Bool) = (x :: Maybe Bool) f2 (x :: Maybe a) = (x :: Maybe a) f3 (Just a :: Maybe Bool) = "hi"- g x = case Just x of { (Just y :: Maybe Bool) -> (y :: Bool) }+ g x = case Just x of (Just y :: Maybe Bool) -> (y :: Bool) foo1 :: Maybe a -> a foo1 (Just x :: Maybe a) = (x :: a) foo2, foo3 :: forall a. Maybe a -> a@@ -15,8 +15,8 @@ foo5 (Just (Just (x :: a) :: Maybe a) :: Maybe (Maybe a)) = Just (Just (x :: a) :: Maybe a) :: Maybe (Maybe a) foo6 (Just x :: Maybe (Maybe a))- = case x :: Maybe a of {- (Just (y :: a) :: Maybe a) -> Just (Just (y :: a) :: Maybe a) }+ = case x :: Maybe a of+ (Just (y :: a) :: Maybe a) -> Just (Just (y :: a) :: Maybe a) foo7 :: a -> b -> a foo7 (x :: a) (_ :: b) = (x :: a) foo8 :: forall a. Maybe a -> Maybe a@@ -32,7 +32,7 @@ f1 (x :: Maybe Bool) = x :: Maybe Bool f2 (x :: Maybe a) = x :: Maybe a f3 (Just a :: Maybe Bool) = "hi"- g x = case Just x of { (Just y :: Maybe Bool) -> y :: Bool }+ g x = case Just x of (Just y :: Maybe Bool) -> y :: Bool foo1 :: Maybe a -> a foo1 (Just x :: Maybe a) = x :: a foo2 :: forall a. Maybe a -> a@@ -46,8 +46,8 @@ foo5 (Just (Just (x :: a) :: Maybe a) :: Maybe (Maybe a)) = Just (Just (x :: a) :: Maybe a) :: Maybe (Maybe a) foo6 (Just x :: Maybe (Maybe a))- = case x :: Maybe a of {- (Just (y :: a) :: Maybe a) -> Just (Just (y :: a) :: Maybe a) }+ = case x :: Maybe a of+ (Just (y :: a) :: Maybe a) -> Just (Just (y :: a) :: Maybe a) foo7 :: a -> b -> a foo7 (x :: a) (_ :: b) = x :: a foo8 :: forall a. Maybe a -> Maybe a@@ -342,20 +342,20 @@ F1 (x :: Maybe Bool) = x :: Maybe Bool sFoo9 :: forall a (t :: a). Sing t -> Sing (Apply Foo9Sym0 t :: a) sFoo8 ::- forall a (t :: Maybe a).- Sing t -> Sing (Apply Foo8Sym0 t :: Maybe a)+ forall a (t :: Maybe a). Sing t+ -> Sing (Apply Foo8Sym0 t :: Maybe a) sFoo7 ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Foo7Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Foo7Sym0 t) t :: a) sFoo6 ::- forall a (t :: Maybe (Maybe a)).- Sing t -> Sing (Apply Foo6Sym0 t :: Maybe (Maybe a))+ forall a (t :: Maybe (Maybe a)). Sing t+ -> Sing (Apply Foo6Sym0 t :: Maybe (Maybe a)) sFoo5 ::- forall a (t :: Maybe (Maybe a)).- Sing t -> Sing (Apply Foo5Sym0 t :: Maybe (Maybe a))+ forall a (t :: Maybe (Maybe a)). Sing t+ -> Sing (Apply Foo5Sym0 t :: Maybe (Maybe a)) sFoo4 ::- forall a b (t :: (a, b)).- Sing t -> Sing (Apply Foo4Sym0 t :: (b, a))+ forall a b (t :: (a, b)). Sing t+ -> Sing (Apply Foo4Sym0 t :: (b, a)) sFoo3 :: forall a (t :: Maybe a). Sing t -> Sing (Apply Foo3Sym0 t :: a) sFoo2 ::@@ -367,26 +367,25 @@ sF2 :: forall arg. Sing arg -> Sing (Apply F2Sym0 arg) sF1 :: forall arg. Sing arg -> Sing (Apply F1Sym0 arg) sFoo9 (sX :: Sing x)- = case sX :: Sing x of {+ = case sX :: Sing x of (_ :: Sing (x :: a)) -> let sG ::- forall b (t :: a) (t :: b).- Sing t- -> Sing t- -> Sing (Apply (Apply (Let0123456789876543210GSym1 x) t) t :: a)+ forall b (t :: a) (t :: b). Sing t+ -> Sing t+ -> Sing (Apply (Apply (Let0123456789876543210GSym1 x) t) t :: a) sG (sY :: Sing y) _ = sY in (applySing ((applySing ((singFun2 @(Let0123456789876543210GSym1 x)) sG)) sX))- STuple0 }+ STuple0 sFoo8 (SJust (sWild_0123456789876543210 :: Sing wild_0123456789876543210)) = case ((,) (sWild_0123456789876543210 :: Sing wild_0123456789876543210)) (SJust (sWild_0123456789876543210 :: Sing wild_0123456789876543210))- of {+ of (,) (_ :: Sing (wild_0123456789876543210 :: a)) (_ :: Sing ('Just (wild_0123456789876543210 :: a) :: Maybe a)) -> let@@ -397,26 +396,26 @@ (sWild_0123456789876543210 :: Sing (wild_0123456789876543210 :: a)) :: Sing (Apply JustSym0 (wild_0123456789876543210 :: a) :: Maybe a)- in sX }+ in sX sFoo8 SNothing- = case SNothing of {+ = case SNothing of (_ :: Sing ('Nothing :: Maybe a)) -> let sX :: Sing @_ Let0123456789876543210XSym0 sX = SNothing :: Sing (NothingSym0 :: Maybe a)- in sX }+ in sX sFoo7 (sX :: Sing x) (sWild_0123456789876543210 :: Sing wild_0123456789876543210) = case ((,) (sX :: Sing x)) (sWild_0123456789876543210 :: Sing wild_0123456789876543210)- of {+ of (,) (_ :: Sing (x :: a)) (_ :: Sing (wild_0123456789876543210 :: b))- -> sX :: Sing (x :: a) }+ -> sX :: Sing (x :: a) sFoo6 (SJust (sX :: Sing x))- = case SJust (sX :: Sing x) of {+ = case SJust (sX :: Sing x) of (_ :: Sing ('Just x :: Maybe (Maybe a))) -> let sScrutinee_0123456789876543210 ::@@ -425,50 +424,50 @@ in (id @(Sing (Case_0123456789876543210 x (Let0123456789876543210Scrutinee_0123456789876543210Sym1 x) :: Maybe (Maybe a))))- (case sScrutinee_0123456789876543210 of {+ (case sScrutinee_0123456789876543210 of SJust (sY :: Sing y)- -> case ((,) (sY :: Sing y)) (SJust (sY :: Sing y)) of {+ -> case ((,) (sY :: Sing y)) (SJust (sY :: Sing y)) of (,) (_ :: Sing (y :: a)) (_ :: Sing ('Just (y :: a) :: Maybe a)) -> (applySing ((singFun1 @JustSym0) SJust)) ((applySing ((singFun1 @JustSym0) SJust)) (sY :: Sing (y :: a)) ::- Sing (Apply JustSym0 (y :: a) :: Maybe a)) } }) }+ Sing (Apply JustSym0 (y :: a) :: Maybe a))) sFoo5 (SJust (SJust (sX :: Sing x))) = case (((,,) (sX :: Sing x)) (SJust (sX :: Sing x))) (SJust (SJust (sX :: Sing x)))- of {+ of (,,) (_ :: Sing (x :: a)) (_ :: Sing ('Just (x :: a) :: Maybe a)) (_ :: Sing ('Just ('Just (x :: a) :: Maybe a) :: Maybe (Maybe a))) -> (applySing ((singFun1 @JustSym0) SJust)) ((applySing ((singFun1 @JustSym0) SJust)) (sX :: Sing (x :: a)) :: Sing (Apply JustSym0 (x :: a) :: Maybe a)) ::- Sing (Apply JustSym0 (Apply JustSym0 (x :: a) :: Maybe a) :: Maybe (Maybe a)) }+ Sing (Apply JustSym0 (Apply JustSym0 (x :: a) :: Maybe a) :: Maybe (Maybe a)) sFoo4 (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((singFun1 @(Apply Lambda_0123456789876543210Sym0 a_0123456789876543210)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 a_0123456789876543210 arg_0123456789876543210)))- (case sArg_0123456789876543210 of {+ (case sArg_0123456789876543210 of STuple2 (sX :: Sing x) (sY :: Sing y)- -> case ((,) (sX :: Sing x)) (sY :: Sing y) of {+ -> case ((,) (sX :: Sing x)) (sY :: Sing y) of (,) (_ :: Sing (x :: a)) (_ :: Sing (y :: b)) -> (applySing ((applySing ((singFun2 @Tuple2Sym0) STuple2)) (sY :: Sing (y :: b))))- (sX :: Sing (x :: a)) } }) })))+ (sX :: Sing (x :: a)))))) sA_0123456789876543210 sFoo3 (SJust (sX :: Sing x)) = sX :: Sing (x :: a) sFoo2 (SJust (sX :: Sing x))- = case SJust (sX :: Sing x) of {- (_ :: Sing ('Just x :: Maybe a)) -> sX :: Sing (x :: a) }+ = case SJust (sX :: Sing x) of+ (_ :: Sing ('Just x :: Maybe a)) -> sX :: Sing (x :: a) sFoo1 (SJust (sX :: Sing x))- = case SJust (sX :: Sing x) of {- (_ :: Sing ('Just x :: Maybe a)) -> sX :: Sing (x :: a) }+ = case SJust (sX :: Sing x) of+ (_ :: Sing ('Just x :: Maybe a)) -> sX :: Sing (x :: a) sG (sX :: Sing x) = let sScrutinee_0123456789876543210 ::@@ -478,19 +477,19 @@ in (id @(Sing (Case_0123456789876543210 x (Let0123456789876543210Scrutinee_0123456789876543210Sym1 x))))- (case sScrutinee_0123456789876543210 of {+ (case sScrutinee_0123456789876543210 of SJust (sY :: Sing y)- -> case SJust (sY :: Sing y) of {- (_ :: Sing ('Just y :: Maybe Bool)) -> sY :: Sing (y :: Bool) } })+ -> case SJust (sY :: Sing y) of+ (_ :: Sing ('Just y :: Maybe Bool)) -> sY :: Sing (y :: Bool)) sF3 (SJust (sA :: Sing a))- = case SJust (sA :: Sing a) of {- (_ :: Sing ('Just a :: Maybe Bool)) -> sing :: Sing "hi" }+ = case SJust (sA :: Sing a) of+ (_ :: Sing ('Just a :: Maybe Bool)) -> sing :: Sing "hi" sF2 (sX :: Sing x)- = case sX :: Sing x of {- (_ :: Sing (x :: Maybe a)) -> sX :: Sing (x :: Maybe a) }+ = case sX :: Sing x of+ (_ :: Sing (x :: Maybe a)) -> sX :: Sing (x :: Maybe a) sF1 (sX :: Sing x)- = case sX :: Sing x of {- (_ :: Sing (x :: Maybe Bool)) -> sX :: Sing (x :: Maybe Bool) }+ = case sX :: Sing x of+ (_ :: Sing (x :: Maybe Bool)) -> sX :: Sing (x :: Maybe Bool) instance SingI (Foo9Sym0 :: (~>) a a) where sing = (singFun1 @Foo9Sym0) sFoo9 instance SingI (Foo8Sym0 :: (~>) (Maybe a) (Maybe a)) where@@ -499,6 +498,9 @@ sing = (singFun2 @Foo7Sym0) sFoo7 instance SingI d => SingI (Foo7Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Foo7Sym1 (d :: a))) (sFoo7 (sing @d))+ instance SingI1 (Foo7Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Foo7Sym1 (d :: a))) (sFoo7 s) instance SingI (Foo6Sym0 :: (~>) (Maybe (Maybe a)) (Maybe (Maybe a))) where sing = (singFun1 @Foo6Sym0) sFoo6 instance SingI (Foo5Sym0 :: (~>) (Maybe (Maybe a)) (Maybe (Maybe a))) where
tests/compile-and-dump/Singletons/T184.golden view
@@ -346,41 +346,42 @@ sTrues :: forall (t :: [Bool]). Sing t -> Sing (Apply TruesSym0 t :: [Bool]) sCartProd ::- forall a b (t :: [a]) (t :: [b]).- Sing t- -> Sing t -> Sing (Apply (Apply CartProdSym0 t) t :: [(a, b)])+ forall a b (t :: [a]) (t :: [b]). Sing t+ -> Sing t+ -> Sing (Apply (Apply CartProdSym0 t) t :: [(a, b)]) sZip' ::- forall a b (t :: [a]) (t :: [b]).- Sing t -> Sing t -> Sing (Apply (Apply Zip'Sym0 t) t :: [(a, b)])+ forall a b (t :: [a]) (t :: [b]). Sing t+ -> Sing t -> Sing (Apply (Apply Zip'Sym0 t) t :: [(a, b)]) sBoogie ::- forall a (t :: Maybe a) (t :: Maybe Bool).- Sing t -> Sing t -> Sing (Apply (Apply BoogieSym0 t) t :: Maybe a)+ forall a (t :: Maybe a) (t :: Maybe Bool). Sing t+ -> Sing t+ -> Sing (Apply (Apply BoogieSym0 t) t :: Maybe a) sTrues (sXs :: Sing xs) = (applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=))) sXs)) ((singFun1 @(Apply Lambda_0123456789876543210Sym0 xs)) (\ sX- -> case sX of {+ -> case sX of (_ :: Sing x) -> (applySing ((applySing ((singFun2 @(>>@#@$)) (%>>))) ((applySing ((singFun1 @GuardSym0) sGuard)) sX)))- ((applySing ((singFun1 @ReturnSym0) sReturn)) sX) }))+ ((applySing ((singFun1 @ReturnSym0) sReturn)) sX))) sCartProd (sXs :: Sing xs) (sYs :: Sing ys) = (applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=))) sXs)) ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 xs) ys)) (\ sX- -> case sX of {+ -> case sX of (_ :: Sing x) -> (applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=))) sYs)) ((singFun1 @(Apply (Apply (Apply Lambda_0123456789876543210Sym0 x) xs) ys)) (\ sY- -> case sY of {+ -> case sY of (_ :: Sing y) -> (applySing ((singFun1 @ReturnSym0) sReturn)) ((applySing ((applySing ((singFun2 @Tuple2Sym0) STuple2)) sX))- sY) })) }))+ sY))))) sZip' (sXs :: Sing xs) (sYs :: Sing ys) = (applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=)))@@ -389,43 +390,42 @@ ((applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=))) sXs)) ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 xs) ys)) (\ sX- -> case sX of {+ -> case sX of (_ :: Sing x)- -> (applySing ((singFun1 @ReturnSym0) sReturn)) sX })))))+ -> (applySing ((singFun1 @ReturnSym0) sReturn)) sX))))) ((applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=))) sYs)) ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 xs) ys)) (\ sY- -> case sY of {+ -> case sY of (_ :: Sing y)- -> (applySing ((singFun1 @ReturnSym0) sReturn)) sY }))))))+ -> (applySing ((singFun1 @ReturnSym0) sReturn)) sY)))))) ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 xs) ys)) (\ sArg_0123456789876543210- -> case sArg_0123456789876543210 of {+ -> case sArg_0123456789876543210 of (_ :: Sing arg_0123456789876543210) -> (id @(Sing (Case_0123456789876543210 arg_0123456789876543210 xs ys arg_0123456789876543210)))- (case sArg_0123456789876543210 of {+ (case sArg_0123456789876543210 of STuple2 (sX :: Sing x) (sY :: Sing y) -> (applySing ((singFun1 @ReturnSym0) sReturn)) ((applySing ((applySing ((singFun2 @Tuple2Sym0) STuple2)) sX))- sY) }) }))+ sY)))) sBoogie (sMa :: Sing ma) (sMb :: Sing mb) = (applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=))) sMa)) ((singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 ma) mb)) (\ sA- -> case sA of {+ -> case sA of (_ :: Sing a) -> (applySing ((applySing ((singFun2 @(>>=@#@$)) (%>>=))) sMb)) ((singFun1 @(Apply (Apply (Apply Lambda_0123456789876543210Sym0 a) ma) mb)) (\ sB- -> case sB of {+ -> case sB of (_ :: Sing b) -> (applySing ((applySing ((singFun2 @(>>@#@$)) (%>>))) ((applySing ((singFun1 @GuardSym0) sGuard)) sB)))- ((applySing ((singFun1 @ReturnSym0) sReturn))- sA) })) }))+ ((applySing ((singFun1 @ReturnSym0) sReturn)) sA))))) instance SingI (TruesSym0 :: (~>) [Bool] [Bool]) where sing = (singFun1 @TruesSym0) sTrues instance SingI (CartProdSym0 :: (~>) [a] ((~>) [b] [(a, b)])) where@@ -433,13 +433,23 @@ instance SingI d => SingI (CartProdSym1 (d :: [a]) :: (~>) [b] [(a, b)]) where sing = (singFun1 @(CartProdSym1 (d :: [a]))) (sCartProd (sing @d))+ instance SingI1 (CartProdSym1 :: [a] -> (~>) [b] [(a, b)]) where+ liftSing (s :: Sing (d :: [a]))+ = (singFun1 @(CartProdSym1 (d :: [a]))) (sCartProd s) instance SingI (Zip'Sym0 :: (~>) [a] ((~>) [b] [(a, b)])) where sing = (singFun2 @Zip'Sym0) sZip' instance SingI d => SingI (Zip'Sym1 (d :: [a]) :: (~>) [b] [(a, b)]) where sing = (singFun1 @(Zip'Sym1 (d :: [a]))) (sZip' (sing @d))+ instance SingI1 (Zip'Sym1 :: [a] -> (~>) [b] [(a, b)]) where+ liftSing (s :: Sing (d :: [a]))+ = (singFun1 @(Zip'Sym1 (d :: [a]))) (sZip' s) instance SingI (BoogieSym0 :: (~>) (Maybe a) ((~>) (Maybe Bool) (Maybe a))) where sing = (singFun2 @BoogieSym0) sBoogie instance SingI d => SingI (BoogieSym1 (d :: Maybe a) :: (~>) (Maybe Bool) (Maybe a)) where sing = (singFun1 @(BoogieSym1 (d :: Maybe a))) (sBoogie (sing @d))+ instance SingI1 (BoogieSym1 :: Maybe a+ -> (~>) (Maybe Bool) (Maybe a)) where+ liftSing (s :: Sing (d :: Maybe a))+ = (singFun1 @(BoogieSym1 (d :: Maybe a))) (sBoogie s)
tests/compile-and-dump/Singletons/T187.golden view
@@ -65,26 +65,24 @@ type instance Sing @Empty = SEmpty instance SingKind Empty where type Demote Empty = Empty- fromSing x = case x of- toSing x = SomeSing (case x of)+ fromSing x = case x of {}+ toSing x = SomeSing (case x of {}) instance SEq Empty where (%==) ::- forall (t1 :: Empty) (t2 :: Empty).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun Empty ((~>) Empty Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Empty) (t2 :: Empty). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun Empty ((~>) Empty Bool)+ -> GHC.Types.Type) t1) t2) (%==) _ _ = STrue instance SOrd Empty where sCompare ::- forall (t1 :: Empty) (t2 :: Empty).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun Empty ((~>) Empty Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: Empty) (t2 :: Empty). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun Empty ((~>) Empty Ordering)+ -> GHC.Types.Type) t1) t2) sCompare _ _ = SEQ instance SDecide Empty where- (%~) x _ = Proved (case x of)+ (%~) x _ = Proved (case x of {}) instance Data.Type.Equality.TestEquality (SEmpty :: Empty -> GHC.Types.Type) where Data.Type.Equality.testEquality
tests/compile-and-dump/Singletons/T190.golden view
@@ -65,11 +65,11 @@ type family Case_0123456789876543210 n t where Case_0123456789876543210 n 'True = TSym0 Case_0123456789876543210 n 'False = Apply ErrorSym0 "toEnum: bad argument"- type ToEnum_0123456789876543210 :: GHC.Types.Nat -> T- type family ToEnum_0123456789876543210 (a :: GHC.Types.Nat) :: T where+ type ToEnum_0123456789876543210 :: GHC.Num.Natural.Natural -> T+ type family ToEnum_0123456789876543210 (a :: GHC.Num.Natural.Natural) :: T where ToEnum_0123456789876543210 n = Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0))- type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat T- data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Types.Nat T+ type ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural T+ data ToEnum_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural T where ToEnum_0123456789876543210Sym0KindInference :: SameKind (Apply ToEnum_0123456789876543210Sym0 arg) (ToEnum_0123456789876543210Sym1 arg) => ToEnum_0123456789876543210Sym0 a0123456789876543210@@ -77,14 +77,14 @@ instance SuppressUnusedWarnings ToEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ToEnum_0123456789876543210Sym0KindInference) ())- type ToEnum_0123456789876543210Sym1 :: GHC.Types.Nat -> T- type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: T where+ type ToEnum_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> T+ type family ToEnum_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: T where ToEnum_0123456789876543210Sym1 a0123456789876543210 = ToEnum_0123456789876543210 a0123456789876543210- type FromEnum_0123456789876543210 :: T -> GHC.Types.Nat- type family FromEnum_0123456789876543210 (a :: T) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210 :: T -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210 (a :: T) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210 T = FromInteger 0- type FromEnum_0123456789876543210Sym0 :: (~>) T GHC.Types.Nat- data FromEnum_0123456789876543210Sym0 :: (~>) T GHC.Types.Nat+ type FromEnum_0123456789876543210Sym0 :: (~>) T GHC.Num.Natural.Natural+ data FromEnum_0123456789876543210Sym0 :: (~>) T GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym0KindInference :: SameKind (Apply FromEnum_0123456789876543210Sym0 arg) (FromEnum_0123456789876543210Sym1 arg) => FromEnum_0123456789876543210Sym0 a0123456789876543210@@ -92,8 +92,9 @@ instance SuppressUnusedWarnings FromEnum_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) FromEnum_0123456789876543210Sym0KindInference) ())- type FromEnum_0123456789876543210Sym1 :: T -> GHC.Types.Nat- type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: T) :: GHC.Types.Nat where+ type FromEnum_0123456789876543210Sym1 :: T+ -> GHC.Num.Natural.Natural+ type family FromEnum_0123456789876543210Sym1 (a0123456789876543210 :: T) :: GHC.Num.Natural.Natural where FromEnum_0123456789876543210Sym1 a0123456789876543210 = FromEnum_0123456789876543210 a0123456789876543210 instance PEnum T where type ToEnum a = Apply ToEnum_0123456789876543210Sym0 a@@ -113,12 +114,12 @@ instance PBounded T where type MinBound = MinBound_0123456789876543210Sym0 type MaxBound = MaxBound_0123456789876543210Sym0- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> T -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: T) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: T) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210 _ T a_0123456789876543210 = Apply (Apply ShowStringSym0 "T") a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -126,9 +127,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -136,9 +137,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> T -> (~>) GHC.Types.Symbol GHC.Types.Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: T) :: (~>) GHC.Types.Symbol GHC.Types.Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: T) :: (~>) GHC.Types.Symbol GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -146,9 +147,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> T -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: T) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: T) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow T where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -160,19 +161,17 @@ toSing T = SomeSing ST instance SEq T where (%==) ::- forall (t1 :: T) (t2 :: T).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun T ((~>) T Bool)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: T) (t2 :: T). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun T ((~>) T Bool)+ -> GHC.Types.Type) t1) t2) (%==) ST ST = STrue instance SOrd T where sCompare ::- forall (t1 :: T) (t2 :: T).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun T ((~>) T Ordering)- -> GHC.Types.Type) t1) t2)+ forall (t1 :: T) (t2 :: T). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun T ((~>) T Ordering)+ -> GHC.Types.Type) t1) t2) sCompare ST ST = (applySing ((applySing@@ -182,15 +181,13 @@ SNil instance SEnum T where sToEnum ::- forall (t :: GHC.Types.Nat).- Sing t- -> Sing (Apply (Data.Singletons.Base.Enum.ToEnumSym0 :: TyFun GHC.Types.Nat T- -> GHC.Types.Type) t)+ forall (t :: GHC.Num.Natural.Natural). Sing t+ -> Sing (Apply (Data.Singletons.Base.Enum.ToEnumSym0 :: TyFun GHC.Num.Natural.Natural T+ -> GHC.Types.Type) t) sFromEnum ::- forall (t :: T).- Sing t- -> Sing (Apply (Data.Singletons.Base.Enum.FromEnumSym0 :: TyFun T GHC.Types.Nat- -> GHC.Types.Type) t)+ forall (t :: T). Sing t+ -> Sing (Apply (Data.Singletons.Base.Enum.FromEnumSym0 :: TyFun T GHC.Num.Natural.Natural+ -> GHC.Types.Type) t) sToEnum (sN :: Sing n) = (id @(Sing (Case_0123456789876543210 n (Apply (Apply (==@#@$) n) (FromInteger 0)))))@@ -208,12 +205,13 @@ sMaxBound = ST instance SShow T where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: T) (t3 :: GHC.Types.Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol))- -> GHC.Types.Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: T)+ (t3 :: GHC.Types.Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) T ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ -> GHC.Types.Type) t1) t2) t3) sShowsPrec _ ST
tests/compile-and-dump/Singletons/T197.golden view
@@ -35,11 +35,14 @@ ($$:) _ _ = FalseSym0 infixl 5 %$$: (%$$:) ::- forall (t :: Bool) (t :: Bool).- Sing t -> Sing t -> Sing (Apply (Apply ($$:@#@$) t) t :: Bool)+ forall (t :: Bool) (t :: Bool). Sing t+ -> Sing t -> Sing (Apply (Apply ($$:@#@$) t) t :: Bool) (%$$:) _ _ = SFalse instance SingI (($$:@#@$) :: (~>) Bool ((~>) Bool Bool)) where sing = (singFun2 @($$:@#@$)) (%$$:) instance SingI d => SingI (($$:@#@$$) (d :: Bool) :: (~>) Bool Bool) where sing = (singFun1 @(($$:@#@$$) (d :: Bool))) ((%$$:) (sing @d))+ instance SingI1 (($$:@#@$$) :: Bool -> (~>) Bool Bool) where+ liftSing (s :: Sing (d :: Bool))+ = (singFun1 @(($$:@#@$$) (d :: Bool))) ((%$$:) s)
tests/compile-and-dump/Singletons/T197b.golden view
@@ -60,8 +60,8 @@ type Demote ((:*:) a b) = (:*:) (Demote a) (Demote b) fromSing ((:%*:) b b) = ((:*:) (fromSing b)) (fromSing b) toSing ((:*:) (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%*:) c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%*:) c) c) data SPair :: forall a b. Pair a b -> GHC.Types.Type where SMkPair :: forall a b (n :: a) (n :: b).@@ -71,21 +71,35 @@ type Demote (Pair a b) = Pair (Demote a) (Demote b) fromSing (SMkPair b b) = (MkPair (fromSing b)) (fromSing b) toSing (MkPair (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkPair c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkPair c) c) instance (SingI n, SingI n) => SingI ((:*:) (n :: a) (n :: b)) where sing = ((:%*:) sing) sing+ instance SingI n => SingI1 ((:*:) (n :: a)) where+ liftSing = (:%*:) sing+ instance SingI2 (:*:) where+ liftSing2 = (:%*:) instance SingI ((:*:@#@$) :: (~>) a ((~>) b ((:*:) a b))) where sing = (singFun2 @(:*:@#@$)) (:%*:) instance SingI d => SingI ((:*:@#@$$) (d :: a) :: (~>) b ((:*:) a b)) where sing = (singFun1 @((:*:@#@$$) (d :: a))) ((:%*:) (sing @d))+ instance SingI1 ((:*:@#@$$) :: a -> (~>) b ((:*:) a b)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((:*:@#@$$) (d :: a))) ((:%*:) s) instance (SingI n, SingI n) => SingI (MkPair (n :: a) (n :: b)) where sing = (SMkPair sing) sing+ instance SingI n => SingI1 (MkPair (n :: a)) where+ liftSing = SMkPair sing+ instance SingI2 MkPair where+ liftSing2 = SMkPair instance SingI (MkPairSym0 :: (~>) a ((~>) b (Pair a b))) where sing = (singFun2 @MkPairSym0) SMkPair instance SingI d => SingI (MkPairSym1 (d :: a) :: (~>) b (Pair a b)) where sing = (singFun1 @(MkPairSym1 (d :: a))) (SMkPair (sing @d))+ instance SingI1 (MkPairSym1 :: a -> (~>) b (Pair a b)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(MkPairSym1 (d :: a))) (SMkPair s)
tests/compile-and-dump/Singletons/T200.golden view
@@ -112,13 +112,13 @@ type family ($$:) (a :: ErrorMessage) (a :: ErrorMessage) :: ErrorMessage where ($$:) x y = Apply (Apply (:$$:@#@$) x) y (%<>:) ::- forall (t :: ErrorMessage) (t :: ErrorMessage).- Sing t- -> Sing t -> Sing (Apply (Apply (<>:@#@$) t) t :: ErrorMessage)+ forall (t :: ErrorMessage) (t :: ErrorMessage). Sing t+ -> Sing t+ -> Sing (Apply (Apply (<>:@#@$) t) t :: ErrorMessage) (%$$:) ::- forall (t :: ErrorMessage) (t :: ErrorMessage).- Sing t- -> Sing t -> Sing (Apply (Apply ($$:@#@$) t) t :: ErrorMessage)+ forall (t :: ErrorMessage) (t :: ErrorMessage). Sing t+ -> Sing t+ -> Sing (Apply (Apply ($$:@#@$) t) t :: ErrorMessage) (%<>:) (sX :: Sing x) (sY :: Sing y) = (applySing ((applySing ((singFun2 @(:<>:@#@$)) (:%<>:))) sX)) sY (%$$:) (sX :: Sing x) (sY :: Sing y)@@ -129,12 +129,20 @@ SingI ((<>:@#@$$) (d :: ErrorMessage) :: (~>) ErrorMessage ErrorMessage) where sing = (singFun1 @((<>:@#@$$) (d :: ErrorMessage))) ((%<>:) (sing @d))+ instance SingI1 ((<>:@#@$$) :: ErrorMessage+ -> (~>) ErrorMessage ErrorMessage) where+ liftSing (s :: Sing (d :: ErrorMessage))+ = (singFun1 @((<>:@#@$$) (d :: ErrorMessage))) ((%<>:) s) instance SingI (($$:@#@$) :: (~>) ErrorMessage ((~>) ErrorMessage ErrorMessage)) where sing = (singFun2 @($$:@#@$)) (%$$:) instance SingI d => SingI (($$:@#@$$) (d :: ErrorMessage) :: (~>) ErrorMessage ErrorMessage) where sing = (singFun1 @(($$:@#@$$) (d :: ErrorMessage))) ((%$$:) (sing @d))+ instance SingI1 (($$:@#@$$) :: ErrorMessage+ -> (~>) ErrorMessage ErrorMessage) where+ liftSing (s :: Sing (d :: ErrorMessage))+ = (singFun1 @(($$:@#@$$) (d :: ErrorMessage))) ((%$$:) s) data SErrorMessage :: ErrorMessage -> GHC.Types.Type where (:%$$:) :: forall (n :: ErrorMessage) (n :: ErrorMessage).@@ -154,37 +162,55 @@ = case ((,) (toSing b :: SomeSing ErrorMessage)) (toSing b :: SomeSing ErrorMessage)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%$$:) c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%$$:) c) c) toSing ((:<>:) (b :: Demote ErrorMessage) (b :: Demote ErrorMessage)) = case ((,) (toSing b :: SomeSing ErrorMessage)) (toSing b :: SomeSing ErrorMessage)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%<>:) c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:%<>:) c) c) toSing (EM (b :: Demote [Bool]))- = case toSing b :: SomeSing [Bool] of {- SomeSing c -> SomeSing (SEM c) }+ = case toSing b :: SomeSing [Bool] of+ SomeSing c -> SomeSing (SEM c) instance (SingI n, SingI n) => SingI ((:$$:) (n :: ErrorMessage) (n :: ErrorMessage)) where sing = ((:%$$:) sing) sing+ instance SingI n => SingI1 ((:$$:) (n :: ErrorMessage)) where+ liftSing = (:%$$:) sing+ instance SingI2 (:$$:) where+ liftSing2 = (:%$$:) instance SingI ((:$$:@#@$) :: (~>) ErrorMessage ((~>) ErrorMessage ErrorMessage)) where sing = (singFun2 @(:$$:@#@$)) (:%$$:) instance SingI d => SingI ((:$$:@#@$$) (d :: ErrorMessage) :: (~>) ErrorMessage ErrorMessage) where sing = (singFun1 @((:$$:@#@$$) (d :: ErrorMessage))) ((:%$$:) (sing @d))+ instance SingI1 ((:$$:@#@$$) :: ErrorMessage+ -> (~>) ErrorMessage ErrorMessage) where+ liftSing (s :: Sing (d :: ErrorMessage))+ = (singFun1 @((:$$:@#@$$) (d :: ErrorMessage))) ((:%$$:) s) instance (SingI n, SingI n) => SingI ((:<>:) (n :: ErrorMessage) (n :: ErrorMessage)) where sing = ((:%<>:) sing) sing+ instance SingI n => SingI1 ((:<>:) (n :: ErrorMessage)) where+ liftSing = (:%<>:) sing+ instance SingI2 (:<>:) where+ liftSing2 = (:%<>:) instance SingI ((:<>:@#@$) :: (~>) ErrorMessage ((~>) ErrorMessage ErrorMessage)) where sing = (singFun2 @(:<>:@#@$)) (:%<>:) instance SingI d => SingI ((:<>:@#@$$) (d :: ErrorMessage) :: (~>) ErrorMessage ErrorMessage) where sing = (singFun1 @((:<>:@#@$$) (d :: ErrorMessage))) ((:%<>:) (sing @d))+ instance SingI1 ((:<>:@#@$$) :: ErrorMessage+ -> (~>) ErrorMessage ErrorMessage) where+ liftSing (s :: Sing (d :: ErrorMessage))+ = (singFun1 @((:<>:@#@$$) (d :: ErrorMessage))) ((:%<>:) s) instance SingI n => SingI (EM (n :: [Bool])) where sing = SEM sing+ instance SingI1 EM where+ liftSing = SEM instance SingI (EMSym0 :: (~>) [Bool] ErrorMessage) where sing = (singFun1 @EMSym0) SEM
tests/compile-and-dump/Singletons/T204.golden view
@@ -62,8 +62,8 @@ type Demote (Ratio1 a) = Ratio1 (Demote a) fromSing ((:^%) b b) = ((:%) (fromSing b)) (fromSing b) toSing ((:%) (b :: Demote a) (b :: Demote a))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:^%) c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:^%) c) c) data SRatio2 :: forall a. Ratio2 a -> GHC.Types.Type where (:^%%) :: forall a (n :: a) (n :: a).@@ -73,20 +73,34 @@ type Demote (Ratio2 a) = Ratio2 (Demote a) fromSing ((:^%%) b b) = ((:%%) (fromSing b)) (fromSing b) toSing ((:%%) (b :: Demote a) (b :: Demote a))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing (((:^%%) c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing a) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing (((:^%%) c) c) instance (SingI n, SingI n) => SingI ((:%) (n :: a) (n :: a)) where sing = ((:^%) sing) sing+ instance SingI n => SingI1 ((:%) (n :: a)) where+ liftSing = (:^%) sing+ instance SingI2 (:%) where+ liftSing2 = (:^%) instance SingI ((:%@#@$) :: (~>) a ((~>) a (Ratio1 a))) where sing = (singFun2 @(:%@#@$)) (:^%) instance SingI d => SingI ((:%@#@$$) (d :: a) :: (~>) a (Ratio1 a)) where sing = (singFun1 @((:%@#@$$) (d :: a))) ((:^%) (sing @d))+ instance SingI1 ((:%@#@$$) :: a -> (~>) a (Ratio1 a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((:%@#@$$) (d :: a))) ((:^%) s) instance (SingI n, SingI n) => SingI ((:%%) (n :: a) (n :: a)) where sing = ((:^%%) sing) sing+ instance SingI n => SingI1 ((:%%) (n :: a)) where+ liftSing = (:^%%) sing+ instance SingI2 (:%%) where+ liftSing2 = (:^%%) instance SingI ((:%%@#@$) :: (~>) a ((~>) a (Ratio2 a))) where sing = (singFun2 @(:%%@#@$)) (:^%%) instance SingI d => SingI ((:%%@#@$$) (d :: a) :: (~>) a (Ratio2 a)) where sing = (singFun1 @((:%%@#@$$) (d :: a))) ((:^%%) (sing @d))+ instance SingI1 ((:%%@#@$$) :: a -> (~>) a (Ratio2 a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((:%%@#@$$) (d :: a))) ((:^%%) s)
tests/compile-and-dump/Singletons/T209.golden view
@@ -54,20 +54,29 @@ instance PC Bool Hm instance PC a (Maybe a) sM ::- forall a b (t :: a) (t :: b) (t :: Bool).- Sing t- -> Sing t- -> Sing t -> Sing (Apply (Apply (Apply MSym0 t) t) t :: Bool)+ forall a b (t :: a) (t :: b) (t :: Bool). Sing t+ -> Sing t+ -> Sing t+ -> Sing (Apply (Apply (Apply MSym0 t) t) t :: Bool) sM _ _ (sX :: Sing x) = sX instance SingI (MSym0 :: (~>) a ((~>) b ((~>) Bool Bool))) where sing = (singFun3 @MSym0) sM instance SingI d => SingI (MSym1 (d :: a) :: (~>) b ((~>) Bool Bool)) where sing = (singFun2 @(MSym1 (d :: a))) (sM (sing @d))+ instance SingI1 (MSym1 :: a -> (~>) b ((~>) Bool Bool)) where+ liftSing (s :: Sing (d :: a)) = (singFun2 @(MSym1 (d :: a))) (sM s) instance (SingI d, SingI d) => SingI (MSym2 (d :: a) (d :: b) :: (~>) Bool Bool) where sing = (singFun1 @(MSym2 (d :: a) (d :: b))) ((sM (sing @d)) (sing @d))+ instance SingI d =>+ SingI1 (MSym2 (d :: a) :: b -> (~>) Bool Bool) where+ liftSing (s :: Sing (d :: b))+ = (singFun1 @(MSym2 (d :: a) (d :: b))) ((sM (sing @d)) s)+ instance SingI2 (MSym2 :: a -> b -> (~>) Bool Bool) where+ liftSing2 (s :: Sing (d :: a)) (s :: Sing (d :: b))+ = (singFun1 @(MSym2 (d :: a) (d :: b))) ((sM s) s) data SHm :: Hm -> GHC.Types.Type where SHm :: SHm (Hm :: Hm) type instance Sing @Hm = SHm instance SingKind Hm where
tests/compile-and-dump/Singletons/T216.golden view
@@ -11,12 +11,12 @@ data MyProxySym1 (k0123456789876543210 :: Type) :: (~>) k0123456789876543210 Type where MyProxySym1KindInference :: SameKind (Apply (MyProxySym1 k0123456789876543210) arg) (MyProxySym2 k0123456789876543210 arg) =>- MyProxySym1 k0123456789876543210 e- type instance Apply (MyProxySym1 k0123456789876543210) e = MyProxy k0123456789876543210 e+ MyProxySym1 k0123456789876543210 e0123456789876543210+ type instance Apply (MyProxySym1 k0123456789876543210) e0123456789876543210 = MyProxy k0123456789876543210 e0123456789876543210 instance SuppressUnusedWarnings (MyProxySym1 k0123456789876543210) where suppressUnusedWarnings = snd (((,) MyProxySym1KindInference) ())- type family MyProxySym2 (k0123456789876543210 :: Type) (e :: k0123456789876543210) :: Type where- MyProxySym2 k0123456789876543210 e = MyProxy k0123456789876543210 e+ type family MyProxySym2 (k0123456789876543210 :: Type) (e0123456789876543210 :: k0123456789876543210) :: Type where+ MyProxySym2 k0123456789876543210 e0123456789876543210 = MyProxy k0123456789876543210 e0123456789876543210 data SymmetrySym0 :: (~>) t0123456789876543210 ((~>) t0123456789876543210 ((~>) ((:~:) a0123456789876543210 y0123456789876543210) Type)) where SymmetrySym0KindInference :: SameKind (Apply SymmetrySym0 arg) (SymmetrySym1 arg) =>@@ -34,9 +34,9 @@ data SymmetrySym2 (a0123456789876543210 :: t0123456789876543210) (y0123456789876543210 :: t0123456789876543210) :: (~>) ((:~:) a0123456789876543210 y0123456789876543210) Type where SymmetrySym2KindInference :: SameKind (Apply (SymmetrySym2 a0123456789876543210 y0123456789876543210) arg) (SymmetrySym3 a0123456789876543210 y0123456789876543210 arg) =>- SymmetrySym2 a0123456789876543210 y0123456789876543210 e- type instance Apply (SymmetrySym2 a0123456789876543210 y0123456789876543210) e = Symmetry a0123456789876543210 y0123456789876543210 e+ SymmetrySym2 a0123456789876543210 y0123456789876543210 e0123456789876543210+ type instance Apply (SymmetrySym2 a0123456789876543210 y0123456789876543210) e0123456789876543210 = Symmetry a0123456789876543210 y0123456789876543210 e0123456789876543210 instance SuppressUnusedWarnings (SymmetrySym2 a0123456789876543210 y0123456789876543210) where suppressUnusedWarnings = snd (((,) SymmetrySym2KindInference) ())- type family SymmetrySym3 (a0123456789876543210 :: t0123456789876543210) (y0123456789876543210 :: t0123456789876543210) (e :: (:~:) a0123456789876543210 y0123456789876543210) :: Type where- SymmetrySym3 a0123456789876543210 y0123456789876543210 e = Symmetry a0123456789876543210 y0123456789876543210 e+ type family SymmetrySym3 (a0123456789876543210 :: t0123456789876543210) (y0123456789876543210 :: t0123456789876543210) (e0123456789876543210 :: (:~:) a0123456789876543210 y0123456789876543210) :: Type where+ SymmetrySym3 a0123456789876543210 y0123456789876543210 e0123456789876543210 = Symmetry a0123456789876543210 y0123456789876543210 e0123456789876543210
tests/compile-and-dump/Singletons/T249.golden view
@@ -49,8 +49,7 @@ type Demote (Foo1 a) = Foo1 (Demote a) fromSing (SMkFoo1 b) = MkFoo1 (fromSing b) toSing (MkFoo1 (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SMkFoo1 c) }+ = case toSing b :: SomeSing a of SomeSing c -> SomeSing (SMkFoo1 c) data SFoo2 :: forall a. Foo2 a -> Type where SMkFoo2 :: forall x (n :: x).@@ -60,8 +59,7 @@ type Demote (Foo2 a) = Foo2 (Demote a) fromSing (SMkFoo2 b) = MkFoo2 (fromSing b) toSing (MkFoo2 (b :: Demote x))- = case toSing b :: SomeSing x of {- SomeSing c -> SomeSing (SMkFoo2 c) }+ = case toSing b :: SomeSing x of SomeSing c -> SomeSing (SMkFoo2 c) data SFoo3 :: forall a. Foo3 a -> Type where SMkFoo3 :: forall x (n :: x).@@ -71,17 +69,22 @@ type Demote (Foo3 a) = Foo3 (Demote a) fromSing (SMkFoo3 b) = MkFoo3 (fromSing b) toSing (MkFoo3 (b :: Demote x))- = case toSing b :: SomeSing x of {- SomeSing c -> SomeSing (SMkFoo3 c) }+ = case toSing b :: SomeSing x of SomeSing c -> SomeSing (SMkFoo3 c) instance SingI n => SingI (MkFoo1 (n :: a)) where sing = SMkFoo1 sing+ instance SingI1 MkFoo1 where+ liftSing = SMkFoo1 instance SingI (MkFoo1Sym0 :: (~>) a (Foo1 a)) where sing = (singFun1 @MkFoo1Sym0) SMkFoo1 instance SingI n => SingI (MkFoo2 (n :: x)) where sing = SMkFoo2 sing+ instance SingI1 MkFoo2 where+ liftSing = SMkFoo2 instance SingI (MkFoo2Sym0 :: (~>) x (Foo2 x)) where sing = (singFun1 @MkFoo2Sym0) SMkFoo2 instance SingI n => SingI (MkFoo3 (n :: x)) where sing = SMkFoo3 sing+ instance SingI1 MkFoo3 where+ liftSing = SMkFoo3 instance SingI (MkFoo3Sym0 :: (~>) x (Foo3 x)) where sing = (singFun1 @MkFoo3Sym0) SMkFoo3
tests/compile-and-dump/Singletons/T271.golden view
@@ -13,8 +13,8 @@ data Identity :: Type -> Type where Identity :: a -> Identity a deriving (Eq, Ord)- type ConstantSym0 :: forall (a :: Type) (b :: Type).- (~>) a (Constant (a :: Type) (b :: Type))+ type ConstantSym0 :: forall (a :: Type)+ (b :: Type). (~>) a (Constant (a :: Type) (b :: Type)) data ConstantSym0 :: (~>) a (Constant (a :: Type) (b :: Type)) where ConstantSym0KindInference :: SameKind (Apply ConstantSym0 arg) (ConstantSym1 arg) =>@@ -22,8 +22,8 @@ type instance Apply ConstantSym0 a0123456789876543210 = Constant a0123456789876543210 instance SuppressUnusedWarnings ConstantSym0 where suppressUnusedWarnings = snd (((,) ConstantSym0KindInference) ())- type ConstantSym1 :: forall (a :: Type) (b :: Type).- a -> Constant (a :: Type) (b :: Type)+ type ConstantSym1 :: forall (a :: Type) (b :: Type). a+ -> Constant (a :: Type) (b :: Type) type family ConstantSym1 (a0123456789876543210 :: a) :: Constant (a :: Type) (b :: Type) where ConstantSym1 a0123456789876543210 = Constant a0123456789876543210 type IdentitySym0 :: (~>) a (Identity a)@@ -164,8 +164,8 @@ type Demote (Constant a b) = Constant (Demote a) (Demote b) fromSing (SConstant b) = Constant (fromSing b) toSing (Constant (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SConstant c) }+ = case toSing b :: SomeSing a of+ SomeSing c -> SomeSing (SConstant c) data SIdentity :: forall (a :: Type). Identity a -> Type where SIdentity :: forall a (n :: a).@@ -175,15 +175,14 @@ type Demote (Identity a) = Identity (Demote a) fromSing (SIdentity b) = Identity (fromSing b) toSing (Identity (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SIdentity c) }+ = case toSing b :: SomeSing a of+ SomeSing c -> SomeSing (SIdentity c) instance SEq a => SEq (Constant a b) where (%==) ::- forall (t1 :: Constant a b) (t2 :: Constant a b).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun (Constant a b) ((~>) (Constant a b) Bool)- -> Type) t1) t2)+ forall (t1 :: Constant a b) (t2 :: Constant a b). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun (Constant a b) ((~>) (Constant a b) Bool)+ -> Type) t1) t2) (%==) (SConstant (sA_0123456789876543210 :: Sing a_0123456789876543210)) (SConstant (sB_0123456789876543210 :: Sing b_0123456789876543210))@@ -192,11 +191,10 @@ sB_0123456789876543210 instance SOrd a => SOrd (Constant a b) where sCompare ::- forall (t1 :: Constant a b) (t2 :: Constant a b).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun (Constant a b) ((~>) (Constant a b) Ordering)- -> Type) t1) t2)+ forall (t1 :: Constant a b) (t2 :: Constant a b). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun (Constant a b) ((~>) (Constant a b) Ordering)+ -> Type) t1) t2) sCompare (SConstant (sA_0123456789876543210 :: Sing a_0123456789876543210)) (SConstant (sB_0123456789876543210 :: Sing b_0123456789876543210))@@ -214,11 +212,10 @@ SNil) instance SEq a => SEq (Identity a) where (%==) ::- forall (t1 :: Identity a) (t2 :: Identity a).- Sing t1- -> Sing t2- -> Sing (Apply (Apply ((==@#@$) :: TyFun (Identity a) ((~>) (Identity a) Bool)- -> Type) t1) t2)+ forall (t1 :: Identity a) (t2 :: Identity a). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply ((==@#@$) :: TyFun (Identity a) ((~>) (Identity a) Bool)+ -> Type) t1) t2) (%==) (SIdentity (sA_0123456789876543210 :: Sing a_0123456789876543210)) (SIdentity (sB_0123456789876543210 :: Sing b_0123456789876543210))@@ -227,11 +224,10 @@ sB_0123456789876543210 instance SOrd a => SOrd (Identity a) where sCompare ::- forall (t1 :: Identity a) (t2 :: Identity a).- Sing t1- -> Sing t2- -> Sing (Apply (Apply (CompareSym0 :: TyFun (Identity a) ((~>) (Identity a) Ordering)- -> Type) t1) t2)+ forall (t1 :: Identity a) (t2 :: Identity a). Sing t1+ -> Sing t2+ -> Sing (Apply (Apply (CompareSym0 :: TyFun (Identity a) ((~>) (Identity a) Ordering)+ -> Type) t1) t2) sCompare (SIdentity (sA_0123456789876543210 :: Sing a_0123456789876543210)) (SIdentity (sB_0123456789876543210 :: Sing b_0123456789876543210))@@ -252,7 +248,7 @@ = case ((%~) a) b of Proved Refl -> Proved Refl Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance SDecide a => Data.Type.Equality.TestEquality (SConstant :: Constant a b -> Type) where@@ -268,7 +264,7 @@ = case ((%~) a) b of Proved Refl -> Proved Refl Disproved contra- -> Disproved (\ refl -> case refl of { Refl -> contra Refl })+ -> Disproved (\ refl -> case refl of Refl -> contra Refl) instance SDecide a => Data.Type.Equality.TestEquality (SIdentity :: Identity a -> Type) where@@ -281,9 +277,13 @@ = Data.Singletons.Decide.decideCoercion instance SingI n => SingI (Constant (n :: a)) where sing = SConstant sing+ instance SingI1 Constant where+ liftSing = SConstant instance SingI (ConstantSym0 :: (~>) a (Constant (a :: Type) (b :: Type))) where sing = (singFun1 @ConstantSym0) SConstant instance SingI n => SingI (Identity (n :: a)) where sing = SIdentity sing+ instance SingI1 Identity where+ liftSing = SIdentity instance SingI (IdentitySym0 :: (~>) a (Identity a)) where sing = (singFun1 @IdentitySym0) SIdentity
tests/compile-and-dump/Singletons/T287.golden view
@@ -30,7 +30,7 @@ type family (<<>>@#@$$$) (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: a where (<<>>@#@$$$) a0123456789876543210 a0123456789876543210 = (<<>>) a0123456789876543210 a0123456789876543210 class PS a where- type (<<>>) (arg :: a) (arg :: a) :: a+ type family (<<>>) (arg :: a) (arg :: a) :: a type family Lambda_0123456789876543210 f g x where Lambda_0123456789876543210 f g x = Apply (Apply (<<>>@#@$) (Apply f x)) (Apply g x) data Lambda_0123456789876543210Sym0 f0123456789876543210@@ -90,22 +90,26 @@ type (<<>>) a a = Apply (Apply TFHelper_0123456789876543210Sym0 a) a class SS a where (%<<>>) ::- forall (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (<<>>@#@$) t) t :: a)+ forall (t :: a) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply (<<>>@#@$) t) t :: a) instance SS b => SS ((~>) a b) where (%<<>>) ::- forall (t :: (~>) a b) (t :: (~>) a b).- Sing t -> Sing t -> Sing (Apply (Apply (<<>>@#@$) t) t :: (~>) a b)+ forall (t :: (~>) a b) (t :: (~>) a b). Sing t+ -> Sing t+ -> Sing (Apply (Apply (<<>>@#@$) t) t :: (~>) a b) (%<<>>) (sF :: Sing f) (sG :: Sing g) = (singFun1 @(Apply (Apply Lambda_0123456789876543210Sym0 f) g)) (\ sX- -> case sX of {+ -> case sX of (_ :: Sing x) -> (applySing ((applySing ((singFun2 @(<<>>@#@$)) (%<<>>))) ((applySing sF) sX)))- ((applySing sG) sX) })+ ((applySing sG) sX)) instance SS a => SingI ((<<>>@#@$) :: (~>) a ((~>) a a)) where sing = (singFun2 @(<<>>@#@$)) (%<<>>) instance (SS a, SingI d) => SingI ((<<>>@#@$$) (d :: a) :: (~>) a a) where sing = (singFun1 @((<<>>@#@$$) (d :: a))) ((%<<>>) (sing @d))+ instance SS a => SingI1 ((<<>>@#@$$) :: a -> (~>) a a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((<<>>@#@$$) (d :: a))) ((%<<>>) s)
tests/compile-and-dump/Singletons/T296.golden view
@@ -48,8 +48,8 @@ type family F (a :: MyProxy a) :: MyProxy a where F MyProxy = Let0123456789876543210XSym0 sF ::- forall a (t :: MyProxy a).- Sing t -> Sing (Apply FSym0 t :: MyProxy a)+ forall a (t :: MyProxy a). Sing t+ -> Sing (Apply FSym0 t :: MyProxy a) sF SMyProxy = let sX :: Sing @_ Let0123456789876543210XSym0
tests/compile-and-dump/Singletons/T312.golden view
@@ -142,27 +142,27 @@ type family Baz_0123456789876543210Sym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: b where Baz_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 = Baz_0123456789876543210 a0123456789876543210 a0123456789876543210 class PFoo a where- type Bar (arg :: a) (arg :: b) :: b- type Baz (arg :: a) (arg :: b) :: b+ type family Bar (arg :: a) (arg :: b) :: b+ type family Baz (arg :: a) (arg :: b) :: b type Bar a a = Apply (Apply Bar_0123456789876543210Sym0 a) a type Baz a a = Apply (Apply Baz_0123456789876543210Sym0 a) a class SFoo a where sBar ::- forall b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply BarSym0 t) t :: b)+ forall b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply BarSym0 t) t :: b) sBaz ::- forall b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply BazSym0 t) t :: b)+ forall b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply BazSym0 t) t :: b) default sBar ::- forall b (t :: a) (t :: b).- ((Apply (Apply BarSym0 t) t :: b)- ~ Apply (Apply Bar_0123456789876543210Sym0 t) t) =>- Sing t -> Sing t -> Sing (Apply (Apply BarSym0 t) t :: b)+ forall b (t :: a) (t :: b). ((Apply (Apply BarSym0 t) t :: b)+ ~ Apply (Apply Bar_0123456789876543210Sym0 t) t) =>+ Sing t+ -> Sing t -> Sing (Apply (Apply BarSym0 t) t :: b) default sBaz ::- forall b (t :: a) (t :: b).- ((Apply (Apply BazSym0 t) t :: b)- ~ Apply (Apply Baz_0123456789876543210Sym0 t) t) =>- Sing t -> Sing t -> Sing (Apply (Apply BazSym0 t) t :: b)+ forall b (t :: a) (t :: b). ((Apply (Apply BazSym0 t) t :: b)+ ~ Apply (Apply Baz_0123456789876543210Sym0 t) t) =>+ Sing t+ -> Sing t -> Sing (Apply (Apply BazSym0 t) t :: b) sBar _ (sX :: Sing x) = sX sBaz (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -171,10 +171,9 @@ ((applySing (let sH ::- forall c (t :: c) (t :: b).- Sing t- -> Sing t- -> Sing (Apply (Apply (Let0123456789876543210HSym2 a_0123456789876543210 a_0123456789876543210) t) t :: b)+ forall c (t :: c) (t :: b). Sing t+ -> Sing t+ -> Sing (Apply (Apply (Let0123456789876543210HSym2 a_0123456789876543210 a_0123456789876543210) t) t :: b) sH _ (sX :: Sing x) = sX in (singFun2@@ -187,8 +186,14 @@ instance (SFoo a, SingI d) => SingI (BarSym1 (d :: a) :: (~>) b b) where sing = (singFun1 @(BarSym1 (d :: a))) (sBar (sing @d))+ instance SFoo a => SingI1 (BarSym1 :: a -> (~>) b b) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(BarSym1 (d :: a))) (sBar s) instance SFoo a => SingI (BazSym0 :: (~>) a ((~>) b b)) where sing = (singFun2 @BazSym0) sBaz instance (SFoo a, SingI d) => SingI (BazSym1 (d :: a) :: (~>) b b) where sing = (singFun1 @(BazSym1 (d :: a))) (sBaz (sing @d))+ instance SFoo a => SingI1 (BazSym1 :: a -> (~>) b b) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(BazSym1 (d :: a))) (sBaz s)
tests/compile-and-dump/Singletons/T313.golden view
@@ -18,7 +18,7 @@ type family PFoo3 a where PFoo3 a = Maybe a class PC (a :: Type) where- type PFoo4 a+ type family PFoo4 a type PFoo4 a = Maybe a instance PC a where type PFoo4 a = Maybe a@@ -80,7 +80,7 @@ type family SFoo3 a where SFoo3 a = Maybe a class SC (a :: Type) where- type SFoo4 a+ type family SFoo4 a type SFoo4 a = Maybe a instance SC a where type SFoo4 a = Maybe a
tests/compile-and-dump/Singletons/T322.golden view
@@ -35,8 +35,8 @@ (!) a_0123456789876543210 a_0123456789876543210 = Apply (Apply (||@#@$) a_0123456789876543210) a_0123456789876543210 infixr 2 %! (%!) ::- forall (t :: Bool) (t :: Bool).- Sing t -> Sing t -> Sing (Apply (Apply (!@#@$) t) t :: Bool)+ forall (t :: Bool) (t :: Bool). Sing t+ -> Sing t -> Sing (Apply (Apply (!@#@$) t) t :: Bool) (%!) (sA_0123456789876543210 :: Sing a_0123456789876543210) (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -48,3 +48,6 @@ instance SingI d => SingI ((!@#@$$) (d :: Bool) :: (~>) Bool Bool) where sing = (singFun1 @((!@#@$$) (d :: Bool))) ((%!) (sing @d))+ instance SingI1 ((!@#@$$) :: Bool -> (~>) Bool Bool) where+ liftSing (s :: Sing (d :: Bool))+ = (singFun1 @((!@#@$$) (d :: Bool))) ((%!) s)
tests/compile-and-dump/Singletons/T326.golden view
@@ -25,7 +25,7 @@ infixl 9 <%>@#@$$$ type PC1 :: GHC.Types.Type -> Constraint class PC1 (a :: GHC.Types.Type) where- type (<%>) (arg :: a) (arg :: a) :: a+ type family (<%>) (arg :: a) (arg :: a) :: a infixl 9 <%> Singletons/T326.hs:0:0:: Splicing declarations genSingletons [''C2]@@ -54,12 +54,12 @@ infixl 9 <%%>@#@$$$ type PC2 :: GHC.Types.Type -> Constraint class PC2 (a :: GHC.Types.Type) where- type (<%%>) (arg :: a) (arg :: a) :: a+ type family (<%%>) (arg :: a) (arg :: a) :: a infixl 9 <%%> class SC2 (a :: GHC.Types.Type) where (%<%%>) ::- forall (t :: a) (t :: a).- Sing t -> Sing t -> Sing (Apply (Apply (<%%>@#@$) t) t :: a)+ forall (t :: a) (t :: a). Sing t+ -> Sing t -> Sing (Apply (Apply (<%%>@#@$) t) t :: a) type SC2 :: GHC.Types.Type -> Constraint infixl 9 %<%%> instance SC2 a => SingI ((<%%>@#@$) :: (~>) a ((~>) a a)) where@@ -67,3 +67,6 @@ instance (SC2 a, SingI d) => SingI ((<%%>@#@$$) (d :: a) :: (~>) a a) where sing = (singFun1 @((<%%>@#@$$) (d :: a))) ((%<%%>) (sing @d))+ instance SC2 a => SingI1 ((<%%>@#@$$) :: a -> (~>) a a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((<%%>@#@$$) (d :: a))) ((%<%%>) s)
tests/compile-and-dump/Singletons/T353.golden view
@@ -36,9 +36,8 @@ type MkProdSym0 :: forall k (f :: k -> Type) (g :: k -> Type)- (p :: k).- (~>) (f p) ((~>) (g p) (Prod (f :: k -> Type) (g :: k- -> Type) (p :: k)))+ (p :: k). (~>) (f p) ((~>) (g p) (Prod (f :: k -> Type) (g :: k+ -> Type) (p :: k))) data MkProdSym0 :: (~>) (f p) ((~>) (g p) (Prod (f :: k -> Type) (g :: k -> Type) (p :: k))) where@@ -50,8 +49,9 @@ type MkProdSym1 :: forall k (f :: k -> Type) (g :: k -> Type)- (p :: k).- f p -> (~>) (g p) (Prod (f :: k -> Type) (g :: k -> Type) (p :: k))+ (p :: k). f p+ -> (~>) (g p) (Prod (f :: k -> Type) (g :: k+ -> Type) (p :: k)) data MkProdSym1 (a0123456789876543210 :: f p) :: (~>) (g p) (Prod (f :: k -> Type) (g :: k -> Type) (p :: k))@@ -64,8 +64,8 @@ type MkProdSym2 :: forall k (f :: k -> Type) (g :: k -> Type)- (p :: k).- f p -> g p -> Prod (f :: k -> Type) (g :: k -> Type) (p :: k)+ (p :: k). f p+ -> g p -> Prod (f :: k -> Type) (g :: k -> Type) (p :: k) type family MkProdSym2 (a0123456789876543210 :: f p) (a0123456789876543210 :: g p) :: Prod (f :: k -> Type) (g :: k -> Type) (p :: k) where@@ -73,8 +73,10 @@ Singletons/T353.hs:0:0:: Splicing declarations genDefunSymbols [''Foo] ======>- type MkFooSym0 :: forall k k (a :: k) (b :: k).- (~>) (Proxy a) ((~>) (Proxy b) (Foo (a :: k) (b :: k)))+ type MkFooSym0 :: forall k+ k+ (a :: k)+ (b :: k). (~>) (Proxy a) ((~>) (Proxy b) (Foo (a :: k) (b :: k))) data MkFooSym0 :: (~>) (Proxy a) ((~>) (Proxy b) (Foo (a :: k) (b :: k))) where MkFooSym0KindInference :: SameKind (Apply MkFooSym0 arg) (MkFooSym1 arg) =>@@ -82,8 +84,8 @@ type instance Apply MkFooSym0 a0123456789876543210 = MkFooSym1 a0123456789876543210 instance SuppressUnusedWarnings MkFooSym0 where suppressUnusedWarnings = snd (((,) MkFooSym0KindInference) ())- type MkFooSym1 :: forall k k (a :: k) (b :: k).- Proxy a -> (~>) (Proxy b) (Foo (a :: k) (b :: k))+ type MkFooSym1 :: forall k k (a :: k) (b :: k). Proxy a+ -> (~>) (Proxy b) (Foo (a :: k) (b :: k)) data MkFooSym1 (a0123456789876543210 :: Proxy a) :: (~>) (Proxy b) (Foo (a :: k) (b :: k)) where MkFooSym1KindInference :: SameKind (Apply (MkFooSym1 a0123456789876543210) arg) (MkFooSym2 a0123456789876543210 arg) =>@@ -91,7 +93,7 @@ type instance Apply (MkFooSym1 a0123456789876543210) a0123456789876543210 = 'MkFoo a0123456789876543210 a0123456789876543210 instance SuppressUnusedWarnings (MkFooSym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) MkFooSym1KindInference) ())- type MkFooSym2 :: forall k k (a :: k) (b :: k).- Proxy a -> Proxy b -> Foo (a :: k) (b :: k)+ type MkFooSym2 :: forall k k (a :: k) (b :: k). Proxy a+ -> Proxy b -> Foo (a :: k) (b :: k) type family MkFooSym2 (a0123456789876543210 :: Proxy a) (a0123456789876543210 :: Proxy b) :: Foo (a :: k) (b :: k) where MkFooSym2 a0123456789876543210 a0123456789876543210 = 'MkFoo a0123456789876543210 a0123456789876543210
tests/compile-and-dump/Singletons/T358.golden view
@@ -29,7 +29,7 @@ type family Method1Sym0 :: f a where Method1Sym0 = Method1 class PC1 (f :: k -> Type) where- type Method1 :: f a+ type family Method1 :: f a type Method2aSym0 :: forall b a. (~>) b a data Method2aSym0 :: (~>) b a where@@ -53,8 +53,8 @@ type family Method2bSym1 (a0123456789876543210 :: b) :: a where Method2bSym1 a0123456789876543210 = Method2b a0123456789876543210 class PC2 a where- type Method2a (arg :: b) :: a- type Method2b (arg :: b) :: a+ type family Method2a (arg :: b) :: a+ type family Method2b (arg :: b) :: a type Method1_0123456789876543210 :: [a] type family Method1_0123456789876543210 :: [a] where Method1_0123456789876543210 = NilSym0
tests/compile-and-dump/Singletons/T367.golden view
@@ -28,10 +28,13 @@ type family Const' (a :: a) (a :: b) :: a where Const' x _ = x sConst' ::- forall a b (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply Const'Sym0 t) t :: a)+ forall a b (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply Const'Sym0 t) t :: a) sConst' (sX :: Sing x) _ = sX instance SingI (Const'Sym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @Const'Sym0) sConst' instance SingI d => SingI (Const'Sym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(Const'Sym1 (d :: a))) (sConst' (sing @d))+ instance SingI1 (Const'Sym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(Const'Sym1 (d :: a))) (sConst' s)
tests/compile-and-dump/Singletons/T371.golden view
@@ -41,13 +41,13 @@ type Y2Sym1 :: forall (a :: Type). X a -> Y (a :: Type) type family Y2Sym1 (a0123456789876543210 :: X a) :: Y (a :: Type) where Y2Sym1 a0123456789876543210 = Y2 a0123456789876543210- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> X a -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: X a) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: X a) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210 _ X1 a_0123456789876543210 = Apply (Apply ShowStringSym0 "X1") a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 (X2 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "X2 ")) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -55,9 +55,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -65,9 +65,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> X a -> (~>) GHC.Types.Symbol GHC.Types.Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: X a) :: (~>) GHC.Types.Symbol GHC.Types.Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: X a) :: (~>) GHC.Types.Symbol GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -75,19 +75,19 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> X a -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: X a) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: X a) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow (X a) where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a- type ShowsPrec_0123456789876543210 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210 :: GHC.Num.Natural.Natural -> Y a -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210 (a :: GHC.Types.Nat) (a :: Y a) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210 (a :: GHC.Num.Natural.Natural) (a :: Y a) (a :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210 _ Y1 a_0123456789876543210 = Apply (Apply ShowStringSym0 "Y1") a_0123456789876543210 ShowsPrec_0123456789876543210 p_0123456789876543210 (Y2 arg_0123456789876543210) a_0123456789876543210 = Apply (Apply (Apply ShowParenSym0 (Apply (Apply (>@#@$) p_0123456789876543210) (FromInteger 10))) (Apply (Apply (.@#@$) (Apply ShowStringSym0 "Y2 ")) (Apply (Apply ShowsPrecSym0 (FromInteger 11)) arg_0123456789876543210))) a_0123456789876543210- type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))- data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Types.Nat ((~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ type ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ data ShowsPrec_0123456789876543210Sym0 :: (~>) GHC.Num.Natural.Natural ((~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)) where ShowsPrec_0123456789876543210Sym0KindInference :: SameKind (Apply ShowsPrec_0123456789876543210Sym0 arg) (ShowsPrec_0123456789876543210Sym1 arg) => ShowsPrec_0123456789876543210Sym0 a0123456789876543210@@ -95,9 +95,9 @@ instance SuppressUnusedWarnings ShowsPrec_0123456789876543210Sym0 where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym0KindInference) ())- type ShowsPrec_0123456789876543210Sym1 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym1 :: GHC.Num.Natural.Natural -> (~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)- data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Types.Nat) :: (~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol)+ data ShowsPrec_0123456789876543210Sym1 (a0123456789876543210 :: GHC.Num.Natural.Natural) :: (~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol) where ShowsPrec_0123456789876543210Sym1KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym1 a0123456789876543210 a0123456789876543210@@ -105,9 +105,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym1 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym1KindInference) ())- type ShowsPrec_0123456789876543210Sym2 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym2 :: GHC.Num.Natural.Natural -> Y a -> (~>) GHC.Types.Symbol GHC.Types.Symbol- data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Y a) :: (~>) GHC.Types.Symbol GHC.Types.Symbol+ data ShowsPrec_0123456789876543210Sym2 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Y a) :: (~>) GHC.Types.Symbol GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym2KindInference :: SameKind (Apply (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) arg) (ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 arg) => ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210 a0123456789876543210@@ -115,9 +115,9 @@ instance SuppressUnusedWarnings (ShowsPrec_0123456789876543210Sym2 a0123456789876543210 a0123456789876543210) where suppressUnusedWarnings = snd (((,) ShowsPrec_0123456789876543210Sym2KindInference) ())- type ShowsPrec_0123456789876543210Sym3 :: GHC.Types.Nat+ type ShowsPrec_0123456789876543210Sym3 :: GHC.Num.Natural.Natural -> Y a -> GHC.Types.Symbol -> GHC.Types.Symbol- type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Types.Nat) (a0123456789876543210 :: Y a) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where+ type family ShowsPrec_0123456789876543210Sym3 (a0123456789876543210 :: GHC.Num.Natural.Natural) (a0123456789876543210 :: Y a) (a0123456789876543210 :: GHC.Types.Symbol) :: GHC.Types.Symbol where ShowsPrec_0123456789876543210Sym3 a0123456789876543210 a0123456789876543210 a0123456789876543210 = ShowsPrec_0123456789876543210 a0123456789876543210 a0123456789876543210 a0123456789876543210 instance PShow (Y a) where type ShowsPrec a a a = Apply (Apply (Apply ShowsPrec_0123456789876543210Sym0 a) a) a@@ -133,8 +133,7 @@ fromSing (SX2 b) = X2 (fromSing b) toSing X1 = SomeSing SX1 toSing (X2 (b :: Demote (Y a)))- = case toSing b :: SomeSing (Y a) of {- SomeSing c -> SomeSing (SX2 c) }+ = case toSing b :: SomeSing (Y a) of SomeSing c -> SomeSing (SX2 c) data SY :: forall (a :: Type). Y a -> Type where SY1 :: forall (a :: Type). SY (Y1 :: Y (a :: Type))@@ -147,16 +146,16 @@ fromSing (SY2 b) = Y2 (fromSing b) toSing Y1 = SomeSing SY1 toSing (Y2 (b :: Demote (X a)))- = case toSing b :: SomeSing (X a) of {- SomeSing c -> SomeSing (SY2 c) }+ = case toSing b :: SomeSing (X a) of SomeSing c -> SomeSing (SY2 c) instance SShow (Y a) => SShow (X a) where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: X a) (t3 :: GHC.Types.Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))- -> Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: X a)+ (t3 :: GHC.Types.Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (X a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ -> Type) t1) t2) t3) sShowsPrec _ SX1@@ -186,12 +185,13 @@ sA_0123456789876543210 instance SShow (X a) => SShow (Y a) where sShowsPrec ::- forall (t1 :: GHC.Types.Nat) (t2 :: Y a) (t3 :: GHC.Types.Symbol).- Sing t1- -> Sing t2- -> Sing t3- -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Types.Nat ((~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))- -> Type) t1) t2) t3)+ forall (t1 :: GHC.Num.Natural.Natural)+ (t2 :: Y a)+ (t3 :: GHC.Types.Symbol). Sing t1+ -> Sing t2+ -> Sing t3+ -> Sing (Apply (Apply (Apply (ShowsPrecSym0 :: TyFun GHC.Num.Natural.Natural ((~>) (Y a) ((~>) GHC.Types.Symbol GHC.Types.Symbol))+ -> Type) t1) t2) t3) sShowsPrec _ SY1@@ -227,11 +227,15 @@ sing = SX1 instance SingI n => SingI (X2 (n :: Y a)) where sing = SX2 sing+ instance SingI1 X2 where+ liftSing = SX2 instance SingI (X2Sym0 :: (~>) (Y a) (X (a :: Type))) where sing = (singFun1 @X2Sym0) SX2 instance SingI Y1 where sing = SY1 instance SingI n => SingI (Y2 (n :: X a)) where sing = SY2 sing+ instance SingI1 Y2 where+ liftSing = SY2 instance SingI (Y2Sym0 :: (~>) (X a) (Y (a :: Type))) where sing = (singFun1 @Y2Sym0) SY2
tests/compile-and-dump/Singletons/T376.golden view
@@ -28,8 +28,8 @@ type family F (a :: (~>) () ()) (a :: ()) :: () where F g a_0123456789876543210 = Apply (g :: (~>) () ()) a_0123456789876543210 sF ::- forall (t :: (~>) () ()) (t :: ()).- Sing t -> Sing t -> Sing (Apply (Apply FSym0 t) t :: ())+ forall (t :: (~>) () ()) (t :: ()). Sing t+ -> Sing t -> Sing (Apply (Apply FSym0 t) t :: ()) sF (sG :: Sing g) (sA_0123456789876543210 :: Sing a_0123456789876543210)@@ -39,3 +39,6 @@ instance SingI d => SingI (FSym1 (d :: (~>) () ()) :: (~>) () ()) where sing = (singFun1 @(FSym1 (d :: (~>) () ()))) (sF (sing @d))+ instance SingI1 (FSym1 :: (~>) () () -> (~>) () ()) where+ liftSing (s :: Sing (d :: (~>) () ()))+ = (singFun1 @(FSym1 (d :: (~>) () ()))) (sF s)
tests/compile-and-dump/Singletons/T378a.golden view
@@ -53,13 +53,16 @@ type family ConstBA (a :: a) (a :: b) :: a where ConstBA x _ = x sConstBA ::- forall b a (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply ConstBASym0 t) t :: a)+ forall b a (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply ConstBASym0 t) t :: a) sConstBA (sX :: Sing x) _ = sX instance SingI (ConstBASym0 :: (~>) a ((~>) b a)) where sing = (singFun2 @ConstBASym0) sConstBA instance SingI d => SingI (ConstBASym1 (d :: a) :: (~>) b a) where sing = (singFun1 @(ConstBASym1 (d :: a))) (sConstBA (sing @d))+ instance SingI1 (ConstBASym1 :: a -> (~>) b a) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(ConstBASym1 (d :: a))) (sConstBA s) data SProxy :: forall k (a :: k). Proxy a -> Type where SProxy1 :: forall a. SProxy (Proxy1 :: Proxy a)
tests/compile-and-dump/Singletons/T378b.golden view
@@ -84,11 +84,11 @@ type PC :: forall b a. a -> b -> Constraint class PC x y sNatMinus ::- forall (t :: Nat) (t :: Nat).- Sing t -> Sing t -> Sing (Apply (Apply NatMinusSym0 t) t :: Nat)+ forall (t :: Nat) (t :: Nat). Sing t+ -> Sing t -> Sing (Apply (Apply NatMinusSym0 t) t :: Nat) sF ::- forall b a (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply FSym0 t) t :: ())+ forall b a (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply FSym0 t) t :: ()) sNatMinus SZero _ = SZero sNatMinus (SSucc (sA :: Sing a)) (SSucc (sB :: Sing b)) = (applySing ((applySing ((singFun2 @NatMinusSym0) sNatMinus)) sA))@@ -109,16 +109,21 @@ instance SingI d => SingI (NatMinusSym1 (d :: Nat) :: (~>) Nat Nat) where sing = (singFun1 @(NatMinusSym1 (d :: Nat))) (sNatMinus (sing @d))+ instance SingI1 (NatMinusSym1 :: Nat -> (~>) Nat Nat) where+ liftSing (s :: Sing (d :: Nat))+ = (singFun1 @(NatMinusSym1 (d :: Nat))) (sNatMinus s) instance SingI (FSym0 :: (~>) a ((~>) b ())) where sing = (singFun2 @FSym0) sF instance SingI d => SingI (FSym1 (d :: a) :: (~>) b ()) where sing = (singFun1 @(FSym1 (d :: a))) (sF (sing @d))+ instance SingI1 (FSym1 :: a -> (~>) b ()) where+ liftSing (s :: Sing (d :: a)) = (singFun1 @(FSym1 (d :: a))) (sF s) type SD :: forall b a (x :: a) (y :: b). D x y -> Type data SD :: forall b a (x :: a) (y :: b). D x y -> Type type instance Sing @(D x y) = SD instance (SingKind x, SingKind y) => SingKind (D x y) where type Demote (D x y) = D (Demote x) (Demote y)- fromSing x = case x of- toSing x = SomeSing (case x of)+ fromSing x = case x of {}+ toSing x = SomeSing (case x of {}) class SC x y type SC :: forall b a. a -> b -> Constraint
tests/compile-and-dump/Singletons/T401.golden view
@@ -1,13 +1,13 @@ -Singletons/T401.hs:0:0: error:- `singletons-th` does not support higher-rank `forall`s-In the type: (forall a_0 . a_0 -> a_0) -> b_1 -> b_1-+Singletons/T401.hs:0:0: error: Q monad failure | 5 | $(singletons [d| | ^^^^^^^^^^^^^^^... -Singletons/T401.hs:0:0: error: Q monad failure+Singletons/T401.hs:0:0: error:+ `singletons-th` does not support higher-rank `forall`s+In the type: (forall a_0 . a_0 -> a_0) -> b_1 -> b_1+ | 5 | $(singletons [d| | ^^^^^^^^^^^^^^^...
tests/compile-and-dump/Singletons/T401b.golden view
@@ -1,13 +1,13 @@ -Singletons/T401b.hs:0:0: error:- `singletons-th` does not support higher-rank `forall`s-In the type: (forall a_0 . a_0) -> T_1-+Singletons/T401b.hs:0:0: error: Q monad failure | 5 | $(singletons [d| | ^^^^^^^^^^^^^^^... -Singletons/T401b.hs:0:0: error: Q monad failure+Singletons/T401b.hs:0:0: error:+ `singletons-th` does not support higher-rank `forall`s+In the type: (forall a_0 . a_0) -> T_1+ | 5 | $(singletons [d| | ^^^^^^^^^^^^^^^...
tests/compile-and-dump/Singletons/T410.golden view
@@ -32,7 +32,7 @@ type family EqualsSym2 (a0123456789876543210 :: a) (a0123456789876543210 :: a) :: Bool where EqualsSym2 a0123456789876543210 a0123456789876543210 = Equals a0123456789876543210 a0123456789876543210 class PEq a where- type Equals (arg :: a) (arg :: a) :: Bool+ type family Equals (arg :: a) (arg :: a) :: Bool type Equals_0123456789876543210 :: () -> () -> Bool type family Equals_0123456789876543210 (a :: ()) (a :: ()) :: Bool where Equals_0123456789876543210 '() '() = TrueSym0
tests/compile-and-dump/Singletons/T412.golden view
@@ -144,7 +144,7 @@ M1Sym2 a0123456789876543210 a0123456789876543210 = M1 a0123456789876543210 a0123456789876543210 infix 6 `M1Sym2` class PC1 a b where- type M1 (arg :: a) (arg :: b) :: Bool+ type family M1 (arg :: a) (arg :: b) :: Bool infix 6 `M1` infixr 5 `sD1B` infixr 5 `sD1A`@@ -169,25 +169,35 @@ type Demote (D1 a b) = D1 (Demote a) (Demote b) fromSing (SMkD1 b b) = (MkD1 (fromSing b)) (fromSing b) toSing (MkD1 (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkD1 c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkD1 c) c) class SC1 a b where sM1 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply M1Sym0 t) t :: Bool)+ forall (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply M1Sym0 t) t :: Bool) infix 6 `sM1` instance (SingI n, SingI n) => SingI (MkD1 (n :: a) (n :: b)) where sing = (SMkD1 sing) sing+ instance SingI n => SingI1 (MkD1 (n :: a)) where+ liftSing = SMkD1 sing+ instance SingI2 MkD1 where+ liftSing2 = SMkD1 instance SingI (MkD1Sym0 :: (~>) a ((~>) b (D1 a b))) where sing = (singFun2 @MkD1Sym0) SMkD1 instance SingI d => SingI (MkD1Sym1 (d :: a) :: (~>) b (D1 a b)) where sing = (singFun1 @(MkD1Sym1 (d :: a))) (SMkD1 (sing @d))+ instance SingI1 (MkD1Sym1 :: a -> (~>) b (D1 a b)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(MkD1Sym1 (d :: a))) (SMkD1 s) instance SC1 a b => SingI (M1Sym0 :: (~>) a ((~>) b Bool)) where sing = (singFun2 @M1Sym0) sM1 instance (SC1 a b, SingI d) => SingI (M1Sym1 (d :: a) :: (~>) b Bool) where sing = (singFun1 @(M1Sym1 (d :: a))) (sM1 (sing @d))+ instance SC1 a b => SingI1 (M1Sym1 :: a -> (~>) b Bool) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(M1Sym1 (d :: a))) (sM1 s) Singletons/T412.hs:0:0:: Splicing declarations genSingletons [''C2, ''T2a, ''T2b, ''D2] ======>@@ -215,13 +225,13 @@ infix 6 `M2Sym2` type PC2 :: GHC.Types.Type -> GHC.Types.Type -> Constraint class PC2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) where- type M2 (arg :: a) (arg :: b) :: Bool+ type family M2 (arg :: a) (arg :: b) :: Bool infix 5 `PC2` infix 6 `M2` class SC2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) where sM2 ::- forall (t :: a) (t :: b).- Sing t -> Sing t -> Sing (Apply (Apply M2Sym0 t) t :: Bool)+ forall (t :: a) (t :: b). Sing t+ -> Sing t -> Sing (Apply (Apply M2Sym0 t) t :: Bool) type SC2 :: GHC.Types.Type -> GHC.Types.Type -> Constraint infix 5 `SC2` infix 6 `sM2`@@ -230,6 +240,9 @@ instance (SC2 a b, SingI d) => SingI (M2Sym1 (d :: a) :: (~>) b Bool) where sing = (singFun1 @(M2Sym1 (d :: a))) (sM2 (sing @d))+ instance SC2 a b => SingI1 (M2Sym1 :: a -> (~>) b Bool) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(M2Sym1 (d :: a))) (sM2 s) type T2aSym0 :: (~>) GHC.Types.Type ((~>) GHC.Types.Type GHC.Types.Type) data T2aSym0 :: (~>) GHC.Types.Type ((~>) GHC.Types.Type GHC.Types.Type) where@@ -277,8 +290,7 @@ T2bSym2 a0123456789876543210 a0123456789876543210 = T2b a0123456789876543210 a0123456789876543210 infixl 5 `T2bSym2` type MkD2Sym0 :: forall (a :: GHC.Types.Type)- (b :: GHC.Types.Type).- (~>) a ((~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)))+ (b :: GHC.Types.Type). (~>) a ((~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type))) data MkD2Sym0 :: (~>) a ((~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type))) where MkD2Sym0KindInference :: SameKind (Apply MkD2Sym0 arg) (MkD2Sym1 arg) =>@@ -288,8 +300,8 @@ suppressUnusedWarnings = snd (((,) MkD2Sym0KindInference) ()) infixr 5 `MkD2Sym0` type MkD2Sym1 :: forall (a :: GHC.Types.Type)- (b :: GHC.Types.Type).- a -> (~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type))+ (b :: GHC.Types.Type). a+ -> (~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) data MkD2Sym1 (a0123456789876543210 :: a) :: (~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) where MkD2Sym1KindInference :: SameKind (Apply (MkD2Sym1 a0123456789876543210) arg) (MkD2Sym2 a0123456789876543210 arg) =>@@ -299,15 +311,16 @@ suppressUnusedWarnings = snd (((,) MkD2Sym1KindInference) ()) infixr 5 `MkD2Sym1` type MkD2Sym2 :: forall (a :: GHC.Types.Type)- (b :: GHC.Types.Type).- a -> b -> D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)+ (b :: GHC.Types.Type). a+ -> b+ -> D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) type family MkD2Sym2 (a0123456789876543210 :: a) (a0123456789876543210 :: b) :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) where MkD2Sym2 a0123456789876543210 a0123456789876543210 = 'MkD2 a0123456789876543210 a0123456789876543210 infixr 5 `MkD2Sym2` infixr 5 `D2A` infixr 5 `D2B`- type D2BSym0 :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type).- (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) b+ type D2BSym0 :: forall (a :: GHC.Types.Type)+ (b :: GHC.Types.Type). (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) b data D2BSym0 :: (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) b where D2BSym0KindInference :: SameKind (Apply D2BSym0 arg) (D2BSym1 arg) =>@@ -315,12 +328,13 @@ type instance Apply D2BSym0 a0123456789876543210 = D2B a0123456789876543210 instance SuppressUnusedWarnings D2BSym0 where suppressUnusedWarnings = snd (((,) D2BSym0KindInference) ())- type D2BSym1 :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type).- D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) -> b+ type D2BSym1 :: forall (a :: GHC.Types.Type)+ (b :: GHC.Types.Type). D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)+ -> b type family D2BSym1 (a0123456789876543210 :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) :: b where D2BSym1 a0123456789876543210 = D2B a0123456789876543210- type D2ASym0 :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type).- (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) a+ type D2ASym0 :: forall (a :: GHC.Types.Type)+ (b :: GHC.Types.Type). (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) a data D2ASym0 :: (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) a where D2ASym0KindInference :: SameKind (Apply D2ASym0 arg) (D2ASym1 arg) =>@@ -328,36 +342,39 @@ type instance Apply D2ASym0 a0123456789876543210 = D2A a0123456789876543210 instance SuppressUnusedWarnings D2ASym0 where suppressUnusedWarnings = snd (((,) D2ASym0KindInference) ())- type D2ASym1 :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type).- D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) -> a+ type D2ASym1 :: forall (a :: GHC.Types.Type)+ (b :: GHC.Types.Type). D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)+ -> a type family D2ASym1 (a0123456789876543210 :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) :: a where D2ASym1 a0123456789876543210 = D2A a0123456789876543210- type D2B :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type).- D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) -> b+ type D2B :: forall (a :: GHC.Types.Type)+ (b :: GHC.Types.Type). D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)+ -> b type family D2B (a :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) :: b where D2B ('MkD2 _ field) = field- type D2A :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type).- D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type) -> a+ type D2A :: forall (a :: GHC.Types.Type)+ (b :: GHC.Types.Type). D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)+ -> a type family D2A (a :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) :: a where D2A ('MkD2 field _) = field sD2B :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type)- (t :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)).- Sing t -> Sing (Apply D2BSym0 t :: b)+ (t :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)). Sing t+ -> Sing (Apply D2BSym0 t :: b) sD2A :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type)- (t :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)).- Sing t -> Sing (Apply D2ASym0 t :: a)+ (t :: D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)). Sing t+ -> Sing (Apply D2ASym0 t :: a) sD2B (SMkD2 _ (sField :: Sing field)) = sField sD2A (SMkD2 (sField :: Sing field) _) = sField instance SingI (D2BSym0 :: (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) b) where sing = (singFun1 @D2BSym0) sD2B instance SingI (D2ASym0 :: (~>) (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)) a) where sing = (singFun1 @D2ASym0) sD2A- type SD2 :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type).- D2 a b -> GHC.Types.Type+ type SD2 :: forall (a :: GHC.Types.Type)+ (b :: GHC.Types.Type). D2 a b -> GHC.Types.Type data SD2 :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type). D2 a b -> GHC.Types.Type where@@ -373,16 +390,24 @@ type Demote (D2 a b) = D2 (Demote a) (Demote b) fromSing (SMkD2 b b) = (MkD2 (fromSing b)) (fromSing b) toSing (MkD2 (b :: Demote a) (b :: Demote b))- = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkD2 c) c) }+ = case ((,) (toSing b :: SomeSing a)) (toSing b :: SomeSing b) of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SMkD2 c) c) infixr 5 `SMkD2` infixr 5 `sD2A` infixr 5 `sD2B` instance (SingI n, SingI n) => SingI ('MkD2 (n :: a) (n :: b)) where sing = (SMkD2 sing) sing+ instance SingI n => SingI1 ('MkD2 (n :: a)) where+ liftSing = SMkD2 sing+ instance SingI2 'MkD2 where+ liftSing2 = SMkD2 instance SingI (MkD2Sym0 :: (~>) a ((~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type)))) where sing = (singFun2 @MkD2Sym0) SMkD2 instance SingI d => SingI (MkD2Sym1 (d :: a) :: (~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type))) where sing = (singFun1 @(MkD2Sym1 (d :: a))) (SMkD2 (sing @d))+ instance SingI1 (MkD2Sym1 :: a+ -> (~>) b (D2 (a :: GHC.Types.Type) (b :: GHC.Types.Type))) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @(MkD2Sym1 (d :: a))) (SMkD2 s)
tests/compile-and-dump/Singletons/T414.golden view
@@ -10,12 +10,12 @@ type T3 a b |] ======> class C1 (a :: Bool) where- type T1 a b+ type family T1 a b class C2 a where- type T2 a b+ type family T2 a b type C3 :: Bool -> Constraint class C3 a where- type T3 a b+ type family T3 a b data T1Sym0 a0123456789876543210 where T1Sym0KindInference :: SameKind (Apply T1Sym0 arg) (T1Sym1 arg) =>
tests/compile-and-dump/Singletons/T443.golden view
@@ -77,11 +77,11 @@ type family Head (a :: Vec (S n) a) :: a where Head ((:>) field _) = field sTail ::- forall n a (t :: Vec (S n) a).- Sing t -> Sing (Apply TailSym0 t :: Vec n a)+ forall n a (t :: Vec (S n) a). Sing t+ -> Sing (Apply TailSym0 t :: Vec n a) sHead ::- forall n a (t :: Vec (S n) a).- Sing t -> Sing (Apply HeadSym0 t :: a)+ forall n a (t :: Vec (S n) a). Sing t+ -> Sing (Apply HeadSym0 t :: a) sTail ((:%>) _ (sField :: Sing field)) = sField sHead ((:%>) (sField :: Sing field) _) = sField instance SingI (TailSym0 :: (~>) (Vec (S n) a) (Vec n a)) where@@ -103,6 +103,8 @@ sing = SZ instance SingI n => SingI (S (n :: Nat)) where sing = SS sing+ instance SingI1 S where+ liftSing = SS instance SingI (SSym0 :: (~>) Nat Nat) where sing = (singFun1 @SSym0) SS instance SingI VNil where@@ -110,8 +112,16 @@ instance (SingI n, SingI n) => SingI ((:>) (n :: a) (n :: Vec n a)) where sing = ((:%>) sing) sing+ instance SingI n => SingI1 ((:>) (n :: a)) where+ liftSing = (:%>) sing+ instance SingI2 (:>) where+ liftSing2 = (:%>) instance SingI ((:>@#@$) :: (~>) a ((~>) (Vec n a) (Vec (S n) a))) where sing = (singFun2 @(:>@#@$)) (:%>) instance SingI d => SingI ((:>@#@$$) (d :: a) :: (~>) (Vec n a) (Vec (S n) a)) where sing = (singFun1 @((:>@#@$$) (d :: a))) ((:%>) (sing @d))+ instance SingI1 ((:>@#@$$) :: a+ -> (~>) (Vec n a) (Vec (S n) a)) where+ liftSing (s :: Sing (d :: a))+ = (singFun1 @((:>@#@$$) (d :: a))) ((:%>) s)
tests/compile-and-dump/Singletons/T445.golden view
@@ -1,16 +1,16 @@ Singletons/T445.hs:0:0:: Splicing declarations genDefunSymbols [''Lit] ======>- type LitSym0 :: (~>) Lit.Nat Nat- data LitSym0 :: (~>) Lit.Nat Nat+ type LitSym0 :: (~>) Natural Nat+ data LitSym0 :: (~>) Natural Nat where LitSym0KindInference :: SameKind (Apply LitSym0 arg) (LitSym1 arg) => LitSym0 a0123456789876543210 type instance Apply LitSym0 a0123456789876543210 = Lit a0123456789876543210 instance SuppressUnusedWarnings LitSym0 where suppressUnusedWarnings = snd (((,) LitSym0KindInference) ())- type LitSym1 :: Lit.Nat -> Nat- type family LitSym1 (a0123456789876543210 :: Lit.Nat) :: Nat where+ type LitSym1 :: Natural -> Nat+ type family LitSym1 (a0123456789876543210 :: Natural) :: Nat where LitSym1 a0123456789876543210 = Lit a0123456789876543210 Singletons/T445.hs:(0,0)-(0,0): Splicing declarations promoteOnly
tests/compile-and-dump/Singletons/T445.hs view
@@ -2,10 +2,11 @@ import Data.Singletons.TH import qualified GHC.TypeLits as Lit+import Numeric.Natural (Natural) import Prelude.Singletons import Singletons.Nat -type Lit :: Lit.Nat -> Nat+type Lit :: Natural -> Nat type family Lit n where Lit 0 = Zero Lit n = Succ (Lit (n Lit.- 1))
tests/compile-and-dump/Singletons/T450.golden view
@@ -10,15 +10,6 @@ defunctionalizedName = \ n sat -> defunctionalizedName defaultOptions (customPromote customs n) sat}- ageDecs <- withOptions- (customOptions- [(''Age, ''PAge), ('MkAge, 'PMkAge), (''Natural, ''Nat)])- $ do ageDecs1 <- genSingletons [''Age]- ageDecs2 <- singletons- [d| addAge :: Age -> Age -> Age- addAge (MkAge (x :: Natural)) (MkAge (y :: Natural))- = MkAge (x + y :: Natural) |]- pure $ ageDecs1 ++ ageDecs2 messageDecs <- withOptions (customOptions [(''Message, ''PMessage), ('MkMessage, 'PMkMessage),@@ -43,73 +34,8 @@ (MkFunction (g :: a -> b)) = MkFunction (f . g :: a -> c) |] pure $ functionDecs1 ++ functionDecs2- pure $ ageDecs ++ messageDecs ++ functionDecs+ pure $ messageDecs ++ functionDecs ======>- type PMkAgeSym0 :: (~>) Nat PAge- data PMkAgeSym0 :: (~>) Nat PAge- where- PMkAgeSym0KindInference :: SameKind (Apply PMkAgeSym0 arg) (PMkAgeSym1 arg) =>- PMkAgeSym0 a0123456789876543210- type instance Apply PMkAgeSym0 a0123456789876543210 = 'PMkAge a0123456789876543210- instance SuppressUnusedWarnings PMkAgeSym0 where- suppressUnusedWarnings = snd (((,) PMkAgeSym0KindInference) ())- type PMkAgeSym1 :: Nat -> PAge- type family PMkAgeSym1 (a0123456789876543210 :: Nat) :: PAge where- PMkAgeSym1 a0123456789876543210 = 'PMkAge a0123456789876543210- type SAge :: PAge -> GHC.Types.Type- data SAge :: PAge -> GHC.Types.Type- where- SMkAge :: forall (n :: Nat). (Sing n) -> SAge ('PMkAge n :: PAge)- type instance Sing @PAge = SAge- instance SingKind PAge where- type Demote PAge = Age- fromSing (SMkAge b) = MkAge (fromSing b)- toSing (MkAge (b :: Demote Nat))- = case toSing b :: SomeSing Nat of {- SomeSing c -> SomeSing (SMkAge c) }- instance SingI n => SingI ('PMkAge (n :: Nat)) where- sing = SMkAge sing- instance SingI (PMkAgeSym0 :: (~>) Nat PAge) where- sing = (singFun1 @PMkAgeSym0) SMkAge- addAge :: Age -> Age -> Age- addAge (MkAge (x :: Natural)) (MkAge (y :: Natural))- = MkAge ((x + y) :: Natural)- type AddAgeSym0 :: (~>) PAge ((~>) PAge PAge)- data AddAgeSym0 :: (~>) PAge ((~>) PAge PAge)- where- AddAgeSym0KindInference :: SameKind (Apply AddAgeSym0 arg) (AddAgeSym1 arg) =>- AddAgeSym0 a0123456789876543210- type instance Apply AddAgeSym0 a0123456789876543210 = AddAgeSym1 a0123456789876543210- instance SuppressUnusedWarnings AddAgeSym0 where- suppressUnusedWarnings = snd (((,) AddAgeSym0KindInference) ())- type AddAgeSym1 :: PAge -> (~>) PAge PAge- data AddAgeSym1 (a0123456789876543210 :: PAge) :: (~>) PAge PAge- where- AddAgeSym1KindInference :: SameKind (Apply (AddAgeSym1 a0123456789876543210) arg) (AddAgeSym2 a0123456789876543210 arg) =>- AddAgeSym1 a0123456789876543210 a0123456789876543210- type instance Apply (AddAgeSym1 a0123456789876543210) a0123456789876543210 = AddAge a0123456789876543210 a0123456789876543210- instance SuppressUnusedWarnings (AddAgeSym1 a0123456789876543210) where- suppressUnusedWarnings = snd (((,) AddAgeSym1KindInference) ())- type AddAgeSym2 :: PAge -> PAge -> PAge- type family AddAgeSym2 (a0123456789876543210 :: PAge) (a0123456789876543210 :: PAge) :: PAge where- AddAgeSym2 a0123456789876543210 a0123456789876543210 = AddAge a0123456789876543210 a0123456789876543210- type AddAge :: PAge -> PAge -> PAge- type family AddAge (a :: PAge) (a :: PAge) :: PAge where- AddAge ('PMkAge (x :: Nat)) ('PMkAge (y :: Nat)) = Apply PMkAgeSym0 (Apply (Apply (+@#@$) x) y :: Nat)- sAddAge ::- forall (t :: PAge) (t :: PAge).- Sing t -> Sing t -> Sing (Apply (Apply AddAgeSym0 t) t :: PAge)- sAddAge (SMkAge (sX :: Sing x)) (SMkAge (sY :: Sing y))- = case ((,) (sX :: Sing x)) (sY :: Sing y) of {- (,) (_ :: Sing (x :: Nat)) (_ :: Sing (y :: Nat))- -> (applySing ((singFun1 @PMkAgeSym0) SMkAge))- ((applySing ((applySing ((singFun2 @(+@#@$)) (%+))) sX)) sY ::- Sing (Apply (Apply (+@#@$) x) y :: Nat)) }- instance SingI (AddAgeSym0 :: (~>) PAge ((~>) PAge PAge)) where- sing = (singFun2 @AddAgeSym0) sAddAge- instance SingI d =>- SingI (AddAgeSym1 (d :: PAge) :: (~>) PAge PAge) where- sing = (singFun1 @(AddAgeSym1 (d :: PAge))) (sAddAge (sing @d)) type PMkMessageSym0 :: (~>) Symbol PMessage data PMkMessageSym0 :: (~>) Symbol PMessage where@@ -131,10 +57,12 @@ type Demote PMessage = Message fromSing (SMkMessage b) = MkMessage (fromSing b) toSing (MkMessage (b :: Demote Symbol))- = case toSing b :: SomeSing Symbol of {- SomeSing c -> SomeSing (SMkMessage c) }+ = case toSing b :: SomeSing Symbol of+ SomeSing c -> SomeSing (SMkMessage c) instance SingI n => SingI ('PMkMessage (n :: Symbol)) where sing = SMkMessage sing+ instance SingI1 'PMkMessage where+ liftSing = SMkMessage instance SingI (PMkMessageSym0 :: (~>) Symbol PMessage) where sing = (singFun1 @PMkMessageSym0) SMkMessage appendMessage :: Message -> Message -> Message@@ -165,17 +93,17 @@ type family AppendMessage (a :: PMessage) (a :: PMessage) :: PMessage where AppendMessage ('PMkMessage (x :: Symbol)) ('PMkMessage (y :: Symbol)) = Apply PMkMessageSym0 (Apply (Apply (<>@#@$) x) y :: Symbol) sAppendMessage ::- forall (t :: PMessage) (t :: PMessage).- Sing t- -> Sing t -> Sing (Apply (Apply AppendMessageSym0 t) t :: PMessage)+ forall (t :: PMessage) (t :: PMessage). Sing t+ -> Sing t+ -> Sing (Apply (Apply AppendMessageSym0 t) t :: PMessage) sAppendMessage (SMkMessage (sX :: Sing x)) (SMkMessage (sY :: Sing y))- = case ((,) (sX :: Sing x)) (sY :: Sing y) of {+ = case ((,) (sX :: Sing x)) (sY :: Sing y) of (,) (_ :: Sing (x :: Symbol)) (_ :: Sing (y :: Symbol)) -> (applySing ((singFun1 @PMkMessageSym0) SMkMessage)) ((applySing ((applySing ((singFun2 @(<>@#@$)) (%<>))) sX)) sY ::- Sing (Apply (Apply (<>@#@$) x) y :: Symbol)) }+ Sing (Apply (Apply (<>@#@$) x) y :: Symbol)) instance SingI (AppendMessageSym0 :: (~>) PMessage ((~>) PMessage PMessage)) where sing = (singFun2 @AppendMessageSym0) sAppendMessage instance SingI d =>@@ -183,9 +111,13 @@ sing = (singFun1 @(AppendMessageSym1 (d :: PMessage))) (sAppendMessage (sing @d))+ instance SingI1 (AppendMessageSym1 :: PMessage+ -> (~>) PMessage PMessage) where+ liftSing (s :: Sing (d :: PMessage))+ = (singFun1 @(AppendMessageSym1 (d :: PMessage)))+ (sAppendMessage s) type PMkFunctionSym0 :: forall (a :: GHC.Types.Type)- (b :: GHC.Types.Type).- (~>) ((~>) a b) (PFunction (a :: GHC.Types.Type) (b :: GHC.Types.Type))+ (b :: GHC.Types.Type). (~>) ((~>) a b) (PFunction (a :: GHC.Types.Type) (b :: GHC.Types.Type)) data PMkFunctionSym0 :: (~>) ((~>) a b) (PFunction (a :: GHC.Types.Type) (b :: GHC.Types.Type)) where PMkFunctionSym0KindInference :: SameKind (Apply PMkFunctionSym0 arg) (PMkFunctionSym1 arg) =>@@ -195,13 +127,12 @@ suppressUnusedWarnings = snd (((,) PMkFunctionSym0KindInference) ()) type PMkFunctionSym1 :: forall (a :: GHC.Types.Type)- (b :: GHC.Types.Type).- (~>) a b -> PFunction (a :: GHC.Types.Type) (b :: GHC.Types.Type)+ (b :: GHC.Types.Type). (~>) a b+ -> PFunction (a :: GHC.Types.Type) (b :: GHC.Types.Type) type family PMkFunctionSym1 (a0123456789876543210 :: (~>) a b) :: PFunction (a :: GHC.Types.Type) (b :: GHC.Types.Type) where PMkFunctionSym1 a0123456789876543210 = 'PMkFunction a0123456789876543210 type SFunction :: forall (a :: GHC.Types.Type)- (b :: GHC.Types.Type).- PFunction a b -> GHC.Types.Type+ (b :: GHC.Types.Type). PFunction a b -> GHC.Types.Type data SFunction :: forall (a :: GHC.Types.Type) (b :: GHC.Types.Type). PFunction a b -> GHC.Types.Type@@ -216,10 +147,12 @@ type Demote (PFunction a b) = Function (Demote a) (Demote b) fromSing (SMkFunction b) = MkFunction (fromSing b) toSing (MkFunction (b :: Demote ((~>) a b)))- = case toSing b :: SomeSing ((~>) a b) of {- SomeSing c -> SomeSing (SMkFunction c) }+ = case toSing b :: SomeSing ((~>) a b) of+ SomeSing c -> SomeSing (SMkFunction c) instance SingI n => SingI ('PMkFunction (n :: (~>) a b)) where sing = SMkFunction sing+ instance SingI1 'PMkFunction where+ liftSing = SMkFunction instance SingI (PMkFunctionSym0 :: (~>) ((~>) a b) (PFunction (a :: GHC.Types.Type) (b :: GHC.Types.Type))) where sing = (singFun1 @PMkFunctionSym0) SMkFunction composeFunction :: Function b c -> Function a b -> Function a c@@ -255,18 +188,17 @@ type family ComposeFunction (a :: PFunction b c) (a :: PFunction a b) :: PFunction a c where ComposeFunction ('PMkFunction (f :: (~>) b c)) ('PMkFunction (g :: (~>) a b)) = Apply PMkFunctionSym0 (Apply (Apply (.@#@$) f) g :: (~>) a c) sComposeFunction ::- forall b c a (t :: PFunction b c) (t :: PFunction a b).- Sing t- -> Sing t- -> Sing (Apply (Apply ComposeFunctionSym0 t) t :: PFunction a c)+ forall b c a (t :: PFunction b c) (t :: PFunction a b). Sing t+ -> Sing t+ -> Sing (Apply (Apply ComposeFunctionSym0 t) t :: PFunction a c) sComposeFunction (SMkFunction (sF :: Sing f)) (SMkFunction (sG :: Sing g))- = case ((,) (sF :: Sing f)) (sG :: Sing g) of {+ = case ((,) (sF :: Sing f)) (sG :: Sing g) of (,) (_ :: Sing (f :: (~>) b c)) (_ :: Sing (g :: (~>) a b)) -> (applySing ((singFun1 @PMkFunctionSym0) SMkFunction)) ((applySing ((applySing ((singFun3 @(.@#@$)) (%.))) sF)) sG ::- Sing (Apply (Apply (.@#@$) f) g :: (~>) a c)) }+ Sing (Apply (Apply (.@#@$) f) g :: (~>) a c)) instance SingI (ComposeFunctionSym0 :: (~>) (PFunction b c) ((~>) (PFunction a b) (PFunction a c))) where sing = (singFun2 @ComposeFunctionSym0) sComposeFunction instance SingI d =>@@ -274,3 +206,8 @@ sing = (singFun1 @(ComposeFunctionSym1 (d :: PFunction b c))) (sComposeFunction (sing @d))+ instance SingI1 (ComposeFunctionSym1 :: PFunction b c+ -> (~>) (PFunction a b) (PFunction a c)) where+ liftSing (s :: Sing (d :: PFunction b c))+ = (singFun1 @(ComposeFunctionSym1 (d :: PFunction b c)))+ (sComposeFunction s)
tests/compile-and-dump/Singletons/T450.hs view
@@ -6,12 +6,7 @@ import Data.Text (Text) import Language.Haskell.TH (Name) import Prelude.Singletons-import GHC.TypeNats (Nat)-import Numeric.Natural (Natural) -newtype Age = MkAge Natural-newtype PAge = PMkAge Nat- newtype Message = MkMessage Text newtype PMessage = PMkMessage Symbol @@ -31,19 +26,6 @@ (customPromote customs n) sat } - ageDecs <-- withOptions (customOptions [ (''Age, ''PAge)- , ('MkAge, 'PMkAge)- , (''Natural, ''Nat)- ]) $ do- ageDecs1 <- genSingletons [''Age]- ageDecs2 <- singletons [d|- addAge :: Age -> Age -> Age- addAge (MkAge (x :: Natural)) (MkAge (y :: Natural)) =- MkAge (x + y :: Natural)- |]- pure $ ageDecs1 ++ ageDecs2- messageDecs <- withOptions (customOptions [ (''Message, ''PMessage) , ('MkMessage, 'PMkMessage)@@ -68,4 +50,4 @@ MkFunction (f . g :: a -> c) |] pure $ functionDecs1 ++ functionDecs2- pure $ ageDecs ++ messageDecs ++ functionDecs)+ pure $ messageDecs ++ functionDecs)
tests/compile-and-dump/Singletons/T470.golden view
@@ -58,11 +58,10 @@ fromSing (SMkT1 b) = MkT1 (fromSing b) fromSing (SMkT2 b) = MkT2 (fromSing b) toSing (MkT1 (b :: Demote a))- = case toSing b :: SomeSing a of {- SomeSing c -> SomeSing (SMkT1 c) }+ = case toSing b :: SomeSing a of SomeSing c -> SomeSing (SMkT1 c) toSing (MkT2 (b :: Demote Void))- = case toSing b :: SomeSing Void of {- SomeSing c -> SomeSing (SMkT2 c) }+ = case toSing b :: SomeSing Void of+ SomeSing c -> SomeSing (SMkT2 c) data SS :: S -> Type where SMkS :: forall (n :: Bool). !(Sing n) -> SS (MkS n :: S) type instance Sing @S = SS@@ -70,18 +69,23 @@ type Demote S = S fromSing (SMkS b) = MkS (fromSing b) toSing (MkS (b :: Demote Bool))- = case toSing b :: SomeSing Bool of {- SomeSing c -> SomeSing (SMkS c) }+ = case toSing b :: SomeSing Bool of SomeSing c -> SomeSing (SMkS c) instance SingI n => SingI (MkT1 (n :: a)) where sing = SMkT1 sing+ instance SingI1 MkT1 where+ liftSing = SMkT1 instance SingI (MkT1Sym0 :: (~>) a (T a)) where sing = (singFun1 @MkT1Sym0) SMkT1 instance SingI n => SingI (MkT2 (n :: Void)) where sing = SMkT2 sing+ instance SingI1 MkT2 where+ liftSing = SMkT2 instance SingI (MkT2Sym0 :: (~>) Void (T a)) where sing = (singFun1 @MkT2Sym0) SMkT2 instance SingI n => SingI (MkS (n :: Bool)) where sing = SMkS sing+ instance SingI1 MkS where+ liftSing = SMkS instance SingI (MkSSym0 :: (~>) Bool S) where sing = (singFun1 @MkSSym0) SMkS
+ tests/compile-and-dump/Singletons/T480.golden view
@@ -0,0 +1,14 @@++Singletons/T480.hs:0:0: error: Q monad failure+ |+5 | $(singletons+ | ^^^^^^^^^^^...++Singletons/T480.hs:0:0: error:+ `singletons-th` does not support wildcard types+ unless they appear in visible type patterns of data constructors+ In the type: _++ |+5 | $(singletons+ | ^^^^^^^^^^^...
+ tests/compile-and-dump/Singletons/T480.hs view
@@ -0,0 +1,8 @@+module T480 where++import Data.Singletons.TH++$(singletons+ [d| f :: _ -> _+ f x = x+ |])
+ tests/compile-and-dump/Singletons/T487.golden view
@@ -0,0 +1,73 @@+Singletons/T487.hs:(0,0)-(0,0): Splicing declarations+ singletonsOnly+ [d| exprEx :: Char+ exprEx = 'a'+ consEx :: Char -> Symbol+ consEx x = consSymbol x "bc"+ unconsEx :: Maybe (Char, Symbol)+ unconsEx = unconsSymbol "abc"+ natToCharEx :: Char+ natToCharEx = natToChar 97+ charToNatEx :: Natural+ charToNatEx = charToNat 'a' |]+ ======>+ type CharToNatExSym0 :: Natural+ type family CharToNatExSym0 :: Natural where+ CharToNatExSym0 = CharToNatEx+ type NatToCharExSym0 :: Char+ type family NatToCharExSym0 :: Char where+ NatToCharExSym0 = NatToCharEx+ type UnconsExSym0 :: Maybe (Char, Symbol)+ type family UnconsExSym0 :: Maybe (Char, Symbol) where+ UnconsExSym0 = UnconsEx+ type ConsExSym0 :: (~>) Char Symbol+ data ConsExSym0 :: (~>) Char Symbol+ where+ ConsExSym0KindInference :: SameKind (Apply ConsExSym0 arg) (ConsExSym1 arg) =>+ ConsExSym0 a0123456789876543210+ type instance Apply ConsExSym0 a0123456789876543210 = ConsEx a0123456789876543210+ instance SuppressUnusedWarnings ConsExSym0 where+ suppressUnusedWarnings = snd (((,) ConsExSym0KindInference) ())+ type ConsExSym1 :: Char -> Symbol+ type family ConsExSym1 (a0123456789876543210 :: Char) :: Symbol where+ ConsExSym1 a0123456789876543210 = ConsEx a0123456789876543210+ type ExprExSym0 :: Char+ type family ExprExSym0 :: Char where+ ExprExSym0 = ExprEx+ type CharToNatEx :: Natural+ type family CharToNatEx :: Natural where+ CharToNatEx = Apply CharToNatSym0 'a'+ type NatToCharEx :: Char+ type family NatToCharEx :: Char where+ NatToCharEx = Apply NatToCharSym0 (FromInteger 97)+ type UnconsEx :: Maybe (Char, Symbol)+ type family UnconsEx :: Maybe (Char, Symbol) where+ UnconsEx = Apply UnconsSymbolSym0 "abc"+ type ConsEx :: Char -> Symbol+ type family ConsEx (a :: Char) :: Symbol where+ ConsEx x = Apply (Apply ConsSymbolSym0 x) "bc"+ type ExprEx :: Char+ type family ExprEx :: Char where+ ExprEx = 'a'+ sCharToNatEx :: Sing (CharToNatExSym0 :: Natural)+ sNatToCharEx :: Sing (NatToCharExSym0 :: Char)+ sUnconsEx :: Sing (UnconsExSym0 :: Maybe (Char, Symbol))+ sConsEx ::+ forall (t :: Char). Sing t -> Sing (Apply ConsExSym0 t :: Symbol)+ sExprEx :: Sing (ExprExSym0 :: Char)+ sCharToNatEx+ = (applySing ((singFun1 @CharToNatSym0) sCharToNat))+ (sing :: Sing 'a')+ sNatToCharEx+ = (applySing ((singFun1 @NatToCharSym0) sNatToChar))+ (sFromInteger (sing :: Sing 97))+ sUnconsEx+ = (applySing ((singFun1 @UnconsSymbolSym0) sUnconsSymbol))+ (sing :: Sing "abc")+ sConsEx (sX :: Sing x)+ = (applySing+ ((applySing ((singFun2 @ConsSymbolSym0) sConsSymbol)) sX))+ (sing :: Sing "bc")+ sExprEx = sing :: Sing 'a'+ instance SingI (ConsExSym0 :: (~>) Char Symbol) where+ sing = (singFun1 @ConsExSym0) sConsEx
+ tests/compile-and-dump/Singletons/T487.hs view
@@ -0,0 +1,40 @@+module T487 where++import Data.Singletons.Base.TH+import GHC.TypeLits.Singletons+import Text.Show.Singletons++$(singletonsOnly [d|+ exprEx :: Char+ exprEx = 'a'++ consEx :: Char -> Symbol+ consEx x = consSymbol x "bc"++ unconsEx :: Maybe (Char, Symbol)+ unconsEx = unconsSymbol "abc"++ natToCharEx :: Char+ natToCharEx = natToChar 97++ charToNatEx :: Natural+ charToNatEx = charToNat 'a'+ |])++showCharTest :: Show_ ExprEx :~: "'a'"+showCharTest = Refl++showSymbolTest :: Show_ "Hello, World!" :~: "\"Hello, World!\""+showSymbolTest = Refl++consSymbolTest :: ConsEx 'a' :~: "abc"+consSymbolTest = Refl++unconsSymbolTest :: UnconsEx :~: Just '( 'a', "bc" )+unconsSymbolTest = Refl++natToCharTest :: NatToCharEx :~: 'a'+natToCharTest = Refl++charToNatTest :: CharToNatEx :~: 97+charToNatTest = Refl
+ tests/compile-and-dump/Singletons/T489.golden view
@@ -0,0 +1,60 @@+Singletons/T489.hs:(0,0)-(0,0): Splicing declarations+ singletons+ [d| blah :: Maybe a -> [a]+ blah (Just @a x) = [x :: a]+ blah (Nothing @a) = [] :: [a]+ flurmp :: Maybe () -> ()+ flurmp (Nothing @_) = ()+ flurmp (Just ()) = () |]+ ======>+ blah :: Maybe a -> [a]+ blah (Just @a x) = [x :: a]+ blah (Nothing @a) = [] :: [a]+ flurmp :: Maybe () -> ()+ flurmp (Nothing @_) = ()+ flurmp (Just ()) = ()+ type FlurmpSym0 :: (~>) (Maybe ()) ()+ data FlurmpSym0 :: (~>) (Maybe ()) ()+ where+ FlurmpSym0KindInference :: SameKind (Apply FlurmpSym0 arg) (FlurmpSym1 arg) =>+ FlurmpSym0 a0123456789876543210+ type instance Apply FlurmpSym0 a0123456789876543210 = Flurmp a0123456789876543210+ instance SuppressUnusedWarnings FlurmpSym0 where+ suppressUnusedWarnings = snd (((,) FlurmpSym0KindInference) ())+ type FlurmpSym1 :: Maybe () -> ()+ type family FlurmpSym1 (a0123456789876543210 :: Maybe ()) :: () where+ FlurmpSym1 a0123456789876543210 = Flurmp a0123456789876543210+ type BlahSym0 :: (~>) (Maybe a) [a]+ data BlahSym0 :: (~>) (Maybe a) [a]+ where+ BlahSym0KindInference :: SameKind (Apply BlahSym0 arg) (BlahSym1 arg) =>+ BlahSym0 a0123456789876543210+ type instance Apply BlahSym0 a0123456789876543210 = Blah a0123456789876543210+ instance SuppressUnusedWarnings BlahSym0 where+ suppressUnusedWarnings = snd (((,) BlahSym0KindInference) ())+ type BlahSym1 :: Maybe a -> [a]+ type family BlahSym1 (a0123456789876543210 :: Maybe a) :: [a] where+ BlahSym1 a0123456789876543210 = Blah a0123456789876543210+ type Flurmp :: Maybe () -> ()+ type family Flurmp (a :: Maybe ()) :: () where+ Flurmp ('Nothing @_) = Tuple0Sym0+ Flurmp ('Just '()) = Tuple0Sym0+ type Blah :: Maybe a -> [a]+ type family Blah (a :: Maybe a) :: [a] where+ Blah ('Just @a x) = Apply (Apply (:@#@$) (x :: a)) NilSym0+ Blah ('Nothing @a) = NilSym0 :: [a]+ sFlurmp ::+ forall (t :: Maybe ()). Sing t -> Sing (Apply FlurmpSym0 t :: ())+ sBlah ::+ forall a (t :: Maybe a). Sing t -> Sing (Apply BlahSym0 t :: [a])+ sFlurmp (SNothing @_) = STuple0+ sFlurmp (SJust STuple0) = STuple0+ sBlah (SJust @a (sX :: Sing x))+ = (applySing+ ((applySing ((singFun2 @(:@#@$)) SCons)) (sX :: Sing (x :: a))))+ SNil+ sBlah (SNothing @a) = SNil :: Sing (NilSym0 :: [a])+ instance SingI (FlurmpSym0 :: (~>) (Maybe ()) ()) where+ sing = (singFun1 @FlurmpSym0) sFlurmp+ instance SingI (BlahSym0 :: (~>) (Maybe a) [a]) where+ sing = (singFun1 @BlahSym0) sBlah
+ tests/compile-and-dump/Singletons/T489.hs view
@@ -0,0 +1,14 @@+module T489 where++import Data.Singletons.Base.TH+import Prelude.Singletons++$(singletons [d|+ blah :: Maybe a -> [a]+ blah (Just @a x) = [x :: a]+ blah (Nothing @a) = [] :: [a]++ flurmp :: Maybe () -> ()+ flurmp (Nothing @_) = ()+ flurmp (Just ()) = ()+ |])
+ tests/compile-and-dump/Singletons/T492.golden view
+ tests/compile-and-dump/Singletons/T492.hs view
@@ -0,0 +1,25 @@+module T492 where++import Data.Functor.Const+import Data.Functor.Const.Singletons+import Data.Proxy+import Data.Proxy.Singletons+import Prelude.Singletons hiding (Const, ConstSym0, ConstSym1)++f :: Const Bool Ordering+f = Const @Bool @Ordering True++sF1 :: SConst ('Const @Bool @Ordering True)+sF1 = SConst @Bool @Ordering STrue++sF2 :: SConst (ConstSym0 @Bool @Ordering @@ True)+sF2 = singFun1 @(ConstSym0 @Bool @Ordering) SConst @@ STrue++sF3 :: SConst (ConstSym1 @Bool @Ordering True)+sF3 = SConst @Bool @Ordering STrue++sP1 :: SProxy ('Proxy @Bool)+sP1 = SProxy @Bool++sP2 :: SProxy (ProxySym0 @Bool)+sP2 = SProxy @Bool
tests/compile-and-dump/Singletons/T54.golden view
@@ -1,10 +1,10 @@ Singletons/T54.hs:(0,0)-(0,0): Splicing declarations singletons [d| g :: Bool -> Bool- g e = (case [not] of { [_] -> not }) e |]+ g e = (case [not] of [_] -> not) e |] ======> g :: Bool -> Bool- g e = (case [not] of { [_] -> not }) e+ g e = (case [not] of [_] -> not) e data Let0123456789876543210Scrutinee_0123456789876543210Sym0 e0123456789876543210 where Let0123456789876543210Scrutinee_0123456789876543210Sym0KindInference :: SameKind (Apply Let0123456789876543210Scrutinee_0123456789876543210Sym0 arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym1 arg) =>@@ -50,8 +50,8 @@ in (id @(Sing (Case_0123456789876543210 e (Let0123456789876543210Scrutinee_0123456789876543210Sym1 e))))- (case sScrutinee_0123456789876543210 of {- SCons _ SNil -> (singFun1 @NotSym0) sNot })))+ (case sScrutinee_0123456789876543210 of+ SCons _ SNil -> (singFun1 @NotSym0) sNot))) sE instance SingI (GSym0 :: (~>) Bool Bool) where sing = (singFun1 @GSym0) sG
tests/compile-and-dump/Singletons/TopLevelPatterns.golden view
@@ -54,8 +54,8 @@ toSing (Bar (b :: Demote Bool) (b :: Demote Bool)) = case ((,) (toSing b :: SomeSing Bool)) (toSing b :: SomeSing Bool)- of {- (,) (SomeSing c) (SomeSing c) -> SomeSing ((SBar c) c) }+ of+ (,) (SomeSing c) (SomeSing c) -> SomeSing ((SBar c) c) instance SingI False where sing = SFalse instance SingI True where@@ -63,11 +63,18 @@ instance (SingI n, SingI n) => SingI (Bar (n :: Bool) (n :: Bool)) where sing = (SBar sing) sing+ instance SingI n => SingI1 (Bar (n :: Bool)) where+ liftSing = SBar sing+ instance SingI2 Bar where+ liftSing2 = SBar instance SingI (BarSym0 :: (~>) Bool ((~>) Bool Foo)) where sing = (singFun2 @BarSym0) SBar instance SingI d => SingI (BarSym1 (d :: Bool) :: (~>) Bool Foo) where sing = (singFun1 @(BarSym1 (d :: Bool))) (SBar (sing @d))+ instance SingI1 (BarSym1 :: Bool -> (~>) Bool Foo) where+ liftSing (s :: Sing (d :: Bool))+ = (singFun1 @(BarSym1 (d :: Bool))) (SBar s) Singletons/TopLevelPatterns.hs:(0,0)-(0,0): Splicing declarations singletons [d| otherwise :: Bool@@ -290,17 +297,17 @@ sM = (GHC.Base.id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0 :: Bool)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SCons _ (SCons (sY_0123456789876543210 :: Sing y_0123456789876543210) SNil)- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sL = (GHC.Base.id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0 :: Bool)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SCons (sY_0123456789876543210 :: Sing y_0123456789876543210) (SCons _ SNil)- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sX_0123456789876543210 = (applySing ((applySing ((singFun2 @(:@#@$)) SCons))@@ -312,15 +319,15 @@ sK = (GHC.Base.id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0 :: Bool)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SBar _ (sY_0123456789876543210 :: Sing y_0123456789876543210)- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sJ = (GHC.Base.id @(Sing (Case_0123456789876543210 X_0123456789876543210Sym0 :: Bool)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SBar (sY_0123456789876543210 :: Sing y_0123456789876543210) _- -> sY_0123456789876543210 })+ -> sY_0123456789876543210) sX_0123456789876543210 = (applySing ((applySing ((singFun2 @BarSym0) SBar)) STrue)) ((applySing ((singFun1 @HSym0) sH)) SFalse)@@ -328,17 +335,17 @@ = (applySing ((GHC.Base.id @(Sing (Case_0123456789876543210 a_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of STuple2 _ (sY_0123456789876543210 :: Sing y_0123456789876543210)- -> sY_0123456789876543210 })))+ -> sY_0123456789876543210))) sA_0123456789876543210 sH (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((GHC.Base.id @(Sing (Case_0123456789876543210 a_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of STuple2 (sY_0123456789876543210 :: Sing y_0123456789876543210) _- -> sY_0123456789876543210 })))+ -> sY_0123456789876543210))) sA_0123456789876543210 sX_0123456789876543210 = (applySing@@ -349,19 +356,19 @@ = (applySing ((GHC.Base.id @(Sing (Case_0123456789876543210 a_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SCons _ (SCons (sY_0123456789876543210 :: Sing y_0123456789876543210) SNil)- -> sY_0123456789876543210 })))+ -> sY_0123456789876543210))) sA_0123456789876543210 sF (sA_0123456789876543210 :: Sing a_0123456789876543210) = (applySing ((GHC.Base.id @(Sing (Case_0123456789876543210 a_0123456789876543210 X_0123456789876543210Sym0)))- (case sX_0123456789876543210 of {+ (case sX_0123456789876543210 of SCons (sY_0123456789876543210 :: Sing y_0123456789876543210) (SCons _ SNil)- -> sY_0123456789876543210 })))+ -> sY_0123456789876543210))) sA_0123456789876543210 sX_0123456789876543210 = (applySing