1. Trang chủ
  2. » Giáo án - Bài giảng

a fully abstract semantics for a nondeterministic functional language with monadic types

12 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 570,48 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

12 pagesA fully abstract semantics for a nondeterministic functional language with monadic types Alan Je rey 1 School of Cognitive and Computing Sciences University of Sussex, Brighton B

Trang 1

12 pages

A fully abstract semantics for a nondeterministic functional language with

monadic types

Alan Je rey

1 School of Cognitive and Computing Sciences University of Sussex, Brighton BN1 9QH, UK

alanje@cogs.susx.ac.uk

Abstract

This paper presents a functional programming language, based on Moggi's monadic metalanguage In the rst part of this paper, we show how the language can be regarded as a monad on a category of signatures, and that the resulting category of algebras is equivalent to the category of computationally cartesian closed categories.

In the second part, we extend the language to include a nondeterministic operational semantics, and show that the lower powerdomain semantics is fully abstract for may-testing.

1 Introduction

Moggi has proposed strong monads as an appropriate way to model compu-tation In 9], he shows that any model of computation satisfying certain equations forms a strong monad His work concentrates on the denotational properties of programs, whereas we shall show how his work can be applied

to an operational semantics

In the rst section of this paper, we present a slight variant on hisfunctional monadic metalanguage and show that its algebras are equivalent to strong monads with T-exponentials This language diers from Moggi's in the way that pairing is handled, in particular our language has the properties:

any closed term of unit type is (up to syntactic identity) the distinguished element ,

any closed term of pairing type is (up to syntactic identity) a pair (e f), any closed term of function type is (up to syntactic identity) a-termx : e

1

This work is funded b SERC project GR/H 16537, and is carried out in the context of Esprit BRA 7166 Concur 2.

c

Trang 2

Moggi's language has these properties, but only up to provable equality, and not syntactic identity Having these properties true up to syntactic identity is very useful in the second section, where we present an operational semantics for a monadic language with nondeterminism, and show that the fully abstract semantics for this language is given by a powerdomain semantics

The operational semantics for the monadic language is much simpler than the call-by-value language, since the type structure allows ne control over the syntactic form of terms For example, the only operational rule required for function application is -reduction We do not need any operational rules for which contexts reduction is allowed in, since this is taken care of by the type discipline

The monadic type system also makes it easier to show full abstraction for the nondeterministic language, since it gives contexts more power over how expressions are evaluated

In this section, we present three languages for data and computation, and show that their algebras correspond to well-known categorical structures

2.1 Algebraic datatypes

A (many-sorted) signature (ranged over by ) is a set of sorts (ranged over

by A, B and C) and a set of constructors (ranged over byc) together with a

sorting c:A

1

: : A n

! A Asignature morphismis a mapping between sorts and constructors with respects sorting Let Sigbe the category of signatures with signature morphisms

Given a signature , we can dene the language ST of syntax trees over as:

e::= j c(e

1 : : e )j(e e)j v v::=x j v: l j v: r

where xranges over a set of variables We shall call expressionsv lvalues We can give ST a static type system, with types:

 ::=I jA]j   

and type judgements of the form  ` e: given by rules:

` :I

` e: ` f :

`(e f) :  

` e

1 : A

1]   ` e : A

n]

` c(e

1 : : e ) : A] c:A

1 : : A n

! A]

` v: (  )

` v: l:

` v: (  )

` v: r:

 x: ` x:

` y:

 x: ` y:

x 6=y] where  ranges over contexts of the form x

1 : 1 : : x

n : 2

Trang 3

Note that we are only allowing projections v: land v: ron lvalues, and not

on arbitrary terms, since this would not allow us to have the following useful properties:

any term of typeI is either an lvalue or ,

any term of type A] is either an lvalue or of the form c(e

1 : : e ), and any term of type   is either an lvalue or of the form (e f)

However, whenever  ` e:  , we can dene ` e : and ` 

0

