ty-0.1.7: Typed type representations and equality proofs

Copyright(c) Conal Elliott 2009
LicenseBSD3
Maintainerconal@conal.net
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell98

Data.Proof.EQ

Description

Type equality proofs

Synopsis

Documentation

data (:=:) :: * -> * -> * where Source #

Type equality proof

Constructors

Refl :: a :=: a 

liftEq :: (a :=: a') -> f a :=: f a' Source #

Lift proof through a unary type constructor

liftEq2 :: (a :=: a') -> (b :=: b') -> f a b :=: f a' b' Source #

Lift proof through a binary type constructor (including '(,)')

liftEq3 :: (a :=: a') -> (b :=: b') -> (c :=: c') -> f a b c :=: f a' b' c' Source #

Lift proof through a ternary type constructor (including '(,,)')

liftEq4 :: (a :=: a') -> (b :=: b') -> (c :=: c') -> (d :=: d') -> f a b c d :=: f a' b' c' d' Source #

Lift proof through a quaternary type constructor (including '(,,,)')

commEq :: (a :=: a') -> a' :=: a Source #

Commutativity

transEq :: (a :=: a') -> (a' :=: a'') -> a :=: a'' Source #

Transitivity