Reduction
Let
- x be an instance of Symbol,
and
-
a, a', b, c instances of Math.
Reduction of a to a' will be denoted by a -> a'.
- Basic reduction
-
Fst( pair= Pair( local=x, fst=a, snd=b,
sndtype=c)) -> a.
-
Snd( pair= Pair( local=x, fst=a, snd=b,
sndtype=c)) -> b.
-
Application( function= Abstraction( local=x,
domain=a, body=b), argument=c) ->
b[x:=c].
- Internal reduction. If a -> a' then
-
Application( function=a, argument=b) ->
Application( function=a', argument=b)
-
Application( function=b, argument=a) ->
Application( function=b, argument=a')
-
Abstraction( local=x, domain=a, body=b)
->
Abstraction( local=x, domain=a', body=b)
-
Abstraction( local=x, domain=b, body=a)
->
Abstraction( local=x, domain=b, body=a')
-
PiType( local=x, domain=a, range=b)
->
PiType( local=x, domain=a', range=b)
-
PiType( local=x, domain=b, range=a)
->
PiType( local=x, domain=b, range=a')
-
Fst( pair=a) -> Fst( pair=a')
-
Snd( pair=a) -> Snd( pair=a')
-
Pair( local=x, fst=a, snd=b, sndtype=c)
->
Pair( local=x, fst=a', snd=b, sndtype=c)
-
Pair( local=x, fst=b, snd=a, sndtype=c)
->
Pair( local=x, fst=b, snd=a', sndtype=c)
-
Pair( local=x, fst=b, snd=c, sndtype=a)
->
Pair( local=x, fst=b, snd=c, sndtype=a')
-
SigmaType( local=x, fsttype=a, sndtype=b)
->
SigmaType( local=x, fsttype=a', sndtype=b)
-
SigmaType( local=x, fsttype=b, sndtype=a)
->
SigmaType( local=x, fsttype=b, sndtype=a')