e : as syntactic sugar, e is either an lvalue or a pair:

v=v: l 

0

v=v: r (f g) =f 

0(f g) =g

ST is itself a signature, with types as sorts and judgements (x

1 : 1 : : x

n:



n

` e:) as constructors~  ! , viewed up to the congruence given by (when

y is fresh):

(` x:I)=(` :I) (`(v: l v: r) :  )=(` v:  )

( x:  0

` e:)=( y: 0

` ey=x] :) Note that these equations only involve open terms, so closed terms are viewed

up to syntactic identity

Any signature morphism f : ! 0 can be homomorphically extended

to a signature morphism ST f : ST ! ST 0 It is routine to verify that

ST:Sig ! Sig is a functor

Whenever  ~ x : ~  ` e :  and  `

~ : ~  we can dene the substitution

` e~

~

x] : by its action on lvalues (whenx 6=y):

v: l~

~ x] = (v~

~

x]) v: r~

~

x] = 

0(v~

~

x])

y~

f =x x] = y~

~

x] x~

f=x x] = f

We can dene : ! ST as the injection:

A 7!A] (c:A

1 : : A n

! A)7!(x

1 : A

1] : : x

n : A

n]` c(x

1 : : x

n) : A]) and  :ST

2

! ST as thesubstitution map given homomorphically by:

]7!  (~ x:~  ` e:)(~)7! e ~

~

x]

It is routine to verify that STis a monad Since we have dened by injection and by substitution, it is reasonable to view the denotational models forST

as being ST -algebras, that is a signature with a morphism  ]] :ST ! such that:

 ]] =id  ]] =ST ]] ]]

The rst equation says that the denotation of each constructor in should

be itself, and the second that the semantics respects substition, and so is

denotational Let ST-Alg be the category of all ST-algebras, together with morphisms which respect  ]]

Let CCat be the category of small categories with distinguished nite products, and functors which respect the product structure

3

Trang 4

2.2 Monadic metalanguage

We shall now add a notion of computation to our language of data, using Moggi's 9] typed monadic language

To do this, we extend ST to the monadic metalanguage, MML by adding two new expression constructions:

e::=  je]j let x ( e in e

These are:

e] is a computation which immediately terminates with result e This is similar to `exit' in LOTOS 1], and `return' in Concurrent ML 13,14]

let x ( e in f is a computation which evaluates e until it returns a value, which is then bound to x in f For example, let x (zero]insucc x] is the same as succ zero]

We also extend the type system by adding a new type constructor for compu-tations:

 ::=  j C 

and statically typing MML as:

` e:

`e] :C 

` e:C   x: ` f :C 

` let x ( e in f :C 

Then MML forms a monad in the same way as STdoes, with the addition of Moggi's 9] axioms (when x is not free in g):

(` let y ( f in g :C )=(` let x ( f in gx=y] :C ) (` let x (e]in f :C )=(` fe=x] :C )

(` let x ( e inx] :C )=(` e:C ) (` let y ((let x ( e in f)in g :C )=(` let x ( e in(let y ( f in g) :C ) Let SMon be the category of small categories with strong monads, together with functors which respect the monadic structure The next proposition shows that the MML-algebras are precisely strong monads (hence the name

`monadic metalanguage') This result is due largely to Moggi 9]

Proposition 2.2 MML-Alg is equivalent to SMon 2

2.3 Partial functions

We extend MML to the functional monadic metalanguage, MML by adding -binding and function application:

e::=  j x : e j ee

We also extend the type system by adding a new type constructor for functions:

 :=  j  ! C 

and statically typing MML as:

 x: ` e :C 

` x : e: ! C 

` e: ! C  f :

` ef :C 

4

Trang 5

Note that we are only allowing functions to return computations, for example there is no typeI ! I, onlyI ! C I This corresponds to our intuition that the only terms which involve computation are terms of type C , and this would not be true if we allowed functions to return arbitrary type This restriction also allows us to show that:

any term of type ! C  is either an lvalue or of the formx : e

Note that we have no similar result about terms of type C 

Then MML forms a monad in the same way as MML does, with the addition of the standard ,  and axioms for functions (when y is not free

in e):

(` x : e: ! C )=(` y : ey=x] : ! C )

(`(x : e)f :C )=(` ef =x] :C )

(` y :(ey) : ! C )=(` e: ! C )

A category C is computationally cartesian closed i it has a strong monad

T :C ! C, and for each objects X and Y there is an object T Y

X such that there is a natural isomorphism:

curry :CX  Y T Z]! CX T Z

