hobbits-1.0: A library for canonically representing terms with binding

PortabilityGHC
Stabilityexperimental
Maintaineremw4@rice.edu

Data.Type.List.Proof.Member

Contents

Description

Proofs regarding membership of a type in a type list.

Synopsis

Abstract data types

data Member ctx a whereSource

A Member ctx a is a "proof" that the type a is in the type list ctx, meaning that ctx equals

  t0 ':>' a ':>' t1 ':>' ... ':>' tn

for some types t0,t1,...,tn.

Constructors

Member_Base :: Member (ctx :> a) a 
Member_Step :: Member ctx a -> Member (ctx :> b) a 

Instances

Operators on Member proofs

toEq :: Member (Nil :> a) b -> b :=: aSource

weakenL :: Proxy r1 -> Member r2 a -> Member (r1 :++: r2) aSource

same :: Member r a -> Member r b -> Maybe (a :=: b)Source

weakenR :: Member r1 a -> Append r1 r2 r -> Member r aSource

split :: Append r1 r2 r -> Member r a -> Either (Member r1 a) (Member r2 a)Source