singletons 1.1 → 1.1.1
raw patch · 50 files changed
+362/−7457 lines, 50 filesdep ~th-desugar
Dependency ranges changed: th-desugar
Files
- CHANGES.md +5/−0
- singletons.cabal +6/−10
- tests/compile-and-dump/GradingClient/Database.ghc76.template +0/−4543
- tests/compile-and-dump/GradingClient/Database.ghc78.template +37/−46
- tests/compile-and-dump/GradingClient/Main.ghc76.template +0/−84
- tests/compile-and-dump/GradingClient/Main.ghc78.template +7/−7
- tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc76.template +0/−92
- tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc78.template +16/−21
- tests/compile-and-dump/Promote/Classes.ghc76.template +0/−0
- tests/compile-and-dump/Promote/Classes.ghc78.template +2/−2
- tests/compile-and-dump/Promote/Constructors.ghc76.template +0/−42
- tests/compile-and-dump/Promote/GenDefunSymbols.ghc76.template +0/−15
- tests/compile-and-dump/Promote/Newtypes.ghc76.template +0/−2
- tests/compile-and-dump/Promote/TopLevelPatterns.ghc78.template +8/−8
- tests/compile-and-dump/Singletons/AsPattern.ghc76.template +0/−104
- tests/compile-and-dump/Singletons/AsPattern.ghc78.template +18/−20
- tests/compile-and-dump/Singletons/BoxUnBox.ghc76.template +0/−35
- tests/compile-and-dump/Singletons/CaseExpressions.ghc76.template +0/−97
- tests/compile-and-dump/Singletons/CaseExpressions.ghc78.template +1/−1
- tests/compile-and-dump/Singletons/Contains.ghc76.template +0/−23
- tests/compile-and-dump/Singletons/Contains.ghc78.template +9/−9
- tests/compile-and-dump/Singletons/DataValues.ghc76.template +0/−64
- tests/compile-and-dump/Singletons/DataValues.ghc78.template +2/−2
- tests/compile-and-dump/Singletons/Empty.ghc76.template +0/−17
- tests/compile-and-dump/Singletons/EqInstances.ghc76.template +0/−17
- tests/compile-and-dump/Singletons/Error.ghc76.template +0/−16
- tests/compile-and-dump/Singletons/Error.ghc78.template +7/−8
- tests/compile-and-dump/Singletons/HigherOrder.ghc76.template +0/−122
- tests/compile-and-dump/Singletons/HigherOrder.ghc78.template +38/−54
- tests/compile-and-dump/Singletons/LambdaCase.ghc76.template +0/−80
- tests/compile-and-dump/Singletons/LambdaCase.ghc78.template +1/−1
- tests/compile-and-dump/Singletons/Lambdas.ghc76.template +0/−173
- tests/compile-and-dump/Singletons/Lambdas.ghc78.template +2/−2
- tests/compile-and-dump/Singletons/LambdasComprehensive.ghc76.template +0/−27
- tests/compile-and-dump/Singletons/LambdasComprehensive.ghc78.template +2/−2
- tests/compile-and-dump/Singletons/LetStatements.ghc76.template +0/−364
- tests/compile-and-dump/Singletons/LetStatements.ghc78.template +4/−4
- tests/compile-and-dump/Singletons/Maybe.ghc76.template +0/−59
- tests/compile-and-dump/Singletons/Nat.ghc76.template +0/−89
- tests/compile-and-dump/Singletons/Operators.ghc76.template +0/−70
- tests/compile-and-dump/Singletons/PatternMatching.ghc76.template +0/−131
- tests/compile-and-dump/Singletons/PatternMatching.ghc78.template +22/−22
- tests/compile-and-dump/Singletons/ReturnFunc.ghc76.template +0/−0
- tests/compile-and-dump/Singletons/Sections.ghc76.template +0/−48
- tests/compile-and-dump/Singletons/Sections.ghc78.template +3/−3
- tests/compile-and-dump/Singletons/Star.ghc76.template +0/−188
- tests/compile-and-dump/Singletons/T33.ghc78.template +5/−6
- tests/compile-and-dump/Singletons/TopLevelPatterns.ghc76.template +0/−98
- tests/compile-and-dump/Singletons/Tuples.ghc76.template +0/−532
- tests/compile-and-dump/Singletons/Tuples.ghc78.template +167/−97
CHANGES.md view
@@ -1,6 +1,11 @@ Changelog for singletons project ================================ +1.1.1+-----++Update testsuite to work with th-desugar-1.5.2. No functional changes.+ 1.1 ---
singletons.cabal view
@@ -1,5 +1,5 @@ name: singletons-version: 1.1+version: 1.1.1 -- Remember to bump version in the Makefile as well cabal-version: >= 1.10 synopsis: A framework for generating singleton types@@ -16,10 +16,6 @@ tests/compile-and-dump/InsertionSort/*.hs, tests/compile-and-dump/Promote/*.hs, tests/compile-and-dump/Singletons/*.hs- tests/compile-and-dump/GradingClient/*.ghc76.template,- tests/compile-and-dump/InsertionSort/*.ghc76.template,- tests/compile-and-dump/Promote/*.ghc76.template,- tests/compile-and-dump/Singletons/*.ghc76.template, tests/compile-and-dump/GradingClient/*.ghc78.template, tests/compile-and-dump/InsertionSort/*.ghc78.template, tests/compile-and-dump/Promote/*.ghc78.template,@@ -35,14 +31,14 @@ at the Haskell Symposium, 2012. (<http://www.cis.upenn.edu/~eir/papers/2012/singletons/paper.pdf>) - The Haddock documentation does not build with the Haddock distributed with- GHC 7.6.x, but it does build with 7.8.2. Please see links from the project- homepage to find the built documentation.+ Version 1.0 and onwards works a lot harder to promote functions. See the+ paper published at Haskell Symposium, 2014:+ <http://www.cis.upenn.edu/~eir/papers/2014/promotion/promotion.pdf>. source-repository this type: git location: https://github.com/goldfirere/singletons.git- tag: v1.1+ tag: v1.1.1 library hs-source-dirs: src@@ -50,7 +46,7 @@ mtl >= 2.1.1, template-haskell, containers >= 0.5,- th-desugar >= 1.5 && < 1.6+ th-desugar >= 1.5.2 && < 1.6 default-language: Haskell2010 default-extensions: TemplateHaskell -- TemplateHaskell must be listed in cabal file to work with
− tests/compile-and-dump/GradingClient/Database.ghc76.template
@@ -1,4543 +0,0 @@-GradingClient/Database.hs:0:0: Splicing declarations- singletons- [d| data Nat- = Zero | Succ Nat- deriving (Eq, Ord) |]- ======>- GradingClient/Database.hs:(0,0)-(0,0)- data Nat- = Zero | Succ Nat- deriving (Eq, Ord)- type instance (:==) Zero Zero = TrueSym0- type instance (:==) Zero (Succ b) = FalseSym0- type instance (:==) (Succ a) Zero = FalseSym0- type instance (:==) (Succ a) (Succ b) = :== a b- type NatTyCtor = Nat- type NatTyCtorSym0 = NatTyCtor- type ZeroSym0 = Zero- data SuccSym0 (k :: TyFun Nat Nat)- type instance Apply SuccSym0 a = Succ a- data instance Sing (z :: Nat)- = z ~ Zero => SZero |- forall (n :: Nat). z ~ Succ n => SSucc (Sing n)- type SNat (z :: Nat) = Sing z- instance SingKind (KProxy :: KProxy Nat) where- type instance DemoteRep (KProxy :: KProxy Nat) = Nat- fromSing SZero = Zero- fromSing (SSucc b) = Succ (fromSing b)- toSing Zero = SomeSing SZero- toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {- SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where- %:== SZero SZero = STrue- %:== SZero (SSucc _) = SFalse- %:== (SSucc _) SZero = SFalse- %:== (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where- %~ SZero SZero = Proved Refl- %~ SZero (SSucc _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SSucc _) SZero- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SSucc a) (SSucc b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra -> Disproved (\ Refl -> contra Refl) }- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing-GradingClient/Database.hs: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] |]- ======>- GradingClient/Database.hs:(0,0)-(0,0)- 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 GHC.Types.[]) = True- attrNotIn (Attr name u) (Sch ((Attr name' _) GHC.Types.: t))- = ((name /= name') && (attrNotIn (Attr name u) (Sch t)))- disjoint :: Schema -> Schema -> Bool- disjoint (Sch GHC.Types.[]) _ = True- disjoint (Sch (h GHC.Types.: t)) s- = ((attrNotIn h s) && (disjoint (Sch t) s))- occurs :: [AChar] -> Schema -> Bool- occurs _ (Sch GHC.Types.[]) = False- occurs name (Sch ((Attr name' _) GHC.Types.: attrs))- = ((name == name') || (occurs name (Sch attrs)))- lookup :: [AChar] -> Schema -> U- lookup _ (Sch GHC.Types.[]) = undefined- lookup name (Sch ((Attr name' u) GHC.Types.: attrs))- = if (name == name') then u else lookup name (Sch attrs)- type instance (:==) BOOL BOOL = TrueSym0- type instance (:==) BOOL STRING = FalseSym0- type instance (:==) BOOL NAT = FalseSym0- type instance (:==) BOOL (VEC b b) = FalseSym0- type instance (:==) STRING BOOL = FalseSym0- type instance (:==) STRING STRING = TrueSym0- type instance (:==) STRING NAT = FalseSym0- type instance (:==) STRING (VEC b b) = FalseSym0- type instance (:==) NAT BOOL = FalseSym0- type instance (:==) NAT STRING = FalseSym0- type instance (:==) NAT NAT = TrueSym0- type instance (:==) NAT (VEC b b) = FalseSym0- type instance (:==) (VEC a a) BOOL = FalseSym0- type instance (:==) (VEC a a) STRING = FalseSym0- type instance (:==) (VEC a a) NAT = FalseSym0- type instance (:==) (VEC a a) (VEC b b) = :&& (:== a b) (:== a b)- type UTyCtor = U- type UTyCtorSym0 = UTyCtor- type BOOLSym0 = BOOL- type STRINGSym0 = STRING- type NATSym0 = NAT- data VECSym1 (l :: U) (l :: TyFun Nat U)- data VECSym0 (k :: TyFun U (TyFun Nat U -> *))- type instance Apply (VECSym1 a) a = VEC a a- type instance Apply VECSym0 a = VECSym1 a- type instance (:==) CA CA = TrueSym0- type instance (:==) CA CB = FalseSym0- type instance (:==) CA CC = FalseSym0- type instance (:==) CA CD = FalseSym0- type instance (:==) CA CE = FalseSym0- type instance (:==) CA CF = FalseSym0- type instance (:==) CA CG = FalseSym0- type instance (:==) CA CH = FalseSym0- type instance (:==) CA CI = FalseSym0- type instance (:==) CA CJ = FalseSym0- type instance (:==) CA CK = FalseSym0- type instance (:==) CA CL = FalseSym0- type instance (:==) CA CM = FalseSym0- type instance (:==) CA CN = FalseSym0- type instance (:==) CA CO = FalseSym0- type instance (:==) CA CP = FalseSym0- type instance (:==) CA CQ = FalseSym0- type instance (:==) CA CR = FalseSym0- type instance (:==) CA CS = FalseSym0- type instance (:==) CA CT = FalseSym0- type instance (:==) CA CU = FalseSym0- type instance (:==) CA CV = FalseSym0- type instance (:==) CA CW = FalseSym0- type instance (:==) CA CX = FalseSym0- type instance (:==) CA CY = FalseSym0- type instance (:==) CA CZ = FalseSym0- type instance (:==) CB CA = FalseSym0- type instance (:==) CB CB = TrueSym0- type instance (:==) CB CC = FalseSym0- type instance (:==) CB CD = FalseSym0- type instance (:==) CB CE = FalseSym0- type instance (:==) CB CF = FalseSym0- type instance (:==) CB CG = FalseSym0- type instance (:==) CB CH = FalseSym0- type instance (:==) CB CI = FalseSym0- type instance (:==) CB CJ = FalseSym0- type instance (:==) CB CK = FalseSym0- type instance (:==) CB CL = FalseSym0- type instance (:==) CB CM = FalseSym0- type instance (:==) CB CN = FalseSym0- type instance (:==) CB CO = FalseSym0- type instance (:==) CB CP = FalseSym0- type instance (:==) CB CQ = FalseSym0- type instance (:==) CB CR = FalseSym0- type instance (:==) CB CS = FalseSym0- type instance (:==) CB CT = FalseSym0- type instance (:==) CB CU = FalseSym0- type instance (:==) CB CV = FalseSym0- type instance (:==) CB CW = FalseSym0- type instance (:==) CB CX = FalseSym0- type instance (:==) CB CY = FalseSym0- type instance (:==) CB CZ = FalseSym0- type instance (:==) CC CA = FalseSym0- type instance (:==) CC CB = FalseSym0- type instance (:==) CC CC = TrueSym0- type instance (:==) CC CD = FalseSym0- type instance (:==) CC CE = FalseSym0- type instance (:==) CC CF = FalseSym0- type instance (:==) CC CG = FalseSym0- type instance (:==) CC CH = FalseSym0- type instance (:==) CC CI = FalseSym0- type instance (:==) CC CJ = FalseSym0- type instance (:==) CC CK = FalseSym0- type instance (:==) CC CL = FalseSym0- type instance (:==) CC CM = FalseSym0- type instance (:==) CC CN = FalseSym0- type instance (:==) CC CO = FalseSym0- type instance (:==) CC CP = FalseSym0- type instance (:==) CC CQ = FalseSym0- type instance (:==) CC CR = FalseSym0- type instance (:==) CC CS = FalseSym0- type instance (:==) CC CT = FalseSym0- type instance (:==) CC CU = FalseSym0- type instance (:==) CC CV = FalseSym0- type instance (:==) CC CW = FalseSym0- type instance (:==) CC CX = FalseSym0- type instance (:==) CC CY = FalseSym0- type instance (:==) CC CZ = FalseSym0- type instance (:==) CD CA = FalseSym0- type instance (:==) CD CB = FalseSym0- type instance (:==) CD CC = FalseSym0- type instance (:==) CD CD = TrueSym0- type instance (:==) CD CE = FalseSym0- type instance (:==) CD CF = FalseSym0- type instance (:==) CD CG = FalseSym0- type instance (:==) CD CH = FalseSym0- type instance (:==) CD CI = FalseSym0- type instance (:==) CD CJ = FalseSym0- type instance (:==) CD CK = FalseSym0- type instance (:==) CD CL = FalseSym0- type instance (:==) CD CM = FalseSym0- type instance (:==) CD CN = FalseSym0- type instance (:==) CD CO = FalseSym0- type instance (:==) CD CP = FalseSym0- type instance (:==) CD CQ = FalseSym0- type instance (:==) CD CR = FalseSym0- type instance (:==) CD CS = FalseSym0- type instance (:==) CD CT = FalseSym0- type instance (:==) CD CU = FalseSym0- type instance (:==) CD CV = FalseSym0- type instance (:==) CD CW = FalseSym0- type instance (:==) CD CX = FalseSym0- type instance (:==) CD CY = FalseSym0- type instance (:==) CD CZ = FalseSym0- type instance (:==) CE CA = FalseSym0- type instance (:==) CE CB = FalseSym0- type instance (:==) CE CC = FalseSym0- type instance (:==) CE CD = FalseSym0- type instance (:==) CE CE = TrueSym0- type instance (:==) CE CF = FalseSym0- type instance (:==) CE CG = FalseSym0- type instance (:==) CE CH = FalseSym0- type instance (:==) CE CI = FalseSym0- type instance (:==) CE CJ = FalseSym0- type instance (:==) CE CK = FalseSym0- type instance (:==) CE CL = FalseSym0- type instance (:==) CE CM = FalseSym0- type instance (:==) CE CN = FalseSym0- type instance (:==) CE CO = FalseSym0- type instance (:==) CE CP = FalseSym0- type instance (:==) CE CQ = FalseSym0- type instance (:==) CE CR = FalseSym0- type instance (:==) CE CS = FalseSym0- type instance (:==) CE CT = FalseSym0- type instance (:==) CE CU = FalseSym0- type instance (:==) CE CV = FalseSym0- type instance (:==) CE CW = FalseSym0- type instance (:==) CE CX = FalseSym0- type instance (:==) CE CY = FalseSym0- type instance (:==) CE CZ = FalseSym0- type instance (:==) CF CA = FalseSym0- type instance (:==) CF CB = FalseSym0- type instance (:==) CF CC = FalseSym0- type instance (:==) CF CD = FalseSym0- type instance (:==) CF CE = FalseSym0- type instance (:==) CF CF = TrueSym0- type instance (:==) CF CG = FalseSym0- type instance (:==) CF CH = FalseSym0- type instance (:==) CF CI = FalseSym0- type instance (:==) CF CJ = FalseSym0- type instance (:==) CF CK = FalseSym0- type instance (:==) CF CL = FalseSym0- type instance (:==) CF CM = FalseSym0- type instance (:==) CF CN = FalseSym0- type instance (:==) CF CO = FalseSym0- type instance (:==) CF CP = FalseSym0- type instance (:==) CF CQ = FalseSym0- type instance (:==) CF CR = FalseSym0- type instance (:==) CF CS = FalseSym0- type instance (:==) CF CT = FalseSym0- type instance (:==) CF CU = FalseSym0- type instance (:==) CF CV = FalseSym0- type instance (:==) CF CW = FalseSym0- type instance (:==) CF CX = FalseSym0- type instance (:==) CF CY = FalseSym0- type instance (:==) CF CZ = FalseSym0- type instance (:==) CG CA = FalseSym0- type instance (:==) CG CB = FalseSym0- type instance (:==) CG CC = FalseSym0- type instance (:==) CG CD = FalseSym0- type instance (:==) CG CE = FalseSym0- type instance (:==) CG CF = FalseSym0- type instance (:==) CG CG = TrueSym0- type instance (:==) CG CH = FalseSym0- type instance (:==) CG CI = FalseSym0- type instance (:==) CG CJ = FalseSym0- type instance (:==) CG CK = FalseSym0- type instance (:==) CG CL = FalseSym0- type instance (:==) CG CM = FalseSym0- type instance (:==) CG CN = FalseSym0- type instance (:==) CG CO = FalseSym0- type instance (:==) CG CP = FalseSym0- type instance (:==) CG CQ = FalseSym0- type instance (:==) CG CR = FalseSym0- type instance (:==) CG CS = FalseSym0- type instance (:==) CG CT = FalseSym0- type instance (:==) CG CU = FalseSym0- type instance (:==) CG CV = FalseSym0- type instance (:==) CG CW = FalseSym0- type instance (:==) CG CX = FalseSym0- type instance (:==) CG CY = FalseSym0- type instance (:==) CG CZ = FalseSym0- type instance (:==) CH CA = FalseSym0- type instance (:==) CH CB = FalseSym0- type instance (:==) CH CC = FalseSym0- type instance (:==) CH CD = FalseSym0- type instance (:==) CH CE = FalseSym0- type instance (:==) CH CF = FalseSym0- type instance (:==) CH CG = FalseSym0- type instance (:==) CH CH = TrueSym0- type instance (:==) CH CI = FalseSym0- type instance (:==) CH CJ = FalseSym0- type instance (:==) CH CK = FalseSym0- type instance (:==) CH CL = FalseSym0- type instance (:==) CH CM = FalseSym0- type instance (:==) CH CN = FalseSym0- type instance (:==) CH CO = FalseSym0- type instance (:==) CH CP = FalseSym0- type instance (:==) CH CQ = FalseSym0- type instance (:==) CH CR = FalseSym0- type instance (:==) CH CS = FalseSym0- type instance (:==) CH CT = FalseSym0- type instance (:==) CH CU = FalseSym0- type instance (:==) CH CV = FalseSym0- type instance (:==) CH CW = FalseSym0- type instance (:==) CH CX = FalseSym0- type instance (:==) CH CY = FalseSym0- type instance (:==) CH CZ = FalseSym0- type instance (:==) CI CA = FalseSym0- type instance (:==) CI CB = FalseSym0- type instance (:==) CI CC = FalseSym0- type instance (:==) CI CD = FalseSym0- type instance (:==) CI CE = FalseSym0- type instance (:==) CI CF = FalseSym0- type instance (:==) CI CG = FalseSym0- type instance (:==) CI CH = FalseSym0- type instance (:==) CI CI = TrueSym0- type instance (:==) CI CJ = FalseSym0- type instance (:==) CI CK = FalseSym0- type instance (:==) CI CL = FalseSym0- type instance (:==) CI CM = FalseSym0- type instance (:==) CI CN = FalseSym0- type instance (:==) CI CO = FalseSym0- type instance (:==) CI CP = FalseSym0- type instance (:==) CI CQ = FalseSym0- type instance (:==) CI CR = FalseSym0- type instance (:==) CI CS = FalseSym0- type instance (:==) CI CT = FalseSym0- type instance (:==) CI CU = FalseSym0- type instance (:==) CI CV = FalseSym0- type instance (:==) CI CW = FalseSym0- type instance (:==) CI CX = FalseSym0- type instance (:==) CI CY = FalseSym0- type instance (:==) CI CZ = FalseSym0- type instance (:==) CJ CA = FalseSym0- type instance (:==) CJ CB = FalseSym0- type instance (:==) CJ CC = FalseSym0- type instance (:==) CJ CD = FalseSym0- type instance (:==) CJ CE = FalseSym0- type instance (:==) CJ CF = FalseSym0- type instance (:==) CJ CG = FalseSym0- type instance (:==) CJ CH = FalseSym0- type instance (:==) CJ CI = FalseSym0- type instance (:==) CJ CJ = TrueSym0- type instance (:==) CJ CK = FalseSym0- type instance (:==) CJ CL = FalseSym0- type instance (:==) CJ CM = FalseSym0- type instance (:==) CJ CN = FalseSym0- type instance (:==) CJ CO = FalseSym0- type instance (:==) CJ CP = FalseSym0- type instance (:==) CJ CQ = FalseSym0- type instance (:==) CJ CR = FalseSym0- type instance (:==) CJ CS = FalseSym0- type instance (:==) CJ CT = FalseSym0- type instance (:==) CJ CU = FalseSym0- type instance (:==) CJ CV = FalseSym0- type instance (:==) CJ CW = FalseSym0- type instance (:==) CJ CX = FalseSym0- type instance (:==) CJ CY = FalseSym0- type instance (:==) CJ CZ = FalseSym0- type instance (:==) CK CA = FalseSym0- type instance (:==) CK CB = FalseSym0- type instance (:==) CK CC = FalseSym0- type instance (:==) CK CD = FalseSym0- type instance (:==) CK CE = FalseSym0- type instance (:==) CK CF = FalseSym0- type instance (:==) CK CG = FalseSym0- type instance (:==) CK CH = FalseSym0- type instance (:==) CK CI = FalseSym0- type instance (:==) CK CJ = FalseSym0- type instance (:==) CK CK = TrueSym0- type instance (:==) CK CL = FalseSym0- type instance (:==) CK CM = FalseSym0- type instance (:==) CK CN = FalseSym0- type instance (:==) CK CO = FalseSym0- type instance (:==) CK CP = FalseSym0- type instance (:==) CK CQ = FalseSym0- type instance (:==) CK CR = FalseSym0- type instance (:==) CK CS = FalseSym0- type instance (:==) CK CT = FalseSym0- type instance (:==) CK CU = FalseSym0- type instance (:==) CK CV = FalseSym0- type instance (:==) CK CW = FalseSym0- type instance (:==) CK CX = FalseSym0- type instance (:==) CK CY = FalseSym0- type instance (:==) CK CZ = FalseSym0- type instance (:==) CL CA = FalseSym0- type instance (:==) CL CB = FalseSym0- type instance (:==) CL CC = FalseSym0- type instance (:==) CL CD = FalseSym0- type instance (:==) CL CE = FalseSym0- type instance (:==) CL CF = FalseSym0- type instance (:==) CL CG = FalseSym0- type instance (:==) CL CH = FalseSym0- type instance (:==) CL CI = FalseSym0- type instance (:==) CL CJ = FalseSym0- type instance (:==) CL CK = FalseSym0- type instance (:==) CL CL = TrueSym0- type instance (:==) CL CM = FalseSym0- type instance (:==) CL CN = FalseSym0- type instance (:==) CL CO = FalseSym0- type instance (:==) CL CP = FalseSym0- type instance (:==) CL CQ = FalseSym0- type instance (:==) CL CR = FalseSym0- type instance (:==) CL CS = FalseSym0- type instance (:==) CL CT = FalseSym0- type instance (:==) CL CU = FalseSym0- type instance (:==) CL CV = FalseSym0- type instance (:==) CL CW = FalseSym0- type instance (:==) CL CX = FalseSym0- type instance (:==) CL CY = FalseSym0- type instance (:==) CL CZ = FalseSym0- type instance (:==) CM CA = FalseSym0- type instance (:==) CM CB = FalseSym0- type instance (:==) CM CC = FalseSym0- type instance (:==) CM CD = FalseSym0- type instance (:==) CM CE = FalseSym0- type instance (:==) CM CF = FalseSym0- type instance (:==) CM CG = FalseSym0- type instance (:==) CM CH = FalseSym0- type instance (:==) CM CI = FalseSym0- type instance (:==) CM CJ = FalseSym0- type instance (:==) CM CK = FalseSym0- type instance (:==) CM CL = FalseSym0- type instance (:==) CM CM = TrueSym0- type instance (:==) CM CN = FalseSym0- type instance (:==) CM CO = FalseSym0- type instance (:==) CM CP = FalseSym0- type instance (:==) CM CQ = FalseSym0- type instance (:==) CM CR = FalseSym0- type instance (:==) CM CS = FalseSym0- type instance (:==) CM CT = FalseSym0- type instance (:==) CM CU = FalseSym0- type instance (:==) CM CV = FalseSym0- type instance (:==) CM CW = FalseSym0- type instance (:==) CM CX = FalseSym0- type instance (:==) CM CY = FalseSym0- type instance (:==) CM CZ = FalseSym0- type instance (:==) CN CA = FalseSym0- type instance (:==) CN CB = FalseSym0- type instance (:==) CN CC = FalseSym0- type instance (:==) CN CD = FalseSym0- type instance (:==) CN CE = FalseSym0- type instance (:==) CN CF = FalseSym0- type instance (:==) CN CG = FalseSym0- type instance (:==) CN CH = FalseSym0- type instance (:==) CN CI = FalseSym0- type instance (:==) CN CJ = FalseSym0- type instance (:==) CN CK = FalseSym0- type instance (:==) CN CL = FalseSym0- type instance (:==) CN CM = FalseSym0- type instance (:==) CN CN = TrueSym0- type instance (:==) CN CO = FalseSym0- type instance (:==) CN CP = FalseSym0- type instance (:==) CN CQ = FalseSym0- type instance (:==) CN CR = FalseSym0- type instance (:==) CN CS = FalseSym0- type instance (:==) CN CT = FalseSym0- type instance (:==) CN CU = FalseSym0- type instance (:==) CN CV = FalseSym0- type instance (:==) CN CW = FalseSym0- type instance (:==) CN CX = FalseSym0- type instance (:==) CN CY = FalseSym0- type instance (:==) CN CZ = FalseSym0- type instance (:==) CO CA = FalseSym0- type instance (:==) CO CB = FalseSym0- type instance (:==) CO CC = FalseSym0- type instance (:==) CO CD = FalseSym0- type instance (:==) CO CE = FalseSym0- type instance (:==) CO CF = FalseSym0- type instance (:==) CO CG = FalseSym0- type instance (:==) CO CH = FalseSym0- type instance (:==) CO CI = FalseSym0- type instance (:==) CO CJ = FalseSym0- type instance (:==) CO CK = FalseSym0- type instance (:==) CO CL = FalseSym0- type instance (:==) CO CM = FalseSym0- type instance (:==) CO CN = FalseSym0- type instance (:==) CO CO = TrueSym0- type instance (:==) CO CP = FalseSym0- type instance (:==) CO CQ = FalseSym0- type instance (:==) CO CR = FalseSym0- type instance (:==) CO CS = FalseSym0- type instance (:==) CO CT = FalseSym0- type instance (:==) CO CU = FalseSym0- type instance (:==) CO CV = FalseSym0- type instance (:==) CO CW = FalseSym0- type instance (:==) CO CX = FalseSym0- type instance (:==) CO CY = FalseSym0- type instance (:==) CO CZ = FalseSym0- type instance (:==) CP CA = FalseSym0- type instance (:==) CP CB = FalseSym0- type instance (:==) CP CC = FalseSym0- type instance (:==) CP CD = FalseSym0- type instance (:==) CP CE = FalseSym0- type instance (:==) CP CF = FalseSym0- type instance (:==) CP CG = FalseSym0- type instance (:==) CP CH = FalseSym0- type instance (:==) CP CI = FalseSym0- type instance (:==) CP CJ = FalseSym0- type instance (:==) CP CK = FalseSym0- type instance (:==) CP CL = FalseSym0- type instance (:==) CP CM = FalseSym0- type instance (:==) CP CN = FalseSym0- type instance (:==) CP CO = FalseSym0- type instance (:==) CP CP = TrueSym0- type instance (:==) CP CQ = FalseSym0- type instance (:==) CP CR = FalseSym0- type instance (:==) CP CS = FalseSym0- type instance (:==) CP CT = FalseSym0- type instance (:==) CP CU = FalseSym0- type instance (:==) CP CV = FalseSym0- type instance (:==) CP CW = FalseSym0- type instance (:==) CP CX = FalseSym0- type instance (:==) CP CY = FalseSym0- type instance (:==) CP CZ = FalseSym0- type instance (:==) CQ CA = FalseSym0- type instance (:==) CQ CB = FalseSym0- type instance (:==) CQ CC = FalseSym0- type instance (:==) CQ CD = FalseSym0- type instance (:==) CQ CE = FalseSym0- type instance (:==) CQ CF = FalseSym0- type instance (:==) CQ CG = FalseSym0- type instance (:==) CQ CH = FalseSym0- type instance (:==) CQ CI = FalseSym0- type instance (:==) CQ CJ = FalseSym0- type instance (:==) CQ CK = FalseSym0- type instance (:==) CQ CL = FalseSym0- type instance (:==) CQ CM = FalseSym0- type instance (:==) CQ CN = FalseSym0- type instance (:==) CQ CO = FalseSym0- type instance (:==) CQ CP = FalseSym0- type instance (:==) CQ CQ = TrueSym0- type instance (:==) CQ CR = FalseSym0- type instance (:==) CQ CS = FalseSym0- type instance (:==) CQ CT = FalseSym0- type instance (:==) CQ CU = FalseSym0- type instance (:==) CQ CV = FalseSym0- type instance (:==) CQ CW = FalseSym0- type instance (:==) CQ CX = FalseSym0- type instance (:==) CQ CY = FalseSym0- type instance (:==) CQ CZ = FalseSym0- type instance (:==) CR CA = FalseSym0- type instance (:==) CR CB = FalseSym0- type instance (:==) CR CC = FalseSym0- type instance (:==) CR CD = FalseSym0- type instance (:==) CR CE = FalseSym0- type instance (:==) CR CF = FalseSym0- type instance (:==) CR CG = FalseSym0- type instance (:==) CR CH = FalseSym0- type instance (:==) CR CI = FalseSym0- type instance (:==) CR CJ = FalseSym0- type instance (:==) CR CK = FalseSym0- type instance (:==) CR CL = FalseSym0- type instance (:==) CR CM = FalseSym0- type instance (:==) CR CN = FalseSym0- type instance (:==) CR CO = FalseSym0- type instance (:==) CR CP = FalseSym0- type instance (:==) CR CQ = FalseSym0- type instance (:==) CR CR = TrueSym0- type instance (:==) CR CS = FalseSym0- type instance (:==) CR CT = FalseSym0- type instance (:==) CR CU = FalseSym0- type instance (:==) CR CV = FalseSym0- type instance (:==) CR CW = FalseSym0- type instance (:==) CR CX = FalseSym0- type instance (:==) CR CY = FalseSym0- type instance (:==) CR CZ = FalseSym0- type instance (:==) CS CA = FalseSym0- type instance (:==) CS CB = FalseSym0- type instance (:==) CS CC = FalseSym0- type instance (:==) CS CD = FalseSym0- type instance (:==) CS CE = FalseSym0- type instance (:==) CS CF = FalseSym0- type instance (:==) CS CG = FalseSym0- type instance (:==) CS CH = FalseSym0- type instance (:==) CS CI = FalseSym0- type instance (:==) CS CJ = FalseSym0- type instance (:==) CS CK = FalseSym0- type instance (:==) CS CL = FalseSym0- type instance (:==) CS CM = FalseSym0- type instance (:==) CS CN = FalseSym0- type instance (:==) CS CO = FalseSym0- type instance (:==) CS CP = FalseSym0- type instance (:==) CS CQ = FalseSym0- type instance (:==) CS CR = FalseSym0- type instance (:==) CS CS = TrueSym0- type instance (:==) CS CT = FalseSym0- type instance (:==) CS CU = FalseSym0- type instance (:==) CS CV = FalseSym0- type instance (:==) CS CW = FalseSym0- type instance (:==) CS CX = FalseSym0- type instance (:==) CS CY = FalseSym0- type instance (:==) CS CZ = FalseSym0- type instance (:==) CT CA = FalseSym0- type instance (:==) CT CB = FalseSym0- type instance (:==) CT CC = FalseSym0- type instance (:==) CT CD = FalseSym0- type instance (:==) CT CE = FalseSym0- type instance (:==) CT CF = FalseSym0- type instance (:==) CT CG = FalseSym0- type instance (:==) CT CH = FalseSym0- type instance (:==) CT CI = FalseSym0- type instance (:==) CT CJ = FalseSym0- type instance (:==) CT CK = FalseSym0- type instance (:==) CT CL = FalseSym0- type instance (:==) CT CM = FalseSym0- type instance (:==) CT CN = FalseSym0- type instance (:==) CT CO = FalseSym0- type instance (:==) CT CP = FalseSym0- type instance (:==) CT CQ = FalseSym0- type instance (:==) CT CR = FalseSym0- type instance (:==) CT CS = FalseSym0- type instance (:==) CT CT = TrueSym0- type instance (:==) CT CU = FalseSym0- type instance (:==) CT CV = FalseSym0- type instance (:==) CT CW = FalseSym0- type instance (:==) CT CX = FalseSym0- type instance (:==) CT CY = FalseSym0- type instance (:==) CT CZ = FalseSym0- type instance (:==) CU CA = FalseSym0- type instance (:==) CU CB = FalseSym0- type instance (:==) CU CC = FalseSym0- type instance (:==) CU CD = FalseSym0- type instance (:==) CU CE = FalseSym0- type instance (:==) CU CF = FalseSym0- type instance (:==) CU CG = FalseSym0- type instance (:==) CU CH = FalseSym0- type instance (:==) CU CI = FalseSym0- type instance (:==) CU CJ = FalseSym0- type instance (:==) CU CK = FalseSym0- type instance (:==) CU CL = FalseSym0- type instance (:==) CU CM = FalseSym0- type instance (:==) CU CN = FalseSym0- type instance (:==) CU CO = FalseSym0- type instance (:==) CU CP = FalseSym0- type instance (:==) CU CQ = FalseSym0- type instance (:==) CU CR = FalseSym0- type instance (:==) CU CS = FalseSym0- type instance (:==) CU CT = FalseSym0- type instance (:==) CU CU = TrueSym0- type instance (:==) CU CV = FalseSym0- type instance (:==) CU CW = FalseSym0- type instance (:==) CU CX = FalseSym0- type instance (:==) CU CY = FalseSym0- type instance (:==) CU CZ = FalseSym0- type instance (:==) CV CA = FalseSym0- type instance (:==) CV CB = FalseSym0- type instance (:==) CV CC = FalseSym0- type instance (:==) CV CD = FalseSym0- type instance (:==) CV CE = FalseSym0- type instance (:==) CV CF = FalseSym0- type instance (:==) CV CG = FalseSym0- type instance (:==) CV CH = FalseSym0- type instance (:==) CV CI = FalseSym0- type instance (:==) CV CJ = FalseSym0- type instance (:==) CV CK = FalseSym0- type instance (:==) CV CL = FalseSym0- type instance (:==) CV CM = FalseSym0- type instance (:==) CV CN = FalseSym0- type instance (:==) CV CO = FalseSym0- type instance (:==) CV CP = FalseSym0- type instance (:==) CV CQ = FalseSym0- type instance (:==) CV CR = FalseSym0- type instance (:==) CV CS = FalseSym0- type instance (:==) CV CT = FalseSym0- type instance (:==) CV CU = FalseSym0- type instance (:==) CV CV = TrueSym0- type instance (:==) CV CW = FalseSym0- type instance (:==) CV CX = FalseSym0- type instance (:==) CV CY = FalseSym0- type instance (:==) CV CZ = FalseSym0- type instance (:==) CW CA = FalseSym0- type instance (:==) CW CB = FalseSym0- type instance (:==) CW CC = FalseSym0- type instance (:==) CW CD = FalseSym0- type instance (:==) CW CE = FalseSym0- type instance (:==) CW CF = FalseSym0- type instance (:==) CW CG = FalseSym0- type instance (:==) CW CH = FalseSym0- type instance (:==) CW CI = FalseSym0- type instance (:==) CW CJ = FalseSym0- type instance (:==) CW CK = FalseSym0- type instance (:==) CW CL = FalseSym0- type instance (:==) CW CM = FalseSym0- type instance (:==) CW CN = FalseSym0- type instance (:==) CW CO = FalseSym0- type instance (:==) CW CP = FalseSym0- type instance (:==) CW CQ = FalseSym0- type instance (:==) CW CR = FalseSym0- type instance (:==) CW CS = FalseSym0- type instance (:==) CW CT = FalseSym0- type instance (:==) CW CU = FalseSym0- type instance (:==) CW CV = FalseSym0- type instance (:==) CW CW = TrueSym0- type instance (:==) CW CX = FalseSym0- type instance (:==) CW CY = FalseSym0- type instance (:==) CW CZ = FalseSym0- type instance (:==) CX CA = FalseSym0- type instance (:==) CX CB = FalseSym0- type instance (:==) CX CC = FalseSym0- type instance (:==) CX CD = FalseSym0- type instance (:==) CX CE = FalseSym0- type instance (:==) CX CF = FalseSym0- type instance (:==) CX CG = FalseSym0- type instance (:==) CX CH = FalseSym0- type instance (:==) CX CI = FalseSym0- type instance (:==) CX CJ = FalseSym0- type instance (:==) CX CK = FalseSym0- type instance (:==) CX CL = FalseSym0- type instance (:==) CX CM = FalseSym0- type instance (:==) CX CN = FalseSym0- type instance (:==) CX CO = FalseSym0- type instance (:==) CX CP = FalseSym0- type instance (:==) CX CQ = FalseSym0- type instance (:==) CX CR = FalseSym0- type instance (:==) CX CS = FalseSym0- type instance (:==) CX CT = FalseSym0- type instance (:==) CX CU = FalseSym0- type instance (:==) CX CV = FalseSym0- type instance (:==) CX CW = FalseSym0- type instance (:==) CX CX = TrueSym0- type instance (:==) CX CY = FalseSym0- type instance (:==) CX CZ = FalseSym0- type instance (:==) CY CA = FalseSym0- type instance (:==) CY CB = FalseSym0- type instance (:==) CY CC = FalseSym0- type instance (:==) CY CD = FalseSym0- type instance (:==) CY CE = FalseSym0- type instance (:==) CY CF = FalseSym0- type instance (:==) CY CG = FalseSym0- type instance (:==) CY CH = FalseSym0- type instance (:==) CY CI = FalseSym0- type instance (:==) CY CJ = FalseSym0- type instance (:==) CY CK = FalseSym0- type instance (:==) CY CL = FalseSym0- type instance (:==) CY CM = FalseSym0- type instance (:==) CY CN = FalseSym0- type instance (:==) CY CO = FalseSym0- type instance (:==) CY CP = FalseSym0- type instance (:==) CY CQ = FalseSym0- type instance (:==) CY CR = FalseSym0- type instance (:==) CY CS = FalseSym0- type instance (:==) CY CT = FalseSym0- type instance (:==) CY CU = FalseSym0- type instance (:==) CY CV = FalseSym0- type instance (:==) CY CW = FalseSym0- type instance (:==) CY CX = FalseSym0- type instance (:==) CY CY = TrueSym0- type instance (:==) CY CZ = FalseSym0- type instance (:==) CZ CA = FalseSym0- type instance (:==) CZ CB = FalseSym0- type instance (:==) CZ CC = FalseSym0- type instance (:==) CZ CD = FalseSym0- type instance (:==) CZ CE = FalseSym0- type instance (:==) CZ CF = FalseSym0- type instance (:==) CZ CG = FalseSym0- type instance (:==) CZ CH = FalseSym0- type instance (:==) CZ CI = FalseSym0- type instance (:==) CZ CJ = FalseSym0- type instance (:==) CZ CK = FalseSym0- type instance (:==) CZ CL = FalseSym0- type instance (:==) CZ CM = FalseSym0- type instance (:==) CZ CN = FalseSym0- type instance (:==) CZ CO = FalseSym0- type instance (:==) CZ CP = FalseSym0- type instance (:==) CZ CQ = FalseSym0- type instance (:==) CZ CR = FalseSym0- type instance (:==) CZ CS = FalseSym0- type instance (:==) CZ CT = FalseSym0- type instance (:==) CZ CU = FalseSym0- type instance (:==) CZ CV = FalseSym0- type instance (:==) CZ CW = FalseSym0- type instance (:==) CZ CX = FalseSym0- type instance (:==) CZ CY = FalseSym0- type instance (:==) CZ CZ = TrueSym0- type ACharTyCtor = AChar- type ACharTyCtorSym0 = ACharTyCtor- type CASym0 = CA- type CBSym0 = CB- type CCSym0 = CC- type CDSym0 = CD- type CESym0 = CE- type CFSym0 = CF- type CGSym0 = CG- type CHSym0 = CH- type CISym0 = CI- type CJSym0 = CJ- type CKSym0 = CK- type CLSym0 = CL- type CMSym0 = CM- type CNSym0 = CN- type COSym0 = CO- type CPSym0 = CP- type CQSym0 = CQ- type CRSym0 = CR- type CSSym0 = CS- type CTSym0 = CT- type CUSym0 = CU- type CVSym0 = CV- type CWSym0 = CW- type CXSym0 = CX- type CYSym0 = CY- type CZSym0 = CZ- type AttributeTyCtor = Attribute- type AttributeTyCtorSym0 = AttributeTyCtor- data AttrSym1 (l :: [AChar]) (l :: TyFun U Attribute)- data AttrSym0 (k :: TyFun [AChar] (TyFun U Attribute -> *))- type instance Apply (AttrSym1 a) a = Attr a a- type instance Apply AttrSym0 a = AttrSym1 a- type SchemaTyCtor = Schema- type SchemaTyCtorSym0 = SchemaTyCtor- data SchSym0 (k :: TyFun [Attribute] Schema)- type instance Apply SchSym0 a = Sch a- type family Append (a :: Schema) (a :: Schema) :: Schema- type instance Append (Sch s1) (Sch s2) =- Apply SchSym0 (Apply (Apply :++$ s1) s2)- data AppendSym1 (l :: Schema) (l :: TyFun Schema Schema)- data AppendSym0 (k :: TyFun Schema (TyFun Schema Schema -> *))- type instance Apply (AppendSym1 a) a = Append a a- type instance Apply AppendSym0 a = AppendSym1 a- type family AttrNotIn (a :: Attribute) (a :: Schema) :: Bool- type instance AttrNotIn z (Sch GHC.Types.[]) = TrueSym0- type instance AttrNotIn (Attr name u) (Sch (GHC.Types.: (Attr name' z) t)) =- Apply (Apply :&&$ (Apply (Apply :/=$ name) name')) (Apply (Apply AttrNotInSym0 (Apply (Apply AttrSym0 name) u)) (Apply SchSym0 t))- data AttrNotInSym1 (l :: Attribute) (l :: TyFun Schema Bool)- data AttrNotInSym0 (k :: TyFun Attribute (TyFun Schema Bool -> *))- type instance Apply (AttrNotInSym1 a) a = AttrNotIn a a- type instance Apply AttrNotInSym0 a = AttrNotInSym1 a- type family Disjoint (a :: Schema) (a :: Schema) :: Bool- type instance Disjoint (Sch GHC.Types.[]) z = TrueSym0- type instance Disjoint (Sch (GHC.Types.: h t)) s =- Apply (Apply :&&$ (Apply (Apply AttrNotInSym0 h) s)) (Apply (Apply DisjointSym0 (Apply SchSym0 t)) s)- data DisjointSym1 (l :: Schema) (l :: TyFun Schema Bool)- data DisjointSym0 (k :: TyFun Schema (TyFun Schema Bool -> *))- type instance Apply (DisjointSym1 a) a = Disjoint a a- type instance Apply DisjointSym0 a = DisjointSym1 a- type family Occurs (a :: [AChar]) (a :: Schema) :: Bool- type instance Occurs z (Sch GHC.Types.[]) = FalseSym0- type instance Occurs name (Sch (GHC.Types.: (Attr name' z) attrs)) =- Apply (Apply :||$ (Apply (Apply :==$ name) name')) (Apply (Apply OccursSym0 name) (Apply SchSym0 attrs))- data OccursSym1 (l :: [AChar]) (l :: TyFun Schema Bool)- data OccursSym0 (k :: TyFun [AChar] (TyFun Schema Bool -> *))- type instance Apply (OccursSym1 a) a = Occurs a a- type instance Apply OccursSym0 a = OccursSym1 a- type family Lookup (a :: [AChar]) (a :: Schema) :: U- type instance Lookup z (Sch GHC.Types.[]) = Any- type instance Lookup name (Sch (GHC.Types.: (Attr name' u) attrs)) =- If (Apply (Apply :==$ name) name') u (Apply (Apply LookupSym0 name) (Apply SchSym0 attrs))- data LookupSym1 (l :: [AChar]) (l :: TyFun Schema U)- data LookupSym0 (k :: TyFun [AChar] (TyFun Schema U -> *))- type instance Apply (LookupSym1 a) a = Lookup a a- type instance Apply LookupSym0 a = LookupSym1 a- data instance Sing (z :: U)- = z ~ BOOL => SBOOL |- z ~ STRING => SSTRING |- z ~ NAT => SNAT |- forall (n :: U) (n :: Nat). z ~ VEC n n => SVEC (Sing n) (Sing n)- type SU (z :: U) = Sing z- instance SingKind (KProxy :: KProxy U) where- type instance DemoteRep (KProxy :: KProxy 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 b)- = case- (toSing b :: SomeSing (KProxy :: KProxy U), - toSing b :: SomeSing (KProxy :: KProxy Nat))- of {- (SomeSing c, SomeSing c) -> SomeSing (SVEC c c) }- instance SEq (KProxy :: KProxy U) where- %:== 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 a a) (SVEC b b) = (%:&&) ((%:==) a b) ((%:==) a b)- instance SDecide (KProxy :: KProxy U) where- %~ SBOOL SBOOL = Proved Refl- %~ SBOOL SSTRING- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SBOOL SNAT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SBOOL (SVEC _ _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SSTRING SBOOL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SSTRING SSTRING = Proved Refl- %~ SSTRING SNAT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SSTRING (SVEC _ _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SNAT SBOOL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SNAT SSTRING- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SNAT SNAT = Proved Refl- %~ SNAT (SVEC _ _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVEC _ _) SBOOL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVEC _ _) SSTRING- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVEC _ _) SNAT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVEC a a) (SVEC b b)- = case ((%~) a b, (%~) a b) of {- (Proved Refl, Proved Refl) -> Proved Refl- (Disproved contra, _) -> Disproved (\ Refl -> contra Refl)- (_, Disproved contra) -> Disproved (\ Refl -> contra Refl) }- 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- data instance Sing (z :: AChar)- = z ~ CA => SCA |- z ~ CB => SCB |- z ~ CC => SCC |- z ~ CD => SCD |- z ~ CE => SCE |- z ~ CF => SCF |- z ~ CG => SCG |- z ~ CH => SCH |- z ~ CI => SCI |- z ~ CJ => SCJ |- z ~ CK => SCK |- z ~ CL => SCL |- z ~ CM => SCM |- z ~ CN => SCN |- z ~ CO => SCO |- z ~ CP => SCP |- z ~ CQ => SCQ |- z ~ CR => SCR |- z ~ CS => SCS |- z ~ CT => SCT |- z ~ CU => SCU |- z ~ CV => SCV |- z ~ CW => SCW |- z ~ CX => SCX |- z ~ CY => SCY |- z ~ CZ => SCZ- type SAChar (z :: AChar) = Sing z- instance SingKind (KProxy :: KProxy AChar) where- type instance DemoteRep (KProxy :: KProxy 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- instance SEq (KProxy :: KProxy AChar) where- %:== 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 (KProxy :: KProxy AChar) where- %~ SCA SCA = Proved Refl- %~ SCA SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCA SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCB = Proved Refl- %~ SCB SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCB SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCC = Proved Refl- %~ SCC SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCC SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCD = Proved Refl- %~ SCD SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCD SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCE = Proved Refl- %~ SCE SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCE SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCF = Proved Refl- %~ SCF SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCF SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCG = Proved Refl- %~ SCG SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCG SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCH = Proved Refl- %~ SCH SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCH SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCI = Proved Refl- %~ SCI SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCI SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCJ = Proved Refl- %~ SCJ SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCJ SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCK = Proved Refl- %~ SCK SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCK SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCL = Proved Refl- %~ SCL SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCL SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCM = Proved Refl- %~ SCM SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCM SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCN = Proved Refl- %~ SCN SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCN SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCO = Proved Refl- %~ SCO SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCO SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCP = Proved Refl- %~ SCP SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCP SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCQ = Proved Refl- %~ SCQ SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCQ SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCR = Proved Refl- %~ SCR SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCR SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCS = Proved Refl- %~ SCS SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCS SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCT = Proved Refl- %~ SCT SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCT SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCU = Proved Refl- %~ SCU SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCU SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCV = Proved Refl- %~ SCV SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCV SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCW = Proved Refl- %~ SCW SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCW SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCX = Proved Refl- %~ SCX SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCX SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCY SCY = Proved Refl- %~ SCY SCZ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCA- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCB- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCC- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCD- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCE- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCF- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCG- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCH- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCI- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCJ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCK- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCL- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCM- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCN- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCO- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCP- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCQ- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCR- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCS- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCT- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCU- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCV- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCW- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCX- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCY- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SCZ SCZ = Proved Refl- 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- data instance Sing (z :: Attribute)- = forall (n :: [AChar]) (n :: U). z ~ Attr n n =>- SAttr (Sing n) (Sing n)- type SAttribute (z :: Attribute) = Sing z- instance SingKind (KProxy :: KProxy Attribute) where- type instance DemoteRep (KProxy :: KProxy Attribute) = Attribute- fromSing (SAttr b b) = Attr (fromSing b) (fromSing b)- toSing (Attr b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy [AChar]), - toSing b :: SomeSing (KProxy :: KProxy U))- of {- (SomeSing c, SomeSing c) -> SomeSing (SAttr c c) }- instance (SingI n, SingI n) =>- SingI (Attr (n :: [AChar]) (n :: U)) where- sing = SAttr sing sing- data instance Sing (z :: Schema)- = forall (n :: [Attribute]). z ~ Sch n => SSch (Sing n)- type SSchema (z :: Schema) = Sing z- instance SingKind (KProxy :: KProxy Schema) where- type instance DemoteRep (KProxy :: KProxy Schema) = Schema- fromSing (SSch b) = Sch (fromSing b)- toSing (Sch b)- = case toSing b :: SomeSing (KProxy :: KProxy [Attribute]) of {- SomeSing c -> SomeSing (SSch c) }- instance SingI n => SingI (Sch (n :: [Attribute])) where- sing = SSch sing- sAppend ::- forall (t :: Schema) (t :: Schema).- Sing t -> Sing t -> Sing (Append t t)- sAppend (SSch s1) (SSch s2) = SSch ((%:++) s1 s2)- sAttrNotIn ::- forall (t :: Attribute) (t :: Schema).- Sing t -> Sing t -> Sing (AttrNotIn t t)- sAttrNotIn _ (SSch SNil) = STrue- sAttrNotIn (SAttr name u) (SSch (SCons (SAttr name' _) t))- = (%:&&) ((%:/=) name name') (sAttrNotIn (SAttr name u) (SSch t))- sDisjoint ::- forall (t :: Schema) (t :: Schema).- Sing t -> Sing t -> Sing (Disjoint t t)- sDisjoint (SSch SNil) _ = STrue- sDisjoint (SSch (SCons h t)) s- = (%:&&) (sAttrNotIn h s) (sDisjoint (SSch t) s)- sOccurs ::- forall (t :: [AChar]) (t :: Schema).- Sing t -> Sing t -> Sing (Occurs t t)- sOccurs _ (SSch SNil) = SFalse- sOccurs name (SSch (SCons (SAttr name' _) attrs))- = (%:||) ((%:==) name name') (sOccurs name (SSch attrs))- sLookup ::- forall (t :: [AChar]) (t :: Schema).- Sing t -> Sing t -> Sing (Lookup t t)- sLookup _ (SSch SNil) = undefined- sLookup name (SSch (SCons (SAttr name' u) attrs))- = sIf ((%:==) name name') u (sLookup name (SSch attrs))-GradingClient/Database.hs:0:0: Splicing declarations- return [] ======> GradingClient/Database.hs:0:0:-GradingClient/Database.hs:(0,0)-(0,0): Splicing expression- cases ''Row [| r |] [| changeId (n ++ (getId r)) r |]- ======>- case r of {- EmptyRow _ -> changeId (n ++ (getId r)) r- ConsRow _ _ -> changeId (n ++ (getId r)) r }
tests/compile-and-dump/GradingClient/Database.ghc78.template view
@@ -255,27 +255,26 @@ type CXSym0 = CX type CYSym0 = CY type CZSym0 = CZ- type AttrSym2 (t :: GHC.Types.[] AChar) (t :: U) = Attr t t+ type AttrSym2 (t :: [AChar]) (t :: U) = Attr t t instance SuppressUnusedWarnings AttrSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) AttrSym1KindInference GHC.Tuple.())- data AttrSym1 (l :: GHC.Types.[] AChar) (l :: TyFun U Attribute)+ data AttrSym1 (l :: [AChar]) (l :: TyFun U Attribute) = forall arg. KindOf (Apply (AttrSym1 l) arg) ~ KindOf (AttrSym2 l arg) => AttrSym1KindInference type instance Apply (AttrSym1 l) l = AttrSym2 l l instance SuppressUnusedWarnings AttrSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) AttrSym0KindInference GHC.Tuple.())- data AttrSym0 (l :: TyFun (GHC.Types.[] AChar) (TyFun U Attribute- -> *))+ data AttrSym0 (l :: TyFun [AChar] (TyFun U Attribute -> *)) = forall arg. KindOf (Apply AttrSym0 arg) ~ KindOf (AttrSym1 arg) => AttrSym0KindInference type instance Apply AttrSym0 l = AttrSym1 l- type SchSym1 (t :: GHC.Types.[] Attribute) = Sch t+ type SchSym1 (t :: [Attribute]) = Sch t instance SuppressUnusedWarnings SchSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) SchSym0KindInference GHC.Tuple.())- data SchSym0 (l :: TyFun (GHC.Types.[] Attribute) Schema)+ data SchSym0 (l :: TyFun [Attribute] Schema) = forall arg. KindOf (Apply SchSym0 arg) ~ KindOf (SchSym1 arg) => SchSym0KindInference type instance Apply SchSym0 l = SchSym1 l@@ -322,37 +321,33 @@ type family Case_0123456789 name name' u attrs t where Case_0123456789 name name' u attrs True = u Case_0123456789 name name' u attrs False = Apply (Apply LookupSym0 name) (Apply SchSym0 attrs)- type LookupSym2 (t :: GHC.Types.[] AChar) (t :: Schema) =- Lookup t t+ type LookupSym2 (t :: [AChar]) (t :: Schema) = Lookup t t instance SuppressUnusedWarnings LookupSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) LookupSym1KindInference GHC.Tuple.())- data LookupSym1 (l :: GHC.Types.[] AChar) (l :: TyFun Schema U)+ data LookupSym1 (l :: [AChar]) (l :: TyFun Schema U) = forall arg. KindOf (Apply (LookupSym1 l) arg) ~ KindOf (LookupSym2 l arg) => LookupSym1KindInference type instance Apply (LookupSym1 l) l = LookupSym2 l l instance SuppressUnusedWarnings LookupSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) LookupSym0KindInference GHC.Tuple.())- data LookupSym0 (l :: TyFun (GHC.Types.[] AChar) (TyFun Schema U- -> *))+ data LookupSym0 (l :: TyFun [AChar] (TyFun Schema U -> *)) = forall arg. KindOf (Apply LookupSym0 arg) ~ KindOf (LookupSym1 arg) => LookupSym0KindInference type instance Apply LookupSym0 l = LookupSym1 l- type OccursSym2 (t :: GHC.Types.[] AChar) (t :: Schema) =- Occurs t t+ type OccursSym2 (t :: [AChar]) (t :: Schema) = Occurs t t instance SuppressUnusedWarnings OccursSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) OccursSym1KindInference GHC.Tuple.())- data OccursSym1 (l :: GHC.Types.[] AChar) (l :: TyFun Schema Bool)+ data OccursSym1 (l :: [AChar]) (l :: TyFun Schema Bool) = forall arg. KindOf (Apply (OccursSym1 l) arg) ~ KindOf (OccursSym2 l arg) => OccursSym1KindInference type instance Apply (OccursSym1 l) l = OccursSym2 l l instance SuppressUnusedWarnings OccursSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) OccursSym0KindInference GHC.Tuple.())- data OccursSym0 (l :: TyFun (GHC.Types.[] AChar) (TyFun Schema Bool- -> *))+ data OccursSym0 (l :: TyFun [AChar] (TyFun Schema Bool -> *)) = forall arg. KindOf (Apply OccursSym0 arg) ~ KindOf (OccursSym1 arg) => OccursSym0KindInference type instance Apply OccursSym0 l = OccursSym1 l@@ -401,27 +396,25 @@ = forall arg. KindOf (Apply AppendSym0 arg) ~ KindOf (AppendSym1 arg) => AppendSym0KindInference type instance Apply AppendSym0 l = AppendSym1 l- type family Lookup (a :: GHC.Types.[] AChar)- (a :: Schema) :: U where- Lookup z (Sch GHC.Types.[]) = Any- Lookup name (Sch ((GHC.Types.:) (Attr name' u) attrs)) = Case_0123456789 name name' u attrs (Let_0123456789Scrutinee_0123456789Sym4 name name' u attrs)- type family Occurs (a :: GHC.Types.[] AChar)- (a :: Schema) :: Bool where- Occurs z (Sch GHC.Types.[]) = FalseSym0- Occurs name (Sch ((GHC.Types.:) (Attr name' z) attrs)) = Apply (Apply (:||$) (Apply (Apply (:==$) name) name')) (Apply (Apply OccursSym0 name) (Apply SchSym0 attrs))+ type family Lookup (a :: [AChar]) (a :: Schema) :: U where+ Lookup z (Sch '[]) = Any+ Lookup name (Sch ((:) (Attr name' u) attrs)) = Case_0123456789 name name' u attrs (Let_0123456789Scrutinee_0123456789Sym4 name name' u attrs)+ type family Occurs (a :: [AChar]) (a :: Schema) :: Bool where+ Occurs z (Sch '[]) = FalseSym0+ Occurs name (Sch ((:) (Attr name' z) attrs)) = Apply (Apply (:||$) (Apply (Apply (:==$) name) name')) (Apply (Apply OccursSym0 name) (Apply SchSym0 attrs)) type family AttrNotIn (a :: Attribute) (a :: Schema) :: Bool where- AttrNotIn z (Sch GHC.Types.[]) = TrueSym0- AttrNotIn (Attr name u) (Sch ((GHC.Types.:) (Attr name' z) t)) = Apply (Apply (:&&$) (Apply (Apply (:/=$) name) name')) (Apply (Apply AttrNotInSym0 (Apply (Apply AttrSym0 name) u)) (Apply SchSym0 t))+ AttrNotIn z (Sch '[]) = TrueSym0+ AttrNotIn (Attr name u) (Sch ((:) (Attr name' z) t)) = Apply (Apply (:&&$) (Apply (Apply (:/=$) name) name')) (Apply (Apply AttrNotInSym0 (Apply (Apply AttrSym0 name) u)) (Apply SchSym0 t)) type family Disjoint (a :: Schema) (a :: Schema) :: Bool where- Disjoint (Sch GHC.Types.[]) z = TrueSym0- Disjoint (Sch ((GHC.Types.:) h t)) s = Apply (Apply (:&&$) (Apply (Apply AttrNotInSym0 h) s)) (Apply (Apply DisjointSym0 (Apply SchSym0 t)) s)+ Disjoint (Sch '[]) z = TrueSym0+ Disjoint (Sch ((:) h t)) s = Apply (Apply (:&&$) (Apply (Apply AttrNotInSym0 h) s)) (Apply (Apply DisjointSym0 (Apply SchSym0 t)) s) type family Append (a :: Schema) (a :: Schema) :: Schema where Append (Sch s1) (Sch s2) = Apply SchSym0 (Apply (Apply (:++$) s1) s2) sLookup ::- forall (t :: GHC.Types.[] AChar) (t :: Schema).+ forall (t :: [AChar]) (t :: Schema). Sing t -> Sing t -> Sing (Apply (Apply LookupSym0 t) t) sOccurs ::- forall (t :: GHC.Types.[] AChar) (t :: Schema).+ forall (t :: [AChar]) (t :: Schema). Sing t -> Sing t -> Sing (Apply (Apply OccursSym0 t) t) sAttrNotIn :: forall (t :: Attribute) (t :: Schema).@@ -435,8 +428,8 @@ sLookup _ (SSch SNil) = let lambda ::- forall wild. (t ~ wild, t ~ Apply SchSym0 GHC.Types.[]) =>- Sing (Apply (Apply LookupSym0 wild) (Apply SchSym0 GHC.Types.[]))+ forall wild. (t ~ wild, t ~ Apply SchSym0 '[]) =>+ Sing (Apply (Apply LookupSym0 wild) (Apply SchSym0 '[])) lambda = undefined in lambda sLookup sName (SSch (SCons (SAttr sName' sU) sAttrs))@@ -475,8 +468,8 @@ sOccurs _ (SSch SNil) = let lambda ::- forall wild. (t ~ wild, t ~ Apply SchSym0 GHC.Types.[]) =>- Sing (Apply (Apply OccursSym0 wild) (Apply SchSym0 GHC.Types.[]))+ forall wild. (t ~ wild, t ~ Apply SchSym0 '[]) =>+ Sing (Apply (Apply OccursSym0 wild) (Apply SchSym0 '[])) lambda = SFalse in lambda sOccurs sName (SSch (SCons (SAttr sName' _) sAttrs))@@ -501,8 +494,8 @@ sAttrNotIn _ (SSch SNil) = let lambda ::- forall wild. (t ~ wild, t ~ Apply SchSym0 GHC.Types.[]) =>- Sing (Apply (Apply AttrNotInSym0 wild) (Apply SchSym0 GHC.Types.[]))+ forall wild. (t ~ wild, t ~ Apply SchSym0 '[]) =>+ Sing (Apply (Apply AttrNotInSym0 wild) (Apply SchSym0 '[])) lambda = STrue in lambda sAttrNotIn (SAttr sName sU) (SSch (SCons (SAttr sName' _) sT))@@ -531,8 +524,8 @@ sDisjoint (SSch SNil) _ = let lambda ::- forall wild. (t ~ Apply SchSym0 GHC.Types.[], t ~ wild) =>- Sing (Apply (Apply DisjointSym0 (Apply SchSym0 GHC.Types.[])) wild)+ forall wild. (t ~ Apply SchSym0 '[], t ~ wild) =>+ Sing (Apply (Apply DisjointSym0 (Apply SchSym0 '[])) wild) lambda = STrue in lambda sDisjoint (SSch (SCons sH sT)) sS@@ -4717,7 +4710,7 @@ _ -> error "Empty case reached -- this should be impossible" }) (%~) SCZ SCZ = Proved Refl data instance Sing (z :: Attribute)- = forall (n :: GHC.Types.[] AChar) (n :: U). z ~ Attr n n =>+ = forall (n :: [AChar]) (n :: U). z ~ Attr n n => SAttr (Sing n) (Sing n) type SAttribute (z :: Attribute) = Sing z instance SingKind (KProxy :: KProxy Attribute) where@@ -4726,20 +4719,18 @@ toSing (Attr b b) = case GHC.Tuple.(,)- (toSing b :: SomeSing (KProxy :: KProxy (GHC.Types.[] AChar)))+ (toSing b :: SomeSing (KProxy :: KProxy [AChar])) (toSing b :: SomeSing (KProxy :: KProxy U)) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (SAttr c c) } data instance Sing (z :: Schema)- = forall (n :: GHC.Types.[] Attribute). z ~ Sch n => SSch (Sing n)+ = forall (n :: [Attribute]). z ~ Sch n => SSch (Sing n) type SSchema (z :: Schema) = Sing z instance SingKind (KProxy :: KProxy Schema) where type DemoteRep (KProxy :: KProxy Schema) = Schema fromSing (SSch b) = Sch (fromSing b) toSing (Sch b)- = case toSing b ::- SomeSing (KProxy :: KProxy (GHC.Types.[] Attribute))- of {+ = case toSing b :: SomeSing (KProxy :: KProxy [Attribute]) of { SomeSing c -> SomeSing (SSch c) } instance SingI BOOL where sing = SBOOL@@ -4803,9 +4794,9 @@ instance SingI CZ where sing = SCZ instance (SingI n, SingI n) =>- SingI (Attr (n :: GHC.Types.[] AChar) (n :: U)) where+ SingI (Attr (n :: [AChar]) (n :: U)) where sing = SAttr sing sing- instance SingI n => SingI (Sch (n :: GHC.Types.[] Attribute)) where+ instance SingI n => SingI (Sch (n :: [Attribute])) where sing = SSch sing GradingClient/Database.hs:0:0: Splicing declarations return [] ======> GradingClient/Database.hs:0:0:
− tests/compile-and-dump/GradingClient/Main.ghc76.template
@@ -1,84 +0,0 @@-GradingClient/Main.hs:0:0: Splicing declarations- singletons- [d| lastName, majorName, gradeName, yearName, firstName :: [AChar]- lastName = [CL, CA, CS, CT]- firstName = [CF, CI, CR, CS, CT]- yearName = [CY, CE, CA, CR]- gradeName = [CG, CR, CA, CD, CE]- majorName = [CM, CA, CJ, CO, CR]- gradingSchema :: Schema- gradingSchema- = Sch- [Attr lastName STRING, Attr firstName STRING, Attr yearName NAT,- Attr gradeName NAT, Attr majorName BOOL]- names :: Schema- names = Sch [Attr firstName STRING, Attr lastName STRING] |]- ======>- GradingClient/Main.hs:(0,0)-(0,0)- lastName :: [AChar]- majorName :: [AChar]- gradeName :: [AChar]- yearName :: [AChar]- firstName :: [AChar]- lastName = [CL, CA, CS, CT]- firstName = [CF, CI, CR, CS, CT]- yearName = [CY, CE, CA, CR]- gradeName = [CG, CR, CA, CD, CE]- majorName = [CM, CA, CJ, CO, CR]- gradingSchema :: Schema- gradingSchema- = Sch- [Attr lastName STRING, Attr firstName STRING, Attr yearName NAT,- Attr gradeName NAT, Attr majorName BOOL]- names :: Schema- names = Sch [Attr firstName STRING, Attr lastName STRING]- type LastName = '[CLSym0, CASym0, CSSym0, CTSym0]- type LastNameSym0 = LastName- type FirstName = '[CFSym0, CISym0, CRSym0, CSSym0, CTSym0]- type FirstNameSym0 = FirstName- type YearName = '[CYSym0, CESym0, CASym0, CRSym0]- type YearNameSym0 = YearName- type GradeName = '[CGSym0, CRSym0, CASym0, CDSym0, CESym0]- type GradeNameSym0 = GradeName- type MajorName = '[CMSym0, CASym0, CJSym0, COSym0, CRSym0]- type MajorNameSym0 = MajorName- type GradingSchema =- Apply SchSym0 '[Apply (Apply AttrSym0 LastNameSym0) STRINGSym0,- Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0,- Apply (Apply AttrSym0 YearNameSym0) NATSym0,- Apply (Apply AttrSym0 GradeNameSym0) NATSym0,- Apply (Apply AttrSym0 MajorNameSym0) BOOLSym0]- type GradingSchemaSym0 = GradingSchema- type Names =- Apply SchSym0 '[Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0,- Apply (Apply AttrSym0 LastNameSym0) STRINGSym0]- type NamesSym0 = Names- sLastName :: Sing LastName- sMajorName :: Sing MajorName- sGradeName :: Sing GradeName- sYearName :: Sing YearName- sFirstName :: Sing FirstName- sLastName = SCons SCL (SCons SCA (SCons SCS (SCons SCT SNil)))- sFirstName- = SCons SCF (SCons SCI (SCons SCR (SCons SCS (SCons SCT SNil))))- sYearName = SCons SCY (SCons SCE (SCons SCA (SCons SCR SNil)))- sGradeName- = SCons SCG (SCons SCR (SCons SCA (SCons SCD (SCons SCE SNil))))- sMajorName- = SCons SCM (SCons SCA (SCons SCJ (SCons SCO (SCons SCR SNil))))- sGradingSchema :: Sing GradingSchema- sGradingSchema- = SSch- (SCons- (SAttr sLastName SSTRING)- (SCons- (SAttr sFirstName SSTRING)- (SCons- (SAttr sYearName SNAT)- (SCons- (SAttr sGradeName SNAT) (SCons (SAttr sMajorName SBOOL) SNil)))))- sNames :: Sing Names- sNames- = SSch- (SCons- (SAttr sFirstName SSTRING) (SCons (SAttr sLastName SSTRING) SNil))
tests/compile-and-dump/GradingClient/Main.ghc78.template view
@@ -40,19 +40,19 @@ type GradingSchemaSym0 = GradingSchema type NamesSym0 = Names type MajorName =- (Apply (Apply (:$) CMSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CJSym0) (Apply (Apply (:$) COSym0) (Apply (Apply (:$) CRSym0) GHC.Types.[])))) :: GHC.Types.[] AChar)+ (Apply (Apply (:$) CMSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CJSym0) (Apply (Apply (:$) COSym0) (Apply (Apply (:$) CRSym0) '[])))) :: [AChar]) type GradeName =- (Apply (Apply (:$) CGSym0) (Apply (Apply (:$) CRSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CDSym0) (Apply (Apply (:$) CESym0) GHC.Types.[])))) :: GHC.Types.[] AChar)+ (Apply (Apply (:$) CGSym0) (Apply (Apply (:$) CRSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CDSym0) (Apply (Apply (:$) CESym0) '[])))) :: [AChar]) type YearName =- (Apply (Apply (:$) CYSym0) (Apply (Apply (:$) CESym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CRSym0) GHC.Types.[]))) :: GHC.Types.[] AChar)+ (Apply (Apply (:$) CYSym0) (Apply (Apply (:$) CESym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CRSym0) '[]))) :: [AChar]) type FirstName =- (Apply (Apply (:$) CFSym0) (Apply (Apply (:$) CISym0) (Apply (Apply (:$) CRSym0) (Apply (Apply (:$) CSSym0) (Apply (Apply (:$) CTSym0) GHC.Types.[])))) :: GHC.Types.[] AChar)+ (Apply (Apply (:$) CFSym0) (Apply (Apply (:$) CISym0) (Apply (Apply (:$) CRSym0) (Apply (Apply (:$) CSSym0) (Apply (Apply (:$) CTSym0) '[])))) :: [AChar]) type LastName =- (Apply (Apply (:$) CLSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CSSym0) (Apply (Apply (:$) CTSym0) GHC.Types.[]))) :: GHC.Types.[] AChar)+ (Apply (Apply (:$) CLSym0) (Apply (Apply (:$) CASym0) (Apply (Apply (:$) CSSym0) (Apply (Apply (:$) CTSym0) '[]))) :: [AChar]) type GradingSchema =- (Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 LastNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 YearNameSym0) NATSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 GradeNameSym0) NATSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 MajorNameSym0) BOOLSym0)) GHC.Types.[]))))) :: Schema)+ (Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 LastNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 YearNameSym0) NATSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 GradeNameSym0) NATSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 MajorNameSym0) BOOLSym0)) '[]))))) :: Schema) type Names =- (Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 LastNameSym0) STRINGSym0)) GHC.Types.[])) :: Schema)+ (Apply SchSym0 (Apply (Apply (:$) (Apply (Apply AttrSym0 FirstNameSym0) STRINGSym0)) (Apply (Apply (:$) (Apply (Apply AttrSym0 LastNameSym0) STRINGSym0)) '[])) :: Schema) sMajorName :: Sing MajorNameSym0 sGradeName :: Sing GradeNameSym0 sYearName :: Sing YearNameSym0
− tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc76.template
@@ -1,92 +0,0 @@-InsertionSort/InsertionSortImp.hs:0:0: Splicing declarations- singletons [d| data Nat = Zero | Succ Nat |]- ======>- InsertionSort/InsertionSortImp.hs:(0,0)-(0,0)- data Nat = Zero | Succ Nat- type NatTyCtor = Nat- type NatTyCtorSym0 = NatTyCtor- type ZeroSym0 = Zero- data SuccSym0 (k :: TyFun Nat Nat)- type instance Apply SuccSym0 a = Succ a- data instance Sing (z :: Nat)- = z ~ Zero => SZero |- forall (n :: Nat). z ~ Succ n => SSucc (Sing n)- type SNat (z :: Nat) = Sing z- instance SingKind (KProxy :: KProxy Nat) where- type instance DemoteRep (KProxy :: KProxy Nat) = Nat- fromSing SZero = Zero- fromSing (SSucc b) = Succ (fromSing b)- toSing Zero = SomeSing SZero- toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {- SomeSing c -> SomeSing (SSucc c) }- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing-InsertionSort/InsertionSortImp.hs:0:0: Splicing declarations- singletons- [d| leq :: Nat -> Nat -> Bool- leq Zero _ = True- leq (Succ _) Zero = False- leq (Succ a) (Succ b) = leq a b- insert :: Nat -> [Nat] -> [Nat]- insert n [] = [n]- insert n (h : t)- = if leq n h then (n : h : t) else h : (insert n t)- insertionSort :: [Nat] -> [Nat]- insertionSort [] = []- insertionSort (h : t) = insert h (insertionSort t) |]- ======>- InsertionSort/InsertionSortImp.hs:(0,0)-(0,0)- leq :: Nat -> Nat -> Bool- leq Zero _ = True- leq (Succ _) Zero = False- leq (Succ a) (Succ b) = leq a b- insert :: Nat -> [Nat] -> [Nat]- insert n GHC.Types.[] = [n]- insert n (h GHC.Types.: t)- = if leq n h then- (n GHC.Types.: (h GHC.Types.: t))- else- (h GHC.Types.: (insert n t))- insertionSort :: [Nat] -> [Nat]- insertionSort GHC.Types.[] = GHC.Types.[]- insertionSort (h GHC.Types.: t) = insert h (insertionSort t)- type family Leq (a :: Nat) (a :: Nat) :: Bool- type instance Leq Zero z = TrueSym0- type instance Leq (Succ z) Zero = FalseSym0- type instance Leq (Succ a) (Succ b) = Apply (Apply LeqSym0 a) b- data LeqSym1 (l :: Nat) (l :: TyFun Nat Bool)- data LeqSym0 (k :: TyFun Nat (TyFun Nat Bool -> *))- type instance Apply (LeqSym1 a) a = Leq a a- type instance Apply LeqSym0 a = LeqSym1 a- type family Insert (a :: Nat) (a :: [Nat]) :: [Nat]- type instance Insert n GHC.Types.[] = '[n]- type instance Insert n (GHC.Types.: h t) =- If (Apply (Apply LeqSym0 n) h) (Apply (Apply :$ n) (Apply (Apply :$ h) t)) (Apply (Apply :$ h) (Apply (Apply InsertSym0 n) t))- data InsertSym1 (l :: Nat) (l :: TyFun [Nat] [Nat])- data InsertSym0 (k :: TyFun Nat (TyFun [Nat] [Nat] -> *))- type instance Apply (InsertSym1 a) a = Insert a a- type instance Apply InsertSym0 a = InsertSym1 a- type family InsertionSort (a :: [Nat]) :: [Nat]- type instance InsertionSort GHC.Types.[] = GHC.Types.[]- type instance InsertionSort (GHC.Types.: h t) =- Apply (Apply InsertSym0 h) (Apply InsertionSortSym0 t)- data InsertionSortSym0 (k :: TyFun [Nat] [Nat])- type instance Apply InsertionSortSym0 a = InsertionSort a- sLeq ::- forall (t :: Nat) (t :: Nat). Sing t -> Sing t -> Sing (Leq t t)- sLeq SZero _ = STrue- sLeq (SSucc _) SZero = SFalse- sLeq (SSucc a) (SSucc b) = sLeq a b- sInsert ::- forall (t :: Nat) (t :: [Nat]).- Sing t -> Sing t -> Sing (Insert t t)- sInsert n SNil = SCons n SNil- sInsert n (SCons h t)- = sIf (sLeq n h) (SCons n (SCons h t)) (SCons h (sInsert n t))- sInsertionSort ::- forall (t :: [Nat]). Sing t -> Sing (InsertionSort t)- sInsertionSort SNil = SNil- sInsertionSort (SCons h t) = sInsert h (sInsertionSort t)
tests/compile-and-dump/InsertionSort/InsertionSortImp.ghc78.template view
@@ -106,28 +106,26 @@ = forall arg. KindOf (Apply LeqSym0 arg) ~ KindOf (LeqSym1 arg) => LeqSym0KindInference type instance Apply LeqSym0 l = LeqSym1 l- type InsertSym2 (t :: Nat) (t :: GHC.Types.[] Nat) = Insert t t+ type InsertSym2 (t :: Nat) (t :: [Nat]) = Insert t t instance SuppressUnusedWarnings InsertSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) InsertSym1KindInference GHC.Tuple.())- data InsertSym1 (l :: Nat)- (l :: TyFun (GHC.Types.[] Nat) (GHC.Types.[] Nat))+ data InsertSym1 (l :: Nat) (l :: TyFun [Nat] [Nat]) = forall arg. KindOf (Apply (InsertSym1 l) arg) ~ KindOf (InsertSym2 l arg) => InsertSym1KindInference type instance Apply (InsertSym1 l) l = InsertSym2 l l instance SuppressUnusedWarnings InsertSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) InsertSym0KindInference GHC.Tuple.())- data InsertSym0 (l :: TyFun Nat (TyFun (GHC.Types.[] Nat) (GHC.Types.[] Nat)- -> *))+ data InsertSym0 (l :: TyFun Nat (TyFun [Nat] [Nat] -> *)) = forall arg. KindOf (Apply InsertSym0 arg) ~ KindOf (InsertSym1 arg) => InsertSym0KindInference type instance Apply InsertSym0 l = InsertSym1 l- type InsertionSortSym1 (t :: GHC.Types.[] Nat) = InsertionSort t+ type InsertionSortSym1 (t :: [Nat]) = InsertionSort t instance SuppressUnusedWarnings InsertionSortSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) InsertionSortSym0KindInference GHC.Tuple.())- data InsertionSortSym0 (l :: TyFun (GHC.Types.[] Nat) (GHC.Types.[] Nat))+ data InsertionSortSym0 (l :: TyFun [Nat] [Nat]) = forall arg. KindOf (Apply InsertionSortSym0 arg) ~ KindOf (InsertionSortSym1 arg) => InsertionSortSym0KindInference type instance Apply InsertionSortSym0 l = InsertionSortSym1 l@@ -135,22 +133,20 @@ Leq Zero z = TrueSym0 Leq (Succ z) Zero = FalseSym0 Leq (Succ a) (Succ b) = Apply (Apply LeqSym0 a) b- type family Insert (a :: Nat)- (a :: GHC.Types.[] Nat) :: GHC.Types.[] Nat where- Insert n GHC.Types.[] = Apply (Apply (:$) n) GHC.Types.[]- Insert n ((GHC.Types.:) h t) = Case_0123456789 n h t (Let_0123456789Scrutinee_0123456789Sym3 n h t)- type family InsertionSort (a :: GHC.Types.[] Nat) :: GHC.Types.[] Nat where- InsertionSort GHC.Types.[] = GHC.Types.[]- InsertionSort ((GHC.Types.:) h t) = Apply (Apply InsertSym0 h) (Apply InsertionSortSym0 t)+ type family Insert (a :: Nat) (a :: [Nat]) :: [Nat] where+ Insert n '[] = Apply (Apply (:$) n) '[]+ Insert n ((:) h t) = Case_0123456789 n h t (Let_0123456789Scrutinee_0123456789Sym3 n h t)+ type family InsertionSort (a :: [Nat]) :: [Nat] where+ InsertionSort '[] = '[]+ InsertionSort ((:) h t) = Apply (Apply InsertSym0 h) (Apply InsertionSortSym0 t) sLeq :: forall (t :: Nat) (t :: Nat). Sing t -> Sing t -> Sing (Apply (Apply LeqSym0 t) t) sInsert ::- forall (t :: Nat) (t :: GHC.Types.[] Nat).+ forall (t :: Nat) (t :: [Nat]). Sing t -> Sing t -> Sing (Apply (Apply InsertSym0 t) t) sInsertionSort ::- forall (t :: GHC.Types.[] Nat).- Sing t -> Sing (Apply InsertionSortSym0 t)+ forall (t :: [Nat]). Sing t -> Sing (Apply InsertionSortSym0 t) sLeq SZero _ = let lambda ::@@ -179,8 +175,8 @@ sInsert sN SNil = let lambda ::- forall n. (t ~ n, t ~ GHC.Types.[]) =>- Sing n -> Sing (Apply (Apply InsertSym0 n) GHC.Types.[])+ forall n. (t ~ n, t ~ '[]) =>+ Sing n -> Sing (Apply (Apply InsertSym0 n) '[]) lambda n = applySing (applySing (singFun2 (Proxy :: Proxy (:$)) SCons) n) SNil@@ -222,8 +218,7 @@ in lambda sN sH sT sInsertionSort SNil = let- lambda ::- t ~ GHC.Types.[] => Sing (Apply InsertionSortSym0 GHC.Types.[])+ lambda :: t ~ '[] => Sing (Apply InsertionSortSym0 '[]) lambda = SNil in lambda sInsertionSort (SCons sH sT)
− tests/compile-and-dump/Promote/Classes.ghc76.template
tests/compile-and-dump/Promote/Classes.ghc78.template view
@@ -119,8 +119,8 @@ type Mycompare (Zero :: Nat) (Succ z :: Nat) = (LTSym0 :: Ordering) type Mycompare (Succ z :: Nat) (Zero :: Nat) = (GTSym0 :: Ordering) type Mycompare (Succ n :: Nat) (Succ m :: Nat) = (Apply (Apply MycompareSym0 m) n :: Ordering)- instance PMyOrd (KProxy :: KProxy GHC.Tuple.()) where- type Mycompare (z :: GHC.Tuple.()) (a_0123456789 :: GHC.Tuple.()) = (Apply (Apply ConstSym0 EQSym0) a_0123456789 :: Ordering)+ instance PMyOrd (KProxy :: KProxy ()) where+ type Mycompare (z :: ()) (a_0123456789 :: ()) = (Apply (Apply ConstSym0 EQSym0) a_0123456789 :: Ordering) instance PMyOrd (KProxy :: KProxy Foo) where type Mycompare (a_0123456789 :: Foo) (a_0123456789 :: Foo) = (Apply (Apply FooCompareSym0 a_0123456789) a_0123456789 :: Ordering) type ASym0 = A
− tests/compile-and-dump/Promote/Constructors.ghc76.template
@@ -1,42 +0,0 @@-Promote/Constructors.hs:0:0: Splicing declarations- promote- [d| data Foo = Foo | Foo :+ Foo- data Bar = Bar Bar Bar Bar Bar Foo |]- ======>- Promote/Constructors.hs:(0,0)-(0,0)- data Foo = Foo | Foo :+ Foo- data Bar = Bar Bar Bar Bar Bar Foo- type FooTyCtor = Foo- type FooTyCtorSym0 = FooTyCtor- type FooSym0 = Foo- data (:+$$) (l :: Foo) (l :: TyFun Foo Foo)- data (:+$) (k :: TyFun Foo (TyFun Foo Foo -> *))- type instance Apply (:+$$ a) a = :+ a a- type instance Apply :+$ a = :+$$ a- type BarTyCtor = Bar- type BarTyCtorSym0 = BarTyCtor- data BarSym4 (l :: Bar)- (l :: Bar)- (l :: Bar)- (l :: Bar)- (l :: TyFun Foo Bar)- data BarSym3 (l :: Bar)- (l :: Bar)- (l :: Bar)- (l :: TyFun Bar (TyFun Foo Bar -> *))- data BarSym2 (l :: Bar)- (l :: Bar)- (l :: TyFun Bar (TyFun Bar (TyFun Foo Bar -> *) -> *))- data BarSym1 (l :: Bar)- (l :: TyFun Bar (TyFun Bar (TyFun Bar (TyFun Foo Bar -> *) -> *)- -> *))- data BarSym0 (k :: TyFun Bar (TyFun Bar (TyFun Bar (TyFun Bar (TyFun Foo Bar- -> *)- -> *)- -> *)- -> *))- type instance Apply (BarSym4 a a a a) a = Bar a a a a a- type instance Apply (BarSym3 a a a) a = BarSym4 a a a a- type instance Apply (BarSym2 a a) a = BarSym3 a a a- type instance Apply (BarSym1 a) a = BarSym2 a a- type instance Apply BarSym0 a = BarSym1 a
− tests/compile-and-dump/Promote/GenDefunSymbols.ghc76.template
@@ -1,15 +0,0 @@-Promote/GenDefunSymbols.hs:0:0: Splicing declarations- genDefunSymbols [''LiftMaybe, ''Nat]- ======>- Promote/GenDefunSymbols.hs:0:0:- data LiftMaybeSym1 (l :: TyFun a b -> *)- (l :: TyFun (Maybe a) (Maybe b))- data LiftMaybeSym0 (k :: TyFun (TyFun a b- -> *) (TyFun (Maybe a) (Maybe b) -> *))- type instance Apply (LiftMaybeSym1 a) a = LiftMaybe a a- type instance Apply LiftMaybeSym0 a = LiftMaybeSym1 a- type NatTyCtor = Nat- type NatTyCtorSym0 = NatTyCtor- type ZeroSym0 = Zero- data SuccSym0 (k :: TyFun Nat Nat)- type instance Apply SuccSym0 a = Succ a
− tests/compile-and-dump/Promote/Newtypes.ghc76.template
@@ -1,2 +0,0 @@-Promote/Newtypes.hs:0:0:- Newtypes don't promote under GHC 7.6. Use <<data>> instead or upgrade GHC.
tests/compile-and-dump/Promote/TopLevelPatterns.ghc78.template view
@@ -38,21 +38,21 @@ m :: Bool [l, m] = [not True, id False] type family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 ((GHC.Types.:) y_0123456789 ((GHC.Types.:) z GHC.Types.[])) = y_0123456789+ Case_0123456789 a_0123456789 '[y_0123456789, z] = y_0123456789 type family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 ((GHC.Types.:) z ((GHC.Types.:) y_0123456789 GHC.Types.[])) = y_0123456789+ Case_0123456789 a_0123456789 '[z, y_0123456789] = y_0123456789 type family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 (GHC.Tuple.(,) y_0123456789 z) = y_0123456789+ Case_0123456789 a_0123456789 '(y_0123456789, z) = y_0123456789 type family Case_0123456789 a_0123456789 t where- Case_0123456789 a_0123456789 (GHC.Tuple.(,) z y_0123456789) = y_0123456789+ Case_0123456789 a_0123456789 '(z, y_0123456789) = y_0123456789 type family Case_0123456789 t where Case_0123456789 (Bar y_0123456789 z) = y_0123456789 type family Case_0123456789 t where Case_0123456789 (Bar z y_0123456789) = y_0123456789 type family Case_0123456789 t where- Case_0123456789 ((GHC.Types.:) y_0123456789 ((GHC.Types.:) z GHC.Types.[])) = y_0123456789+ Case_0123456789 '[y_0123456789, z] = y_0123456789 type family Case_0123456789 t where- Case_0123456789 ((GHC.Types.:) z ((GHC.Types.:) y_0123456789 GHC.Types.[])) = y_0123456789+ Case_0123456789 '[z, y_0123456789] = y_0123456789 type NotSym1 (t :: Bool) = Not t instance SuppressUnusedWarnings NotSym0 where suppressUnusedWarnings _@@ -127,12 +127,12 @@ type L = (Case_0123456789 X_0123456789Sym0 :: Bool) type M = (Case_0123456789 X_0123456789Sym0 :: Bool) type X_0123456789 =- Apply (Apply (:$) NotSym0) (Apply (Apply (:$) IdSym0) GHC.Types.[])+ Apply (Apply (:$) NotSym0) (Apply (Apply (:$) IdSym0) '[]) type X_0123456789 = Apply (Apply Tuple2Sym0 FSym0) GSym0 type X_0123456789 = Apply (Apply BarSym0 TrueSym0) (Apply HSym0 FalseSym0) type X_0123456789 =- Apply (Apply (:$) (Apply NotSym0 TrueSym0)) (Apply (Apply (:$) (Apply IdSym0 FalseSym0)) GHC.Types.[])+ Apply (Apply (:$) (Apply NotSym0 TrueSym0)) (Apply (Apply (:$) (Apply IdSym0 FalseSym0)) '[]) type FalseSym0 = False type TrueSym0 = True type BarSym2 (t :: Bool) (t :: Bool) = Bar t t
− tests/compile-and-dump/Singletons/AsPattern.ghc76.template
@@ -1,104 +0,0 @@-Singletons/AtPattern.hs:0:0: Splicing declarations- singletons- [d| maybePlus :: Maybe Nat -> Maybe Nat- maybePlus (Just n) = Just (plus (Succ Zero) n)- maybePlus p@Nothing = p- bar :: Maybe Nat -> Maybe Nat- bar x@(Just _) = x- bar Nothing = Nothing- baz_ :: Maybe Baz -> Maybe Baz- baz_ p@Nothing = p- baz_ p@(Just (Baz _ _ _)) = p- tup :: (Nat, Nat) -> (Nat, Nat)- tup p@(_, _) = p- foo :: [Nat] -> [Nat]- foo p@[] = p- foo p@[_] = p- foo p@(_ : _) = p- - data Baz = Baz Nat Nat Nat |]- ======>- Singletons/AtPattern.hs:(0,0)-(0,0)- maybePlus :: Maybe Nat -> Maybe Nat- maybePlus (Just n) = Just (plus (Succ Zero) n)- maybePlus p@Nothing = p- bar :: Maybe Nat -> Maybe Nat- bar x@(Just _) = x- bar Nothing = Nothing- data Baz = Baz Nat Nat Nat- baz_ :: Maybe Baz -> Maybe Baz- baz_ p@Nothing = p- baz_ p@(Just (Baz _ _ _)) = p- tup :: (Nat, Nat) -> (Nat, Nat)- tup p@(_, _) = p- foo :: [Nat] -> [Nat]- foo p@GHC.Types.[] = p- foo p@[_] = p- foo p@(_ GHC.Types.: _) = p- type BazTyCtor = Baz- type BazTyCtorSym0 = BazTyCtor- data BazSym2 (l :: Nat) (l :: Nat) (l :: TyFun Nat Baz)- data BazSym1 (l :: Nat) (l :: TyFun Nat (TyFun Nat Baz -> *))- data BazSym0 (k :: TyFun Nat (TyFun Nat (TyFun Nat Baz -> *) -> *))- type instance Apply (BazSym2 a a) a = Baz a a a- type instance Apply (BazSym1 a) a = BazSym2 a a- type instance Apply BazSym0 a = BazSym1 a- type family MaybePlus (a :: Maybe Nat) :: Maybe Nat- type instance MaybePlus (Just n) =- Apply JustSym0 (Apply (Apply PlusSym0 (Apply SuccSym0 ZeroSym0)) n)- type instance MaybePlus Nothing = NothingSym0- data MaybePlusSym0 (k :: TyFun (Maybe Nat) (Maybe Nat))- type instance Apply MaybePlusSym0 a = MaybePlus a- type family Bar (a :: Maybe Nat) :: Maybe Nat- type instance Bar (Just z) = Apply JustSym0 z- type instance Bar Nothing = NothingSym0- data BarSym0 (k :: TyFun (Maybe Nat) (Maybe Nat))- type instance Apply BarSym0 a = Bar a- type family Baz_ (a :: Maybe Baz) :: Maybe Baz- type instance Baz_ Nothing = NothingSym0- type instance Baz_ (Just (Baz z z z)) =- Apply JustSym0 (Apply (Apply (Apply BazSym0 z) z) z)- data Baz_Sym0 (k :: TyFun (Maybe Baz) (Maybe Baz))- type instance Apply Baz_Sym0 a = Baz_ a- type family Tup (a :: (Nat, Nat)) :: (Nat, Nat)- type instance Tup '(z, z) = Apply (Apply Tuple2Sym0 z) z- data TupSym0 (k :: TyFun (Nat, Nat) (Nat, Nat))- type instance Apply TupSym0 a = Tup a- type family Foo (a :: [Nat]) :: [Nat]- type instance Foo GHC.Types.[] = GHC.Types.[]- type instance Foo '[z] = Apply (Apply :$ z) GHC.Types.[]- type instance Foo (GHC.Types.: z z) = Apply (Apply :$ z) z- data FooSym0 (k :: TyFun [Nat] [Nat])- type instance Apply FooSym0 a = Foo a- sMaybePlus :: forall (t :: Maybe Nat). Sing t -> Sing (MaybePlus t)- sMaybePlus (SJust n) = SJust (sPlus (SSucc SZero) n)- sMaybePlus p@SNothing = p- sBar :: forall (t :: Maybe Nat). Sing t -> Sing (Bar t)- sBar x@(SJust _) = x- sBar SNothing = SNothing- data instance Sing (z :: Baz)- = forall (n :: Nat) (n :: Nat) (n :: Nat). z ~ Baz n n n =>- SBaz (Sing n) (Sing n) (Sing n)- type SBaz (z :: Baz) = Sing z- instance SingKind (KProxy :: KProxy Baz) where- type instance DemoteRep (KProxy :: KProxy Baz) = Baz- fromSing (SBaz b b b) = Baz (fromSing b) (fromSing b) (fromSing b)- toSing (Baz b b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy Nat), - toSing b :: SomeSing (KProxy :: KProxy Nat), - toSing b :: SomeSing (KProxy :: KProxy Nat))- of {- (SomeSing c, SomeSing c, SomeSing 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- sBaz_ :: forall (t :: Maybe Baz). Sing t -> Sing (Baz_ t)- sBaz_ p@SNothing = p- sBaz_ p@(SJust (SBaz _ _ _)) = p- sTup :: forall (t :: (Nat, Nat)). Sing t -> Sing (Tup t)- sTup p@(STuple2 _ _) = p- sFoo :: forall (t :: [Nat]). Sing t -> Sing (Foo t)- sFoo p@SNil = p- sFoo p@(SCons _ SNil) = p- sFoo p@(SCons _ _) = p
tests/compile-and-dump/Singletons/AsPattern.ghc78.template view
@@ -58,7 +58,7 @@ BazSym0KindInference type instance Apply BazSym0 l = BazSym1 l type Let_0123456789PSym0 = Let_0123456789P- type Let_0123456789P = GHC.Types.[]+ type Let_0123456789P = '[] type Let_0123456789PSym1 t = Let_0123456789P t instance SuppressUnusedWarnings Let_0123456789PSym0 where suppressUnusedWarnings _@@ -68,7 +68,7 @@ Let_0123456789PSym0KindInference type instance Apply Let_0123456789PSym0 l = Let_0123456789PSym1 l type Let_0123456789P wild_0123456789 =- Apply (Apply (:$) wild_0123456789) GHC.Types.[]+ Apply (Apply (:$) wild_0123456789) '[] type Let_0123456789PSym2 t t = Let_0123456789P t t instance SuppressUnusedWarnings Let_0123456789PSym1 where suppressUnusedWarnings _@@ -143,19 +143,19 @@ Apply JustSym0 wild_0123456789 type Let_0123456789PSym0 = Let_0123456789P type Let_0123456789P = NothingSym0- type FooSym1 (t :: GHC.Types.[] Nat) = Foo t+ type FooSym1 (t :: [Nat]) = Foo t instance SuppressUnusedWarnings FooSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun (GHC.Types.[] Nat) (GHC.Types.[] Nat))+ data FooSym0 (l :: TyFun [Nat] [Nat]) = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) => FooSym0KindInference type instance Apply FooSym0 l = FooSym1 l- type TupSym1 (t :: GHC.Tuple.(,) Nat Nat) = Tup t+ type TupSym1 (t :: (Nat, Nat)) = Tup t instance SuppressUnusedWarnings TupSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) TupSym0KindInference GHC.Tuple.())- data TupSym0 (l :: TyFun (GHC.Tuple.(,) Nat Nat) (GHC.Tuple.(,) Nat Nat))+ data TupSym0 (l :: TyFun (Nat, Nat) (Nat, Nat)) = forall arg. KindOf (Apply TupSym0 arg) ~ KindOf (TupSym1 arg) => TupSym0KindInference type instance Apply TupSym0 l = TupSym1 l@@ -183,12 +183,13 @@ = forall arg. KindOf (Apply MaybePlusSym0 arg) ~ KindOf (MaybePlusSym1 arg) => MaybePlusSym0KindInference type instance Apply MaybePlusSym0 l = MaybePlusSym1 l- type family Foo (a :: GHC.Types.[] Nat) :: GHC.Types.[] Nat where- Foo GHC.Types.[] = Let_0123456789PSym0- Foo ((GHC.Types.:) wild_0123456789 GHC.Types.[]) = Let_0123456789PSym1 wild_0123456789- Foo ((GHC.Types.:) wild_0123456789 wild_0123456789) = Let_0123456789PSym2 wild_0123456789 wild_0123456789- type family Tup (a :: GHC.Tuple.(,) Nat Nat) :: GHC.Tuple.(,) Nat Nat where- Tup (GHC.Tuple.(,) wild_0123456789 wild_0123456789) = Let_0123456789PSym2 wild_0123456789 wild_0123456789+ type family Foo (a :: [Nat]) :: [Nat] where+ Foo '[] = Let_0123456789PSym0+ Foo '[wild_0123456789] = Let_0123456789PSym1 wild_0123456789+ Foo ((:) wild_0123456789 wild_0123456789) = Let_0123456789PSym2 wild_0123456789 wild_0123456789+ type family Tup (a :: (Nat, Nat)) :: (Nat, Nat) where+ Tup '(wild_0123456789,+ wild_0123456789) = Let_0123456789PSym2 wild_0123456789 wild_0123456789 type family Baz_ (a :: Maybe Baz) :: Maybe Baz where Baz_ Nothing = Let_0123456789PSym0 Baz_ (Just (Baz wild_0123456789 wild_0123456789 wild_0123456789)) = Let_0123456789PSym3 wild_0123456789 wild_0123456789 wild_0123456789@@ -198,18 +199,15 @@ type family MaybePlus (a :: Maybe Nat) :: Maybe Nat where MaybePlus (Just n) = Apply JustSym0 (Apply (Apply PlusSym0 (Apply SuccSym0 ZeroSym0)) n) MaybePlus Nothing = Let_0123456789PSym0- sFoo ::- forall (t :: GHC.Types.[] Nat). Sing t -> Sing (Apply FooSym0 t)- sTup ::- forall (t :: GHC.Tuple.(,) Nat Nat).- Sing t -> Sing (Apply TupSym0 t)+ sFoo :: forall (t :: [Nat]). Sing t -> Sing (Apply FooSym0 t)+ sTup :: forall (t :: (Nat, Nat)). Sing t -> Sing (Apply TupSym0 t) sBaz_ :: forall (t :: Maybe Baz). Sing t -> Sing (Apply Baz_Sym0 t) sBar :: forall (t :: Maybe Nat). Sing t -> Sing (Apply BarSym0 t) sMaybePlus :: forall (t :: Maybe Nat). Sing t -> Sing (Apply MaybePlusSym0 t) sFoo SNil = let- lambda :: t ~ GHC.Types.[] => Sing (Apply FooSym0 GHC.Types.[])+ lambda :: t ~ '[] => Sing (Apply FooSym0 '[]) lambda = let sP :: Sing Let_0123456789PSym0@@ -219,9 +217,9 @@ sFoo (SCons sWild_0123456789 SNil) = let lambda ::- forall wild_0123456789. t ~ Apply (Apply (:$) wild_0123456789) GHC.Types.[] =>+ forall wild_0123456789. t ~ Apply (Apply (:$) wild_0123456789) '[] => Sing wild_0123456789- -> Sing (Apply FooSym0 (Apply (Apply (:$) wild_0123456789) GHC.Types.[]))+ -> Sing (Apply FooSym0 (Apply (Apply (:$) wild_0123456789) '[])) lambda wild_0123456789 = let sP :: Sing (Let_0123456789PSym1 wild_0123456789)
− tests/compile-and-dump/Singletons/BoxUnBox.ghc76.template
@@ -1,35 +0,0 @@-Singletons/BoxUnBox.hs:0:0: Splicing declarations- singletons- [d| unBox :: Box a -> a- unBox (FBox a) = a- - data Box a = FBox a |]- ======>- Singletons/BoxUnBox.hs:(0,0)-(0,0)- data Box a = FBox a- unBox :: forall a. Box a -> a- unBox (FBox a) = a- type BoxTyCtor = Box- data BoxTyCtorSym0 (k :: TyFun * *)- type instance Apply BoxTyCtorSym0 a = BoxTyCtor a- data FBoxSym0 (k :: TyFun a (Box a))- type instance Apply FBoxSym0 a = FBox a- type family UnBox (a :: Box a) :: a- type instance UnBox (FBox a) = a- data UnBoxSym0 (k :: TyFun (Box a) a)- type instance Apply UnBoxSym0 a = UnBox a- data instance Sing (z :: Box a)- = forall (n :: a). z ~ FBox n => SFBox (Sing n)- type SBox (z :: Box a) = Sing z- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Box a)) where- type instance DemoteRep (KProxy :: KProxy (Box a)) =- Box (DemoteRep (KProxy :: KProxy a))- fromSing (SFBox b) = FBox (fromSing b)- toSing (FBox b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {- SomeSing c -> SomeSing (SFBox c) }- instance SingI n => SingI (FBox (n :: a)) where- sing = SFBox sing- sUnBox :: forall (t :: Box a). Sing t -> Sing (UnBox t)- sUnBox (SFBox a) = a
− tests/compile-and-dump/Singletons/CaseExpressions.ghc76.template
@@ -1,97 +0,0 @@-Promote/CaseExpressions.hs:0:0: Splicing declarations- promote- [d| foo1 :: a -> Maybe a -> a- foo1 d x- = case x of {- Just y -> y- Nothing -> d }- foo2 :: a -> Maybe a -> a- foo2 d _- = case (Just d) of {- Just y -> y- Nothing -> d }- foo3 :: a -> b -> a- foo3 a b = case (a, b) of { (p, _) -> p }- foo4 :: forall a. a -> a- foo4 x- = case x of {- y -> let- z :: a- z = y- in z }- foo5 :: a -> a- foo5 x = case x of { y -> (\ _ -> x) y } |]- ======>- Promote/CaseExpressions.hs:(0,0)-(0,0)- foo1 :: forall a. a -> Maybe a -> a- foo1 d x- = case x of {- Just y -> y- Nothing -> d }- foo2 :: forall a. a -> Maybe a -> a- foo2 d _- = case Just d of {- Just y -> y- Nothing -> d }- foo3 :: forall a b. a -> b -> a- foo3 a b = case (a, b) of { (p, _) -> p }- foo4 :: forall a. a -> a- foo4 x- = case x of {- y -> let- z :: a- z = y- in z }- foo5 :: forall a. a -> a- foo5 x = case x of { y -> \ _ -> x y }- type family Case_0123456789 (t :: k) (d :: d) (x :: x) :: r- type instance Case_0123456789 (Just y) d x = y- type instance Case_0123456789 Nothing d x = d- type family Case_0123456789 (t :: k) (d :: d) :: r- type instance Case_0123456789 (Just y) d = y- type instance Case_0123456789 Nothing d = d- type family Case_0123456789 (t :: k) (a :: a) (b :: b) :: r- type instance Case_0123456789 '(p, z) a b = p- type family Let_0123456789z (a :: x) (a :: y) :: a- type instance Let_0123456789z x y = y- data Let_0123456789zSym1 (l :: x) (l :: TyFun y a)- data Let_0123456789zSym0 (k :: TyFun x (TyFun y a -> *))- type instance Apply (Let_0123456789zSym1 a) a = Let_0123456789z a a- type instance Apply Let_0123456789zSym0 a = Let_0123456789zSym1 a- type family Case_0123456789 (t :: k) (x :: x) :: r- type instance Case_0123456789 y x =- Apply (Apply Let_0123456789zSym0 x) y- type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r- type instance Lambda_0123456789 x y z = x- data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type family Case_0123456789 (t :: k) (x :: x) :: r- type instance Case_0123456789 y x =- Apply (Lambda_0123456789Sym2 x y) y- type family Foo1 (a :: a) (a :: Maybe a) :: a- type instance Foo1 d x = Case_0123456789 x d x- data Foo1Sym1 (l :: a) (l :: TyFun (Maybe a) a)- data Foo1Sym0 (k :: TyFun a (TyFun (Maybe a) a -> *))- type instance Apply (Foo1Sym1 a) a = Foo1 a a- type instance Apply Foo1Sym0 a = Foo1Sym1 a- type family Foo2 (a :: a) (a :: Maybe a) :: a- type instance Foo2 d z = Case_0123456789 (Apply JustSym0 d) d- data Foo2Sym1 (l :: a) (l :: TyFun (Maybe a) a)- data Foo2Sym0 (k :: TyFun a (TyFun (Maybe a) a -> *))- type instance Apply (Foo2Sym1 a) a = Foo2 a a- type instance Apply Foo2Sym0 a = Foo2Sym1 a- type family Foo3 (a :: a) (a :: b) :: a- type instance Foo3 a b = Case_0123456789 '(a, b) a b- data Foo3Sym1 (l :: a) (l :: TyFun b a)- data Foo3Sym0 (k :: TyFun a (TyFun b a -> *))- type instance Apply (Foo3Sym1 a) a = Foo3 a a- type instance Apply Foo3Sym0 a = Foo3Sym1 a- type family Foo4 (a :: a) :: a- type instance Foo4 x = Case_0123456789 x x- data Foo4Sym0 (k :: TyFun a a)- type instance Apply Foo4Sym0 a = Foo4 a- type family Foo5 (a :: a) :: a- type instance Foo5 x = Case_0123456789 x x- data Foo5Sym0 (k :: TyFun a a)- type instance Apply Foo5Sym0 a = Foo5 a
tests/compile-and-dump/Singletons/CaseExpressions.ghc78.template view
@@ -134,7 +134,7 @@ type Let_0123456789Scrutinee_0123456789 a b = Apply (Apply Tuple2Sym0 a) b type family Case_0123456789 a b t where- Case_0123456789 a b (GHC.Tuple.(,) p z) = p+ Case_0123456789 a b '(p, z) = p type Let_0123456789Scrutinee_0123456789Sym1 t = Let_0123456789Scrutinee_0123456789 t instance SuppressUnusedWarnings Let_0123456789Scrutinee_0123456789Sym0 where
− tests/compile-and-dump/Singletons/Contains.ghc76.template
@@ -1,23 +0,0 @@-Singletons/Contains.hs:0:0: Splicing declarations- singletons- [d| contains :: Eq a => a -> [a] -> Bool- contains _ [] = False- contains elt (h : t) = (elt == h) || (contains elt t) |]- ======>- Singletons/Contains.hs:(0,0)-(0,0)- contains :: forall a. Eq a => a -> [a] -> Bool- contains _ GHC.Types.[] = False- contains elt (h GHC.Types.: t) = ((elt == h) || (contains elt t))- type family Contains (a :: a) (a :: [a]) :: Bool- type instance Contains z GHC.Types.[] = FalseSym0- type instance Contains elt (GHC.Types.: h t) =- Apply (Apply :||$ (Apply (Apply :==$ elt) h)) (Apply (Apply ContainsSym0 elt) t)- data ContainsSym1 (l :: a) (l :: TyFun [a] Bool)- data ContainsSym0 (k :: TyFun a (TyFun [a] Bool -> *))- type instance Apply (ContainsSym1 a) a = Contains a a- type instance Apply ContainsSym0 a = ContainsSym1 a- sContains ::- forall (t :: a) (t :: [a]). SEq (KProxy :: KProxy a) =>- Sing t -> Sing t -> Sing (Contains t t)- sContains _ SNil = SFalse- sContains elt (SCons h t) = (%:||) ((%:==) elt h) (sContains elt t)
tests/compile-and-dump/Singletons/Contains.ghc78.template view
@@ -8,32 +8,32 @@ contains :: forall a. Eq a => a -> [a] -> Bool contains _ GHC.Types.[] = False contains elt (h GHC.Types.: t) = ((elt == h) || (contains elt t))- type ContainsSym2 (t :: a) (t :: GHC.Types.[] a) = Contains t t+ type ContainsSym2 (t :: a) (t :: [a]) = Contains t t instance SuppressUnusedWarnings ContainsSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) ContainsSym1KindInference GHC.Tuple.())- data ContainsSym1 (l :: a) (l :: TyFun (GHC.Types.[] a) Bool)+ data ContainsSym1 (l :: a) (l :: TyFun [a] Bool) = forall arg. KindOf (Apply (ContainsSym1 l) arg) ~ KindOf (ContainsSym2 l arg) => ContainsSym1KindInference type instance Apply (ContainsSym1 l) l = ContainsSym2 l l instance SuppressUnusedWarnings ContainsSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) ContainsSym0KindInference GHC.Tuple.())- data ContainsSym0 (l :: TyFun a (TyFun (GHC.Types.[] a) Bool -> *))+ data ContainsSym0 (l :: TyFun a (TyFun [a] Bool -> *)) = forall arg. KindOf (Apply ContainsSym0 arg) ~ KindOf (ContainsSym1 arg) => ContainsSym0KindInference type instance Apply ContainsSym0 l = ContainsSym1 l- type family Contains (a :: a) (a :: GHC.Types.[] a) :: Bool where- Contains z GHC.Types.[] = FalseSym0- Contains elt ((GHC.Types.:) h t) = Apply (Apply (:||$) (Apply (Apply (:==$) elt) h)) (Apply (Apply ContainsSym0 elt) t)+ type family Contains (a :: a) (a :: [a]) :: Bool where+ Contains z '[] = FalseSym0+ Contains elt ((:) h t) = Apply (Apply (:||$) (Apply (Apply (:==$) elt) h)) (Apply (Apply ContainsSym0 elt) t) sContains ::- forall (t :: a) (t :: GHC.Types.[] a). SEq (KProxy :: KProxy a) =>+ forall (t :: a) (t :: [a]). SEq (KProxy :: KProxy a) => Sing t -> Sing t -> Sing (Apply (Apply ContainsSym0 t) t) sContains _ SNil = let lambda ::- forall wild. (t ~ wild, t ~ GHC.Types.[]) =>- Sing (Apply (Apply ContainsSym0 wild) GHC.Types.[])+ forall wild. (t ~ wild, t ~ '[]) =>+ Sing (Apply (Apply ContainsSym0 wild) '[]) lambda = SFalse in lambda sContains sElt (SCons sH sT)
− tests/compile-and-dump/Singletons/DataValues.ghc76.template
@@ -1,64 +0,0 @@-Singletons/DataValues.hs:0:0: Splicing declarations- singletons- [d| pr = Pair (Succ Zero) ([Zero])- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- - data Pair a b- = Pair a b- deriving (Show) |]- ======>- Singletons/DataValues.hs:(0,0)-(0,0)- data Pair a b- = Pair a b- deriving (Show)- pr = Pair (Succ Zero) [Zero]- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- type PairTyCtor = Pair- data PairTyCtorSym1 (l :: *) (l :: TyFun * *)- data PairTyCtorSym0 (k :: TyFun * (TyFun * * -> *))- type instance Apply (PairTyCtorSym1 a) a = PairTyCtor a a- type instance Apply PairTyCtorSym0 a = PairTyCtorSym1 a- data PairSym1 (l :: a) (l :: TyFun b (Pair a b))- data PairSym0 (k :: TyFun a (TyFun b (Pair a b) -> *))- type instance Apply (PairSym1 a) a = Pair a a- type instance Apply PairSym0 a = PairSym1 a- type Pr =- Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) '[ZeroSym0]- type PrSym0 = Pr- type Complex =- Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0- type ComplexSym0 = Complex- type Tuple = '(FalseSym0, Apply JustSym0 ZeroSym0, TrueSym0)- type TupleSym0 = Tuple- type AList =- '[ZeroSym0,- Apply SuccSym0 ZeroSym0,- Apply SuccSym0 (Apply SuccSym0 ZeroSym0)]- type AListSym0 = AList- data instance Sing (z :: Pair a b)- = forall (n :: a) (n :: b). z ~ Pair n n => SPair (Sing n) (Sing n)- type SPair (z :: Pair a b) = Sing z- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (Pair a b)) where- type instance DemoteRep (KProxy :: KProxy (Pair a b)) =- Pair (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))- fromSing (SPair b b) = Pair (fromSing b) (fromSing b)- toSing (Pair b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy a), - toSing b :: SomeSing (KProxy :: KProxy b))- of {- (SomeSing c, SomeSing c) -> SomeSing (SPair c c) }- instance (SingI n, SingI n) => SingI (Pair (n :: a) (n :: b)) where- sing = SPair sing sing- sPr = SPair (SSucc SZero) (SCons SZero SNil)- sComplex = SPair (SPair (SJust SZero) SZero) SFalse- sTuple = STuple3 SFalse (SJust SZero) STrue- sAList- = SCons- SZero (SCons (SSucc SZero) (SCons (SSucc (SSucc SZero)) SNil))
tests/compile-and-dump/Singletons/DataValues.ghc78.template view
@@ -37,13 +37,13 @@ type ComplexSym0 = Complex type PrSym0 = Pr type AList =- Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))) GHC.Types.[]))+ Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))) '[])) type Tuple = Apply (Apply (Apply Tuple3Sym0 FalseSym0) (Apply JustSym0 ZeroSym0)) TrueSym0 type Complex = Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0 type Pr =- Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) ZeroSym0) GHC.Types.[])+ Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) ZeroSym0) '[]) sAList :: Sing AListSym0 sTuple :: Sing TupleSym0 sComplex :: Sing ComplexSym0
− tests/compile-and-dump/Singletons/Empty.ghc76.template
@@ -1,17 +0,0 @@-Singletons/Empty.hs:0:0: Splicing declarations- singletons [d| data Empty |]- ======>- Singletons/Empty.hs:(0,0)-(0,0)- data Empty- type EmptyTyCtor = Empty- type EmptyTyCtorSym0 = EmptyTyCtor- data instance Sing (z :: Empty)- type SEmpty (z :: Empty) = Sing z- instance SingKind (KProxy :: KProxy Empty) where- type instance DemoteRep (KProxy :: KProxy Empty) = Empty- fromSing z- = case z of {- _ -> error "Empty case reached -- this should be impossible" }- toSing z- = case z of {- _ -> error "Empty case reached -- this should be impossible" }
− tests/compile-and-dump/Singletons/EqInstances.ghc76.template
@@ -1,17 +0,0 @@-Singletons/EqInstances.hs:0:0: Splicing declarations- singEqInstances [''Foo, ''Empty]- ======>- Singletons/EqInstances.hs:0:0:- instance SEq (KProxy :: KProxy Foo) where- %:== SFLeaf SFLeaf = STrue- %:== SFLeaf (:%+: _ _) = SFalse- %:== (:%+: _ _) SFLeaf = SFalse- %:== (:%+: a a) (:%+: b b) = (%:&&) ((%:==) a b) ((%:==) a b)- type instance (:==) FLeaf FLeaf = TrueSym0- type instance (:==) FLeaf (:+: b b) = FalseSym0- type instance (:==) (:+: a a) FLeaf = FalseSym0- type instance (:==) (:+: a a) (:+: b b) = :&& (:== a b) (:== a b)- instance SEq (KProxy :: KProxy Empty) where- %:== a _- = case a of {- _ -> error "Empty case reached -- this should be impossible" }
− tests/compile-and-dump/Singletons/Error.ghc76.template
@@ -1,16 +0,0 @@-Promote/Error.hs:0:0: Splicing declarations- promote- [d| head :: [a] -> a- head (a : _) = a- head [] = error "Data.Singletons.List.head: empty list" |]- ======>- Promote/Error.hs:(0,0)-(0,0)- head :: forall a. [a] -> a- head (a GHC.Types.: _) = a- head GHC.Types.[] = error "Data.Singletons.List.head: empty list"- type family Head (a :: [a]) :: a- type instance Head (GHC.Types.: a z) = a- type instance Head GHC.Types.[] =- Apply ErrorSym0 "Data.Singletons.List.head: empty list"- data HeadSym0 (k :: TyFun [a] a)- type instance Apply HeadSym0 a = Head a
tests/compile-and-dump/Singletons/Error.ghc78.template view
@@ -8,19 +8,18 @@ head :: forall a. [a] -> a head (a GHC.Types.: _) = a head GHC.Types.[] = error "Data.Singletons.List.head: empty list"- type HeadSym1 (t :: GHC.Types.[] a) = Head t+ type HeadSym1 (t :: [a]) = Head t instance SuppressUnusedWarnings HeadSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) HeadSym0KindInference GHC.Tuple.())- data HeadSym0 (l :: TyFun (GHC.Types.[] a) a)+ data HeadSym0 (l :: TyFun [a] a) = forall arg. KindOf (Apply HeadSym0 arg) ~ KindOf (HeadSym1 arg) => HeadSym0KindInference type instance Apply HeadSym0 l = HeadSym1 l- type family Head (a :: GHC.Types.[] a) :: a where- Head ((GHC.Types.:) a z) = a- Head GHC.Types.[] = Apply ErrorSym0 "Data.Singletons.List.head: empty list"- sHead ::- forall (t :: GHC.Types.[] a). Sing t -> Sing (Apply HeadSym0 t)+ type family Head (a :: [a]) :: a where+ Head ((:) a z) = a+ Head '[] = Apply ErrorSym0 "Data.Singletons.List.head: empty list"+ sHead :: forall (t :: [a]). Sing t -> Sing (Apply HeadSym0 t) sHead (SCons sA _) = let lambda ::@@ -30,7 +29,7 @@ in lambda sA sHead SNil = let- lambda :: t ~ GHC.Types.[] => Sing (Apply HeadSym0 GHC.Types.[])+ lambda :: t ~ '[] => Sing (Apply HeadSym0 '[]) lambda = applySing (singFun1 (Proxy :: Proxy ErrorSym0) sError)
− tests/compile-and-dump/Singletons/HigherOrder.ghc76.template
@@ -1,122 +0,0 @@-Singletons/HigherOrder.hs:0:0: Splicing declarations- singletons- [d| map :: (a -> b) -> [a] -> [b]- map _ [] = []- map f (h : t) = (f h) : (map f t)- liftMaybe :: (a -> b) -> Maybe a -> Maybe b- liftMaybe f (Just x) = Just (f x)- liftMaybe _ Nothing = Nothing- zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]- zipWith f (x : xs) (y : ys) = f x y : zipWith f xs ys- zipWith _ [] [] = []- zipWith _ (_ : _) [] = []- zipWith _ [] (_ : _) = []- foo :: ((a -> b) -> a -> b) -> (a -> b) -> a -> b- foo f g a = f g a |]- ======>- Singletons/HigherOrder.hs:(0,0)-(0,0)- map :: forall a b. (a -> b) -> [a] -> [b]- map _ GHC.Types.[] = GHC.Types.[]- map f (h GHC.Types.: t) = ((f h) GHC.Types.: (map f t))- liftMaybe :: forall a b. (a -> b) -> Maybe a -> Maybe b- liftMaybe f (Just x) = Just (f x)- liftMaybe _ Nothing = Nothing- zipWith :: forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]- zipWith f (x GHC.Types.: xs) (y GHC.Types.: ys)- = ((f x y) GHC.Types.: (zipWith f xs ys))- zipWith _ GHC.Types.[] GHC.Types.[] = GHC.Types.[]- zipWith _ (_ GHC.Types.: _) GHC.Types.[] = GHC.Types.[]- zipWith _ GHC.Types.[] (_ GHC.Types.: _) = GHC.Types.[]- foo :: forall a b. ((a -> b) -> a -> b) -> (a -> b) -> a -> b- foo f g a = f g a- type family Map (a :: TyFun a b -> *) (a :: [a]) :: [b]- type instance Map z GHC.Types.[] = GHC.Types.[]- type instance Map f (GHC.Types.: h t) =- Apply (Apply :$ (Apply f h)) (Apply (Apply MapSym0 f) t)- data MapSym1 (l :: TyFun a b -> *) (l :: TyFun [a] [b])- data MapSym0 (k :: TyFun (TyFun a b -> *) (TyFun [a] [b] -> *))- type instance Apply (MapSym1 a) a = Map a a- type instance Apply MapSym0 a = MapSym1 a- type family LiftMaybe (a :: TyFun a b -> *)- (a :: Maybe a) :: Maybe b- type instance LiftMaybe f (Just x) = Apply JustSym0 (Apply f x)- type instance LiftMaybe z Nothing = NothingSym0- data LiftMaybeSym1 (l :: TyFun a b -> *)- (l :: TyFun (Maybe a) (Maybe b))- data LiftMaybeSym0 (k :: TyFun (TyFun a b- -> *) (TyFun (Maybe a) (Maybe b) -> *))- type instance Apply (LiftMaybeSym1 a) a = LiftMaybe a a- type instance Apply LiftMaybeSym0 a = LiftMaybeSym1 a- type family ZipWith (a :: TyFun a (TyFun b c -> *) -> *)- (a :: [a])- (a :: [b]) :: [c]- type instance ZipWith f (GHC.Types.: x xs) (GHC.Types.: y ys) =- Apply (Apply :$ (Apply (Apply f x) y)) (Apply (Apply (Apply ZipWithSym0 f) xs) ys)- type instance ZipWith z GHC.Types.[] GHC.Types.[] = GHC.Types.[]- type instance ZipWith z (GHC.Types.: z z) GHC.Types.[] =- GHC.Types.[]- type instance ZipWith z GHC.Types.[] (GHC.Types.: z z) =- GHC.Types.[]- data ZipWithSym2 (l :: TyFun a (TyFun b c -> *) -> *)- (l :: [a])- (l :: TyFun [b] [c])- data ZipWithSym1 (l :: TyFun a (TyFun b c -> *) -> *)- (l :: TyFun [a] (TyFun [b] [c] -> *))- data ZipWithSym0 (k :: TyFun (TyFun a (TyFun b c -> *)- -> *) (TyFun [a] (TyFun [b] [c] -> *) -> *))- type instance Apply (ZipWithSym2 a a) a = ZipWith a a a- type instance Apply (ZipWithSym1 a) a = ZipWithSym2 a a- type instance Apply ZipWithSym0 a = ZipWithSym1 a- type family Foo (a :: TyFun (TyFun a b -> *) (TyFun a b -> *) -> *)- (a :: TyFun a b -> *)- (a :: a) :: b- type instance Foo f g a = Apply (Apply f g) a- data FooSym2 (l :: TyFun (TyFun a b -> *) (TyFun a b -> *) -> *)- (l :: TyFun a b -> *)- (l :: TyFun a b)- data FooSym1 (l :: TyFun (TyFun a b -> *) (TyFun a b -> *) -> *)- (l :: TyFun (TyFun a b -> *) (TyFun a b -> *))- data FooSym0 (k :: TyFun (TyFun (TyFun a b -> *) (TyFun a b -> *)- -> *) (TyFun (TyFun a b -> *) (TyFun a b -> *) -> *))- type instance Apply (FooSym2 a a) a = Foo a a a- type instance Apply (FooSym1 a) a = FooSym2 a a- type instance Apply FooSym0 a = FooSym1 a- sMap ::- forall (t :: TyFun a b -> *) (t :: [a]).- (forall (t :: a).- Data.Singletons.Types.Proxy t -> Sing t -> Sing (Apply t t))- -> Sing t -> Sing (Map t t)- sMap _ SNil = SNil- sMap f (SCons h t)- = SCons (f Data.Singletons.Types.Proxy h) (sMap f t)- sLiftMaybe ::- forall (t :: TyFun a b -> *) (t :: Maybe a).- (forall (t :: a).- Data.Singletons.Types.Proxy t -> Sing t -> Sing (Apply t t))- -> Sing t -> Sing (LiftMaybe t t)- sLiftMaybe f (SJust x) = SJust (f Data.Singletons.Types.Proxy x)- sLiftMaybe _ SNothing = SNothing- sZipWith ::- forall (t :: TyFun a (TyFun b c -> *) -> *) (t :: [a]) (t :: [b]).- (forall (t :: a) (t :: b).- Data.Singletons.Types.Proxy t- -> Sing t -> Sing t -> Sing (Apply (Apply t t) t))- -> Sing t -> Sing t -> Sing (ZipWith t t t)- sZipWith f (SCons x xs) (SCons y ys)- = SCons (f Data.Singletons.Types.Proxy x y) (sZipWith f xs ys)- sZipWith _ SNil SNil = SNil- sZipWith _ (SCons _ _) SNil = SNil- sZipWith _ SNil (SCons _ _) = SNil- sFoo ::- forall (t :: TyFun (TyFun a b -> *) (TyFun a b -> *) -> *)- (t :: TyFun a b -> *)- (t :: a).- (forall (t :: TyFun a b -> *) (t :: a).- Data.Singletons.Types.Proxy t- -> (forall (t :: a).- Data.Singletons.Types.Proxy t -> Sing t -> Sing (Apply t t))- -> Sing t -> Sing (Apply (Apply t t) t))- -> (forall (t :: a).- Data.Singletons.Types.Proxy t -> Sing t -> Sing (Apply t t))- -> Sing t -> Sing (Foo t t t)- sFoo f g a = f Data.Singletons.Types.Proxy g a
tests/compile-and-dump/Singletons/HigherOrder.ghc78.template view
@@ -246,15 +246,15 @@ FooSym0KindInference type instance Apply FooSym0 l = FooSym1 l type ZipWithSym3 (t :: TyFun a (TyFun b c -> *) -> *)- (t :: GHC.Types.[] a)- (t :: GHC.Types.[] b) =+ (t :: [a])+ (t :: [b]) = ZipWith t t t instance SuppressUnusedWarnings ZipWithSym2 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) ZipWithSym2KindInference GHC.Tuple.()) data ZipWithSym2 (l :: TyFun a (TyFun b c -> *) -> *)- (l :: GHC.Types.[] a)- (l :: TyFun (GHC.Types.[] b) (GHC.Types.[] c))+ (l :: [a])+ (l :: TyFun [b] [c]) = forall arg. KindOf (Apply (ZipWithSym2 l l) arg) ~ KindOf (ZipWithSym3 l l arg) => ZipWithSym2KindInference type instance Apply (ZipWithSym2 l l) l = ZipWithSym3 l l l@@ -262,8 +262,7 @@ suppressUnusedWarnings _ = snd (GHC.Tuple.(,) ZipWithSym1KindInference GHC.Tuple.()) data ZipWithSym1 (l :: TyFun a (TyFun b c -> *) -> *)- (l :: TyFun (GHC.Types.[] a) (TyFun (GHC.Types.[] b) (GHC.Types.[] c)- -> *))+ (l :: TyFun [a] (TyFun [b] [c] -> *)) = forall arg. KindOf (Apply (ZipWithSym1 l) arg) ~ KindOf (ZipWithSym2 l arg) => ZipWithSym1KindInference type instance Apply (ZipWithSym1 l) l = ZipWithSym2 l l@@ -271,45 +270,37 @@ suppressUnusedWarnings _ = snd (GHC.Tuple.(,) ZipWithSym0KindInference GHC.Tuple.()) data ZipWithSym0 (l :: TyFun (TyFun a (TyFun b c -> *)- -> *) (TyFun (GHC.Types.[] a) (TyFun (GHC.Types.[] b) (GHC.Types.[] c)- -> *)- -> *))+ -> *) (TyFun [a] (TyFun [b] [c] -> *) -> *)) = forall arg. KindOf (Apply ZipWithSym0 arg) ~ KindOf (ZipWithSym1 arg) => ZipWithSym0KindInference type instance Apply ZipWithSym0 l = ZipWithSym1 l- type SplungeSym2 (t :: GHC.Types.[] Nat) (t :: GHC.Types.[] Bool) =- Splunge t t+ type SplungeSym2 (t :: [Nat]) (t :: [Bool]) = Splunge t t instance SuppressUnusedWarnings SplungeSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) SplungeSym1KindInference GHC.Tuple.())- data SplungeSym1 (l :: GHC.Types.[] Nat)- (l :: TyFun (GHC.Types.[] Bool) (GHC.Types.[] Nat))+ data SplungeSym1 (l :: [Nat]) (l :: TyFun [Bool] [Nat]) = forall arg. KindOf (Apply (SplungeSym1 l) arg) ~ KindOf (SplungeSym2 l arg) => SplungeSym1KindInference type instance Apply (SplungeSym1 l) l = SplungeSym2 l l instance SuppressUnusedWarnings SplungeSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) SplungeSym0KindInference GHC.Tuple.())- data SplungeSym0 (l :: TyFun (GHC.Types.[] Nat) (TyFun (GHC.Types.[] Bool) (GHC.Types.[] Nat)- -> *))+ data SplungeSym0 (l :: TyFun [Nat] (TyFun [Bool] [Nat] -> *)) = forall arg. KindOf (Apply SplungeSym0 arg) ~ KindOf (SplungeSym1 arg) => SplungeSym0KindInference type instance Apply SplungeSym0 l = SplungeSym1 l- type EtadSym2 (t :: GHC.Types.[] Nat) (t :: GHC.Types.[] Bool) =- Etad t t+ type EtadSym2 (t :: [Nat]) (t :: [Bool]) = Etad t t instance SuppressUnusedWarnings EtadSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) EtadSym1KindInference GHC.Tuple.())- data EtadSym1 (l :: GHC.Types.[] Nat)- (l :: TyFun (GHC.Types.[] Bool) (GHC.Types.[] Nat))+ data EtadSym1 (l :: [Nat]) (l :: TyFun [Bool] [Nat]) = forall arg. KindOf (Apply (EtadSym1 l) arg) ~ KindOf (EtadSym2 l arg) => EtadSym1KindInference type instance Apply (EtadSym1 l) l = EtadSym2 l l instance SuppressUnusedWarnings EtadSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) EtadSym0KindInference GHC.Tuple.())- data EtadSym0 (l :: TyFun (GHC.Types.[] Nat) (TyFun (GHC.Types.[] Bool) (GHC.Types.[] Nat)- -> *))+ data EtadSym0 (l :: TyFun [Nat] (TyFun [Bool] [Nat] -> *)) = forall arg. KindOf (Apply EtadSym0 arg) ~ KindOf (EtadSym1 arg) => EtadSym0KindInference type instance Apply EtadSym0 l = EtadSym1 l@@ -331,20 +322,18 @@ = forall arg. KindOf (Apply LiftMaybeSym0 arg) ~ KindOf (LiftMaybeSym1 arg) => LiftMaybeSym0KindInference type instance Apply LiftMaybeSym0 l = LiftMaybeSym1 l- type MapSym2 (t :: TyFun a b -> *) (t :: GHC.Types.[] a) = Map t t+ type MapSym2 (t :: TyFun a b -> *) (t :: [a]) = Map t t instance SuppressUnusedWarnings MapSym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) MapSym1KindInference GHC.Tuple.())- data MapSym1 (l :: TyFun a b -> *)- (l :: TyFun (GHC.Types.[] a) (GHC.Types.[] b))+ data MapSym1 (l :: TyFun a b -> *) (l :: TyFun [a] [b]) = forall arg. KindOf (Apply (MapSym1 l) arg) ~ KindOf (MapSym2 l arg) => MapSym1KindInference type instance Apply (MapSym1 l) l = MapSym2 l l instance SuppressUnusedWarnings MapSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) MapSym0KindInference GHC.Tuple.())- data MapSym0 (l :: TyFun (TyFun a b- -> *) (TyFun (GHC.Types.[] a) (GHC.Types.[] b) -> *))+ data MapSym0 (l :: TyFun (TyFun a b -> *) (TyFun [a] [b] -> *)) = forall arg. KindOf (Apply MapSym0 arg) ~ KindOf (MapSym1 arg) => MapSym0KindInference type instance Apply MapSym0 l = MapSym1 l@@ -353,26 +342,23 @@ (a :: a) :: b where Foo f g a = Apply (Apply f g) a type family ZipWith (a :: TyFun a (TyFun b c -> *) -> *)- (a :: GHC.Types.[] a)- (a :: GHC.Types.[] b) :: GHC.Types.[] c where- ZipWith f ((GHC.Types.:) x xs) ((GHC.Types.:) y ys) = Apply (Apply (:$) (Apply (Apply f x) y)) (Apply (Apply (Apply ZipWithSym0 f) xs) ys)- ZipWith z GHC.Types.[] GHC.Types.[] = GHC.Types.[]- ZipWith z ((GHC.Types.:) z z) GHC.Types.[] = GHC.Types.[]- ZipWith z GHC.Types.[] ((GHC.Types.:) z z) = GHC.Types.[]- type family Splunge (a :: GHC.Types.[] Nat)- (a :: GHC.Types.[] Bool) :: GHC.Types.[] Nat where+ (a :: [a])+ (a :: [b]) :: [c] where+ ZipWith f ((:) x xs) ((:) y ys) = Apply (Apply (:$) (Apply (Apply f x) y)) (Apply (Apply (Apply ZipWithSym0 f) xs) ys)+ ZipWith z '[] '[] = '[]+ ZipWith z ((:) z z) '[] = '[]+ ZipWith z '[] ((:) z z) = '[]+ type family Splunge (a :: [Nat]) (a :: [Bool]) :: [Nat] where Splunge ns bs = Apply (Apply (Apply ZipWithSym0 (Apply (Apply Lambda_0123456789Sym0 ns) bs)) ns) bs- type family Etad (a :: GHC.Types.[] Nat)- (a :: GHC.Types.[] Bool) :: GHC.Types.[] Nat where+ type family Etad (a :: [Nat]) (a :: [Bool]) :: [Nat] where Etad a_0123456789 a_0123456789 = Apply (Apply (Apply ZipWithSym0 (Apply (Apply Lambda_0123456789Sym0 a_0123456789) a_0123456789)) a_0123456789) a_0123456789 type family LiftMaybe (a :: TyFun a b -> *) (a :: Maybe a) :: Maybe b where LiftMaybe f (Just x) = Apply JustSym0 (Apply f x) LiftMaybe z Nothing = NothingSym0- type family Map (a :: TyFun a b -> *)- (a :: GHC.Types.[] a) :: GHC.Types.[] b where- Map z GHC.Types.[] = GHC.Types.[]- Map f ((GHC.Types.:) h t) = Apply (Apply (:$) (Apply f h)) (Apply (Apply MapSym0 f) t)+ type family Map (a :: TyFun a b -> *) (a :: [a]) :: [b] where+ Map z '[] = '[]+ Map f ((:) h t) = Apply (Apply (:$) (Apply f h)) (Apply (Apply MapSym0 f) t) sFoo :: forall (t :: TyFun (TyFun a b -> *) (TyFun a b -> *) -> *) (t :: TyFun a b -> *)@@ -380,23 +366,21 @@ Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply FooSym0 t) t) t) sZipWith ::- forall (t :: TyFun a (TyFun b c -> *) -> *)- (t :: GHC.Types.[] a)- (t :: GHC.Types.[] b).+ forall (t :: TyFun a (TyFun b c -> *) -> *) (t :: [a]) (t :: [b]). Sing t -> Sing t -> Sing t -> Sing (Apply (Apply (Apply ZipWithSym0 t) t) t) sSplunge ::- forall (t :: GHC.Types.[] Nat) (t :: GHC.Types.[] Bool).+ forall (t :: [Nat]) (t :: [Bool]). Sing t -> Sing t -> Sing (Apply (Apply SplungeSym0 t) t) sEtad ::- forall (t :: GHC.Types.[] Nat) (t :: GHC.Types.[] Bool).+ forall (t :: [Nat]) (t :: [Bool]). Sing t -> Sing t -> Sing (Apply (Apply EtadSym0 t) t) sLiftMaybe :: forall (t :: TyFun a b -> *) (t :: Maybe a). Sing t -> Sing t -> Sing (Apply (Apply LiftMaybeSym0 t) t) sMap ::- forall (t :: TyFun a b -> *) (t :: GHC.Types.[] a).+ forall (t :: TyFun a b -> *) (t :: [a]). Sing t -> Sing t -> Sing (Apply (Apply MapSym0 t) t) sFoo sF sG sA = let@@ -431,8 +415,8 @@ sZipWith _ SNil SNil = let lambda ::- forall wild. (t ~ wild, t ~ GHC.Types.[], t ~ GHC.Types.[]) =>- Sing (Apply (Apply (Apply ZipWithSym0 wild) GHC.Types.[]) GHC.Types.[])+ forall wild. (t ~ wild, t ~ '[], t ~ '[]) =>+ Sing (Apply (Apply (Apply ZipWithSym0 wild) '[]) '[]) lambda = SNil in lambda sZipWith _ (SCons _ _) SNil@@ -440,17 +424,17 @@ lambda :: forall wild wild wild. (t ~ wild, t ~ Apply (Apply (:$) wild) wild,- t ~ GHC.Types.[]) =>- Sing (Apply (Apply (Apply ZipWithSym0 wild) (Apply (Apply (:$) wild) wild)) GHC.Types.[])+ t ~ '[]) =>+ Sing (Apply (Apply (Apply ZipWithSym0 wild) (Apply (Apply (:$) wild) wild)) '[]) lambda = SNil in lambda sZipWith _ SNil (SCons _ _) = let lambda :: forall wild wild wild. (t ~ wild,- t ~ GHC.Types.[],+ t ~ '[], t ~ Apply (Apply (:$) wild) wild) =>- Sing (Apply (Apply (Apply ZipWithSym0 wild) GHC.Types.[]) (Apply (Apply (:$) wild) wild))+ Sing (Apply (Apply (Apply ZipWithSym0 wild) '[]) (Apply (Apply (:$) wild) wild)) lambda = SNil in lambda sSplunge sNs sBs@@ -570,8 +554,8 @@ sMap _ SNil = let lambda ::- forall wild. (t ~ wild, t ~ GHC.Types.[]) =>- Sing (Apply (Apply MapSym0 wild) GHC.Types.[])+ forall wild. (t ~ wild, t ~ '[]) =>+ Sing (Apply (Apply MapSym0 wild) '[]) lambda = SNil in lambda sMap sF (SCons sH sT)
− tests/compile-and-dump/Singletons/LambdaCase.ghc76.template
@@ -1,80 +0,0 @@-Promote/LambdaCase.hs:0:0: Splicing declarations- promote- [d| foo1 :: a -> Maybe a -> a- foo1 d x- = (\case {- Just y -> y- Nothing -> d })- x- foo2 :: a -> Maybe a -> a- foo2 d _- = (\case {- Just y -> y- Nothing -> d })- (Just d)- foo3 :: a -> b -> a- foo3 a b = (\case { (p, _) -> p }) (a, b) |]- ======>- Promote/LambdaCase.hs:(0,0)-(0,0)- foo1 :: forall a. a -> Maybe a -> a- foo1 d x- = \case {- Just y -> y- Nothing -> d }- x- foo2 :: forall a. a -> Maybe a -> a- foo2 d _- = \case {- Just y -> y- Nothing -> d }- (Just d)- foo3 :: forall a b. a -> b -> a- foo3 a b = \case { (p, _) -> p } (a, b)- type family Case_0123456789 (t :: k)- (d :: d)- (x :: x)- (e :: e) :: r- type instance Case_0123456789 (Just y) d x e = y- type instance Case_0123456789 Nothing d x e = d- type family Lambda_0123456789 (d :: d) (x :: x) (t :: k) :: r- type instance Lambda_0123456789 d x e = Case_0123456789 e d x e- data Lambda_0123456789Sym2 (l :: d) (l :: x) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type family Case_0123456789 (t :: k) (d :: d) (e :: e) :: r- type instance Case_0123456789 (Just y) d e = y- type instance Case_0123456789 Nothing d e = d- type family Lambda_0123456789 (d :: d) (t :: k) :: r- type instance Lambda_0123456789 d e = Case_0123456789 e d e- data Lambda_0123456789Sym1 (l :: d) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym1 a) a =- Lambda_0123456789 a a- type family Case_0123456789 (t :: k)- (a :: a)- (b :: b)- (e :: e) :: r- type instance Case_0123456789 '(p, z) a b e = p- type family Lambda_0123456789 (a :: a) (b :: b) (t :: k) :: r- type instance Lambda_0123456789 a b e = Case_0123456789 e a b e- data Lambda_0123456789Sym2 (l :: a) (l :: b) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type family Foo1 (a :: a) (a :: Maybe a) :: a- type instance Foo1 d x = Apply (Lambda_0123456789Sym2 d x) x- data Foo1Sym1 (l :: a) (l :: TyFun (Maybe a) a)- data Foo1Sym0 (k :: TyFun a (TyFun (Maybe a) a -> *))- type instance Apply (Foo1Sym1 a) a = Foo1 a a- type instance Apply Foo1Sym0 a = Foo1Sym1 a- type family Foo2 (a :: a) (a :: Maybe a) :: a- type instance Foo2 d z =- Apply (Lambda_0123456789Sym1 d) (Apply JustSym0 d)- data Foo2Sym1 (l :: a) (l :: TyFun (Maybe a) a)- data Foo2Sym0 (k :: TyFun a (TyFun (Maybe a) a -> *))- type instance Apply (Foo2Sym1 a) a = Foo2 a a- type instance Apply Foo2Sym0 a = Foo2Sym1 a- type family Foo3 (a :: a) (a :: b) :: a- type instance Foo3 a b = Apply (Lambda_0123456789Sym2 a b) '(a, b)- data Foo3Sym1 (l :: a) (l :: TyFun b a)- data Foo3Sym0 (k :: TyFun a (TyFun b a -> *))- type instance Apply (Foo3Sym1 a) a = Foo3 a a- type instance Apply Foo3Sym0 a = Foo3Sym1 a
tests/compile-and-dump/Singletons/LambdaCase.ghc78.template view
@@ -31,7 +31,7 @@ foo3 :: forall a b. a -> b -> a foo3 a b = \case { (p, _) -> p } (a, b) type family Case_0123456789 a b x_0123456789 t where- Case_0123456789 a b x_0123456789 (GHC.Tuple.(,) p z) = p+ Case_0123456789 a b x_0123456789 '(p, z) = p type family Lambda_0123456789 a b t where Lambda_0123456789 a b x_0123456789 = Case_0123456789 a b x_0123456789 x_0123456789 type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t
− tests/compile-and-dump/Singletons/Lambdas.ghc76.template
@@ -1,173 +0,0 @@-Promote/Lambdas.hs:0:0: Splicing declarations- promote- [d| foo0 :: a -> b -> a- foo0 = (\ x y -> x)- foo1 :: a -> b -> a- foo1 x = (\ _ -> x)- foo2 :: a -> b -> a- foo2 x y = (\ _ -> x) y- foo3 :: a -> a- foo3 x = (\ y -> y) x- foo4 :: a -> b -> c -> a- foo4 x y z = (\ _ _ -> x) y z- foo5 :: a -> b -> b- foo5 x y = (\ x -> x) y- foo6 :: a -> b -> a- foo6 a b = (\ x -> \ _ -> x) a b- foo7 :: a -> b -> b- foo7 x y = (\ (_, b) -> b) (x, y)- foo8 :: Foo a b -> a- foo8 x = (\ (Foo a _) -> a) x- - data Foo a b = Foo a b |]- ======>- Promote/Lambdas.hs:(0,0)-(0,0)- foo0 :: forall a b. a -> b -> a- foo0 = \ x y -> x- foo1 :: forall a b. a -> b -> a- foo1 x = \ _ -> x- foo2 :: forall a b. a -> b -> a- foo2 x y = \ _ -> x y- foo3 :: forall a. a -> a- foo3 x = \ y -> y x- foo4 :: forall a b c. a -> b -> c -> a- foo4 x y z = \ _ _ -> x y z- foo5 :: forall a b. a -> b -> b- foo5 x y = \ x -> x y- foo6 :: forall a b. a -> b -> a- foo6 a b = \ x -> \ _ -> x a b- foo7 :: forall a b. a -> b -> b- foo7 x y = \ (_, b) -> b (x, y)- data Foo a b = Foo a b- foo8 :: forall a b. Foo a b -> a- foo8 x = \ (Foo a _) -> a x- type Foo0 = Lambda_0123456789Sym0- type Foo0Sym0 = Foo0- type family Lambda_0123456789 (t :: k) (t :: k) :: r- type instance Lambda_0123456789 x y = x- data Lambda_0123456789Sym1 (l :: k) (l :: TyFun k r)- data Lambda_0123456789Sym0 (k :: TyFun k (TyFun k r -> *))- type instance Apply (Lambda_0123456789Sym1 a) a =- Lambda_0123456789 a a- type instance Apply Lambda_0123456789Sym0 a =- Lambda_0123456789Sym1 a- type family Lambda_0123456789 (x :: x) (t :: k) :: r- type instance Lambda_0123456789 x z = x- data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym1 a) a =- Lambda_0123456789 a a- type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r- type instance Lambda_0123456789 x y z = x- data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type family Lambda_0123456789 (x :: x) (t :: k) :: r- type instance Lambda_0123456789 x y = y- data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym1 a) a =- Lambda_0123456789 a a- type family Lambda_0123456789 (x :: x)- (y :: y)- (z :: z)- (t :: k)- (t :: k) :: r- type instance Lambda_0123456789 x y z z z = x- data Lambda_0123456789Sym4 (l :: x)- (l :: y)- (l :: z)- (l :: k)- (l :: TyFun k r)- data Lambda_0123456789Sym3 (l :: x)- (l :: y)- (l :: z)- (l :: TyFun k (TyFun k r -> *))- type instance Apply (Lambda_0123456789Sym4 a a a a) a =- Lambda_0123456789 a a a a a- type instance Apply (Lambda_0123456789Sym3 a a a) a =- Lambda_0123456789Sym4 a a a a- type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r- type instance Lambda_0123456789 x y x = x- data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type family Lambda_0123456789 (a :: a)- (b :: b)- (x :: x)- (t :: k) :: r- type instance Lambda_0123456789 a b x z = x- data Lambda_0123456789Sym3 (l :: a)- (l :: b)- (l :: x)- (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym3 a a a) a =- Lambda_0123456789 a a a a- type family Lambda_0123456789 (a :: a) (b :: b) (t :: k) :: r- type instance Lambda_0123456789 a b x = Lambda_0123456789Sym3 a b x- data Lambda_0123456789Sym2 (l :: a) (l :: b) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r- type instance Lambda_0123456789 x y '(z, b) = b- data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type FooTyCtor = Foo- data FooTyCtorSym1 (l :: *) (l :: TyFun * *)- data FooTyCtorSym0 (k :: TyFun * (TyFun * * -> *))- type instance Apply (FooTyCtorSym1 a) a = FooTyCtor a a- type instance Apply FooTyCtorSym0 a = FooTyCtorSym1 a- data FooSym1 (l :: a) (l :: TyFun b (Foo a b))- data FooSym0 (k :: TyFun a (TyFun b (Foo a b) -> *))- type instance Apply (FooSym1 a) a = Foo a a- type instance Apply FooSym0 a = FooSym1 a- type family Lambda_0123456789 (x :: x) (t :: k) :: r- type instance Lambda_0123456789 x (Foo a z) = a- data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym1 a) a =- Lambda_0123456789 a a- type family Foo1 (a :: a) :: TyFun a b -> *- type instance Foo1 x = Lambda_0123456789Sym1 x- data Foo1Sym0 (k :: TyFun a (TyFun a b -> *))- type instance Apply Foo1Sym0 a = Foo1 a- type family Foo2 (a :: a) (a :: b) :: a- type instance Foo2 x y = Apply (Lambda_0123456789Sym2 x y) y- data Foo2Sym1 (l :: a) (l :: TyFun b a)- data Foo2Sym0 (k :: TyFun a (TyFun b a -> *))- type instance Apply (Foo2Sym1 a) a = Foo2 a a- type instance Apply Foo2Sym0 a = Foo2Sym1 a- type family Foo3 (a :: a) :: a- type instance Foo3 x = Apply (Lambda_0123456789Sym1 x) x- data Foo3Sym0 (k :: TyFun a a)- type instance Apply Foo3Sym0 a = Foo3 a- type family Foo4 (a :: a) (a :: b) (a :: c) :: a- type instance Foo4 x y z =- Apply (Apply (Lambda_0123456789Sym3 x y z) y) z- data Foo4Sym2 (l :: a) (l :: b) (l :: TyFun c a)- data Foo4Sym1 (l :: a) (l :: TyFun b (TyFun c a -> *))- data Foo4Sym0 (k :: TyFun a (TyFun b (TyFun c a -> *) -> *))- type instance Apply (Foo4Sym2 a a) a = Foo4 a a a- type instance Apply (Foo4Sym1 a) a = Foo4Sym2 a a- type instance Apply Foo4Sym0 a = Foo4Sym1 a- type family Foo5 (a :: a) (a :: b) :: b- type instance Foo5 x y = Apply (Lambda_0123456789Sym2 x y) y- data Foo5Sym1 (l :: a) (l :: TyFun b b)- data Foo5Sym0 (k :: TyFun a (TyFun b b -> *))- type instance Apply (Foo5Sym1 a) a = Foo5 a a- type instance Apply Foo5Sym0 a = Foo5Sym1 a- type family Foo6 (a :: a) (a :: b) :: a- type instance Foo6 a b =- Apply (Apply (Lambda_0123456789Sym2 a b) a) b- data Foo6Sym1 (l :: a) (l :: TyFun b a)- data Foo6Sym0 (k :: TyFun a (TyFun b a -> *))- type instance Apply (Foo6Sym1 a) a = Foo6 a a- type instance Apply Foo6Sym0 a = Foo6Sym1 a- type family Foo7 (a :: a) (a :: b) :: b- type instance Foo7 x y = Apply (Lambda_0123456789Sym2 x y) '(x, y)- data Foo7Sym1 (l :: a) (l :: TyFun b b)- data Foo7Sym0 (k :: TyFun a (TyFun b b -> *))- type instance Apply (Foo7Sym1 a) a = Foo7 a a- type instance Apply Foo7Sym0 a = Foo7Sym1 a- type family Foo8 (a :: Foo a b) :: a- type instance Foo8 x = Apply (Lambda_0123456789Sym1 x) x- data Foo8Sym0 (k :: TyFun (Foo a b) a)- type instance Apply Foo8Sym0 a = Foo8 a
tests/compile-and-dump/Singletons/Lambdas.ghc78.template view
@@ -78,7 +78,7 @@ Lambda_0123456789Sym0KindInference type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l type family Case_0123456789 x y arg_0123456789 t where- Case_0123456789 x y arg_0123456789 (GHC.Tuple.(,) z b) = b+ Case_0123456789 x y arg_0123456789 '(z, b) = b type family Lambda_0123456789 x y t where Lambda_0123456789 x y arg_0123456789 = Case_0123456789 x y arg_0123456789 arg_0123456789 type Lambda_0123456789Sym3 t t t = Lambda_0123456789 t t t@@ -203,7 +203,7 @@ arg_0123456789 arg_0123456789 t where- Case_0123456789 x y z arg_0123456789 arg_0123456789 (GHC.Tuple.(,) z z) = x+ Case_0123456789 x y z arg_0123456789 arg_0123456789 '(z, z) = x type family Lambda_0123456789 x y z t t where Lambda_0123456789 x y z arg_0123456789 arg_0123456789 = Case_0123456789 x y z arg_0123456789 arg_0123456789 (Apply (Apply Tuple2Sym0 arg_0123456789) arg_0123456789) type Lambda_0123456789Sym5 t t t t t = Lambda_0123456789 t t t t t
− tests/compile-and-dump/Singletons/LambdasComprehensive.ghc76.template
@@ -1,27 +0,0 @@-Promote/LambdasComprehensive.hs:0:0: Splicing declarations- promote- [d| foo :: [Nat]- foo- = map (\ x -> either_ pred Succ x) [Left Zero, Right (Succ Zero)]- bar :: [Nat]- bar = map (either_ pred Succ) [Left Zero, Right (Succ Zero)] |]- ======>- Promote/LambdasComprehensive.hs:(0,0)-(0,0)- foo :: [Nat]- foo- = map (\ x -> either_ pred Succ x) [Left Zero, Right (Succ Zero)]- bar :: [Nat]- bar = map (either_ pred Succ) [Left Zero, Right (Succ Zero)]- type Foo =- Apply (Apply MapSym0 Lambda_0123456789Sym0) '[Apply LeftSym0 ZeroSym0,- Apply RightSym0 (Apply SuccSym0 ZeroSym0)]- type FooSym0 = Foo- type family Lambda_0123456789 (t :: k) :: r- type instance Lambda_0123456789 x =- Apply (Apply (Apply Either_Sym0 PredSym0) SuccSym0) x- data Lambda_0123456789Sym0 (k :: TyFun k r)- type instance Apply Lambda_0123456789Sym0 a = Lambda_0123456789 a- type Bar =- Apply (Apply MapSym0 (Apply (Apply Either_Sym0 PredSym0) SuccSym0)) '[Apply LeftSym0 ZeroSym0,- Apply RightSym0 (Apply SuccSym0 ZeroSym0)]- type BarSym0 = Bar
tests/compile-and-dump/Singletons/LambdasComprehensive.ghc78.template view
@@ -26,9 +26,9 @@ type BarSym0 = Bar type FooSym0 = Foo type Bar =- (Apply (Apply MapSym0 (Apply (Apply Either_Sym0 PredSym0) SuccSym0)) (Apply (Apply (:$) (Apply LeftSym0 ZeroSym0)) (Apply (Apply (:$) (Apply RightSym0 (Apply SuccSym0 ZeroSym0))) GHC.Types.[])) :: GHC.Types.[] Nat)+ (Apply (Apply MapSym0 (Apply (Apply Either_Sym0 PredSym0) SuccSym0)) (Apply (Apply (:$) (Apply LeftSym0 ZeroSym0)) (Apply (Apply (:$) (Apply RightSym0 (Apply SuccSym0 ZeroSym0))) '[])) :: [Nat]) type Foo =- (Apply (Apply MapSym0 Lambda_0123456789Sym0) (Apply (Apply (:$) (Apply LeftSym0 ZeroSym0)) (Apply (Apply (:$) (Apply RightSym0 (Apply SuccSym0 ZeroSym0))) GHC.Types.[])) :: GHC.Types.[] Nat)+ (Apply (Apply MapSym0 Lambda_0123456789Sym0) (Apply (Apply (:$) (Apply LeftSym0 ZeroSym0)) (Apply (Apply (:$) (Apply RightSym0 (Apply SuccSym0 ZeroSym0))) '[])) :: [Nat]) sBar :: Sing BarSym0 sFoo :: Sing FooSym0 sBar
− tests/compile-and-dump/Singletons/LetStatements.ghc76.template
@@ -1,364 +0,0 @@-Promote/LetStatements.hs:0:0: Splicing declarations- promote- [d| foo1 :: Nat -> Nat- foo1 x- = let- y :: Nat- y = Succ Zero- in y- foo2 :: Nat- foo2- = let- y = Succ Zero- z = Succ y- in z- foo3 :: Nat -> Nat- foo3 x- = let- y :: Nat- y = Succ x- in y- foo4 :: Nat -> Nat- foo4 x- = let- f :: Nat -> Nat- f y = Succ y- in f x- foo5 :: Nat -> Nat- foo5 x- = let- f :: Nat -> Nat- f y- = let- z :: Nat- z = Succ y- in Succ z- in f x- foo6 :: Nat -> Nat- foo6 x- = let- f :: Nat -> Nat- f y = Succ y in- let- z :: Nat- z = f x- in z- foo7 :: Nat -> Nat- foo7 x- = let- x :: Nat- x = Zero- in x- foo8 :: Nat -> Nat- foo8 x- = let- z :: Nat- z = (\ x -> x) Zero- in z- foo9 :: Nat -> Nat- foo9 x- = let- z :: Nat -> Nat- z = (\ x -> x)- in z x- foo10 :: Nat -> Nat- foo10 x- = let- + :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- in (Succ Zero) + x- foo11 :: Nat -> Nat- foo11 x- = let- + :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- z :: Nat- z = x- in (Succ Zero) + z- foo12 :: Nat -> Nat- foo12 x- = let- + :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + x)- in x + (Succ (Succ Zero))- foo13 :: forall a. a -> a- foo13 x- = let- bar :: a- bar = x- in foo13b bar- foo13b :: a -> a- foo13b y = y |]- ======>- Promote/LetStatements.hs:(0,0)-(0,0)- foo1 :: Nat -> Nat- foo1 x- = let- y :: Nat- y = Succ Zero- in y- foo2 :: Nat- foo2- = let- y = Succ Zero- z = Succ y- in z- foo3 :: Nat -> Nat- foo3 x- = let- y :: Nat- y = Succ x- in y- foo4 :: Nat -> Nat- foo4 x- = let- f :: Nat -> Nat- f y = Succ y- in f x- foo5 :: Nat -> Nat- foo5 x- = let- f :: Nat -> Nat- f y- = let- z :: Nat- z = Succ y- in Succ z- in f x- foo6 :: Nat -> Nat- foo6 x- = let- f :: Nat -> Nat- f y = Succ y in- let- z :: Nat- z = f x- in z- foo7 :: Nat -> Nat- foo7 x- = let- x :: Nat- x = Zero- in x- foo8 :: Nat -> Nat- foo8 x- = let- z :: Nat- z = \ x -> x Zero- in z- foo9 :: Nat -> Nat- foo9 x- = let- z :: Nat -> Nat- z = \ x -> x- in z x- foo10 :: Nat -> Nat- foo10 x- = let- + :: Nat -> Nat -> Nat- + Zero m = m- + (Succ n) m = Succ (n + m)- in ((Succ Zero) + x)- foo11 :: Nat -> Nat- foo11 x- = let- + :: Nat -> Nat -> Nat- z :: Nat- + Zero m = m- + (Succ n) m = Succ (n + m)- z = x- in ((Succ Zero) + z)- foo12 :: Nat -> Nat- foo12 x- = let- + :: Nat -> Nat -> Nat- + Zero m = m- + (Succ n) m = Succ (n + x)- in (x + (Succ (Succ Zero)))- foo13 :: forall a. a -> a- foo13 x- = let- bar :: a- bar = x- in foo13b bar- foo13b :: forall a. a -> a- foo13b y = y- type family Let_0123456789y (a :: x) :: Nat- type instance Let_0123456789y x = Apply SuccSym0 ZeroSym0- data Let_0123456789ySym0 (k :: TyFun x Nat)- type instance Apply Let_0123456789ySym0 a = Let_0123456789y a- type Foo2 = Let_0123456789zSym0- type Foo2Sym0 = Foo2- type Let_0123456789y = Apply SuccSym0 ZeroSym0- type Let_0123456789ySym0 = Let_0123456789y- type Let_0123456789z = Apply SuccSym0 Let_0123456789ySym0- type Let_0123456789zSym0 = Let_0123456789z- type family Let_0123456789y (a :: x) :: Nat- type instance Let_0123456789y x = Apply SuccSym0 x- data Let_0123456789ySym0 (k :: TyFun x Nat)- type instance Apply Let_0123456789ySym0 a = Let_0123456789y a- type family Let_0123456789f (a :: x) (a :: Nat) :: Nat- type instance Let_0123456789f x y = Apply SuccSym0 y- data Let_0123456789fSym1 (l :: x) (l :: TyFun Nat Nat)- data Let_0123456789fSym0 (k :: TyFun x (TyFun Nat Nat -> *))- type instance Apply (Let_0123456789fSym1 a) a = Let_0123456789f a a- type instance Apply Let_0123456789fSym0 a = Let_0123456789fSym1 a- type family Let_0123456789z (a :: x) (a :: y) :: Nat- type instance Let_0123456789z x y = Apply SuccSym0 y- data Let_0123456789zSym1 (l :: x) (l :: TyFun y Nat)- data Let_0123456789zSym0 (k :: TyFun x (TyFun y Nat -> *))- type instance Apply (Let_0123456789zSym1 a) a = Let_0123456789z a a- type instance Apply Let_0123456789zSym0 a = Let_0123456789zSym1 a- type family Let_0123456789f (a :: x) (a :: Nat) :: Nat- type instance Let_0123456789f x y =- Apply SuccSym0 (Apply (Apply Let_0123456789zSym0 x) y)- data Let_0123456789fSym1 (l :: x) (l :: TyFun Nat Nat)- data Let_0123456789fSym0 (k :: TyFun x (TyFun Nat Nat -> *))- type instance Apply (Let_0123456789fSym1 a) a = Let_0123456789f a a- type instance Apply Let_0123456789fSym0 a = Let_0123456789fSym1 a- type family Let_0123456789f (a :: x) (a :: Nat) :: Nat- type instance Let_0123456789f x y = Apply SuccSym0 y- data Let_0123456789fSym1 (l :: x) (l :: TyFun Nat Nat)- data Let_0123456789fSym0 (k :: TyFun x (TyFun Nat Nat -> *))- type instance Apply (Let_0123456789fSym1 a) a = Let_0123456789f a a- type instance Apply Let_0123456789fSym0 a = Let_0123456789fSym1 a- type family Let_0123456789z (a :: x) :: Nat- type instance Let_0123456789z x =- Apply (Apply Let_0123456789fSym0 x) x- data Let_0123456789zSym0 (k :: TyFun x Nat)- type instance Apply Let_0123456789zSym0 a = Let_0123456789z a- type family Let_0123456789x (a :: x) :: Nat- type instance Let_0123456789x x = ZeroSym0- data Let_0123456789xSym0 (k :: TyFun x Nat)- type instance Apply Let_0123456789xSym0 a = Let_0123456789x a- type family Lambda_0123456789 (x :: x) (t :: k) :: r- type instance Lambda_0123456789 x x = x- data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym1 a) a =- Lambda_0123456789 a a- type family Let_0123456789z (a :: x) :: Nat- type instance Let_0123456789z x =- Apply (Lambda_0123456789Sym1 x) ZeroSym0- data Let_0123456789zSym0 (k :: TyFun x Nat)- type instance Apply Let_0123456789zSym0 a = Let_0123456789z a- type family Lambda_0123456789 (x :: x) (t :: k) :: r- type instance Lambda_0123456789 x x = x- data Lambda_0123456789Sym1 (l :: x) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym1 a) a =- Lambda_0123456789 a a- type family Let_0123456789z (a :: x) :: TyFun Nat Nat -> *- type instance Let_0123456789z x = Lambda_0123456789Sym1 x- data Let_0123456789zSym0 (k :: TyFun x (TyFun Nat Nat -> *))- type instance Apply Let_0123456789zSym0 a = Let_0123456789z a- type family Let_0123456789+ (a :: x) (a :: Nat) (a :: Nat) :: Nat- type instance Let_0123456789+ x Zero m = m- type instance Let_0123456789+ x (Succ n) m =- Apply SuccSym0 (Apply (Apply (Apply Let_0123456789+Sym0 x) n) m)- data Let_0123456789+Sym2 (l :: x) (l :: Nat) (l :: TyFun Nat Nat)- data Let_0123456789+Sym1 (l :: x)- (l :: TyFun Nat (TyFun Nat Nat -> *))- data Let_0123456789+Sym0 (k :: TyFun x (TyFun Nat (TyFun Nat Nat- -> *)- -> *))- type instance Apply (Let_0123456789+Sym2 a a) a =- Let_0123456789+ a a a- type instance Apply (Let_0123456789+Sym1 a) a =- Let_0123456789+Sym2 a a- type instance Apply Let_0123456789+Sym0 a = Let_0123456789+Sym1 a- type family Let_0123456789+ (a :: x) (a :: Nat) (a :: Nat) :: Nat- type instance Let_0123456789+ x Zero m = m- type instance Let_0123456789+ x (Succ n) m =- Apply SuccSym0 (Apply (Apply (Apply Let_0123456789+Sym0 x) n) m)- data Let_0123456789+Sym2 (l :: x) (l :: Nat) (l :: TyFun Nat Nat)- data Let_0123456789+Sym1 (l :: x)- (l :: TyFun Nat (TyFun Nat Nat -> *))- data Let_0123456789+Sym0 (k :: TyFun x (TyFun Nat (TyFun Nat Nat- -> *)- -> *))- type instance Apply (Let_0123456789+Sym2 a a) a =- Let_0123456789+ a a a- type instance Apply (Let_0123456789+Sym1 a) a =- Let_0123456789+Sym2 a a- type instance Apply Let_0123456789+Sym0 a = Let_0123456789+Sym1 a- type family Let_0123456789z (a :: x) :: Nat- type instance Let_0123456789z x = x- data Let_0123456789zSym0 (k :: TyFun x Nat)- type instance Apply Let_0123456789zSym0 a = Let_0123456789z a- type family Let_0123456789+ (a :: x) (a :: Nat) (a :: Nat) :: Nat- type instance Let_0123456789+ x Zero m = m- type instance Let_0123456789+ x (Succ n) m =- Apply SuccSym0 (Apply (Apply (Apply Let_0123456789+Sym0 x) n) x)- data Let_0123456789+Sym2 (l :: x) (l :: Nat) (l :: TyFun Nat Nat)- data Let_0123456789+Sym1 (l :: x)- (l :: TyFun Nat (TyFun Nat Nat -> *))- data Let_0123456789+Sym0 (k :: TyFun x (TyFun Nat (TyFun Nat Nat- -> *)- -> *))- type instance Apply (Let_0123456789+Sym2 a a) a =- Let_0123456789+ a a a- type instance Apply (Let_0123456789+Sym1 a) a =- Let_0123456789+Sym2 a a- type instance Apply Let_0123456789+Sym0 a = Let_0123456789+Sym1 a- type family Let_0123456789bar (a :: x) :: a- type instance Let_0123456789bar x = x- data Let_0123456789barSym0 (k :: TyFun x a)- type instance Apply Let_0123456789barSym0 a = Let_0123456789bar a- type family Foo1 (a :: Nat) :: Nat- type instance Foo1 x = Apply Let_0123456789ySym0 x- data Foo1Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo1Sym0 a = Foo1 a- type family Foo3 (a :: Nat) :: Nat- type instance Foo3 x = Apply Let_0123456789ySym0 x- data Foo3Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo3Sym0 a = Foo3 a- type family Foo4 (a :: Nat) :: Nat- type instance Foo4 x = Apply (Apply Let_0123456789fSym0 x) x- data Foo4Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo4Sym0 a = Foo4 a- type family Foo5 (a :: Nat) :: Nat- type instance Foo5 x = Apply (Apply Let_0123456789fSym0 x) x- data Foo5Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo5Sym0 a = Foo5 a- type family Foo6 (a :: Nat) :: Nat- type instance Foo6 x = Apply Let_0123456789zSym0 x- data Foo6Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo6Sym0 a = Foo6 a- type family Foo7 (a :: Nat) :: Nat- type instance Foo7 x = Apply Let_0123456789xSym0 x- data Foo7Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo7Sym0 a = Foo7 a- type family Foo8 (a :: Nat) :: Nat- type instance Foo8 x = Apply Let_0123456789zSym0 x- data Foo8Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo8Sym0 a = Foo8 a- type family Foo9 (a :: Nat) :: Nat- type instance Foo9 x = Apply (Apply Let_0123456789zSym0 x) x- data Foo9Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo9Sym0 a = Foo9 a- type family Foo10 (a :: Nat) :: Nat- type instance Foo10 x =- Apply (Apply (Apply Let_0123456789+Sym0 x) (Apply SuccSym0 ZeroSym0)) x- data Foo10Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo10Sym0 a = Foo10 a- type family Foo11 (a :: Nat) :: Nat- type instance Foo11 x =- Apply (Apply (Apply Let_0123456789+Sym0 x) (Apply SuccSym0 ZeroSym0)) (Apply Let_0123456789zSym0 x)- data Foo11Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo11Sym0 a = Foo11 a- type family Foo12 (a :: Nat) :: Nat- type instance Foo12 x =- Apply (Apply (Apply Let_0123456789+Sym0 x) x) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))- data Foo12Sym0 (k :: TyFun Nat Nat)- type instance Apply Foo12Sym0 a = Foo12 a- type family Foo13 (a :: a) :: a- type instance Foo13 x =- Apply Foo13bSym0 (Apply Let_0123456789barSym0 x)- data Foo13Sym0 (k :: TyFun a a)- type instance Apply Foo13Sym0 a = Foo13 a- type family Foo13b (a :: a) :: a- type instance Foo13b y = y- data Foo13bSym0 (k :: TyFun a a)- type instance Apply Foo13bSym0 a = Foo13b a
tests/compile-and-dump/Singletons/LetStatements.ghc78.template view
@@ -191,9 +191,9 @@ foo14 :: Nat -> (Nat, Nat) foo14 x = let (y, z) = (Succ x, x) in (z, y) type family Case_0123456789 x t where- Case_0123456789 x (GHC.Tuple.(,) y_0123456789 z) = y_0123456789+ Case_0123456789 x '(y_0123456789, z) = y_0123456789 type family Case_0123456789 x t where- Case_0123456789 x (GHC.Tuple.(,) z y_0123456789) = y_0123456789+ Case_0123456789 x '(z, y_0123456789) = y_0123456789 type Let_0123456789YSym1 t = Let_0123456789Y t instance SuppressUnusedWarnings Let_0123456789YSym0 where suppressUnusedWarnings _@@ -517,7 +517,7 @@ instance SuppressUnusedWarnings Foo14Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Foo14Sym0KindInference GHC.Tuple.())- data Foo14Sym0 (l :: TyFun Nat (GHC.Tuple.(,) Nat Nat))+ data Foo14Sym0 (l :: TyFun Nat (Nat, Nat)) = forall arg. KindOf (Apply Foo14Sym0 arg) ~ KindOf (Foo14Sym1 arg) => Foo14Sym0KindInference type instance Apply Foo14Sym0 l = Foo14Sym1 l@@ -626,7 +626,7 @@ = forall arg. KindOf (Apply Foo1Sym0 arg) ~ KindOf (Foo1Sym1 arg) => Foo1Sym0KindInference type instance Apply Foo1Sym0 l = Foo1Sym1 l- type family Foo14 (a :: Nat) :: GHC.Tuple.(,) Nat Nat where+ type family Foo14 (a :: Nat) :: (Nat, Nat) where Foo14 x = Apply (Apply Tuple2Sym0 (Let_0123456789ZSym1 x)) (Let_0123456789YSym1 x) type family Foo13_ (a :: a) :: a where Foo13_ y = y
− tests/compile-and-dump/Singletons/Maybe.ghc76.template
@@ -1,59 +0,0 @@-Singletons/Maybe.hs:0:0: Splicing declarations- singletons- [d| data Maybe a- = Nothing | Just a- deriving (Eq, Show) |]- ======>- Singletons/Maybe.hs:(0,0)-(0,0)- data Maybe a- = Nothing | Just a- deriving (Eq, Show)- type instance (:==) Nothing Nothing = TrueSym0- type instance (:==) Nothing (Just b) = FalseSym0- type instance (:==) (Just a) Nothing = FalseSym0- type instance (:==) (Just a) (Just b) = :== a b- type MaybeTyCtor = Maybe- data MaybeTyCtorSym0 (k :: TyFun * *)- type instance Apply MaybeTyCtorSym0 a = MaybeTyCtor a- type NothingSym0 = Nothing- data JustSym0 (k :: TyFun a (Maybe a))- type instance Apply JustSym0 a = Just a- data instance Sing (z :: Maybe a)- = z ~ Nothing => SNothing |- forall (n :: a). z ~ Just n => SJust (Sing n)- type SMaybe (z :: Maybe a) = Sing z- instance SingKind (KProxy :: KProxy a) =>- SingKind (KProxy :: KProxy (Maybe a)) where- type instance DemoteRep (KProxy :: KProxy (Maybe a)) =- Maybe (DemoteRep (KProxy :: KProxy a))- fromSing SNothing = Nothing- fromSing (SJust b) = Just (fromSing b)- toSing Nothing = SomeSing SNothing- toSing (Just b)- = case toSing b :: SomeSing (KProxy :: KProxy a) of {- SomeSing c -> SomeSing (SJust c) }- instance SEq (KProxy :: KProxy a) =>- SEq (KProxy :: KProxy (Maybe a)) where- %:== SNothing SNothing = STrue- %:== SNothing (SJust _) = SFalse- %:== (SJust _) SNothing = SFalse- %:== (SJust a) (SJust b) = (%:==) a b- instance SDecide (KProxy :: KProxy a) =>- SDecide (KProxy :: KProxy (Maybe a)) where- %~ SNothing SNothing = Proved Refl- %~ SNothing (SJust _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SJust _) SNothing- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SJust a) (SJust b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra -> Disproved (\ Refl -> contra Refl) }- instance SingI Nothing where- sing = SNothing- instance SingI n => SingI (Just (n :: a)) where- sing = SJust sing
− tests/compile-and-dump/Singletons/Nat.ghc76.template
@@ -1,89 +0,0 @@-Singletons/Nat.hs:0:0: Splicing declarations- singletons- [d| plus :: Nat -> Nat -> Nat- plus Zero m = m- plus (Succ n) m = Succ (plus n m)- pred :: Nat -> Nat- pred Zero = Zero- pred (Succ n) = n- - data Nat- where- Zero :: Nat- Succ :: Nat -> Nat- deriving (Eq, Show, Read) |]- ======>- Singletons/Nat.hs:(0,0)-(0,0)- data Nat- = Zero | Succ Nat- deriving (Eq, Show, Read)- plus :: Nat -> Nat -> Nat- plus Zero m = m- plus (Succ n) m = Succ (plus n m)- pred :: Nat -> Nat- pred Zero = Zero- pred (Succ n) = n- type instance (:==) Zero Zero = TrueSym0- type instance (:==) Zero (Succ b) = FalseSym0- type instance (:==) (Succ a) Zero = FalseSym0- type instance (:==) (Succ a) (Succ b) = :== a b- type NatTyCtor = Nat- type NatTyCtorSym0 = NatTyCtor- type ZeroSym0 = Zero- data SuccSym0 (k :: TyFun Nat Nat)- type instance Apply SuccSym0 a = Succ a- type family Plus (a :: Nat) (a :: Nat) :: Nat- type instance Plus Zero m = m- type instance Plus (Succ n) m =- Apply SuccSym0 (Apply (Apply PlusSym0 n) m)- data PlusSym1 (l :: Nat) (l :: TyFun Nat Nat)- data PlusSym0 (k :: TyFun Nat (TyFun Nat Nat -> *))- type instance Apply (PlusSym1 a) a = Plus a a- type instance Apply PlusSym0 a = PlusSym1 a- type family Pred (a :: Nat) :: Nat- type instance Pred Zero = ZeroSym0- type instance Pred (Succ n) = n- data PredSym0 (k :: TyFun Nat Nat)- type instance Apply PredSym0 a = Pred a- data instance Sing (z :: Nat)- = z ~ Zero => SZero |- forall (n :: Nat). z ~ Succ n => SSucc (Sing n)- type SNat (z :: Nat) = Sing z- instance SingKind (KProxy :: KProxy Nat) where- type instance DemoteRep (KProxy :: KProxy Nat) = Nat- fromSing SZero = Zero- fromSing (SSucc b) = Succ (fromSing b)- toSing Zero = SomeSing SZero- toSing (Succ b)- = case toSing b :: SomeSing (KProxy :: KProxy Nat) of {- SomeSing c -> SomeSing (SSucc c) }- instance SEq (KProxy :: KProxy Nat) where- %:== SZero SZero = STrue- %:== SZero (SSucc _) = SFalse- %:== (SSucc _) SZero = SFalse- %:== (SSucc a) (SSucc b) = (%:==) a b- instance SDecide (KProxy :: KProxy Nat) where- %~ SZero SZero = Proved Refl- %~ SZero (SSucc _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SSucc _) SZero- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SSucc a) (SSucc b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra -> Disproved (\ Refl -> contra Refl) }- instance SingI Zero where- sing = SZero- instance SingI n => SingI (Succ (n :: Nat)) where- sing = SSucc sing- sPlus ::- forall (t :: Nat) (t :: Nat). Sing t -> Sing t -> Sing (Plus t t)- sPlus SZero m = m- sPlus (SSucc n) m = SSucc (sPlus n m)- sPred :: forall (t :: Nat). Sing t -> Sing (Pred t)- sPred SZero = SZero- sPred (SSucc n) = n
− tests/compile-and-dump/Singletons/Operators.ghc76.template
@@ -1,70 +0,0 @@-Singletons/Operators.hs:0:0: Splicing declarations- singletons- [d| child :: Foo -> Foo- child FLeaf = FLeaf- child (a :+: _) = a- + :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- - data Foo- where- FLeaf :: Foo- :+: :: Foo -> Foo -> Foo |]- ======>- Singletons/Operators.hs:(0,0)-(0,0)- data Foo = FLeaf | (:+:) Foo Foo- child :: Foo -> Foo- child FLeaf = FLeaf- child (a :+: _) = a- + :: Nat -> Nat -> Nat- + Zero m = m- + (Succ n) m = Succ (n + m)- type FooTyCtor = Foo- type FooTyCtorSym0 = FooTyCtor- type FLeafSym0 = FLeaf- data (:+:$$) (l :: Foo) (l :: TyFun Foo Foo)- data (:+:$) (k :: TyFun Foo (TyFun Foo Foo -> *))- type instance Apply (:+:$$ a) a = :+: a a- type instance Apply :+:$ a = :+:$$ a- type family Child (a :: Foo) :: Foo- type instance Child FLeaf = FLeafSym0- type instance Child (:+: a z) = a- data ChildSym0 (k :: TyFun Foo Foo)- type instance Apply ChildSym0 a = Child a- type family (:+) (a :: Nat) (a :: Nat) :: Nat- type instance (:+) Zero m = m- type instance (:+) (Succ n) m =- Apply SuccSym0 (Apply (Apply :+$ n) m)- data (:+$$) (l :: Nat) (l :: TyFun Nat Nat)- data (:+$) (k :: TyFun Nat (TyFun Nat Nat -> *))- type instance Apply (:+$$ a) a = :+ a a- type instance Apply :+$ a = :+$$ a- data instance Sing (z :: Foo)- = z ~ FLeaf => SFLeaf |- forall (n :: Foo) (n :: Foo). z ~ :+: n n =>- (:%+:) (Sing n) (Sing n)- type SFoo (z :: Foo) = Sing z- instance SingKind (KProxy :: KProxy Foo) where- type instance DemoteRep (KProxy :: KProxy Foo) = Foo- fromSing SFLeaf = FLeaf- fromSing (:%+: b b) = (:+:) (fromSing b) (fromSing b)- toSing FLeaf = SomeSing SFLeaf- toSing (:+: b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy Foo), - toSing b :: SomeSing (KProxy :: KProxy Foo))- 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- sChild :: forall (t :: Foo). Sing t -> Sing (Child t)- sChild SFLeaf = SFLeaf- sChild (:%+: a _) = a- %:+ ::- forall (t :: Nat) (t :: Nat). Sing t -> Sing t -> Sing (:+ t t)- %:+ SZero m = m- %:+ (SSucc n) m = SSucc ((%:+) n m)
− tests/compile-and-dump/Singletons/PatternMatching.ghc76.template
@@ -1,131 +0,0 @@-Promote/PatternMatching.hs:0:0: Splicing declarations- promote- [d| pr = Pair (Succ Zero) ([Zero])- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- - data Pair a b- = Pair a b- deriving (Show) |]- ======>- Promote/PatternMatching.hs:(0,0)-(0,0)- data Pair a b- = Pair a b- deriving (Show)- pr = Pair (Succ Zero) [Zero]- complex = Pair (Pair (Just Zero) Zero) False- tuple = (False, Just Zero, True)- aList = [Zero, Succ Zero, Succ (Succ Zero)]- type PairTyCtor = Pair- data PairTyCtorSym1 (l :: *) (l :: TyFun * *)- data PairTyCtorSym0 (k :: TyFun * (TyFun * * -> *))- type instance Apply (PairTyCtorSym1 a) a = PairTyCtor a a- type instance Apply PairTyCtorSym0 a = PairTyCtorSym1 a- data PairSym1 (l :: a) (l :: TyFun b (Pair a b))- data PairSym0 (k :: TyFun a (TyFun b (Pair a b) -> *))- type instance Apply (PairSym1 a) a = Pair a a- type instance Apply PairSym0 a = PairSym1 a- type Pr =- Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) '[ZeroSym0]- type PrSym0 = Pr- type Complex =- Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0- type ComplexSym0 = Complex- type Tuple = '(FalseSym0, Apply JustSym0 ZeroSym0, TrueSym0)- type TupleSym0 = Tuple- type AList =- '[ZeroSym0,- Apply SuccSym0 ZeroSym0,- Apply SuccSym0 (Apply SuccSym0 ZeroSym0)]- type AListSym0 = AList-Promote/PatternMatching.hs:0:0: Splicing declarations- promote- [d| Pair sz lz = pr- Pair (Pair jz zz) fls = complex- (tf, tjz, tt) = tuple- [_, lsz, (Succ blimy)] = aList- foo1 :: (a, b) -> a- foo1 (x, y) = (\ _ -> x) y- foo2 :: (# a, b #) -> a- foo2 t@(# x, y #) = case t of { (# a, b #) -> (\ _ -> a) b } |]- ======>- Promote/PatternMatching.hs:(0,0)-(0,0)- Pair sz lz = pr- Pair (Pair jz zz) fls = complex- (tf, tjz, tt) = tuple- [_, lsz, Succ blimy] = aList- foo1 :: forall a b. (a, b) -> a- foo1 (x, y) = \ _ -> x y- foo2 :: forall a b. (# a, b #) -> a- foo2 t@(# x, y #) = case t of { (# a, b #) -> \ _ -> a b }- type Sz = Extract_0123456789 PrSym0- type SzSym0 = Sz- type Lz = Extract_0123456789 PrSym0- type LzSym0 = Lz- type family Extract_0123456789 (a :: Pair a b) :: a- type family Extract_0123456789 (a :: Pair a b) :: b- type instance Extract_0123456789 (Pair a a) = a- type instance Extract_0123456789 (Pair a a) = a- type Jz = Extract_0123456789 (Extract_0123456789 ComplexSym0)- type JzSym0 = Jz- type Zz = Extract_0123456789 (Extract_0123456789 ComplexSym0)- type ZzSym0 = Zz- type Fls = Extract_0123456789 ComplexSym0- type FlsSym0 = Fls- type family Extract_0123456789 (a :: Pair a b) :: a- type family Extract_0123456789 (a :: Pair a b) :: b- type instance Extract_0123456789 (Pair a a) = a- type instance Extract_0123456789 (Pair a a) = a- type family Extract_0123456789 (a :: Pair a b) :: a- type family Extract_0123456789 (a :: Pair a b) :: b- type instance Extract_0123456789 (Pair a a) = a- type instance Extract_0123456789 (Pair a a) = a- type Tf = Extract_0123456789 TupleSym0- type TfSym0 = Tf- type Tjz = Extract_0123456789 TupleSym0- type TjzSym0 = Tjz- type Tt = Extract_0123456789 TupleSym0- type TtSym0 = Tt- type family Extract_0123456789 (a :: GHC.Tuple.(,,) a b c) :: a- type family Extract_0123456789 (a :: GHC.Tuple.(,,) a b c) :: b- type family Extract_0123456789 (a :: GHC.Tuple.(,,) a b c) :: c- type instance Extract_0123456789 (GHC.Tuple.(,,) a a a) = a- type instance Extract_0123456789 (GHC.Tuple.(,,) a a a) = a- type instance Extract_0123456789 (GHC.Tuple.(,,) a a a) = a- type Lsz = Head (Tail AListSym0)- type LszSym0 = Lsz- type Blimy = Extract_0123456789 (Head (Tail (Tail AListSym0)))- type BlimySym0 = Blimy- type family Extract_0123456789 (a :: Nat) :: Nat- type instance Extract_0123456789 (Succ a) = a- type family Lambda_0123456789 (x :: x) (y :: y) (t :: k) :: r- type instance Lambda_0123456789 x y z = x- data Lambda_0123456789Sym2 (l :: x) (l :: y) (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym2 a a) a =- Lambda_0123456789 a a a- type family Lambda_0123456789 (x :: x)- (y :: y)- (a :: a)- (b :: b)- (t :: k) :: r- type instance Lambda_0123456789 x y a b z = a- data Lambda_0123456789Sym4 (l :: x)- (l :: y)- (l :: a)- (l :: b)- (l :: TyFun k r)- type instance Apply (Lambda_0123456789Sym4 a a a a) a =- Lambda_0123456789 a a a a a- type family Case_0123456789 (t :: k) (x :: x) (y :: y) :: r- type instance Case_0123456789 '(a, b) x y =- Apply (Lambda_0123456789Sym4 x y a b) b- type family Foo1 (a :: (a, b)) :: a- type instance Foo1 '(x, y) = Apply (Lambda_0123456789Sym2 x y) y- data Foo1Sym0 (k :: TyFun (a, b) a)- type instance Apply Foo1Sym0 a = Foo1 a- type family Foo2 (a :: (a, b)) :: a- type instance Foo2 '(x, y) =- Case_0123456789 (Apply (Apply Tuple2Sym0 x) y) x y- data Foo2Sym0 (k :: TyFun (a, b) a)- type instance Apply Foo2Sym0 a = Foo2 a
tests/compile-and-dump/Singletons/PatternMatching.ghc78.template view
@@ -37,13 +37,13 @@ type ComplexSym0 = Complex type PrSym0 = Pr type AList =- Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))) GHC.Types.[]))+ Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 (Apply SuccSym0 ZeroSym0))) '[])) type Tuple = Apply (Apply (Apply Tuple3Sym0 FalseSym0) (Apply JustSym0 ZeroSym0)) TrueSym0 type Complex = Apply (Apply PairSym0 (Apply (Apply PairSym0 (Apply JustSym0 ZeroSym0)) ZeroSym0)) FalseSym0 type Pr =- Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) ZeroSym0) GHC.Types.[])+ Apply (Apply PairSym0 (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) ZeroSym0) '[]) sAList :: Sing AListSym0 sTuple :: Sing TupleSym0 sComplex :: Sing ComplexSym0@@ -210,7 +210,8 @@ Lambda_0123456789Sym0KindInference type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l type family Case_0123456789 x y t where- Case_0123456789 x y (GHC.Tuple.(,) a b) = Apply (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) a) b) b+ Case_0123456789 x y '(a,+ b) = Apply (Apply (Apply (Apply (Apply Lambda_0123456789Sym0 x) y) a) b) b type family Case_0123456789 x y arg_0123456789 t where Case_0123456789 x y arg_0123456789 z = x type family Lambda_0123456789 x y t where@@ -241,15 +242,15 @@ Lambda_0123456789Sym0KindInference type instance Apply Lambda_0123456789Sym0 l = Lambda_0123456789Sym1 l type family Case_0123456789 t where- Case_0123456789 ((GHC.Types.:) z ((GHC.Types.:) y_0123456789 ((GHC.Types.:) (Succ z) GHC.Types.[]))) = y_0123456789+ Case_0123456789 '[z, y_0123456789, Succ z] = y_0123456789 type family Case_0123456789 t where- Case_0123456789 ((GHC.Types.:) z ((GHC.Types.:) z ((GHC.Types.:) (Succ y_0123456789) GHC.Types.[]))) = y_0123456789+ Case_0123456789 '[z, z, Succ y_0123456789] = y_0123456789 type family Case_0123456789 t where- Case_0123456789 (GHC.Tuple.(,,) y_0123456789 z z) = y_0123456789+ Case_0123456789 '(y_0123456789, z, z) = y_0123456789 type family Case_0123456789 t where- Case_0123456789 (GHC.Tuple.(,,) z y_0123456789 z) = y_0123456789+ Case_0123456789 '(z, y_0123456789, z) = y_0123456789 type family Case_0123456789 t where- Case_0123456789 (GHC.Tuple.(,,) z z y_0123456789) = y_0123456789+ Case_0123456789 '(z, z, y_0123456789) = y_0123456789 type family Case_0123456789 t where Case_0123456789 (Pair (Pair y_0123456789 z) z) = y_0123456789 type family Case_0123456789 t where@@ -260,19 +261,19 @@ Case_0123456789 (Pair y_0123456789 z) = y_0123456789 type family Case_0123456789 t where Case_0123456789 (Pair z y_0123456789) = y_0123456789- type Foo2Sym1 (t :: GHC.Tuple.(,) a b) = Foo2 t+ type Foo2Sym1 (t :: (a, b)) = Foo2 t instance SuppressUnusedWarnings Foo2Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Foo2Sym0KindInference GHC.Tuple.())- data Foo2Sym0 (l :: TyFun (GHC.Tuple.(,) a b) a)+ data Foo2Sym0 (l :: TyFun (a, b) a) = forall arg. KindOf (Apply Foo2Sym0 arg) ~ KindOf (Foo2Sym1 arg) => Foo2Sym0KindInference type instance Apply Foo2Sym0 l = Foo2Sym1 l- type Foo1Sym1 (t :: GHC.Tuple.(,) a b) = Foo1 t+ type Foo1Sym1 (t :: (a, b)) = Foo1 t instance SuppressUnusedWarnings Foo1Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Foo1Sym0KindInference GHC.Tuple.())- data Foo1Sym0 (l :: TyFun (GHC.Tuple.(,) a b) a)+ data Foo1Sym0 (l :: TyFun (a, b) a) = forall arg. KindOf (Apply Foo1Sym0 arg) ~ KindOf (Foo1Sym1 arg) => Foo1Sym0KindInference type instance Apply Foo1Sym0 l = Foo1Sym1 l@@ -290,10 +291,11 @@ type X_0123456789Sym0 = X_0123456789 type X_0123456789Sym0 = X_0123456789 type X_0123456789Sym0 = X_0123456789- type family Foo2 (a :: GHC.Tuple.(,) a b) :: a where- Foo2 (GHC.Tuple.(,) x y) = Case_0123456789 x y (Let_0123456789Scrutinee_0123456789Sym2 x y)- type family Foo1 (a :: GHC.Tuple.(,) a b) :: a where- Foo1 (GHC.Tuple.(,) x y) = Apply (Apply (Apply Lambda_0123456789Sym0 x) y) y+ type family Foo2 (a :: (a, b)) :: a where+ Foo2 '(x,+ y) = Case_0123456789 x y (Let_0123456789Scrutinee_0123456789Sym2 x y)+ type family Foo1 (a :: (a, b)) :: a where+ Foo1 '(x, y) = Apply (Apply (Apply Lambda_0123456789Sym0 x) y) y type Lsz = (Case_0123456789 X_0123456789Sym0 :: Nat) type Blimy = Case_0123456789 X_0123456789Sym0 type Tf = Case_0123456789 X_0123456789Sym0@@ -308,10 +310,8 @@ type X_0123456789 = ComplexSym0 type X_0123456789 = TupleSym0 type X_0123456789 = AListSym0- sFoo2 ::- forall (t :: GHC.Tuple.(,) a b). Sing t -> Sing (Apply Foo2Sym0 t)- sFoo1 ::- forall (t :: GHC.Tuple.(,) a b). Sing t -> Sing (Apply Foo1Sym0 t)+ sFoo2 :: forall (t :: (a, b)). Sing t -> Sing (Apply Foo2Sym0 t)+ sFoo1 :: forall (t :: (a, b)). Sing t -> Sing (Apply Foo1Sym0 t) sLsz :: Sing LszSym0 sBlimy :: Sing BlimySym0 sTf :: Sing TfSym0@@ -408,7 +408,7 @@ lambda :: forall y_0123456789 wild wild. Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply (:$) wild) (Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) (Apply SuccSym0 wild)) GHC.Types.[]))))+ -> Sing (Case_0123456789 (Apply (Apply (:$) wild) (Apply (Apply (:$) y_0123456789) (Apply (Apply (:$) (Apply SuccSym0 wild)) '[])))) lambda y_0123456789 = y_0123456789 in lambda sY_0123456789 } sBlimy@@ -418,7 +418,7 @@ lambda :: forall y_0123456789 wild wild. Sing y_0123456789- -> Sing (Case_0123456789 (Apply (Apply (:$) wild) (Apply (Apply (:$) wild) (Apply (Apply (:$) (Apply SuccSym0 y_0123456789)) GHC.Types.[]))))+ -> Sing (Case_0123456789 (Apply (Apply (:$) wild) (Apply (Apply (:$) wild) (Apply (Apply (:$) (Apply SuccSym0 y_0123456789)) '[])))) lambda y_0123456789 = y_0123456789 in lambda sY_0123456789 } sTf
− tests/compile-and-dump/Singletons/ReturnFunc.ghc76.template
− tests/compile-and-dump/Singletons/Sections.ghc76.template
@@ -1,48 +0,0 @@-Promote/Sections.hs:0:0: Splicing declarations- promote- [d| + :: Nat -> Nat -> Nat- Zero + m = m- (Succ n) + m = Succ (n + m)- foo1 :: [Nat]- foo1 = map ((Succ Zero) +) [Zero, Succ Zero]- foo2 :: [Nat]- foo2 = map (+ (Succ Zero)) [Zero, Succ Zero]- foo3 :: [Nat]- foo3 = zipWith (+) [Succ Zero, Succ Zero] [Zero, Succ Zero] |]- ======>- Promote/Sections.hs:(0,0)-(0,0)- + :: Nat -> Nat -> Nat- + Zero m = m- + (Succ n) m = Succ (n + m)- foo1 :: [Nat]- foo1 = map (Succ Zero +) [Zero, Succ Zero]- foo2 :: [Nat]- foo2 = map (+ Succ Zero) [Zero, Succ Zero]- foo3 :: [Nat]- foo3 = zipWith (+) [Succ Zero, Succ Zero] [Zero, Succ Zero]- type Foo1 =- Apply (Apply MapSym0 (Apply :+$ (Apply SuccSym0 ZeroSym0))) '[ZeroSym0,- Apply SuccSym0 ZeroSym0]- type Foo1Sym0 = Foo1- type Foo2 =- Apply (Apply MapSym0 Lambda_0123456789Sym0) '[ZeroSym0,- Apply SuccSym0 ZeroSym0]- type Foo2Sym0 = Foo2- type family Lambda_0123456789 (t :: k) :: r- type instance Lambda_0123456789 x =- Apply (Apply :+$ x) (Apply SuccSym0 ZeroSym0)- data Lambda_0123456789Sym0 (k :: TyFun k r)- type instance Apply Lambda_0123456789Sym0 a = Lambda_0123456789 a- type Foo3 =- Apply (Apply (Apply ZipWithSym0 :+$) '[Apply SuccSym0 ZeroSym0,- Apply SuccSym0 ZeroSym0]) '[ZeroSym0,- Apply SuccSym0 ZeroSym0]- type Foo3Sym0 = Foo3- type family (:+) (a :: Nat) (a :: Nat) :: Nat- type instance (:+) Zero m = m- type instance (:+) (Succ n) m =- Apply SuccSym0 (Apply (Apply :+$ n) m)- data (:+$$) (l :: Nat) (l :: TyFun Nat Nat)- data (:+$) (k :: TyFun Nat (TyFun Nat Nat -> *))- type instance Apply (:+$$ a) a = :+ a a- type instance Apply :+$ a = :+$$ a
tests/compile-and-dump/Singletons/Sections.ghc78.template view
@@ -53,11 +53,11 @@ (:+) Zero m = m (:+) (Succ n) m = Apply SuccSym0 (Apply (Apply (:+$) n) m) type Foo1 =- (Apply (Apply MapSym0 (Apply (:+$) (Apply SuccSym0 ZeroSym0))) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) GHC.Types.[])) :: GHC.Types.[] Nat)+ (Apply (Apply MapSym0 (Apply (:+$) (Apply SuccSym0 ZeroSym0))) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[])) :: [Nat]) type Foo2 =- (Apply (Apply MapSym0 Lambda_0123456789Sym0) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) GHC.Types.[])) :: GHC.Types.[] Nat)+ (Apply (Apply MapSym0 Lambda_0123456789Sym0) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[])) :: [Nat]) type Foo3 =- (Apply (Apply (Apply ZipWithSym0 (:+$)) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) GHC.Types.[]))) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) GHC.Types.[])) :: GHC.Types.[] Nat)+ (Apply (Apply (Apply ZipWithSym0 (:+$)) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[]))) (Apply (Apply (:$) ZeroSym0) (Apply (Apply (:$) (Apply SuccSym0 ZeroSym0)) '[])) :: [Nat]) (%:+) :: forall (t :: Nat) (t :: Nat). Sing t -> Sing t -> Sing (Apply (Apply (:+$) t) t)
− tests/compile-and-dump/Singletons/Star.ghc76.template
@@ -1,188 +0,0 @@-Singletons/Star.hs:0:0: Splicing declarations- singletonStar [''Nat, ''Int, ''String, ''Maybe, ''Vec]- ======>- Singletons/Star.hs:0:0:- data Rep- = Nat | Int | String | Maybe Rep | Vec Rep Nat- deriving (Eq, Show, Read)- type instance (:==) Nat Nat = TrueSym0- type instance (:==) Nat Int = FalseSym0- type instance (:==) Nat String = FalseSym0- type instance (:==) Nat (Maybe b) = FalseSym0- type instance (:==) Nat (Vec b b) = FalseSym0- type instance (:==) Int Nat = FalseSym0- type instance (:==) Int Int = TrueSym0- type instance (:==) Int String = FalseSym0- type instance (:==) Int (Maybe b) = FalseSym0- type instance (:==) Int (Vec b b) = FalseSym0- type instance (:==) String Nat = FalseSym0- type instance (:==) String Int = FalseSym0- type instance (:==) String String = TrueSym0- type instance (:==) String (Maybe b) = FalseSym0- type instance (:==) String (Vec b b) = FalseSym0- type instance (:==) (Maybe a) Nat = FalseSym0- type instance (:==) (Maybe a) Int = FalseSym0- type instance (:==) (Maybe a) String = FalseSym0- type instance (:==) (Maybe a) (Maybe b) = :== a b- type instance (:==) (Maybe a) (Vec b b) = FalseSym0- type instance (:==) (Vec a a) Nat = FalseSym0- type instance (:==) (Vec a a) Int = FalseSym0- type instance (:==) (Vec a a) String = FalseSym0- type instance (:==) (Vec a a) (Maybe b) = FalseSym0- type instance (:==) (Vec a a) (Vec b b) = :&& (:== a b) (:== a b)- data instance Sing (z :: *)- = z ~ Nat => SNat |- z ~ Int => SInt |- z ~ String => SString |- forall (n :: *). z ~ Maybe n => SMaybe (Sing n) |- forall (n :: *) (n :: Nat). z ~ Vec n n => SVec (Sing n) (Sing n)- type SRep (z :: *) = Sing z- instance SingKind (KProxy :: KProxy *) where- type instance DemoteRep (KProxy :: KProxy *) = Rep- fromSing SNat = Nat- fromSing SInt = Int- fromSing SString = String- fromSing (SMaybe b) = Maybe (fromSing b)- fromSing (SVec b b) = Vec (fromSing b) (fromSing b)- toSing Nat = SomeSing SNat- toSing Int = SomeSing SInt- toSing String = SomeSing SString- toSing (Maybe b)- = case toSing b :: SomeSing (KProxy :: KProxy *) of {- SomeSing c -> SomeSing (SMaybe c) }- toSing (Vec b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy *),- toSing b :: SomeSing (KProxy :: KProxy Nat))- of {- (SomeSing c, SomeSing c) -> SomeSing (SVec c c) }- instance SEq (KProxy :: KProxy *) where- %:== SNat SNat = STrue- %:== SNat SInt = SFalse- %:== SNat SString = SFalse- %:== SNat (SMaybe _) = SFalse- %:== SNat (SVec _ _) = SFalse- %:== SInt SNat = SFalse- %:== SInt SInt = STrue- %:== SInt SString = SFalse- %:== SInt (SMaybe _) = SFalse- %:== SInt (SVec _ _) = SFalse- %:== SString SNat = SFalse- %:== SString SInt = SFalse- %:== SString SString = STrue- %:== SString (SMaybe _) = SFalse- %:== SString (SVec _ _) = SFalse- %:== (SMaybe _) SNat = SFalse- %:== (SMaybe _) SInt = SFalse- %:== (SMaybe _) SString = SFalse- %:== (SMaybe a) (SMaybe b) = (%:==) a b- %:== (SMaybe _) (SVec _ _) = SFalse- %:== (SVec _ _) SNat = SFalse- %:== (SVec _ _) SInt = SFalse- %:== (SVec _ _) SString = SFalse- %:== (SVec _ _) (SMaybe _) = SFalse- %:== (SVec a a) (SVec b b) = (%:&&) ((%:==) a b) ((%:==) a b)- instance SDecide (KProxy :: KProxy *) where- %~ SNat SNat = Proved Refl- %~ SNat SInt- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SNat SString- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SNat (SMaybe _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SNat (SVec _ _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SInt SNat- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SInt SInt = Proved Refl- %~ SInt SString- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SInt (SMaybe _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SInt (SVec _ _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SString SNat- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SString SInt- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SString SString = Proved Refl- %~ SString (SMaybe _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ SString (SVec _ _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SMaybe _) SNat- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SMaybe _) SInt- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SMaybe _) SString- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SMaybe a) (SMaybe b)- = case (%~) a b of {- Proved Refl -> Proved Refl- Disproved contra -> Disproved (\ Refl -> contra Refl) }- %~ (SMaybe _) (SVec _ _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVec _ _) SNat- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVec _ _) SInt- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVec _ _) SString- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVec _ _) (SMaybe _)- = Disproved- (\case {- _ -> error "Empty case reached -- this should be impossible" })- %~ (SVec a a) (SVec b b)- = case ((%~) a b, (%~) a b) of {- (Proved Refl, Proved Refl) -> Proved Refl- (Disproved contra, _) -> Disproved (\ Refl -> contra Refl)- (_, Disproved contra) -> Disproved (\ Refl -> contra Refl) }- instance SingI Nat where- sing = SNat- instance SingI Int where- sing = SInt- instance SingI String where- sing = SString- instance SingI n => SingI (Maybe (n :: *)) where- sing = SMaybe sing- instance (SingI n, SingI n) =>- SingI (Vec (n :: *) (n :: Nat)) where- sing = SVec sing sing
tests/compile-and-dump/Singletons/T33.ghc78.template view
@@ -6,19 +6,18 @@ Singletons/T33.hs:(0,0)-(0,0) foo :: (Bool, Bool) -> () foo ~(_, _) = GHC.Tuple.()- type FooSym1 (t :: GHC.Tuple.(,) Bool Bool) = Foo t+ type FooSym1 (t :: (Bool, Bool)) = Foo t instance SuppressUnusedWarnings FooSym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) FooSym0KindInference GHC.Tuple.())- data FooSym0 (l :: TyFun (GHC.Tuple.(,) Bool Bool) GHC.Tuple.())+ data FooSym0 (l :: TyFun (Bool, Bool) ()) = forall arg. KindOf (Apply FooSym0 arg) ~ KindOf (FooSym1 arg) => FooSym0KindInference type instance Apply FooSym0 l = FooSym1 l- type family Foo (a :: GHC.Tuple.(,) Bool Bool) :: GHC.Tuple.() where- Foo (GHC.Tuple.(,) z z) = Tuple0Sym0+ type family Foo (a :: (Bool, Bool)) :: () where+ Foo '(z, z) = Tuple0Sym0 sFoo ::- forall (t :: GHC.Tuple.(,) Bool Bool).- Sing t -> Sing (Apply FooSym0 t)+ forall (t :: (Bool, Bool)). Sing t -> Sing (Apply FooSym0 t) sFoo (STuple2 _ _) = let lambda ::
− tests/compile-and-dump/Singletons/TopLevelPatterns.ghc76.template
@@ -1,98 +0,0 @@-Promote/TopLevelPatterns.hs:0:0: Splicing declarations- promote- [d| data Bool = False | True- data Foo = Bar Bool Bool |]- ======>- Promote/TopLevelPatterns.hs:(0,0)-(0,0)- data Bool = False | True- data Foo = Bar Bool Bool- type BoolTyCtor = Bool- type BoolTyCtorSym0 = BoolTyCtor- type FalseSym0 = False- type TrueSym0 = True- type FooTyCtor = Foo- type FooTyCtorSym0 = FooTyCtor- data BarSym1 (l :: Bool) (l :: TyFun Bool Foo)- data BarSym0 (k :: TyFun Bool (TyFun Bool Foo -> *))- type instance Apply (BarSym1 a) a = Bar a a- type instance Apply BarSym0 a = BarSym1 a-Promote/TopLevelPatterns.hs:0:0: Splicing declarations- promote- [d| otherwise :: Bool- otherwise = True- id :: a -> a- id x = x- not :: Bool -> Bool- not True = False- not False = True- false_ = False- f, g :: Bool -> Bool- [f, g] = [not, id]- h, i :: Bool -> Bool- (h, i) = (f, g)- j, k :: Bool- (Bar j k) = Bar True (h False)- l, m :: Bool- [l, m] = [not True, id False] |]- ======>- Promote/TopLevelPatterns.hs:(0,0)-(0,0)- otherwise :: Bool- otherwise = True- id :: forall a. a -> a- id x = x- not :: Bool -> Bool- not True = False- not False = True- false_ = False- f :: Bool -> Bool- g :: Bool -> Bool- [f, g] = [not, id]- h :: Bool -> Bool- i :: Bool -> Bool- (h, i) = (f, g)- j :: Bool- k :: Bool- Bar j k = Bar True (h False)- l :: Bool- m :: Bool- [l, m] = [not True, id False]- type Otherwise = TrueSym0- type OtherwiseSym0 = Otherwise- type False_ = FalseSym0- type False_Sym0 = False_- type F = Head '[NotSym0, IdSym0]- type FSym0 = F- type G = Head (Tail '[NotSym0, IdSym0])- type GSym0 = G- type H = Extract_0123456789 '(FSym0, GSym0)- type HSym0 = H- type I = Extract_0123456789 '(FSym0, GSym0)- type ISym0 = I- type family Extract_0123456789 (a :: GHC.Tuple.(,) a b) :: a- type family Extract_0123456789 (a :: GHC.Tuple.(,) a b) :: b- type instance Extract_0123456789 (GHC.Tuple.(,) a a) = a- type instance Extract_0123456789 (GHC.Tuple.(,) a a) = a- type J =- Extract_0123456789 (Apply (Apply BarSym0 TrueSym0) (Apply HSym0 FalseSym0))- type JSym0 = J- type K =- Extract_0123456789 (Apply (Apply BarSym0 TrueSym0) (Apply HSym0 FalseSym0))- type KSym0 = K- type family Extract_0123456789 (a :: Foo) :: Bool- type family Extract_0123456789 (a :: Foo) :: Bool- type instance Extract_0123456789 (Bar a a) = a- type instance Extract_0123456789 (Bar a a) = a- type L = Head '[Apply NotSym0 TrueSym0, Apply IdSym0 FalseSym0]- type LSym0 = L- type M =- Head (Tail '[Apply NotSym0 TrueSym0, Apply IdSym0 FalseSym0])- type MSym0 = M- type family Id (a :: a) :: a- type instance Id x = x- data IdSym0 (k :: TyFun a a)- type instance Apply IdSym0 a = Id a- type family Not (a :: Bool) :: Bool- type instance Not True = FalseSym0- type instance Not False = TrueSym0- data NotSym0 (k :: TyFun Bool Bool)- type instance Apply NotSym0 a = Not a
− tests/compile-and-dump/Singletons/Tuples.ghc76.template
@@ -1,532 +0,0 @@-Singletons/Tuples.hs:0:0: Splicing declarations- genSingletons- [''(), ''(,), ''(,,), ''(,,,), ''(,,,,), ''(,,,,,), ''(,,,,,,)]- ======>- Singletons/Tuples.hs:(0,0)-(0,0)- type TupleTyCtor0 = GHC.Tuple.()- type TupleTyCtor0Sym0 = TupleTyCtor0- type Tuple0Sym0 = GHC.Tuple.()- data instance Sing (z :: GHC.Tuple.())- = z ~ GHC.Tuple.() => STuple0- type STuple0 (z :: GHC.Tuple.()) = Sing z- instance SingKind (KProxy :: KProxy GHC.Tuple.()) where- type instance DemoteRep (KProxy :: KProxy GHC.Tuple.()) =- GHC.Tuple.()- fromSing STuple0 = GHC.Tuple.()- toSing GHC.Tuple.() = SomeSing STuple0- instance SingI GHC.Tuple.() where- sing = STuple0- type TupleTyCtor2 = GHC.Tuple.(,)- data TupleTyCtor2Sym1 (l :: *) (l :: TyFun * *)- data TupleTyCtor2Sym0 (k :: TyFun * (TyFun * * -> *))- type instance Apply (TupleTyCtor2Sym1 a) a = TupleTyCtor2 a a- type instance Apply TupleTyCtor2Sym0 a = TupleTyCtor2Sym1 a- data Tuple2Sym1 (l :: a) (l :: TyFun b (GHC.Tuple.(,) a b))- data Tuple2Sym0 (k :: TyFun a (TyFun b (GHC.Tuple.(,) a b) -> *))- type instance Apply (Tuple2Sym1 a) a = GHC.Tuple.(,) a a- type instance Apply Tuple2Sym0 a = Tuple2Sym1 a- data instance Sing (z :: GHC.Tuple.(,) a b)- = forall (n :: a) (n :: b). z ~ GHC.Tuple.(,) n n =>- STuple2 (Sing n) (Sing n)- type STuple2 (z :: GHC.Tuple.(,) a b) = Sing z- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,) a b)) where- type instance DemoteRep (KProxy :: KProxy (GHC.Tuple.(,) a b)) =- GHC.Tuple.(,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))- fromSing (STuple2 b b) = GHC.Tuple.(,) (fromSing b) (fromSing b)- toSing (GHC.Tuple.(,) b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy a), - toSing b :: SomeSing (KProxy :: KProxy b))- of {- (SomeSing c, SomeSing c) -> SomeSing (STuple2 c c) }- instance (SingI n, SingI n) =>- SingI (GHC.Tuple.(,) (n :: a) (n :: b)) where- sing = STuple2 sing sing- type TupleTyCtor3 = GHC.Tuple.(,,)- data TupleTyCtor3Sym2 (l :: *) (l :: *) (l :: TyFun * *)- data TupleTyCtor3Sym1 (l :: *) (l :: TyFun * (TyFun * * -> *))- data TupleTyCtor3Sym0 (k :: TyFun * (TyFun * (TyFun * * -> *)- -> *))- type instance Apply (TupleTyCtor3Sym2 a a) a = TupleTyCtor3 a a a- type instance Apply (TupleTyCtor3Sym1 a) a = TupleTyCtor3Sym2 a a- type instance Apply TupleTyCtor3Sym0 a = TupleTyCtor3Sym1 a- data Tuple3Sym2 (l :: a)- (l :: b)- (l :: TyFun c (GHC.Tuple.(,,) a b c))- data Tuple3Sym1 (l :: a)- (l :: TyFun b (TyFun c (GHC.Tuple.(,,) a b c) -> *))- data Tuple3Sym0 (k :: TyFun a (TyFun b (TyFun c (GHC.Tuple.(,,) a b c)- -> *)- -> *))- type instance Apply (Tuple3Sym2 a a) a = GHC.Tuple.(,,) a a a- type instance Apply (Tuple3Sym1 a) a = Tuple3Sym2 a a- type instance Apply Tuple3Sym0 a = Tuple3Sym1 a- data instance Sing (z :: GHC.Tuple.(,,) a b c)- = forall (n :: a) (n :: b) (n :: c). z ~ GHC.Tuple.(,,) n n n =>- STuple3 (Sing n) (Sing n) (Sing n)- type STuple3 (z :: GHC.Tuple.(,,) a b c) = Sing z- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b),- SingKind (KProxy :: KProxy c)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,) a b c)) where- type instance DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,) a b c)) =- GHC.Tuple.(,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c))- fromSing (STuple3 b b b)- = GHC.Tuple.(,,) (fromSing b) (fromSing b) (fromSing b)- toSing (GHC.Tuple.(,,) b b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy a), - toSing b :: SomeSing (KProxy :: KProxy b), - toSing b :: SomeSing (KProxy :: KProxy c))- of {- (SomeSing c, SomeSing c, SomeSing c) -> SomeSing (STuple3 c c c) }- instance (SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,) (n :: a) (n :: b) (n :: c)) where- sing = STuple3 sing sing sing- type TupleTyCtor4 = GHC.Tuple.(,,,)- data TupleTyCtor4Sym3 (l :: *) (l :: *) (l :: *) (l :: TyFun * *)- data TupleTyCtor4Sym2 (l :: *)- (l :: *)- (l :: TyFun * (TyFun * * -> *))- data TupleTyCtor4Sym1 (l :: *)- (l :: TyFun * (TyFun * (TyFun * * -> *) -> *))- data TupleTyCtor4Sym0 (k :: TyFun * (TyFun * (TyFun * (TyFun * *- -> *)- -> *)- -> *))- type instance Apply (TupleTyCtor4Sym3 a a a) a =- TupleTyCtor4 a a a a- type instance Apply (TupleTyCtor4Sym2 a a) a =- TupleTyCtor4Sym3 a a a- type instance Apply (TupleTyCtor4Sym1 a) a = TupleTyCtor4Sym2 a a- type instance Apply TupleTyCtor4Sym0 a = TupleTyCtor4Sym1 a- data Tuple4Sym3 (l :: a)- (l :: b)- (l :: c)- (l :: TyFun d (GHC.Tuple.(,,,) a b c d))- data Tuple4Sym2 (l :: a)- (l :: b)- (l :: TyFun c (TyFun d (GHC.Tuple.(,,,) a b c d) -> *))- data Tuple4Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (GHC.Tuple.(,,,) a b c d) -> *)- -> *))- data Tuple4Sym0 (k :: TyFun a (TyFun b (TyFun c (TyFun d (GHC.Tuple.(,,,) a b c d)- -> *)- -> *)- -> *))- type instance Apply (Tuple4Sym3 a a a) a = GHC.Tuple.(,,,) a a a a- type instance Apply (Tuple4Sym2 a a) a = Tuple4Sym3 a a a- type instance Apply (Tuple4Sym1 a) a = Tuple4Sym2 a a- type instance Apply Tuple4Sym0 a = Tuple4Sym1 a- data instance Sing (z :: GHC.Tuple.(,,,) a b c d)- = forall (n :: a)- (n :: b)- (n :: c)- (n :: d). z ~ GHC.Tuple.(,,,) n n n n =>- STuple4 (Sing n) (Sing n) (Sing n) (Sing n)- type STuple4 (z :: GHC.Tuple.(,,,) a b c d) = Sing z- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b),- SingKind (KProxy :: KProxy c),- SingKind (KProxy :: KProxy d)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,) a b c d)) where- type instance DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,) a b c d)) =- GHC.Tuple.(,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d))- fromSing (STuple4 b b b b)- = GHC.Tuple.(,,,)- (fromSing b) (fromSing b) (fromSing b) (fromSing b)- toSing (GHC.Tuple.(,,,) b b b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy a), - toSing b :: SomeSing (KProxy :: KProxy b), - toSing b :: SomeSing (KProxy :: KProxy c), - toSing b :: SomeSing (KProxy :: KProxy d))- of {- (SomeSing c, SomeSing c, SomeSing c, SomeSing c)- -> SomeSing (STuple4 c c c c) }- instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,,) (n :: a) (n :: b) (n :: c) (n :: d)) where- sing = STuple4 sing sing sing sing- type TupleTyCtor5 = GHC.Tuple.(,,,,)- data TupleTyCtor5Sym4 (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * *)- data TupleTyCtor5Sym3 (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * (TyFun * * -> *))- data TupleTyCtor5Sym2 (l :: *)- (l :: *)- (l :: TyFun * (TyFun * (TyFun * * -> *) -> *))- data TupleTyCtor5Sym1 (l :: *)- (l :: TyFun * (TyFun * (TyFun * (TyFun * * -> *) -> *) -> *))- data TupleTyCtor5Sym0 (k :: TyFun * (TyFun * (TyFun * (TyFun * (TyFun * *- -> *)- -> *)- -> *)- -> *))- type instance Apply (TupleTyCtor5Sym4 a a a a) a =- TupleTyCtor5 a a a a a- type instance Apply (TupleTyCtor5Sym3 a a a) a =- TupleTyCtor5Sym4 a a a a- type instance Apply (TupleTyCtor5Sym2 a a) a =- TupleTyCtor5Sym3 a a a- type instance Apply (TupleTyCtor5Sym1 a) a = TupleTyCtor5Sym2 a a- type instance Apply TupleTyCtor5Sym0 a = TupleTyCtor5Sym1 a- data Tuple5Sym4 (l :: a)- (l :: b)- (l :: c)- (l :: d)- (l :: TyFun e (GHC.Tuple.(,,,,) a b c d e))- data Tuple5Sym3 (l :: a)- (l :: b)- (l :: c)- (l :: TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e) -> *))- data Tuple5Sym2 (l :: a)- (l :: b)- (l :: TyFun c (TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e) -> *)- -> *))- data Tuple5Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e)- -> *)- -> *)- -> *))- data Tuple5Sym0 (k :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e)- -> *)- -> *)- -> *)- -> *))- type instance Apply (Tuple5Sym4 a a a a) a =- GHC.Tuple.(,,,,) a a a a a- type instance Apply (Tuple5Sym3 a a a) a = Tuple5Sym4 a a a a- type instance Apply (Tuple5Sym2 a a) a = Tuple5Sym3 a a a- type instance Apply (Tuple5Sym1 a) a = Tuple5Sym2 a a- type instance Apply Tuple5Sym0 a = Tuple5Sym1 a- data instance Sing (z :: GHC.Tuple.(,,,,) a b c d e)- = forall (n :: a)- (n :: b)- (n :: c)- (n :: d)- (n :: e). z ~ GHC.Tuple.(,,,,) n n n n n =>- STuple5 (Sing n) (Sing n) (Sing n) (Sing n) (Sing n)- type STuple5 (z :: GHC.Tuple.(,,,,) a b c d e) = Sing z- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b),- SingKind (KProxy :: KProxy c),- SingKind (KProxy :: KProxy d),- SingKind (KProxy :: KProxy e)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,,) a b c d e)) where- type instance DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,,) a b c d e)) =- GHC.Tuple.(,,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d)) (DemoteRep (KProxy :: KProxy e))- fromSing (STuple5 b b b b b)- = GHC.Tuple.(,,,,)- (fromSing b) (fromSing b) (fromSing b) (fromSing b) (fromSing b)- toSing (GHC.Tuple.(,,,,) b b b b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy a), - toSing b :: SomeSing (KProxy :: KProxy b), - toSing b :: SomeSing (KProxy :: KProxy c), - toSing b :: SomeSing (KProxy :: KProxy d), - toSing b :: SomeSing (KProxy :: KProxy e))- of {- (SomeSing c, SomeSing c, SomeSing c, SomeSing c, SomeSing c)- -> SomeSing (STuple5 c c c c c) }- instance (SingI n, SingI n, SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,,,) (n :: a) (n :: b) (n :: c) (n :: d) (n :: e)) where- sing = STuple5 sing sing sing sing sing- type TupleTyCtor6 = GHC.Tuple.(,,,,,)- data TupleTyCtor6Sym5 (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * *)- data TupleTyCtor6Sym4 (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * (TyFun * * -> *))- data TupleTyCtor6Sym3 (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * (TyFun * (TyFun * * -> *) -> *))- data TupleTyCtor6Sym2 (l :: *)- (l :: *)- (l :: TyFun * (TyFun * (TyFun * (TyFun * * -> *) -> *) -> *))- data TupleTyCtor6Sym1 (l :: *)- (l :: TyFun * (TyFun * (TyFun * (TyFun * (TyFun * * -> *) -> *)- -> *)- -> *))- data TupleTyCtor6Sym0 (k :: TyFun * (TyFun * (TyFun * (TyFun * (TyFun * (TyFun * *- -> *)- -> *)- -> *)- -> *)- -> *))- type instance Apply (TupleTyCtor6Sym5 a a a a a) a =- TupleTyCtor6 a a a a a a- type instance Apply (TupleTyCtor6Sym4 a a a a) a =- TupleTyCtor6Sym5 a a a a a- type instance Apply (TupleTyCtor6Sym3 a a a) a =- TupleTyCtor6Sym4 a a a a- type instance Apply (TupleTyCtor6Sym2 a a) a =- TupleTyCtor6Sym3 a a a- type instance Apply (TupleTyCtor6Sym1 a) a = TupleTyCtor6Sym2 a a- type instance Apply TupleTyCtor6Sym0 a = TupleTyCtor6Sym1 a- data Tuple6Sym5 (l :: a)- (l :: b)- (l :: c)- (l :: d)- (l :: e)- (l :: TyFun f (GHC.Tuple.(,,,,,) a b c d e f))- data Tuple6Sym4 (l :: a)- (l :: b)- (l :: c)- (l :: d)- (l :: TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f) -> *))- data Tuple6Sym3 (l :: a)- (l :: b)- (l :: c)- (l :: TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)- -> *)- -> *))- data Tuple6Sym2 (l :: a)- (l :: b)- (l :: TyFun c (TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)- -> *)- -> *)- -> *))- data Tuple6Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)- -> *)- -> *)- -> *)- -> *))- data Tuple6Sym0 (k :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)- -> *)- -> *)- -> *)- -> *)- -> *))- type instance Apply (Tuple6Sym5 a a a a a) a =- GHC.Tuple.(,,,,,) a a a a a a- type instance Apply (Tuple6Sym4 a a a a) a = Tuple6Sym5 a a a a a- type instance Apply (Tuple6Sym3 a a a) a = Tuple6Sym4 a a a a- type instance Apply (Tuple6Sym2 a a) a = Tuple6Sym3 a a a- type instance Apply (Tuple6Sym1 a) a = Tuple6Sym2 a a- type instance Apply Tuple6Sym0 a = Tuple6Sym1 a- data instance Sing (z :: GHC.Tuple.(,,,,,) a b c d e f)- = forall (n :: a)- (n :: b)- (n :: c)- (n :: d)- (n :: e)- (n :: f). z ~ GHC.Tuple.(,,,,,) n n n n n n =>- STuple6 (Sing n) (Sing n) (Sing n) (Sing n) (Sing n) (Sing n)- type STuple6 (z :: GHC.Tuple.(,,,,,) a b c d e f) = Sing z- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b),- SingKind (KProxy :: KProxy c),- SingKind (KProxy :: KProxy d),- SingKind (KProxy :: KProxy e),- SingKind (KProxy :: KProxy f)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,,,) a b c d e f)) where- type instance DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,,,) a b c d e f)) =- GHC.Tuple.(,,,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d)) (DemoteRep (KProxy :: KProxy e)) (DemoteRep (KProxy :: KProxy f))- fromSing (STuple6 b b b b b b)- = GHC.Tuple.(,,,,,)- (fromSing b)- (fromSing b)- (fromSing b)- (fromSing b)- (fromSing b)- (fromSing b)- toSing (GHC.Tuple.(,,,,,) b b b b b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy a), - toSing b :: SomeSing (KProxy :: KProxy b), - toSing b :: SomeSing (KProxy :: KProxy c), - toSing b :: SomeSing (KProxy :: KProxy d), - toSing b :: SomeSing (KProxy :: KProxy e), - toSing b :: SomeSing (KProxy :: KProxy f))- of {- (SomeSing c,- SomeSing c,- SomeSing c,- SomeSing c,- SomeSing c,- SomeSing c)- -> SomeSing (STuple6 c c c c c c) }- instance (SingI n, SingI n, SingI n, SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,,,,) (n :: a) (n :: b) (n :: c) (n :: d) (n :: e) (n :: f)) where- sing = STuple6 sing sing sing sing sing sing- type TupleTyCtor7 = GHC.Tuple.(,,,,,,)- data TupleTyCtor7Sym6 (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * *)- data TupleTyCtor7Sym5 (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * (TyFun * * -> *))- data TupleTyCtor7Sym4 (l :: *)- (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * (TyFun * (TyFun * * -> *) -> *))- data TupleTyCtor7Sym3 (l :: *)- (l :: *)- (l :: *)- (l :: TyFun * (TyFun * (TyFun * (TyFun * * -> *) -> *) -> *))- data TupleTyCtor7Sym2 (l :: *)- (l :: *)- (l :: TyFun * (TyFun * (TyFun * (TyFun * (TyFun * * -> *) -> *)- -> *)- -> *))- data TupleTyCtor7Sym1 (l :: *)- (l :: TyFun * (TyFun * (TyFun * (TyFun * (TyFun * (TyFun * * -> *)- -> *)- -> *)- -> *)- -> *))- data TupleTyCtor7Sym0 (k :: TyFun * (TyFun * (TyFun * (TyFun * (TyFun * (TyFun * (TyFun * *- -> *)- -> *)- -> *)- -> *)- -> *)- -> *))- type instance Apply (TupleTyCtor7Sym6 a a a a a a) a =- TupleTyCtor7 a a a a a a a- type instance Apply (TupleTyCtor7Sym5 a a a a a) a =- TupleTyCtor7Sym6 a a a a a a- type instance Apply (TupleTyCtor7Sym4 a a a a) a =- TupleTyCtor7Sym5 a a a a a- type instance Apply (TupleTyCtor7Sym3 a a a) a =- TupleTyCtor7Sym4 a a a a- type instance Apply (TupleTyCtor7Sym2 a a) a =- TupleTyCtor7Sym3 a a a- type instance Apply (TupleTyCtor7Sym1 a) a = TupleTyCtor7Sym2 a a- type instance Apply TupleTyCtor7Sym0 a = TupleTyCtor7Sym1 a- data Tuple7Sym6 (l :: a)- (l :: b)- (l :: c)- (l :: d)- (l :: e)- (l :: f)- (l :: TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g))- data Tuple7Sym5 (l :: a)- (l :: b)- (l :: c)- (l :: d)- (l :: e)- (l :: TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g) -> *))- data Tuple7Sym4 (l :: a)- (l :: b)- (l :: c)- (l :: d)- (l :: TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)- -> *)- -> *))- data Tuple7Sym3 (l :: a)- (l :: b)- (l :: c)- (l :: TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)- -> *)- -> *)- -> *))- data Tuple7Sym2 (l :: a)- (l :: b)- (l :: TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)- -> *)- -> *)- -> *)- -> *))- data Tuple7Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)- -> *)- -> *)- -> *)- -> *)- -> *))- data Tuple7Sym0 (k :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)- -> *)- -> *)- -> *)- -> *)- -> *)- -> *))- type instance Apply (Tuple7Sym6 a a a a a a) a =- GHC.Tuple.(,,,,,,) a a a a a a a- type instance Apply (Tuple7Sym5 a a a a a) a =- Tuple7Sym6 a a a a a a- type instance Apply (Tuple7Sym4 a a a a) a = Tuple7Sym5 a a a a a- type instance Apply (Tuple7Sym3 a a a) a = Tuple7Sym4 a a a a- type instance Apply (Tuple7Sym2 a a) a = Tuple7Sym3 a a a- type instance Apply (Tuple7Sym1 a) a = Tuple7Sym2 a a- type instance Apply Tuple7Sym0 a = Tuple7Sym1 a- data instance Sing (z :: GHC.Tuple.(,,,,,,) a b c d e f g)- = forall (n :: a)- (n :: b)- (n :: c)- (n :: d)- (n :: e)- (n :: f)- (n :: g). z ~ GHC.Tuple.(,,,,,,) n n n n n n n =>- STuple7 (Sing n) (Sing n) (Sing n) (Sing n) (Sing n) (Sing n) (Sing n)- type STuple7 (z :: GHC.Tuple.(,,,,,,) a b c d e f g) = Sing z- instance (SingKind (KProxy :: KProxy a),- SingKind (KProxy :: KProxy b),- SingKind (KProxy :: KProxy c),- SingKind (KProxy :: KProxy d),- SingKind (KProxy :: KProxy e),- SingKind (KProxy :: KProxy f),- SingKind (KProxy :: KProxy g)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,,,,) a b c d e f g)) where- type instance DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,,,,) a b c d e f g)) =- GHC.Tuple.(,,,,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d)) (DemoteRep (KProxy :: KProxy e)) (DemoteRep (KProxy :: KProxy f)) (DemoteRep (KProxy :: KProxy g))- fromSing (STuple7 b b b b b b b)- = GHC.Tuple.(,,,,,,)- (fromSing b)- (fromSing b)- (fromSing b)- (fromSing b)- (fromSing b)- (fromSing b)- (fromSing b)- toSing (GHC.Tuple.(,,,,,,) b b b b b b b)- = case- (toSing b :: SomeSing (KProxy :: KProxy a), - toSing b :: SomeSing (KProxy :: KProxy b), - toSing b :: SomeSing (KProxy :: KProxy c), - toSing b :: SomeSing (KProxy :: KProxy d), - toSing b :: SomeSing (KProxy :: KProxy e), - toSing b :: SomeSing (KProxy :: KProxy f), - toSing b :: SomeSing (KProxy :: KProxy g))- of {- (SomeSing c,- SomeSing c,- SomeSing c,- SomeSing c,- SomeSing c,- SomeSing c,- SomeSing c)- -> SomeSing (STuple7 c c c c c c c) }- instance (SingI n,- SingI n,- SingI n,- SingI n,- SingI n,- SingI n,- SingI n) =>- SingI (GHC.Tuple.(,,,,,,) (n :: a) (n :: b) (n :: c) (n :: d) (n :: e) (n :: f) (n :: g)) where- sing = STuple7 sing sing sing sing sing sing sing
tests/compile-and-dump/Singletons/Tuples.ghc78.template view
@@ -3,39 +3,40 @@ [''(), ''(,), ''(,,), ''(,,,), ''(,,,,), ''(,,,,,), ''(,,,,,,)] ======> Singletons/Tuples.hs:(0,0)-(0,0)- type Tuple0Sym0 = GHC.Tuple.()- data instance Sing (z :: GHC.Tuple.())- = z ~ GHC.Tuple.() => STuple0- type STuple0 (z :: GHC.Tuple.()) = Sing z- instance SingKind (KProxy :: KProxy GHC.Tuple.()) where- type DemoteRep (KProxy :: KProxy GHC.Tuple.()) = GHC.Tuple.()+ type Tuple0Sym0 = '()+ data instance Sing (z :: ()) = z ~ '() => STuple0+ type STuple0 (z :: ()) = Sing z+ instance SingKind (KProxy :: KProxy ()) where+ type DemoteRep (KProxy :: KProxy ()) = () fromSing STuple0 = GHC.Tuple.() toSing GHC.Tuple.() = SomeSing STuple0- instance SingI GHC.Tuple.() where+ instance SingI '() where sing = STuple0- type Tuple2Sym2 (t :: a) (t :: b) = GHC.Tuple.(,) t t+ type Tuple2Sym2 (t :: a) (t :: b) = '(t, t) instance SuppressUnusedWarnings Tuple2Sym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple2Sym1KindInference GHC.Tuple.())- data Tuple2Sym1 (l :: a) (l :: TyFun b (GHC.Tuple.(,) a b))+ data Tuple2Sym1 (l :: a) (l :: TyFun b (a, b)) = forall arg. KindOf (Apply (Tuple2Sym1 l) arg) ~ KindOf (Tuple2Sym2 l arg) => Tuple2Sym1KindInference type instance Apply (Tuple2Sym1 l) l = Tuple2Sym2 l l instance SuppressUnusedWarnings Tuple2Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple2Sym0KindInference GHC.Tuple.())- data Tuple2Sym0 (l :: TyFun a (TyFun b (GHC.Tuple.(,) a b) -> *))+ data Tuple2Sym0 (l :: TyFun a (TyFun b (a, b) -> *)) = forall arg. KindOf (Apply Tuple2Sym0 arg) ~ KindOf (Tuple2Sym1 arg) => Tuple2Sym0KindInference type instance Apply Tuple2Sym0 l = Tuple2Sym1 l- data instance Sing (z :: GHC.Tuple.(,) a b)- = forall (n :: a) (n :: b). z ~ GHC.Tuple.(,) n n =>+ data instance Sing (z :: (a, b))+ = forall (n :: a) (n :: b). z ~ '(n, n) => STuple2 (Sing n) (Sing n)- type STuple2 (z :: GHC.Tuple.(,) a b) = Sing z+ type STuple2 (z :: (a, b)) = Sing z instance (SingKind (KProxy :: KProxy a), SingKind (KProxy :: KProxy b)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,) a b)) where- type DemoteRep (KProxy :: KProxy (GHC.Tuple.(,) a b)) = GHC.Tuple.(,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b))+ SingKind (KProxy :: KProxy (a, b)) where+ type DemoteRep (KProxy :: KProxy (a,+ b)) = (DemoteRep (KProxy :: KProxy a),+ DemoteRep (KProxy :: KProxy b)) fromSing (STuple2 b b) = GHC.Tuple.(,) (fromSing b) (fromSing b) toSing (GHC.Tuple.(,) b b) = case@@ -44,45 +45,44 @@ (toSing b :: SomeSing (KProxy :: KProxy b)) of { GHC.Tuple.(,) (SomeSing c) (SomeSing c) -> SomeSing (STuple2 c c) }- instance (SingI n, SingI n) =>- SingI (GHC.Tuple.(,) (n :: a) (n :: b)) where+ instance (SingI n, SingI n) => SingI '((n :: a), (n :: b)) where sing = STuple2 sing sing- type Tuple3Sym3 (t :: a) (t :: b) (t :: c) = GHC.Tuple.(,,) t t t+ type Tuple3Sym3 (t :: a) (t :: b) (t :: c) = '(t, t, t) instance SuppressUnusedWarnings Tuple3Sym2 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple3Sym2KindInference GHC.Tuple.())- data Tuple3Sym2 (l :: a)- (l :: b)- (l :: TyFun c (GHC.Tuple.(,,) a b c))+ data Tuple3Sym2 (l :: a) (l :: b) (l :: TyFun c (a, b, c)) = forall arg. KindOf (Apply (Tuple3Sym2 l l) arg) ~ KindOf (Tuple3Sym3 l l arg) => Tuple3Sym2KindInference type instance Apply (Tuple3Sym2 l l) l = Tuple3Sym3 l l l instance SuppressUnusedWarnings Tuple3Sym1 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple3Sym1KindInference GHC.Tuple.())- data Tuple3Sym1 (l :: a)- (l :: TyFun b (TyFun c (GHC.Tuple.(,,) a b c) -> *))+ data Tuple3Sym1 (l :: a) (l :: TyFun b (TyFun c (a, b, c) -> *)) = forall arg. KindOf (Apply (Tuple3Sym1 l) arg) ~ KindOf (Tuple3Sym2 l arg) => Tuple3Sym1KindInference type instance Apply (Tuple3Sym1 l) l = Tuple3Sym2 l l instance SuppressUnusedWarnings Tuple3Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple3Sym0KindInference GHC.Tuple.())- data Tuple3Sym0 (l :: TyFun a (TyFun b (TyFun c (GHC.Tuple.(,,) a b c)- -> *)+ data Tuple3Sym0 (l :: TyFun a (TyFun b (TyFun c (a, b, c) -> *) -> *)) = forall arg. KindOf (Apply Tuple3Sym0 arg) ~ KindOf (Tuple3Sym1 arg) => Tuple3Sym0KindInference type instance Apply Tuple3Sym0 l = Tuple3Sym1 l- data instance Sing (z :: GHC.Tuple.(,,) a b c)- = forall (n :: a) (n :: b) (n :: c). z ~ GHC.Tuple.(,,) n n n =>+ data instance Sing (z :: (a, b, c))+ = forall (n :: a) (n :: b) (n :: c). z ~ '(n, n, n) => STuple3 (Sing n) (Sing n) (Sing n)- type STuple3 (z :: GHC.Tuple.(,,) a b c) = Sing z+ type STuple3 (z :: (a, b, c)) = Sing z instance (SingKind (KProxy :: KProxy a), SingKind (KProxy :: KProxy b), SingKind (KProxy :: KProxy c)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,) a b c)) where- type DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,) a b c)) = GHC.Tuple.(,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c))+ SingKind (KProxy :: KProxy (a, b, c)) where+ type DemoteRep (KProxy :: KProxy (a,+ b,+ c)) = (DemoteRep (KProxy :: KProxy a),+ DemoteRep (KProxy :: KProxy b),+ DemoteRep (KProxy :: KProxy c)) fromSing (STuple3 b b b) = GHC.Tuple.(,,) (fromSing b) (fromSing b) (fromSing b) toSing (GHC.Tuple.(,,) b b b)@@ -95,17 +95,16 @@ GHC.Tuple.(,,) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (STuple3 c c c) } instance (SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,) (n :: a) (n :: b) (n :: c)) where+ SingI '((n :: a), (n :: b), (n :: c)) where sing = STuple3 sing sing sing- type Tuple4Sym4 (t :: a) (t :: b) (t :: c) (t :: d) =- GHC.Tuple.(,,,) t t t t+ type Tuple4Sym4 (t :: a) (t :: b) (t :: c) (t :: d) = '(t, t, t, t) instance SuppressUnusedWarnings Tuple4Sym3 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple4Sym3KindInference GHC.Tuple.()) data Tuple4Sym3 (l :: a) (l :: b) (l :: c)- (l :: TyFun d (GHC.Tuple.(,,,) a b c d))+ (l :: TyFun d (a, b, c, d)) = forall arg. KindOf (Apply (Tuple4Sym3 l l l) arg) ~ KindOf (Tuple4Sym4 l l l arg) => Tuple4Sym3KindInference type instance Apply (Tuple4Sym3 l l l) l = Tuple4Sym4 l l l l@@ -114,7 +113,7 @@ = snd (GHC.Tuple.(,) Tuple4Sym2KindInference GHC.Tuple.()) data Tuple4Sym2 (l :: a) (l :: b)- (l :: TyFun c (TyFun d (GHC.Tuple.(,,,) a b c d) -> *))+ (l :: TyFun c (TyFun d (a, b, c, d) -> *)) = forall arg. KindOf (Apply (Tuple4Sym2 l l) arg) ~ KindOf (Tuple4Sym3 l l arg) => Tuple4Sym2KindInference type instance Apply (Tuple4Sym2 l l) l = Tuple4Sym3 l l l@@ -122,34 +121,39 @@ suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple4Sym1KindInference GHC.Tuple.()) data Tuple4Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (GHC.Tuple.(,,,) a b c d) -> *)- -> *))+ (l :: TyFun b (TyFun c (TyFun d (a, b, c, d) -> *) -> *)) = forall arg. KindOf (Apply (Tuple4Sym1 l) arg) ~ KindOf (Tuple4Sym2 l arg) => Tuple4Sym1KindInference type instance Apply (Tuple4Sym1 l) l = Tuple4Sym2 l l instance SuppressUnusedWarnings Tuple4Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple4Sym0KindInference GHC.Tuple.())- data Tuple4Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (GHC.Tuple.(,,,) a b c d)+ data Tuple4Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (a,+ b,+ c,+ d) -> *) -> *) -> *)) = forall arg. KindOf (Apply Tuple4Sym0 arg) ~ KindOf (Tuple4Sym1 arg) => Tuple4Sym0KindInference type instance Apply Tuple4Sym0 l = Tuple4Sym1 l- data instance Sing (z :: GHC.Tuple.(,,,) a b c d)- = forall (n :: a)- (n :: b)- (n :: c)- (n :: d). z ~ GHC.Tuple.(,,,) n n n n =>+ data instance Sing (z :: (a, b, c, d))+ = forall (n :: a) (n :: b) (n :: c) (n :: d). z ~ '(n, n, n, n) => STuple4 (Sing n) (Sing n) (Sing n) (Sing n)- type STuple4 (z :: GHC.Tuple.(,,,) a b c d) = Sing z+ type STuple4 (z :: (a, b, c, d)) = Sing z instance (SingKind (KProxy :: KProxy a), SingKind (KProxy :: KProxy b), SingKind (KProxy :: KProxy c), SingKind (KProxy :: KProxy d)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,) a b c d)) where- type DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,) a b c d)) = GHC.Tuple.(,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d))+ SingKind (KProxy :: KProxy (a, b, c, d)) where+ type DemoteRep (KProxy :: KProxy (a,+ b,+ c,+ d)) = (DemoteRep (KProxy :: KProxy a),+ DemoteRep (KProxy :: KProxy b),+ DemoteRep (KProxy :: KProxy c),+ DemoteRep (KProxy :: KProxy d)) fromSing (STuple4 b b b b) = GHC.Tuple.(,,,) (fromSing b) (fromSing b) (fromSing b) (fromSing b)@@ -164,10 +168,10 @@ GHC.Tuple.(,,,) (SomeSing c) (SomeSing c) (SomeSing c) (SomeSing c) -> SomeSing (STuple4 c c c c) } instance (SingI n, SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,,) (n :: a) (n :: b) (n :: c) (n :: d)) where+ SingI '((n :: a), (n :: b), (n :: c), (n :: d)) where sing = STuple4 sing sing sing sing type Tuple5Sym5 (t :: a) (t :: b) (t :: c) (t :: d) (t :: e) =- GHC.Tuple.(,,,,) t t t t t+ '(t, t, t, t, t) instance SuppressUnusedWarnings Tuple5Sym4 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple5Sym4KindInference GHC.Tuple.())@@ -175,7 +179,7 @@ (l :: b) (l :: c) (l :: d)- (l :: TyFun e (GHC.Tuple.(,,,,) a b c d e))+ (l :: TyFun e (a, b, c, d, e)) = forall arg. KindOf (Apply (Tuple5Sym4 l l l l) arg) ~ KindOf (Tuple5Sym5 l l l l arg) => Tuple5Sym4KindInference type instance Apply (Tuple5Sym4 l l l l) l = Tuple5Sym5 l l l l l@@ -185,7 +189,7 @@ data Tuple5Sym3 (l :: a) (l :: b) (l :: c)- (l :: TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e) -> *))+ (l :: TyFun d (TyFun e (a, b, c, d, e) -> *)) = forall arg. KindOf (Apply (Tuple5Sym3 l l l) arg) ~ KindOf (Tuple5Sym4 l l l arg) => Tuple5Sym3KindInference type instance Apply (Tuple5Sym3 l l l) l = Tuple5Sym4 l l l l@@ -194,8 +198,7 @@ = snd (GHC.Tuple.(,) Tuple5Sym2KindInference GHC.Tuple.()) data Tuple5Sym2 (l :: a) (l :: b)- (l :: TyFun c (TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e) -> *)- -> *))+ (l :: TyFun c (TyFun d (TyFun e (a, b, c, d, e) -> *) -> *)) = forall arg. KindOf (Apply (Tuple5Sym2 l l) arg) ~ KindOf (Tuple5Sym3 l l arg) => Tuple5Sym2KindInference type instance Apply (Tuple5Sym2 l l) l = Tuple5Sym3 l l l@@ -203,8 +206,7 @@ suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple5Sym1KindInference GHC.Tuple.()) data Tuple5Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e)- -> *)+ (l :: TyFun b (TyFun c (TyFun d (TyFun e (a, b, c, d, e) -> *) -> *) -> *)) = forall arg. KindOf (Apply (Tuple5Sym1 l) arg) ~ KindOf (Tuple5Sym2 l arg) =>@@ -213,7 +215,11 @@ instance SuppressUnusedWarnings Tuple5Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple5Sym0KindInference GHC.Tuple.())- data Tuple5Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (GHC.Tuple.(,,,,) a b c d e)+ data Tuple5Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (a,+ b,+ c,+ d,+ e) -> *) -> *) -> *)@@ -221,21 +227,29 @@ = forall arg. KindOf (Apply Tuple5Sym0 arg) ~ KindOf (Tuple5Sym1 arg) => Tuple5Sym0KindInference type instance Apply Tuple5Sym0 l = Tuple5Sym1 l- data instance Sing (z :: GHC.Tuple.(,,,,) a b c d e)- = forall (n :: a)- (n :: b)- (n :: c)- (n :: d)- (n :: e). z ~ GHC.Tuple.(,,,,) n n n n n =>+ data instance Sing (z :: (a, b, c, d, e))+ = forall (n :: a) (n :: b) (n :: c) (n :: d) (n :: e). z ~ '(n,+ n,+ n,+ n,+ n) => STuple5 (Sing n) (Sing n) (Sing n) (Sing n) (Sing n)- type STuple5 (z :: GHC.Tuple.(,,,,) a b c d e) = Sing z+ type STuple5 (z :: (a, b, c, d, e)) = Sing z instance (SingKind (KProxy :: KProxy a), SingKind (KProxy :: KProxy b), SingKind (KProxy :: KProxy c), SingKind (KProxy :: KProxy d), SingKind (KProxy :: KProxy e)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,,) a b c d e)) where- type DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,,) a b c d e)) = GHC.Tuple.(,,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d)) (DemoteRep (KProxy :: KProxy e))+ SingKind (KProxy :: KProxy (a, b, c, d, e)) where+ type DemoteRep (KProxy :: KProxy (a,+ b,+ c,+ d,+ e)) = (DemoteRep (KProxy :: KProxy a),+ DemoteRep (KProxy :: KProxy b),+ DemoteRep (KProxy :: KProxy c),+ DemoteRep (KProxy :: KProxy d),+ DemoteRep (KProxy :: KProxy e)) fromSing (STuple5 b b b b b) = GHC.Tuple.(,,,,) (fromSing b) (fromSing b) (fromSing b) (fromSing b) (fromSing b)@@ -255,7 +269,7 @@ (SomeSing c) -> SomeSing (STuple5 c c c c c) } instance (SingI n, SingI n, SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,,,) (n :: a) (n :: b) (n :: c) (n :: d) (n :: e)) where+ SingI '((n :: a), (n :: b), (n :: c), (n :: d), (n :: e)) where sing = STuple5 sing sing sing sing sing type Tuple6Sym6 (t :: a) (t :: b)@@ -263,7 +277,7 @@ (t :: d) (t :: e) (t :: f) =- GHC.Tuple.(,,,,,) t t t t t t+ '(t, t, t, t, t, t) instance SuppressUnusedWarnings Tuple6Sym5 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple6Sym5KindInference GHC.Tuple.())@@ -272,7 +286,7 @@ (l :: c) (l :: d) (l :: e)- (l :: TyFun f (GHC.Tuple.(,,,,,) a b c d e f))+ (l :: TyFun f (a, b, c, d, e, f)) = forall arg. KindOf (Apply (Tuple6Sym5 l l l l l) arg) ~ KindOf (Tuple6Sym6 l l l l l arg) => Tuple6Sym5KindInference type instance Apply (Tuple6Sym5 l l l l l) l = Tuple6Sym6 l l l l l l@@ -283,7 +297,7 @@ (l :: b) (l :: c) (l :: d)- (l :: TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f) -> *))+ (l :: TyFun e (TyFun f (a, b, c, d, e, f) -> *)) = forall arg. KindOf (Apply (Tuple6Sym4 l l l l) arg) ~ KindOf (Tuple6Sym5 l l l l arg) => Tuple6Sym4KindInference type instance Apply (Tuple6Sym4 l l l l) l = Tuple6Sym5 l l l l l@@ -293,9 +307,7 @@ data Tuple6Sym3 (l :: a) (l :: b) (l :: c)- (l :: TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)- -> *)- -> *))+ (l :: TyFun d (TyFun e (TyFun f (a, b, c, d, e, f) -> *) -> *)) = forall arg. KindOf (Apply (Tuple6Sym3 l l l) arg) ~ KindOf (Tuple6Sym4 l l l arg) => Tuple6Sym3KindInference type instance Apply (Tuple6Sym3 l l l) l = Tuple6Sym4 l l l l@@ -304,8 +316,7 @@ = snd (GHC.Tuple.(,) Tuple6Sym2KindInference GHC.Tuple.()) data Tuple6Sym2 (l :: a) (l :: b)- (l :: TyFun c (TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)- -> *)+ (l :: TyFun c (TyFun d (TyFun e (TyFun f (a, b, c, d, e, f) -> *) -> *) -> *)) = forall arg. KindOf (Apply (Tuple6Sym2 l l) arg) ~ KindOf (Tuple6Sym3 l l arg) =>@@ -315,7 +326,12 @@ suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple6Sym1KindInference GHC.Tuple.()) data Tuple6Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)+ (l :: TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (a,+ b,+ c,+ d,+ e,+ f) -> *) -> *) -> *)@@ -326,7 +342,12 @@ instance SuppressUnusedWarnings Tuple6Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple6Sym0KindInference GHC.Tuple.())- data Tuple6Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (GHC.Tuple.(,,,,,) a b c d e f)+ data Tuple6Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (a,+ b,+ c,+ d,+ e,+ f) -> *) -> *) -> *)@@ -335,23 +356,33 @@ = forall arg. KindOf (Apply Tuple6Sym0 arg) ~ KindOf (Tuple6Sym1 arg) => Tuple6Sym0KindInference type instance Apply Tuple6Sym0 l = Tuple6Sym1 l- data instance Sing (z :: GHC.Tuple.(,,,,,) a b c d e f)+ data instance Sing (z :: (a, b, c, d, e, f)) = forall (n :: a) (n :: b) (n :: c) (n :: d) (n :: e)- (n :: f). z ~ GHC.Tuple.(,,,,,) n n n n n n =>+ (n :: f). z ~ '(n, n, n, n, n, n) => STuple6 (Sing n) (Sing n) (Sing n) (Sing n) (Sing n) (Sing n)- type STuple6 (z :: GHC.Tuple.(,,,,,) a b c d e f) = Sing z+ type STuple6 (z :: (a, b, c, d, e, f)) = Sing z instance (SingKind (KProxy :: KProxy a), SingKind (KProxy :: KProxy b), SingKind (KProxy :: KProxy c), SingKind (KProxy :: KProxy d), SingKind (KProxy :: KProxy e), SingKind (KProxy :: KProxy f)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,,,) a b c d e f)) where- type DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,,,) a b c d e f)) = GHC.Tuple.(,,,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d)) (DemoteRep (KProxy :: KProxy e)) (DemoteRep (KProxy :: KProxy f))+ SingKind (KProxy :: KProxy (a, b, c, d, e, f)) where+ type DemoteRep (KProxy :: KProxy (a,+ b,+ c,+ d,+ e,+ f)) = (DemoteRep (KProxy :: KProxy a),+ DemoteRep (KProxy :: KProxy b),+ DemoteRep (KProxy :: KProxy c),+ DemoteRep (KProxy :: KProxy d),+ DemoteRep (KProxy :: KProxy e),+ DemoteRep (KProxy :: KProxy f)) fromSing (STuple6 b b b b b b) = GHC.Tuple.(,,,,,) (fromSing b)@@ -378,7 +409,12 @@ (SomeSing c) -> SomeSing (STuple6 c c c c c c) } instance (SingI n, SingI n, SingI n, SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,,,,) (n :: a) (n :: b) (n :: c) (n :: d) (n :: e) (n :: f)) where+ SingI '((n :: a),+ (n :: b),+ (n :: c),+ (n :: d),+ (n :: e),+ (n :: f)) where sing = STuple6 sing sing sing sing sing sing type Tuple7Sym7 (t :: a) (t :: b)@@ -387,7 +423,7 @@ (t :: e) (t :: f) (t :: g) =- GHC.Tuple.(,,,,,,) t t t t t t t+ '(t, t, t, t, t, t, t) instance SuppressUnusedWarnings Tuple7Sym6 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple7Sym6KindInference GHC.Tuple.())@@ -397,7 +433,7 @@ (l :: d) (l :: e) (l :: f)- (l :: TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g))+ (l :: TyFun g (a, b, c, d, e, f, g)) = forall arg. KindOf (Apply (Tuple7Sym6 l l l l l l) arg) ~ KindOf (Tuple7Sym7 l l l l l l arg) => Tuple7Sym6KindInference type instance Apply (Tuple7Sym6 l l l l l l) l = Tuple7Sym7 l l l l l l l@@ -409,7 +445,7 @@ (l :: c) (l :: d) (l :: e)- (l :: TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g) -> *))+ (l :: TyFun f (TyFun g (a, b, c, d, e, f, g) -> *)) = forall arg. KindOf (Apply (Tuple7Sym5 l l l l l) arg) ~ KindOf (Tuple7Sym6 l l l l l arg) => Tuple7Sym5KindInference type instance Apply (Tuple7Sym5 l l l l l) l = Tuple7Sym6 l l l l l l@@ -420,9 +456,7 @@ (l :: b) (l :: c) (l :: d)- (l :: TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)- -> *)- -> *))+ (l :: TyFun e (TyFun f (TyFun g (a, b, c, d, e, f, g) -> *) -> *)) = forall arg. KindOf (Apply (Tuple7Sym4 l l l l) arg) ~ KindOf (Tuple7Sym5 l l l l arg) => Tuple7Sym4KindInference type instance Apply (Tuple7Sym4 l l l l) l = Tuple7Sym5 l l l l l@@ -432,7 +466,7 @@ data Tuple7Sym3 (l :: a) (l :: b) (l :: c)- (l :: TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)+ (l :: TyFun d (TyFun e (TyFun f (TyFun g (a, b, c, d, e, f, g) -> *) -> *) -> *))@@ -444,7 +478,13 @@ = snd (GHC.Tuple.(,) Tuple7Sym2KindInference GHC.Tuple.()) data Tuple7Sym2 (l :: a) (l :: b)- (l :: TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)+ (l :: TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (a,+ b,+ c,+ d,+ e,+ f,+ g) -> *) -> *) -> *)@@ -456,7 +496,13 @@ suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple7Sym1KindInference GHC.Tuple.()) data Tuple7Sym1 (l :: a)- (l :: TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)+ (l :: TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (a,+ b,+ c,+ d,+ e,+ f,+ g) -> *) -> *) -> *)@@ -468,7 +514,13 @@ instance SuppressUnusedWarnings Tuple7Sym0 where suppressUnusedWarnings _ = snd (GHC.Tuple.(,) Tuple7Sym0KindInference GHC.Tuple.())- data Tuple7Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (GHC.Tuple.(,,,,,,) a b c d e f g)+ data Tuple7Sym0 (l :: TyFun a (TyFun b (TyFun c (TyFun d (TyFun e (TyFun f (TyFun g (a,+ b,+ c,+ d,+ e,+ f,+ g) -> *) -> *) -> *)@@ -478,16 +530,16 @@ = forall arg. KindOf (Apply Tuple7Sym0 arg) ~ KindOf (Tuple7Sym1 arg) => Tuple7Sym0KindInference type instance Apply Tuple7Sym0 l = Tuple7Sym1 l- data instance Sing (z :: GHC.Tuple.(,,,,,,) a b c d e f g)+ data instance Sing (z :: (a, b, c, d, e, f, g)) = forall (n :: a) (n :: b) (n :: c) (n :: d) (n :: e) (n :: f)- (n :: g). z ~ GHC.Tuple.(,,,,,,) n n n n n n n =>+ (n :: g). z ~ '(n, n, n, n, n, n, n) => STuple7 (Sing n) (Sing n) (Sing n) (Sing n) (Sing n) (Sing n) (Sing n)- type STuple7 (z :: GHC.Tuple.(,,,,,,) a b c d e f g) = Sing z+ type STuple7 (z :: (a, b, c, d, e, f, g)) = Sing z instance (SingKind (KProxy :: KProxy a), SingKind (KProxy :: KProxy b), SingKind (KProxy :: KProxy c),@@ -495,8 +547,20 @@ SingKind (KProxy :: KProxy e), SingKind (KProxy :: KProxy f), SingKind (KProxy :: KProxy g)) =>- SingKind (KProxy :: KProxy (GHC.Tuple.(,,,,,,) a b c d e f g)) where- type DemoteRep (KProxy :: KProxy (GHC.Tuple.(,,,,,,) a b c d e f g)) = GHC.Tuple.(,,,,,,) (DemoteRep (KProxy :: KProxy a)) (DemoteRep (KProxy :: KProxy b)) (DemoteRep (KProxy :: KProxy c)) (DemoteRep (KProxy :: KProxy d)) (DemoteRep (KProxy :: KProxy e)) (DemoteRep (KProxy :: KProxy f)) (DemoteRep (KProxy :: KProxy g))+ SingKind (KProxy :: KProxy (a, b, c, d, e, f, g)) where+ type DemoteRep (KProxy :: KProxy (a,+ b,+ c,+ d,+ e,+ f,+ g)) = (DemoteRep (KProxy :: KProxy a),+ DemoteRep (KProxy :: KProxy b),+ DemoteRep (KProxy :: KProxy c),+ DemoteRep (KProxy :: KProxy d),+ DemoteRep (KProxy :: KProxy e),+ DemoteRep (KProxy :: KProxy f),+ DemoteRep (KProxy :: KProxy g)) fromSing (STuple7 b b b b b b b) = GHC.Tuple.(,,,,,,) (fromSing b)@@ -532,5 +596,11 @@ SingI n, SingI n, SingI n) =>- SingI (GHC.Tuple.(,,,,,,) (n :: a) (n :: b) (n :: c) (n :: d) (n :: e) (n :: f) (n :: g)) where+ SingI '((n :: a),+ (n :: b),+ (n :: c),+ (n :: d),+ (n :: e),+ (n :: f),+ (n :: g)) where sing = STuple7 sing sing sing sing sing sing sing