Y] Let CCCC be the category of small computationally cartesian closed cate-gories together with functors which respect the monadic and T-exponential structure

Proposition 2.3 MML-Alg is equivalent to CCCC 2

3 Nondeterminism

In this section, we extend the monadic metalanguage with the structure of a nondeterministicprogramminglanguage We present an operational semantics for this language, and show that a powerdomain semantics is fully abstract for may-testing for this language

3.1 Syntax

A signature has booleans i it has a sort b o ol with constructors true false :

!b o ol A signature hasdeconstructors i it has a set of deconstructors ranged over by d with sorting d : ~

A ! A Let SigBD be the category of signatures with booleans and deconstructors, together with morphisms which respect the booleans, constructors, deconstructors, and sorting

Given a signature with deconstructors and booleans, the nondetermin-istic monadic metalanguage NMML extendsMML with expressions:

e::=  j if e then e else e j de j j e 2 e j x(x=e)

5

Trang 6

and type judgements:

` e: b o ol] ` f :C  ` g :C 

` if e then f else g :C 

` e

1 : A

1]  ` e : A

n]

` d(e

1 : : e ) :CA] d:A

1 : : A n

! A]

` :C 

` e:C ` f :C 

` e 2 f :C 

 x:C  ` e:C 

` x(x =e) :C 

Note that deconstructors and if-statements are of computation type

3.2 Operational semantics

In order to give an operational semantics forNMML , we need an operational semantics for the deconstructors of This is given as ahigher-order unlabeled value production system, that is:

an internal transition relation e

{ ! e

0, and

a termination relation e

p ! e 0

such that:

if e

{

! e

0 then ` e :C  and ` e

0:C  for some,

if e

p

! e

0 then ` e :C  and ` e

0: for some,

p

! is deterministic, and

if e

p

!then e

{ ! Given an operational semantics for terms of the formde, we can extend it to

an operational semantics for closed terms of NMML with:

e] p

! e

e { ! e 0

let x ( e in f

{ ! let x ( e

0

in f

e p ! g let x ( e in f

{ ! fg=x]

if true then f else g

{ ! f if false then f else g

{ ! g

(x : e)f

{ ! ef =x] x(x =e) {

! e x(x =e)=x]

e

{ ! e

0

e 2 f

{ ! e

0

2 f

f { ! f 0

e 2 f

{ ! e 2 f

0 e p ! e 0

e 2 f

{ !e

0]

f p ! f 0

e 2 f

{ !f

0]

A (higher order, weak) simulation on NMML is a type-indexed family of relationsR



f(e f)j ` e f : gsuch that:

if e R

A]

f then e=f

if (e e

0)R

  (f f

0) then e R



f and e

0 R

 f

0,

if (x : e)R

 !C  (y : f) then for all` g : we have eg=x]R

C 

fg=y],

if e R

C 

f and e

{ ! e

0 then f

{ !

 f

0 and e

0 R

C  f

0, and

if e R

C 

f and e

p ! e

0 then f

{ !

 p ! f

0 and e

0 R

 f

0 6

Trang 7

A bisimulation is a weak simulation whose inverse is a weak simulation Write

j=e=f : i there is a bisimulationR such that e R



f Write ~ x:~  j=e=

f : i for every` ~ g :~  we havej=e~ g=x] =f~ g=x] :

