On Tue, Mar 17, 2009 at 6:14 AM, Wolfgang Jeltsch <
g9ks1...@acme.softbase.org> wrote:

> Am Dienstag, 17. März 2009 11:49 schrieb Yandex:
> > data (a :=: a') where
> >   Refl :: a :=: a
> >   Comm :: (a :=: a') -> (a' :=: a)
> >   Trans :: (a :=: a') -> (a' :=: a'') -> (a :=: a'')
>
> I don’t think, Comm and Trans should go into the data type. They are not
> axioms but can be proven. Refl says that each type equals itself. Since
> GADTs
> are closed, Martijn’s definition also says that two types can *only* be
> equal
> if they are actually the same.
>
> Here are the original definition and the proofs of comm and trans. Compiles
> fine with GHC 6.10.1.
>
>    data (a :=: a') where
>
>        Refl :: a :=: a
>
>     comm :: (a :=: a') -> (a' :=: a)
>    comm Refl = Refl
>
>    trans :: (a :=: a') -> (a' :=: a'') -> (a :=: a'')
>     trans Refl Refl = Refl


These two theorems should be in the package.


>
>
> Best wishes,
> Wolfgang
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to