#include "macros.h"
LANGUAGE_TRUSTWORTHY
LANGUAGE_AUTODERIVETYPEABLE
module Type.Eq.Poly (module Type.Eq, module Type.Eq.Poly) where
import Control.Applicative ((<$>))
import Control.Category ((.))
import Data.Typeable (Typeable1, typeOf1, Typeable2, typeOf2, Typeable3, typeOf3, Typeable4, typeOf4, Typeable5, typeOf5, Typeable6, typeOf6, Typeable7, typeOf7)
import Type.Eq
import Type.Eq.Higher ((::~::)(..), (:::~:::)(..), OuterEq1(..), InnerEq1(..))
import Type.Eq.Unsafe
import Prelude hiding ((.))
import Unsafe.Coerce
(|.|) :: b :~: c -> a :~: b -> a :~: c
(|.|) = composeEq
applyEq, (|$|) :: f :~: g -> a :~: b -> f a :~: g b
applyEq = withEq (withEq Eq)
(|$|) = applyEq
constructorEq :: f a :~: g b -> f :~: g
constructorEq = withEq BUG_5591(Eq)
DYNAMIC_EQ(1,,:~:,f,g,())
DYNAMIC_EQ(2,,:~:,n,m,() ())
DYNAMIC_EQ(3,,:~:,x,y,() () ())
DYNAMIC_EQ(4,,:~:,x,y,() () () ())
DYNAMIC_EQ(5,,:~:,x,y,() () () () ())
DYNAMIC_EQ(6,,:~:,x,y,() () () () () ())
DYNAMIC_EQ(7,,:~:,x,y,() () () () () () ())
sameOuterEq :: OuterEq f a -> OuterEq g a -> f :~: g
sameOuterEq OuterEq OuterEq = BUG_5591(Eq)
fromEq1 :: f ::~:: g -> f :~: g
fromEq1 Eq1 = Eq
toEq1 :: f :~: g -> f ::~:: g
toEq1 Eq = Eq1
fromEq2 :: n :::~::: m -> n :~: m
fromEq2 Eq2 = Eq
toEq2 :: n :~: m -> n :::~::: m
toEq2 Eq = Eq2
fromOuterEq1 :: OuterEq1 m f -> OuterEq m f
fromOuterEq1 OuterEq1 = BUG_5591(OuterEq)
toOuterEq1 :: OuterEq m f -> OuterEq1 m f
toOuterEq1 OuterEq = OuterEq1
fromInnerEq1 :: InnerEq1 a f -> InnerEq a f
fromInnerEq1 InnerEq1 = BUG_5591(InnerEq)
toInnerEq1 :: InnerEq a f -> InnerEq1 a f
toInnerEq1 InnerEq = InnerEq1