Howe 6] has shown a technique for proving that simulation for a class of

lazy functional languages is substitutive In an unpublished paper 5], Howe

has also shown that bisimulation is a congruence (this result was

communi-cated to the author by Andy Pitts) This technique can be used to show that

bisimulation is a congruence for NMML

Proposition 3.1 Bisimulation is a congruence for NMML 2

We can show thatNMML forms a signature in the same way asMML ,

except that we view terms up to bisimulation It is routine to verify that

NMML is a monad on SigBD AnyNMML-algebra is anMML-algebra since

we can exhibit bisimulations for (when y is not free ing):

j=x= :I

j= (v: l v: r)=v:  

j=let x (e]in f=fe=x] :C 

j=let x ( e inx]=e:C 

j=let y ((let x ( e in f)in g=let x ( e in(let y ( f in g) :C 

j= (x : e)f=ef =x] :C 

j=y :(gy)=g : ! C 

For any  ` e f : , dene the may-testing preorder as  j= e v

O

f :  i

Ce] p

=) impliesCf] p

=) for any closing contextC of typeC I

3.3 Denotational semantics

Let Alg be the category of algebraic dcpo's, together with continuous

mor-phisms (we are not requiring dcpo's to have least elements) Let Alg

?_ be the category of algebraic dcpo's with all nite joins, together with

continu-ous morphisms which respect the joins Let P : Alg ! Alg be the lower

powerdomain functor given by the adjunction Alg

F ! Alg

?_

U ! Alg This forms a strong monad with P-exponentials, where

X = f g : X ! PX and

X =S

:P

2

X ! X (Note that these exponentials exist even though Alg is

not cartesian closed, since we are only considering functions whose target is

an object inAlg

?_.)

Alg is a signature with booleans and deconstructors, since it has objects

as sorts, morphisms f : X

1

    X

n

! X as constructors, morphisms f :

X

1

    X

n

! PX as deconstructors, and a sort 1 + 1 with constructors

0 : 1!1 + 1 Since P is a strong monad on Alg with P-exponentials,

we therefore have a denotational semantics  ]] : MML Alg ! Alg given by

Proposition 2.3.The semantics for NMML Alg extends this with:

` :C ]]=?

` e 2 f :C ]]=` e:C ]]_ ` f :C ]]

` x(x=e) :C ]]=the least xed pt off 7! hid fi x:C  ` e:C ]]

 ` if e then f else g :C ]]=hid ` e: b o ol]]]idist` f :C ]] ` g C ]]]

7

Trang 8

where dist:X (1 + 1)! X +X is the distributivity morphism.

For any , if there is a morphism  ]] : ! Alg then we can extend this

to NMML as:

NMML NMML ]

! NMML Alg

 ] ! Alg

A semantics  ]] : ! Alg is adequate i:

` de:CA]]] = _

f`f] :CA]]]j de

p

=) fg

A semantics  ]] : ! Alg is expressive i for any compact a 2 A]] we can

nd termsis

a and test

a such that:

` is

a : A]]] = a ` test

a: A]! C I]] = (a ) ?)

A semantics  ]] :NMML ! Alg iscorrect i:

 ` e:]]` f :]] implies j=e v

O

f :

The semantics for NMML is fully abstract i:

 ` e:]]` f :]] i j=e v

O

f : 

The rest of this section shows that if a semantics for is adequate then its extension toNMML is correct, and that if a semantics for is adequate and expressive, then its extension to NMML is fully abstract

3.4 Program logic

In order to show the relationship between the operational and denotational semantics of NMML , we shall use a program logic similar to that used by Abramsky 2] and Ong 11] in modelling the untyped -calculus, based on Abramsky's 3] domain theory in logical form

This logic is similar to Ong's 10] logic for an untyped nondeterministic -calculus Since we are looking at may-testing rather than simulation, we only have conjunction in the logic, and not disjunction, and only one modality rather than two

The program logic forNMML has propositions:

 ::= j( )j jaj j ! j  ^  j]j  ) 

These can be statically typed, so the propositions for type  are those where

 :L:

:LI

:L : L

( ) :L(  )

jaj:LA]a 2A]] a is compact]

! :L(C )

:L(C )  :L(C )

 ^ :L(C )

: L

] :L(C )

! :L( ! C )  :L( ! C ) :L( ! C )

 ^ :L( ! C )  :L :L(C )

 ) :L( ! C ) 8

Trang 9

The operational characterization of the logic has judgementsj=e: given by:

j= :

j=e : j=f :

j= (e f) : ( )

a ` e: A]]]

