Upload
marah-madden
View
43
Download
0
Embed Size (px)
DESCRIPTION
Deel I: Functionele Programmeertalen. Hoofdstuk 3: Uitgebreide -rekening. Functioneel Programma. Een functie-applicatie FA , d.i. een programma + zijn input. Uitvoering van een programma: -reductie tot -normaalvorm een functioneel programma heeft slechts 1 oplossing. -conversie. - PowerPoint PPT Presentation
Citation preview
Deel I: FunctioneleDeel I: FunctioneleProgrammeertalenProgrammeertalen
Hoofdstuk 3:
Uitgebreide
-rekening
Functioneel Programma
Een functie-applicatie FA, d.i. een programma + zijn input.
Uitvoering van een programma: -reductie tot -normaalvorm een functioneel programma heeft
slechts 1 oplossing
-conversie
CC
CC
C
C
V
V
C
)(,
)(,
vMvM
MNNM
vv
cc
-conversieMet -regels
NM
NMMN
MMfMMkk
indienfalse,
indientrue,
3 2
632*
),,(11
Applicatieve reductieorde voor de -reductie
Stelling van Mitschke
De -reductierelatie voldoet aan de eigenschap van Church-Rosser
Types
Typesysteem van Church: zelf opgeven van types, verificeren van types
Typesysteem van Curry: afleiden van types
Types
Semantiek van een type : de verzameling van alle -termen van dit type D
Voordelen van types: Nagaan van de correctheid van
uitdrukkingen Efficiënte uitvoering
Type: syntactische uitdrukking die geassocieerd kan worden met een -term
Abstracte type-syntax
De ’s zijn typeconstanten (B,Z)Functies zijn van het type Types zijn rechts-associatief
( = ( ))
)(,
,,,
Instructie
Een instructie is van de vorm M :: met M het onderwerp, en het predicaat
BasisEen verzameling van instructies
waarin de onderwerpen allemaal verschillende -veranderlijken zijn. Een M :: is afleidbaar uit , indien geldt dat | M :: met
Z
BBB
BB
B
::,3,2,1,0,1,2,3
::OR,AND
::NOT
::FALSE,TRUE
Basis
::).(::,::
::)(::,::
::)::(
::,
::,
MxMx
MNNM
dd
ZZZ
BZZ
|||
|||
|
Voorbeelden
::.}::{
::.}::,::{
::.}::,::{
xxx
yxyx
yxyyx
|
|
|
Onderwerpreductie
::)::( MMMM ||
-termen met een type hebben een normaalvorm
| M :: M heeft een normaalvorm
x.xx heeft geen type in ons typesysteem
Semantiek
Het doel van de denotationele semantiek is om met elke syntactisch correcte -uitdrukking een ‘wiskundige waarde’ te associëren
Semantiek
De functie die een waarde associeert met elke -expressie wordt D genoteerd
])[,(),.(
),(),(),(
)(),(
)(),(
avMaMv
NMMN
vv
CC
DD
DDD
D
DD
Waarbij de omgeving voorstelt
Voorbeeld
0
0
, )(
, )(
0 0 )(
00 )(
, )(
a
b
ba
a
b
baba
D
D
D
D
D
Behoud van betekenis
Het omgekeerde is echter niet noodzakelijk waar. Uit D(2 + 8) = D(3 + 7) kan men niet besluiten dat er moet gelden dat 2 + 8 3 + 7
)()()( NMNM DD
Striktheid
),.( fxD
Combinatoren
Combinator: klasse van -congruente gesloten -termen
yxy
xxy
xx
.false
.true
.I
Stelling van Schönfinkelen Curry
De -rekening kan geherformuleerd worden in de combinatorrekening met slechts één basisoperatie: de applicatie
Hiervoor zijn slechts twee combinatoren nodig: S en K,
)(S
K
)(.S
.K
NLMLMNL
MMN
yzxzxyz
xxy
Standaard combinatorexpressie
Een combinatorexpressie waarin de enig voorkomende combinatoren S en K zijn, wordt een standaard combinatorexpressie genoemd
Combinatortransformatie
]][[].[
])[])([(][
,][
][
][
][][][
][].[
PPy
QPPQ
xUUU
x
UU
QPPQ
PPx
yxx
xxx
x
x
x
KKK
KKK
K
K
K
KKK
KK
S
K
SKK
Waarbij U een constante, een combinator of een veranderlijke voorstelt
Voorbeelden
SKK
][].[
xxx xKK
)KK))(KK)(KS(S(S
])K[]))(K[])(S[(S(S
])K[])(SK[(S
]K)SK[(
]][[
].[].[
xxx
xx
x
yx
x
y
yyyxy
KKK
KK
K
KK
KK
Voorbeelden
)).))((.)(.))(((.(
))((
])[])([(
][
]][[
].[].[
zxxyxxyxxyyzxzxyz
KzKKS
zKS
Kz
z
zyzxy
xx
x
yx
x
KK
K
KK
KK
Voorbeelden
zxy
zyz
zxxyz
zzyxxyz
zyzyxxyzy
zyxxyyyzxzxyz
zxxyxxyyyzxzxyz
zxxyxxyxxyyzxzyzx
.
..
).(.
)).()(..(
).))()(..((
).())..())((.(
)).())(..())((.(
)).)(().)(.())((.(
Typisch O(N log N) tot O(N2)
Combinatoren van Turner
MNPNMP
NPMMNP
MM
)(
)(
C
B
I
)(])[(][
)(])[(][
][
QxQPPQ
PxQPPQ
x
xx
xx
x
indien ,C
indien ,B
g)(vervangin I
KK
KK
K
Voorbeelden
I
][].[
xxx xKK
KI
]I[
]][[
].[].[
x
yx
x
y
yyyxy
K
KK
KK
Voorbeelden
)K)(KK(S of
)KK(C of )K(BK
])[])(K[(S of
]K[C of ][BK
]K[
]][[
].[].[
z
zz
z
zz
z
z
zyzxy
xx
xx
x
yx
x
KK
KK
K
KK
KK
Voorbeelden
5 2))I)IB(S(B(C
5 2))I])[B(S(B(C
5 2]))[][S(B(C
5 2])[B(C
5 2)]([C
5]2)([
]5[]2)(.[]5)2.[(
x
xx
xx
xx
xx
xxxxxx
x
xx
x
x
x
K
KK
K
K
K
KKK
Voorbeelden
27
2 25
2)5 5 (
2))5)(5((
2))5(5)((
2)5))(((
2 5)))(((5 2)))(((
II
IIB
IIBS
IIBSBIIBSBC
De reductie van deze expressie geeft ons
Extra combinatorreductieregels
I
I
II
IKI
IKIIKIS
zz
zz
zz
zzz
yzxzxyz
.
.
)(.
)(.
)))((.()(
Optimalisatieregelsvan Turner
MNNM
MNNM
MM
MNNM
CKS
BKS
IKS
KKKS
)(
)(
)(
)())((
Extensionele gelijkheid
MNx
NxM
NxMxNxM
B
KKS
)(
))(()(
De B-regel heeft een speciaal geval
MM IB
MM
MxM
MMx
MMxx
Mx
IxMBMIx
x
x
IB
B ][
][
][)].([
)(
K
K
KK
Extensionele gelijkheid
Het bewijs is door extensionele gelijkheid
SupercombinatorenEen supercombinator is een -
expressie van de vormMxxS n .1
zodanig dat
S geen vrije veranderlijken bevat M geen -abstractie is (alle ’s staan
voorop) alle -abstracties in M
supercombinatoren zijn de ariteit n 0
Voorbeelden
).(.
.
.
4 3
3
xxxff
yxxy
xx
Voorbeelden
Terwijl de volgende expressies geensupercombinatoren zijn
4)3)..((
.
.
yxyx
yxx
yx
Supercombinatorredex
Een supercombinatorredex is de applicatie van een supercombinator met ariteit n op n argumenten. Een supercombinatorreductie vervangt een supercombinatorredex door zijn contractum, t.t.z. het lichaam van de supercombinator met invulling van al zijn argumenten.
-reductie voor supercombinatoren
}/{}/{).( 1111 nnnn NxNxMNNMxx
Waarbij de substituties simultaanuitgevoerd worden
Supercombinator-transformatie: -lifting
Gebaseerd op de abstractie van vrije veranderlijken
))..(()..( yzxzxyyxxy Beide expressies zijn -congruent
Toename omvang: typisch O(N) en in het slechtste geval O(N log N)
Het resultaat is een supercombinator indien toegepast op een combinator
Voorbeelden
4)3 )..((4)3)..((
).(.
).(.
xyxxyxyxyx
yyxyxyxx
yyyxyx
Naamgeving
4)3 plus.(
.plus
xx
yxxy
Waarbij deze transformatie nogmaals kantoegepast worden
4 plusdrie
3 plus.plusdrie
.plus
xx
yxxy
In Combinatornotatie
4 plusdrie
3 plus plusdrie
plus
xx
yxyx
of
4 plusdrieprog
3 plus plusdrie
plus
xx
yxyx
734
3 4 plus
4 plusdrieprog
Vereenvoudigingen2)1))..(((2 1).( yxyxyxxy
-lifting van de y geeft ons
2)1)))..(((( xyxxyx
Hetgeen kan herschreven worden als
2 1 somprog
plus som
plus
xx
yxyx
Vereenvoudigingen2)1))..(((2 1).( yxyxyxxy
-lifting van de y geeft ons
2)1)))..(((( xyxxyx
Hetgeen equivalent is met
2 1 plusprog
plus
yxyx
Recursie
10 facprog
)))1(fac((1)0( if fac
nnnn
Complexiteit
)1fac(met ,
)1fac(met ,1
)))10(fac(0(1 true if
)))10fac(0(1)00if(
0fac
1met ),(fac
))1(fac(
)))1(fac((1false if
)))1(fac((1)0if(fac
nnff
nrrn
nmmn
nn
nn
nnnn
Aantal reducties n * 5 + 3 O(N)
Type-afleiding
21
2
1
::A
::
::
A
tt
tE
tx
Ex
Types toekennen aan de argumenten +resultaat
Type-afleiding
34
4
3
::
::
::
ttM
tN
tMN
Types toekennen aan het functielichaam
Unificatie van de types
Voorbeeld
4321
4
3
2
1
::F
::)(
::
::
::
)(F
tttt
tyzx
tz
ty
tx
yzxzyx
Voorbeeld
)()(::F
)()(::F
::
::
::
::
465645
56
6
45
5
tttttt
tty
tz
ttx
tyz
Voorbeeld
3
21
2
1
::F
::F
::)(F
::
)(FF
tx
tt
txx
tx
xxx
)(::F
::F
::
::
34
4
23
tt
tx
ttx
Niet alle supercombinatoren hebben een type xxx F
Strictheidsanalyse
Transformatie naar een abstract domein
)()()(
)(
#)(
1)(
NMMN
vV
FF
C
AAA
A
A
A
zwordt afgebeeld op 0, alle andere waarden op 1
Strictheidsanalyse
Transformatie voor ingebouwde functies
yxyx
yxyx
yxyx
zyxzyx
&#
&#
&*#
)|(&if#
Voorbeeld
)) )1( fac( 1 )0( if fac xnnnxn
Na transformatie:
nxn
xnnnxn
fac#
))) )1&( fac#(&|1(&)1&( fac#
Striktheidsanalyse:
10 1 fac#
01 0 fac#
Voorbeeld
)))&( fac# fac#
)&( fac# fac#
fac if fac
annanan
annnanan
xnnanan
(|(&
))))1&((&|(&)1&(
))()1(()0(
Striktheidsanalyse:
0 1 fac#)))0&1( 1 (fac#|0(&10 1 fac#
0)))1&0( 0 (fac#|1(&01 0 fac#
Fixpunt berekening
an
an
annanan
&
)0|(&)1&(
)))&( )1&(fac#|(&)1&( fac# 01
Na substitutie van deze functie krijgen we
an
anan
annnan
annan
annan
annanan
&
)&(|)&(
)))&(&(&(|)&(
)))&(&(|(&
)))&(&)1&((|(&)1&(
)))&( )1&((fac#|(&)1&( fac# 12
Fixpunt berekening
an
an
annanan
&
)0|(&)1&(
)))&( )1&(fac#|(&)1&( fac# 01
Fixpunt:anan & fac#
Striktheidsanalyse:
00&10 1 fac#
01&01 0 fac#