Deel I: Functionele Programmeertalen

Preview:

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#

Recommended