j=e:jaj

j=e:!

j=e: j=e:

j=e: ^  e

{

! e

0

j=e

0:

j=e:

e p ! f j=f :

j=f : ] 8j=f : :=ef : 

j=e:  ) 

This can be generalized to open terms as:

~

x: ~

 j=e: i 8j= ~: ~

 : =e~

~

x] :

Let  range over propositional contexts of the form x

1 :  1 : : x

n : 

n, and write  : L for:

(x

1 :

1

: : x

n:

n) :L(x

1 : 1 : : x

n: ) i 

1 :L

1 : : 

n:L n

We can also dene a denotational semantics for propositions, so that if:L

then ]]2]]:

 ]] = ? ( )]] = (]] ]]) jaj]] = a

!]] = ?  ^ ]] = ]]_]] ]]] = ]]  ) ]] = ]])]] Whenever  : L, we can dene ]] 2 ]] as: x

1 :  1 : : x

n : 

n]] = (

1]] : : 

n]])

Proposition 3.2 a 2]]is compact i 9:L : a= ]] 2

3.5 Proof system

In order to relate the denotational and operational characterizations of the program logic, we shall use an intermediate proof system This is a sequent calculus with judgements of the form ` e :  where ` e : ,  :L and

 :L

Let  be the preorder on propositions given by:

! is the top element, and ( ^ ) is meet

( ),  ] and ( ) ) are monotone

( ) ) preserves! and ^

j j and ( ) ) are anti-monotone

9

Trang 10

We can then dene the proof system forNMML as:

]]`c~e : A]]]]]

`c~e :  ]]`d~e :CA]]]]]

`d~e : 

`e : 

`e : ]  x : `x :  

`x : 

 y :  `x : x6=y]

` : 

`e :  `f : 

`(e f) : ( )

`e : ! 

`e :  `e : 

`e : ^

`e : 

`e] : ] `e : ]  x : `f : 

` letx(einf : 

 x :  `e : 

`x : e : ) 

`e : ) `f : 

`ef :  

`e :  `f : 

`e2f : ^

`e :jtj `f : 

` ifethenfelseg :  

`e :jfj `g : 

` ifethenfelseg : 

` x(x = e) :   x : `e : 

` x(x = e) :  Note that all of the structural rules for the proof system, such as weakening and contraction, have been absorbed into the denition of 

Proposition 3.4 `e :  i ]]` e : ]]]] 2

3.6 F ull abstraction

We can now show that the semantics for NMML is fully abstract We begin

by showing that if is expressive, then so isNMML Letterm  be dened:

term I =

term  ( )=(term  term)

term A]

jaj=is a

term C ! =

term C (^)=term C 2 term C 

term C ]=term ]

term  !C ! =x :

term  !C (^)=x : (term  !C )x2(term  !C )x

term I!C ( ))=x :term C 

term  !C (( )))=x : lety((term !C I() ]))(x:l)

in(term  !C ()))(x:r)

term A]!C (jaj ))=x :lety((test ax)in term C 

term  !C (!))=x :term C 

10

... present an operational semantics for this language, and show that a powerdomain semantics is fully abstract for may-testing for this language

3.1 Syntax

A signature has booleans i...

Trang 4

2.2 Monadic metalanguage

We shall now add a notion of computation to our language of data, using...

` is

