# : #1 |
A:s |
, x : A x : A |
f : (x::A) -> B | a : A |
f a : B[x:=a] |
, x : A b : B | ((x::A) -> B) : t |
(\(x::A) -> b) : ((x::A) -> B) |
A:s | , x : A B : t |
((x::A) -> B) : t |
a:A | B:s | A =ß B |
a : B |
b : B | B : s |
, x : B b : B |
Aij : # | |
k > 0, nk 0 | |
data C1 A11 ... A1n1 | ... | Ck Ak1 ... Aknk : # |
T : # |
Ci @ T : Ai1 -> ... -> Aiki -> T |
A1 : s1 | ... | An : sn | ... | ej : Aj |
sig { l1 :: A1 1; ... lk :: Ak k; ... ln :: An n } : #u |
(\(x::A) -> B) C =ß B[x := C] |
{ l1 :: A1 = e1; ... ln :: An = en } . lk =ß ek[l1 := e.l1, ... ln := e.ln] |
e : { l1 :: A1 1; ... lk :: Ak = ek; ... ln :: An n } |
e . lk =ß ek[l1 := e.l1, ... lb := e.ln] |