xor = trans2 xor
-- Typing
+instance NameTyOf Bool where
+ nameTyOf _c = ["Bool"] `Mod` "Bool"
instance ClassInstancesFor Bool where
- proveConstraintFor _ (TyApp _ (TyConst _ _ q) c)
- | Just HRefl <- proj_ConstKiTy @_ @Bool c
+ proveConstraintFor _ (TyConst _ _ q :@ b)
+ | Just HRefl <- proj_ConstKiTy @_ @Bool b
= case () of
_ | Just Refl <- proj_Const @Bounded q -> Just Dict
| Just Refl <- proj_Const @Enum q -> Just Dict
-- Compiling
instance Gram_Term_AtomsFor src ss g Bool
-instance (Source src, Inj_Sym ss Bool) => ModuleFor src ss Bool where
+instance (Source src, SymInj ss Bool) => ModuleFor src ss Bool where
moduleFor = ["Bool"] `moduleWhere`
[ "False" := teBool False
, "True" := teBool True
]
-- ** 'Type's
-tyBool :: Source src => Inj_Len vs => Type src vs Bool
+tyBool :: Source src => LenInj vs => Type src vs Bool
tyBool = tyConst @(K Bool) @Bool
-- ** 'Term's
-teBool :: Source src => Inj_Sym ss Bool => Bool -> Term src ss ts '[] (() #> Bool)
+teBool :: Source src => SymInj ss Bool => Bool -> Term src ss ts '[] (() #> Bool)
teBool b = Term noConstraint tyBool $ teSym @Bool $ bool b
teBool_not :: TermDef Bool '[] (() #> (Bool -> Bool))