a< /small> : A< /small>]]] = a< /small> ` test

a< /small>: A< /small>]! C I]] = (a )

Ngày đăng: 02/11/2022, 08:55

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1] ISO 8807. LOTOS|A formal description technique based on the temporal ordering of observational behaviour , 1989 Sách, tạp chí
Tiêu đề: LOTOS: A formal description technique based on the temporal ordering of observational behaviour
Tác giả: ISO
Nhà XB: International Organization for Standardization
Năm: 1989
2] Samson Abramsky. The lazy lambda calculus. In David Turner, editor, Declarative Programming . Addison-Wesley, 1989 Sách, tạp chí
Tiêu đề: The lazy lambda calculus
Tác giả: Samson Abramsky
Nhà XB: Addison-Wesley
Năm: 1989
4] Matthew Hennessy. A denotational model for higher-order processes. Technical Report 6/92, University of Sussex, 1992 Sách, tạp chí
Tiêu đề: A denotational model for higher-order processes
Tác giả: Matthew Hennessy
Nhà XB: University of Sussex
Năm: 1992
5] Douglas Howe. Proving congruence of simulation orderings in functional languages. Unpublished manuscript, 1989 Sách, tạp chí
Tiêu đề: Proving congruence of simulation orderings in functional languages
Tác giả: Douglas Howe
Năm: 1989
6] Douglas J. Howe. Equality in lazy computation systems. In Proc. LICS 89 , pages 198{203, 1989 Sách, tạp chí
Tiêu đề: Equality in lazy computation systems
Tác giả: Douglas J. Howe
Năm: 1989
7] Alan Jerey. A fully abstract semantics for a higher-order functional conurrent language. Technical report, University of Sussex, 1994. In preparation Sách, tạp chí
Tiêu đề: A fully abstract semantics for a higher-order functional conurrent language
Tác giả: Alan Jerey
Nhà XB: University of Sussex
Năm: 1994
8] Robin Milner. Fully abstract semantics of typed -calculi. Theoret. Comput.Sci. , 4:1{22, 1977 Sách, tạp chí
Tiêu đề: Fully abstract semantics of typed -calculi
Tác giả: Robin Milner
Nhà XB: Theoretical Computer Science
Năm: 1977
9] Eugenio Moggi. Notions of computation and mondad. Inform. and Computing , 93:55{92, 1991 Sách, tạp chí
Tiêu đề: Notions of Computation and Monads
Tác giả: Eugenio Moggi
Nhà XB: Information and Computation
Năm: 1991
10] C.-H. L. Ong. Non-determinism in a functional setting. In Proc. LICS 93 , pages 275{286. IEEE Computer Soc. Press, 1993 Sách, tạp chí
Tiêu đề: Non-determinism in a functional setting
Tác giả: C.-H. L. Ong
Nhà XB: IEEE Computer Society Press
Năm: 1993
11] C.-H. Luke Ong. The Lazy Lambda Calculus: An Investigation into the Foundations of Functional Programming . PhD thesis, Imperial College, London University, 1988 Sách, tạp chí
Tiêu đề: The Lazy Lambda Calculus: An Investigation into the Foundations of Functional Programming
Tác giả: C.-H. Luke Ong
Nhà XB: Imperial College London
Năm: 1988
14] J. H. Reppy. Higher-Order Concurrency . Ph.D thesis, Cornell University, 1992 Sách, tạp chí
Tiêu đề: Higher-Order Concurrency
Tác giả: J. H. Reppy
Nhà XB: Cornell University
Năm: 1992
3] Samson Abramsky. Domain theory in logical form. Ann. Pure Appl. Logic , 51:1{77, 1991 Khác
12] Gordon Plotkin. LCF considered as a programming language. Theoret.Comput. Sci. , 5:223{256, 1977 Khác
13] J. H. Reppy. A higher-order concurrent langauge. In Proc. SIGPLAN 91 , pages 294{305, 1991 Khác

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN