Newton's laws of motion: Difference between revisions
en>EmausBot m r2.7.2+) (Robot: Adding oc:Leis de Newton |
en>Dthomsen8 m →Variable-mass systems: clean up, typo(s) fixed: i.e, → i.e., using AWB |
||
Line 1: | Line 1: | ||
In [[computer science]], '''denotational semantics''' (initially known as '''mathematical semantics''' or '''Scott–Strachey semantics''') is an approach of formalizing the meanings of [[programming language]]s by constructing mathematical objects (called ''denotations'') that describe the meanings of expressions from the languages. Other approaches to providing a [[formal semantics of programming languages]] include [[axiomatic semantics]] and [[operational semantics]]. | |||
Broadly speaking, denotational semantics is concerned with finding mathematical objects called [[domain theory|domains]] that represent what programs do. For example, programs (or program phrases) might be represented by [[partial function]]s or by games between the environment and the system. | |||
An important tenet of denotational semantics is that ''semantics should be [[Principle of compositionality|compositional]]'': the denotation of a program phrase should be built out of the denotations of its [[phrase|subphrases]]. | |||
==Historical development== | |||
Denotational semantics originated in the work of [[Christopher Strachey]] and [[Dana Scott]] in the late 1960s.<ref>Dana S. Scott. Outline of a mathematical theory of computation. Technical Monograph PRG-2, Oxford University Computing Laboratory, Oxford, England, November 1970.</ref> As originally developed by Strachey and Scott, denotational semantics provided the [[denotation]] (meaning) of a computer program as a [[function (mathematics)|function]] that mapped input into output.<ref>[[Dana Scott]] and [[Christopher Strachey]]. ''Toward a mathematical semantics for computer languages'' Oxford Programming Research Group Technical Monograph. PRG-6. 1971.</ref> To give denotations to [[Recursion|recursively defined]] programs, Scott proposed working with [[Scott continuity|continuous functions]] between [[domain theory|domains]], specifically [[complete partial order]]s. As described below, work has continued in investigating appropriate denotational semantics for aspects of programming languages such as sequentiality, [[Denotational semantics#Denotational semantics of concurrency|concurrency]], [[Nondeterministic algorithm|non-determinism]] and [[local state]]. | |||
Denotational semantics have been developed for modern programming languages that use capabilities like [[Concurrent computing|concurrency]] and [[Exception handling|exceptions]], e.g., [[Concurrent ML]],<ref>John Reppy "Concurrent ML: Design, Application and Semantics" in Springer-Verlag, ''[[Lecture Notes in Computer Science]]'', Vol. 693. 1993</ref> [[Communicating sequential processes|CSP]],<ref name=Roscoe>[[A. W. Roscoe]]. "The Theory and Practice of Concurrency" Prentice-Hall. Revised 2005.</ref> and [[Haskell (programming language)|Haskell]].<ref>[[Simon Peyton Jones]], Alastair Reid, Fergus Henderson, [[Tony Hoare]], and Simon Marlow. "A semantics for imprecise exceptions" Conference on Programming Language Design and Implementation. 1999.</ref> The semantics of these languages is compositional in that the denotation of a phrase depends on the denotations of its subphrases. For example, the meaning of the [[Applicative programming language|applicative expression]] f(E1,E2) is defined in terms of semantics of its subphrases f, E1 and E2. In a modern programming language, E1 and E2 can be [[Interpreter (computing)|evaluated]] [[Concurrent computing|concurrently]] and the execution of one of them might affect the other by interacting through [[Object (computer science)|shared objects]] causing their denotations to be defined in terms of each other. Also, E1 or E2 might throw an [[Exception handling|exception]] which could [[Abort (computing)|terminate]] the execution of the other one. The sections below describe special cases of the semantics of these modern programming languages. | |||
===Denotations of recursive programs=== | |||
A denotational semantics is given to a program phrase as a function from an environment (that has the values of its free variables) to its denotation. For example, the phrase <tt>n*m</tt> produces a denotation when provided with an environment that has binding for its two free variables: <tt>n</tt> and <tt>m</tt>. If in the environment <tt>n</tt> has the value 3 and <tt>m</tt> has the value 5, then the denotation is 15. | |||
A function can be modeled as denoting a set of [[ordered pair]]s where each ordered pair in the set consists of two parts (1) an argument for the function and (2) the value of the function for that argument. For example the set of order pairs {[0 1] [4 3]} is the denotation of a function with value 1 for argument 0, value 3 for the argument 4, and is otherwise undefined. | |||
The problem to be solved is to provide denotations for recursive programs that are defined in terms of themselves such as the definition of the [[factorial]] function as | |||
::<tt>factorial ≡ λ(n) if (n==0) then 1 else n*factorial(n-1)</tt>. | |||
A solution is to build up the denotation ''[[corecursion|corecursively]]'' by approximation starting with the empty set of order pairs (which in set theory would be written as {}). If {} is plugged into the above definition of factorial then the denotation is {[0 1]}, which is a better approximation of factorial. Iterating: If {[0 1]} is plugged into the definition then the denotation is {[0 1] [1 1]}. So it is convenient to think of an approximation to <tt>factorial</tt> as an input <tt>F</tt> in the following way: | |||
::<tt>λ(F) λ(n) if (n==0) then 1 else n*F(n-1)</tt>. | |||
It is instructive to think of a chain of "iterates" where ''F<sup>i</sup>'' indicates [[iterated function|''i''-many applications]] of ''F''. | |||
* ''F''<sup>0</sup>({}) is the totally undefined partial function {} | |||
* ''F''<sup>1</sup>({}) is the function {[0 1]} that is defined at 0, to be 1, and undefined elsewhere; | |||
* ''F''<sup>5</sup>({}) is the function {[0 1] [1 1] [2 2] [3 6] [4 24]} | |||
The least upper bound of this chain is the full <tt>factorial</tt> function which can be expressed as follows where the symbol "⊔" means "least upper bound": | |||
::<math>\bigsqcup_{i \in \mathbb N} F^i(\{\}). </math> | |||
===Denotational semantics of non-deterministic programs=== | |||
The concept of [[power domains]] has been developed to give a denotational semantics to [[nondeterministic algorithm|non-deterministic sequential programs]]. Writing ''P'' for a power domain constructor, the domain ''P''(''D'') is the domain of non-deterministic computations of type denoted by ''D''. | |||
There are difficulties with fairness and [[Unbounded nondeterminism|unboundedness]] in domain-theoretic models of non-determinism.<ref>Paul Blain Levy: "Amb Breaks Well-Pointedness, Ground Amb Doesn't". ''Electr. Notes Theor. Comput. Sci.'' 173: 221-239 (2007)</ref> See [[Power domains#Power domains for nondeterminism|Power domains for nondeterminism]]. | |||
===Denotational semantics of concurrency=== | |||
Many researchers have argued that the domain theoretic models given above do not suffice for the more general case of [[Concurrency (computer science)|concurrent computation]]. For this reason various [[Concurrency_(computer_science)#Models|new models]] have been introduced. In the early 1980s, people began using the style of denotational semantics to give semantics for concurrent languages. Examples include [[Denotational_semantics_of_the_Actor_model#Clinger.27s_Model|Will Clinger's work with the actor model]]; Glynn Winskel's work with event structures and [[petri nets]];<ref>''Event Structure Semantics for CCS and Related Languages''. DAIMI Research Report, University of Aarhus, 67 pp., April 1983.</ref> and the work by Francez, Hoare, Lehmann, and de Roever (1979) on trace semantics for [[Communicating sequential processes|CSP]].<ref>Nissim Francez, [[C. A. R. Hoare]], Daniel Lehmann, and [[Willem-Paul de Roever]]. "Semantics of nondeterminism, concurrency, and communication", ''Journal of Computer and System Sciences''. December 1979.</ref> All these lines of inquiry remain under investigation (see e.g. the various denotational models for CSP<ref name=Roscoe/>). | |||
Recently, Winskel and others have proposed the category of [[profunctor]]s as a domain theory for concurrency.<ref>Gian Luca Cattani, [[Glynn Winskel]]. "Profunctors, open maps and bisimulation". ''Mathematical Structures in Computer Science'', 15(3):553–614 (2005).</ref><ref>Mikkel Nygaard, Glynn Winskel: "Domain theory for concurrency". ''[[Theoretical Computer Science (journal)|Theoretical Computer Science]]'', 316(1):153–190 (2004).</ref> | |||
===Denotational semantics of state=== | |||
State (such as a heap) and simple [[imperative programming|imperative features]] can be straightforwardly modeled in the denotational semantics described above. All the [[Denotational semantics#Textbooks|textbooks]] below have the details. The key idea is to consider a command as a partial function on some domain of states. The denotation of "<tt>x:=3</tt>" is then the function that takes a state to the state with <tt>3</tt> assigned to <tt>x</tt>. The sequencing operator "<tt>;</tt>" is denoted by composition of functions. Fixed-point constructions are then used to give a semantics to looping constructs, such as "<tt>while</tt>". | |||
Things become more difficult in modelling programs with local variables. One approach is to no longer work with domains, but instead to interpret types as [[functor]]s from some [[Category (mathematics)|category]] of worlds to a [[Category (mathematics)|category]] of domains. Programs are then denoted by [[natural transformation|natural]] continuous functions between these functors.<ref>[[Peter W. O'Hearn]], John Power, [[Robert D. Tennent]], Makoto Takeyama. Syntactic control of interference revisited. ''Electr. Notes Theor. Comput. Sci.'' 1. 1995.</ref><ref>Frank J. Oles. ''A Category-Theoretic Approach to the Semantics of Programming''. PhD thesis, [[Syracuse University]], New York, USA. 1982.</ref> | |||
===Denotations of data types=== | |||
Many programming languages allow users to define [[recursive data type]]s. For example, the type of lists of numbers can be specified by | |||
::<tt>datatype list = Cons of (Nat, list) | Empty.</tt> | |||
This section deals only with functional data structures that cannot change. Conventional imperative programming languages would typically allow the elements of such a recursive list to be changed. | |||
For another example: the type of denotations of the [[untyped lambda calculus]] is | |||
::<tt>datatype D = (D → D)</tt> | |||
The problem of ''solving domain equations'' is concerned with finding domains that model these kinds of datatypes. One approach, roughly speaking, is to consider the collection of all domains as a domain itself, and then solve the recursive definition there. The [[Denotational semantics#Textbooks|textbooks]] below give more details. | |||
[[Polymorphism (computer science)|Polymorphic data types]] are data types that are defined with a parameter. For example, the type of α <tt>list</tt>s is defined by | |||
::<tt>datatype α list = Cons of (α, α list) | Empty.</tt> | |||
Lists of numbers, then, are of type <tt>Nat list</tt>, while lists of strings are of <tt>String list</tt>. | |||
Some researchers have developed domain theoretic models of polymorphism. Other researchers have also modeled parametric polymorphism within constructive set theories. Details are found in the [[Denotational semantics#Textbooks|textbooks]] listed below. | |||
A recent research area has involved denotational semantics for object and class based programming languages.<ref>Bernhard Reus, Thomas Streicher. "Semantics and logic of object calculi". ''Theor. Comput. Sci.'', 316(1):191–213 (2004).</ref> | |||
===Denotational semantics for programs of restricted complexity=== | |||
Following the development of programming languages based on [[linear logic]], denotational semantics have been given to languages for linear usage (see e.g. [[proof net]]s, [[Coherent space|coherence spaces]]) and also polynomial time complexity.<ref>P. Baillot. "Stratified coherence spaces: a denotational semantics for Light Linear Logic (ps.gz)" ''Theoretical Computer Science'', 318 (1-2), pp. 29-55, 2004.</ref> | |||
===Denotational semantics of sequentiality=== | |||
The problem of full [[Denotational semantics#Abstraction|abstraction]] for the sequential programming language [[Programming language for Computable Functions|PCF]] was, for a long time, a big open question in denotational semantics. The difficulty with PCF is that it is a very sequential language. For example, there is no way to define the [[logical disjunction#parallel-or|parallel-or]] function in PCF. It is for this reason that the approach using domains, as introduced above, yields a denotational semantics that is not fully abstract. | |||
This open question was mostly resolved in the 1990s with the development of [[game semantics]] and also with techniques involving [[logical relation]]s.<ref>P. W. O'Hearn and J. G. Riecke. "Kripke Logical Relations and PCF", ''Information and Computation'', 120(1):107–116 (July 1995).</ref> For more details, see the page on PCF. | |||
===Denotational semantics as source-to-source translation=== | |||
It is often useful to translate one programming language into another. For example, a concurrent programming language might be translated into a [[process calculus]]; a high-level programming language might be translated into byte-code. (Indeed, conventional denotational semantics can be seen as the interpretation of programming languages into the [[internal language]] of the category of domains.) | |||
In this context, notions from denotational semantics, such as [[Denotational semantics#Abstraction|full abstraction]], help to satisfy security concerns.<ref>Martin Abadi. "Protection in programming-language translations". ''Proc. of ICALP'98''. LNCS 1443. 1998.</ref><ref>Andrew Kennedy. "Securing the .NET programming model". ''Theoretical Computer Science'', 364(3). 2006</ref> | |||
==Abstraction== | |||
It is often considered important to connect denotational semantics with [[operational semantics]]. This is especially important when the denotational semantics is rather mathematical and abstract, and the operational semantics is more concrete or closer to the computational intuitions. The following properties of a denotational semantics are often of interest. | |||
#'''Syntax independence''': The denotations of programs should not involve the syntax of the source language. | |||
#'''Soundness''': All [[observational equivalence|observably distinct]] programs have distinct denotations; | |||
#'''Full abstraction''': Two programs have the same denotations precisely when they are [[observational equivalence|observationally equivalent]]. For semantics in the traditional style, full abstraction may be understood roughly as the requirement that "operational equivalence coincides with denotational equality". For denotational semantics in more intensional models, such as the [[actor model]] and [[process calculi]], there are different notions of equivalence within each model, and so the concept of full abstraction is a matter of debate, and harder to pin down. Also the mathematical structure of operational semantics and denotational semantics can become very close. | |||
Additional desirable properties we may wish to hold between operational and denotational semantics are: | |||
#'''Constructivism''': [[Constructivism (mathematics)|Constructivism]] is concerned with whether domain elements can be shown to exist by constructive methods. | |||
#'''Independence of denotational and operational semantics''': The denotational semantics should be formalized using mathematical structures that are independent of the operational semantics of a programming language; However, the underlying concepts can be closely related. See the section on [[Denotational semantics#Compositionality|Compositionality]] below. | |||
#'''Full completeness''' or '''definability''': Every morphism of the semantic model should be the denotation of a program.<ref>{{cite journal | |||
| last = Curien | |||
| first = Pierre-Louis | |||
| authorlink = | |||
| coauthors = | |||
| title = Definability and Full Abstraction | |||
| journal = Electronic Notes in Theoretical Computer Science | |||
| volume = 172 | |||
| issue = | |||
| pages = 301–310 | |||
| publisher = Elsevier | |||
| location = Papers in honour of [[Gordon Plotkin]] | |||
| doi = 10.1016/j.entcs.2007.02.011 | |||
| year = 2007 }}</ref> | |||
==Compositionality== | |||
An important aspect of denotational semantics of programming languages is compositionality, by which the denotation of a program is constructed from denotations of its parts. For example consider the expression "7 + 4". Compositionality in this case is to provide a meaning for "7 + 4" in terms of the meanings of "7", "4" and "+". | |||
A basic denotational semantics in domain theory is compositional because it is given as follows. We start by considering program fragments, i.e. programs with free variables. A ''typing context'' assigns a type to each free variable. For instance, in the expression (''x'' + ''y'') might be considered in a typing context (''x'':<tt>nat</tt>,''y'':<tt>nat</tt>). We now give a denotational semantics to program fragments, using the following scheme. | |||
#We begin by describing the meaning of the types of our language: the meaning of each type must be a domain. We write 〚τ〛 for the domain denoting the type τ. For instance, the meaning of type <tt>nat</tt> should be the domain of natural numbers: 〚<tt>nat</tt>〛=ℕ<sub>⊥</sub>. | |||
#From the meaning of types we derive a meaning for typing contexts. We set 〚 ''x''<sub>1</sub>:τ<sub>1</sub>,..., ''x''<sub>n</sub>:τ<sub>n</sub>〛 = 〚 τ<sub>1</sub>〛× ... ×〚τ<sub>n</sub>〛. For instance, 〚''x'':<tt>nat</tt>,''y'':<tt>nat</tt>〛= ℕ<sub>⊥</sub>×ℕ<sub>⊥</sub>. As a special case, the meaning of the empty typing context, with no variables, is the domain with one element, denoted 1. | |||
#Finally, we must give a meaning to each program-fragment-in-typing-context. Suppose that ''P'' is a program fragment of type σ, in typing context Γ, often written Γ⊢''P'':σ. Then the meaning of this program-in-typing-context must be a continuous function 〚Γ⊢''P'':σ〛:〚Γ〛→〚σ〛. For instance, 〚⊢7:<tt>nat</tt>〛:1→ℕ<sub>⊥</sub> is the constantly "7" function, while 〚''x'':<tt>nat</tt>,''y'':<tt>nat</tt>⊢''x''+''y'':<tt>nat</tt>〛:ℕ<sub>⊥</sub>×ℕ<sub>⊥</sub>→ℕ<sub>⊥</sub> is the function that adds two numbers. | |||
Now, the meaning of the compound expression (7+4) is determined by composing the three functions 〚⊢7:<tt>nat</tt>〛:1→ℕ<sub>⊥</sub>, 〚⊢4:<tt>nat</tt>〛:1→ℕ<sub>⊥</sub>, and 〚''x'':<tt>nat</tt>,''y'':<tt>nat</tt>⊢''x''+''y'':<tt>nat</tt>〛:ℕ<sub>⊥</sub>×ℕ<sub>⊥</sub>→ℕ<sub>⊥</sub>. | |||
In fact, this is a general scheme for compositional denotational semantics. There is nothing specific about domains and continuous functions here. One can work with a different [[category (mathematics)|category]] instead. For example, in [[game semantics]], the category of games has games as objects and strategies as morphisms: we can interpret types as games, and programs as strategies. For a simple language without general recursion, we can make do with the [[Category of sets|category of sets and functions]]. For a language with side-effects, we can work in the [[Kleisli category]] for a monad. For a language with state, we can work in a [[functor category]]. [[Robin Milner|Milner]] has advocated modelling location and interaction by working in a category with interfaces as objects and ''[[bigraphs]]'' as morphisms.<ref>The Space and Motion of Communicating Agents. Robin Milner. Cambridge University Press, 2009, ISBN 978-0-521-73833-0, [https://blog.itu.dk/SMDS-F2010/files/2010/04/milner-2009-the-space-and-motion-of-communicating-agents.pdf 2009 draft].</ref> | |||
==Semantics versus implementation== | |||
According to [[Dana Scott]] [1980]:{{Citation needed|date=October 2010}} | |||
:''It is not necessary for the semantics to determine an implementation, but it should provide criteria for showing that an implementation is correct.'' | |||
According to Clinger (1981):{{citation needed|date=January 2011}} | |||
:''Usually, however, the formal semantics of a conventional sequential programming language may itself be interpreted to provide an (inefficient) implementation of the language. A formal semantics need not always provide such an implementation, though, and to believe that semantics must provide an implementation leads to confusion about the formal semantics of concurrent languages. Such confusion is painfully evident when the presence of unbounded nondeterminism in a programming language's semantics is said to imply that the programming language cannot be implemented.'' | |||
==Connections to other areas of computer science== | |||
Some work in denotational semantics has interpreted types as domains in the sense of [[domain theory]] which can be seen as a branch of [[model theory]], leading to connections with [[type theory]] and [[category theory]]. Within computer science, there are connections with [[abstract interpretation]], [[program verification]], and [[model checking]]. | |||
Monads were introduced to denotational semantics as a way of organising semantics, and these ideas have had a big impact in [[functional programming]] (see [[monad (functional programming)]]). | |||
==References== | |||
{{reflist}} | |||
==Further reading== | |||
;Textbooks | |||
* R. E. Milne and [[Christopher Strachey|C. Strachey]], ''A theory of programming language semantics''. Chapman and Hall, London; Wiley, New York, 1976. | |||
* [[Michael J. C. Gordon|M. J. C. Gordon]]. ''The Denotational Description of Programming Languages''. Springer-Verlag, Berlin, 1979. | |||
* [[Joe Stoy|Joseph E. Stoy]], ''Denotational Semantics: The Scott-Strachey Approach to Programming Language Semantics''. MIT Press, Cambridge, Massachusetts, 1977. (A classic if dated textbook.) | |||
* David A. Schmidt, ''Denotational semantics: a methodology for language development'', Allyn and Bacon, 1986, ISBN 0-205-10450-9 (out or print now; [http://www.cis.ksu.edu/~schmidt/text/densem.html free electronic version available]) | |||
* Carl Gunter, ''Semantics of Programming Languages: Structures and Techniques''. MIT Press, Cambridge, Massachusetts, 1992. ISBN 978-0262071437 | |||
* Glynn Winskel, ''Formal Semantics of Programming Languages''. MIT Press, Cambridge, Massachusetts, 1993. ISBN 978-0262731034 | |||
* R. D. Tennent, ''Denotational semantics''. Handbook of logic in computer science, vol. 3 pp 169–322. Oxford University Press, 1994. ISBN 0-19-853762-X | |||
* [[Sanson Abramsky|S. Abramsky]] and A. Jung: [http://www.cs.bham.ac.uk/~axj/pub/papers/handy1.pdf ''Domain theory'']. In S. Abramsky, D. M. Gabbay, T. S. E. Maibaum, editors, Handbook of Logic in Computer Science, vol. III. Oxford University Press, 1994. ISBN 0-19-853762-X | |||
; Lecture notes | |||
* Glynn Winskel. ''[http://www.cl.cam.ac.uk/~gw104/dens.pdf Denotational Semantics]''. University of Cambridge. | |||
;Other references | |||
{{Cleanup-list|date=September 2009}} | |||
*Irene Greif. ''Semantics of Communicating Parallel Processes'' MIT EECS Doctoral Dissertation. August 1975. | |||
* [[Gordon Plotkin]]. "A powerdomain construction" ''[[SIAM Journal on Computing]]'' September 1976. | |||
* [[Edsger Dijkstra]]. ''A Discipline of Programming'' Prentice Hall. 1976. | |||
* Krzysztof R. Apt, J. W. de Bakker. ''Exercises in Denotational Semantics'' MFCS 1976: 1-11 | |||
* J. W. de Bakker. "Least Fixed Points Revisited" ''[[Theoretical Computer Science (journal)|Theoretical Computer Science]]'' 2(2): 155-181 (1976) | |||
* Michael Smyth. "Power domains" ''[[Journal of Computer and System Sciences]]''. 1978. | |||
* Nissim Francez, [[C. A. R. Hoare]], Daniel Lehmann, and Willem-Paul de Roever. "Semantics of nondeterminism, concurrency, and communication" ''Journal of Computer and System Sciences''. December 1979. | |||
* [[Nancy Lynch]] and [[Michael J. Fischer]]. "On describing the behavior of distributed systems" in ''Semantics of Concurrent Computation''. Springer-Verlag. 1979. | |||
* Jerald Schwartz "Denotational semantics of parallelism" ''in Semantics of Concurrent Computation''. Springer-Verlag. 1979. | |||
* William Wadge. "An extensional treatment of dataflow deadlock" Semantics of Concurrent Computation''. Springer-Verlag. 1979. | |||
* [[Ralph-Johan Back]]. "Semantics of Unbounded Nondeterminism" [[ICALP]] 1980. | |||
* David Park. ''On the semantics of fair parallelism'' ''Proceedings of the Winter School on Formal Software Specification''. Springer-Verlag. 1980. | |||
* Will Clinger, [http://hdl.handle.net/1721.1/6935 ''Foundations of Actor Semantics'']. MIT Mathematics Doctoral Dissertation, June 1981. | |||
* Lloyd Allison, ''A Practical Introduction to Denotational Semantics'' Cambridge University Press. 1987. | |||
* P. America, J. de Bakker, J. N. Kok and J. Rutten. "'Denotational semantics of a parallel object-oriented language" ''Information and Computation'', 83(2):152–205 (1989) | |||
* David A. Schmidt, ''The Structure of Typed Programming Languages''. MIT Press, Cambridge, Massachusetts, 1994. ISBN 0-262-69171-X. | |||
==External links== | |||
{{Wikibooks|Haskell|Denotational semantics}} | |||
* [http://www.csse.monash.edu.au/~lloyd/tilde/Semantics/ ''Denotational Semantics'']. Overview of book by Lloyd Allison | |||
* [http://www.risc.uni-linz.ac.at/people/schreine/courses/densem/densem.html ''Structure of Programming Languages I: Denotational Semantics'']. Course notes from 1995 by Wolfgang Schreiner | |||
{{DEFAULTSORT:Denotational Semantics}} | |||
[[Category:1970 in computer science]] | |||
[[Category:Logic in computer science]] | |||
[[Category:Models of computation]] | |||
[[Category:Formal specification languages]] | |||
[[Category:Denotational semantics| ]] | |||
[[Category:Programming language semantics]] | |||
[[es:Semántica denotacional]] |
Revision as of 02:43, 23 January 2014
In computer science, denotational semantics (initially known as mathematical semantics or Scott–Strachey semantics) is an approach of formalizing the meanings of programming languages by constructing mathematical objects (called denotations) that describe the meanings of expressions from the languages. Other approaches to providing a formal semantics of programming languages include axiomatic semantics and operational semantics.
Broadly speaking, denotational semantics is concerned with finding mathematical objects called domains that represent what programs do. For example, programs (or program phrases) might be represented by partial functions or by games between the environment and the system.
An important tenet of denotational semantics is that semantics should be compositional: the denotation of a program phrase should be built out of the denotations of its subphrases.
Historical development
Denotational semantics originated in the work of Christopher Strachey and Dana Scott in the late 1960s.[1] As originally developed by Strachey and Scott, denotational semantics provided the denotation (meaning) of a computer program as a function that mapped input into output.[2] To give denotations to recursively defined programs, Scott proposed working with continuous functions between domains, specifically complete partial orders. As described below, work has continued in investigating appropriate denotational semantics for aspects of programming languages such as sequentiality, concurrency, non-determinism and local state.
Denotational semantics have been developed for modern programming languages that use capabilities like concurrency and exceptions, e.g., Concurrent ML,[3] CSP,[4] and Haskell.[5] The semantics of these languages is compositional in that the denotation of a phrase depends on the denotations of its subphrases. For example, the meaning of the applicative expression f(E1,E2) is defined in terms of semantics of its subphrases f, E1 and E2. In a modern programming language, E1 and E2 can be evaluated concurrently and the execution of one of them might affect the other by interacting through shared objects causing their denotations to be defined in terms of each other. Also, E1 or E2 might throw an exception which could terminate the execution of the other one. The sections below describe special cases of the semantics of these modern programming languages.
Denotations of recursive programs
A denotational semantics is given to a program phrase as a function from an environment (that has the values of its free variables) to its denotation. For example, the phrase n*m produces a denotation when provided with an environment that has binding for its two free variables: n and m. If in the environment n has the value 3 and m has the value 5, then the denotation is 15.
A function can be modeled as denoting a set of ordered pairs where each ordered pair in the set consists of two parts (1) an argument for the function and (2) the value of the function for that argument. For example the set of order pairs {[0 1] [4 3]} is the denotation of a function with value 1 for argument 0, value 3 for the argument 4, and is otherwise undefined.
The problem to be solved is to provide denotations for recursive programs that are defined in terms of themselves such as the definition of the factorial function as
- factorial ≡ λ(n) if (n==0) then 1 else n*factorial(n-1).
A solution is to build up the denotation corecursively by approximation starting with the empty set of order pairs (which in set theory would be written as {}). If {} is plugged into the above definition of factorial then the denotation is {[0 1]}, which is a better approximation of factorial. Iterating: If {[0 1]} is plugged into the definition then the denotation is {[0 1] [1 1]}. So it is convenient to think of an approximation to factorial as an input F in the following way:
- λ(F) λ(n) if (n==0) then 1 else n*F(n-1).
It is instructive to think of a chain of "iterates" where Fi indicates i-many applications of F.
- F0({}) is the totally undefined partial function {}
- F1({}) is the function {[0 1]} that is defined at 0, to be 1, and undefined elsewhere;
- F5({}) is the function {[0 1] [1 1] [2 2] [3 6] [4 24]}
The least upper bound of this chain is the full factorial function which can be expressed as follows where the symbol "⊔" means "least upper bound":
Denotational semantics of non-deterministic programs
The concept of power domains has been developed to give a denotational semantics to non-deterministic sequential programs. Writing P for a power domain constructor, the domain P(D) is the domain of non-deterministic computations of type denoted by D.
There are difficulties with fairness and unboundedness in domain-theoretic models of non-determinism.[6] See Power domains for nondeterminism.
Denotational semantics of concurrency
Many researchers have argued that the domain theoretic models given above do not suffice for the more general case of concurrent computation. For this reason various new models have been introduced. In the early 1980s, people began using the style of denotational semantics to give semantics for concurrent languages. Examples include Will Clinger's work with the actor model; Glynn Winskel's work with event structures and petri nets;[7] and the work by Francez, Hoare, Lehmann, and de Roever (1979) on trace semantics for CSP.[8] All these lines of inquiry remain under investigation (see e.g. the various denotational models for CSP[4]).
Recently, Winskel and others have proposed the category of profunctors as a domain theory for concurrency.[9][10]
Denotational semantics of state
State (such as a heap) and simple imperative features can be straightforwardly modeled in the denotational semantics described above. All the textbooks below have the details. The key idea is to consider a command as a partial function on some domain of states. The denotation of "x:=3" is then the function that takes a state to the state with 3 assigned to x. The sequencing operator ";" is denoted by composition of functions. Fixed-point constructions are then used to give a semantics to looping constructs, such as "while".
Things become more difficult in modelling programs with local variables. One approach is to no longer work with domains, but instead to interpret types as functors from some category of worlds to a category of domains. Programs are then denoted by natural continuous functions between these functors.[11][12]
Denotations of data types
Many programming languages allow users to define recursive data types. For example, the type of lists of numbers can be specified by
- datatype list = Cons of (Nat, list) | Empty.
This section deals only with functional data structures that cannot change. Conventional imperative programming languages would typically allow the elements of such a recursive list to be changed.
For another example: the type of denotations of the untyped lambda calculus is
- datatype D = (D → D)
The problem of solving domain equations is concerned with finding domains that model these kinds of datatypes. One approach, roughly speaking, is to consider the collection of all domains as a domain itself, and then solve the recursive definition there. The textbooks below give more details.
Polymorphic data types are data types that are defined with a parameter. For example, the type of α lists is defined by
- datatype α list = Cons of (α, α list) | Empty.
Lists of numbers, then, are of type Nat list, while lists of strings are of String list.
Some researchers have developed domain theoretic models of polymorphism. Other researchers have also modeled parametric polymorphism within constructive set theories. Details are found in the textbooks listed below.
A recent research area has involved denotational semantics for object and class based programming languages.[13]
Denotational semantics for programs of restricted complexity
Following the development of programming languages based on linear logic, denotational semantics have been given to languages for linear usage (see e.g. proof nets, coherence spaces) and also polynomial time complexity.[14]
Denotational semantics of sequentiality
The problem of full abstraction for the sequential programming language PCF was, for a long time, a big open question in denotational semantics. The difficulty with PCF is that it is a very sequential language. For example, there is no way to define the parallel-or function in PCF. It is for this reason that the approach using domains, as introduced above, yields a denotational semantics that is not fully abstract.
This open question was mostly resolved in the 1990s with the development of game semantics and also with techniques involving logical relations.[15] For more details, see the page on PCF.
Denotational semantics as source-to-source translation
It is often useful to translate one programming language into another. For example, a concurrent programming language might be translated into a process calculus; a high-level programming language might be translated into byte-code. (Indeed, conventional denotational semantics can be seen as the interpretation of programming languages into the internal language of the category of domains.)
In this context, notions from denotational semantics, such as full abstraction, help to satisfy security concerns.[16][17]
Abstraction
It is often considered important to connect denotational semantics with operational semantics. This is especially important when the denotational semantics is rather mathematical and abstract, and the operational semantics is more concrete or closer to the computational intuitions. The following properties of a denotational semantics are often of interest.
- Syntax independence: The denotations of programs should not involve the syntax of the source language.
- Soundness: All observably distinct programs have distinct denotations;
- Full abstraction: Two programs have the same denotations precisely when they are observationally equivalent. For semantics in the traditional style, full abstraction may be understood roughly as the requirement that "operational equivalence coincides with denotational equality". For denotational semantics in more intensional models, such as the actor model and process calculi, there are different notions of equivalence within each model, and so the concept of full abstraction is a matter of debate, and harder to pin down. Also the mathematical structure of operational semantics and denotational semantics can become very close.
Additional desirable properties we may wish to hold between operational and denotational semantics are:
- Constructivism: Constructivism is concerned with whether domain elements can be shown to exist by constructive methods.
- Independence of denotational and operational semantics: The denotational semantics should be formalized using mathematical structures that are independent of the operational semantics of a programming language; However, the underlying concepts can be closely related. See the section on Compositionality below.
- Full completeness or definability: Every morphism of the semantic model should be the denotation of a program.[18]
Compositionality
An important aspect of denotational semantics of programming languages is compositionality, by which the denotation of a program is constructed from denotations of its parts. For example consider the expression "7 + 4". Compositionality in this case is to provide a meaning for "7 + 4" in terms of the meanings of "7", "4" and "+".
A basic denotational semantics in domain theory is compositional because it is given as follows. We start by considering program fragments, i.e. programs with free variables. A typing context assigns a type to each free variable. For instance, in the expression (x + y) might be considered in a typing context (x:nat,y:nat). We now give a denotational semantics to program fragments, using the following scheme.
- We begin by describing the meaning of the types of our language: the meaning of each type must be a domain. We write 〚τ〛 for the domain denoting the type τ. For instance, the meaning of type nat should be the domain of natural numbers: 〚nat〛=ℕ⊥.
- From the meaning of types we derive a meaning for typing contexts. We set 〚 x1:τ1,..., xn:τn〛 = 〚 τ1〛× ... ×〚τn〛. For instance, 〚x:nat,y:nat〛= ℕ⊥×ℕ⊥. As a special case, the meaning of the empty typing context, with no variables, is the domain with one element, denoted 1.
- Finally, we must give a meaning to each program-fragment-in-typing-context. Suppose that P is a program fragment of type σ, in typing context Γ, often written Γ⊢P:σ. Then the meaning of this program-in-typing-context must be a continuous function 〚Γ⊢P:σ〛:〚Γ〛→〚σ〛. For instance, 〚⊢7:nat〛:1→ℕ⊥ is the constantly "7" function, while 〚x:nat,y:nat⊢x+y:nat〛:ℕ⊥×ℕ⊥→ℕ⊥ is the function that adds two numbers.
Now, the meaning of the compound expression (7+4) is determined by composing the three functions 〚⊢7:nat〛:1→ℕ⊥, 〚⊢4:nat〛:1→ℕ⊥, and 〚x:nat,y:nat⊢x+y:nat〛:ℕ⊥×ℕ⊥→ℕ⊥.
In fact, this is a general scheme for compositional denotational semantics. There is nothing specific about domains and continuous functions here. One can work with a different category instead. For example, in game semantics, the category of games has games as objects and strategies as morphisms: we can interpret types as games, and programs as strategies. For a simple language without general recursion, we can make do with the category of sets and functions. For a language with side-effects, we can work in the Kleisli category for a monad. For a language with state, we can work in a functor category. Milner has advocated modelling location and interaction by working in a category with interfaces as objects and bigraphs as morphisms.[19]
Semantics versus implementation
According to Dana Scott [1980]:Potter or Ceramic Artist Truman Bedell from Rexton, has interests which include ceramics, best property developers in singapore developers in singapore and scrabble. Was especially enthused after visiting Alejandro de Humboldt National Park.
- It is not necessary for the semantics to determine an implementation, but it should provide criteria for showing that an implementation is correct.
According to Clinger (1981):Potter or Ceramic Artist Truman Bedell from Rexton, has interests which include ceramics, best property developers in singapore developers in singapore and scrabble. Was especially enthused after visiting Alejandro de Humboldt National Park.
- Usually, however, the formal semantics of a conventional sequential programming language may itself be interpreted to provide an (inefficient) implementation of the language. A formal semantics need not always provide such an implementation, though, and to believe that semantics must provide an implementation leads to confusion about the formal semantics of concurrent languages. Such confusion is painfully evident when the presence of unbounded nondeterminism in a programming language's semantics is said to imply that the programming language cannot be implemented.
Connections to other areas of computer science
Some work in denotational semantics has interpreted types as domains in the sense of domain theory which can be seen as a branch of model theory, leading to connections with type theory and category theory. Within computer science, there are connections with abstract interpretation, program verification, and model checking.
Monads were introduced to denotational semantics as a way of organising semantics, and these ideas have had a big impact in functional programming (see monad (functional programming)).
References
43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.
Further reading
- Textbooks
- R. E. Milne and C. Strachey, A theory of programming language semantics. Chapman and Hall, London; Wiley, New York, 1976.
- M. J. C. Gordon. The Denotational Description of Programming Languages. Springer-Verlag, Berlin, 1979.
- Joseph E. Stoy, Denotational Semantics: The Scott-Strachey Approach to Programming Language Semantics. MIT Press, Cambridge, Massachusetts, 1977. (A classic if dated textbook.)
- David A. Schmidt, Denotational semantics: a methodology for language development, Allyn and Bacon, 1986, ISBN 0-205-10450-9 (out or print now; free electronic version available)
- Carl Gunter, Semantics of Programming Languages: Structures and Techniques. MIT Press, Cambridge, Massachusetts, 1992. ISBN 978-0262071437
- Glynn Winskel, Formal Semantics of Programming Languages. MIT Press, Cambridge, Massachusetts, 1993. ISBN 978-0262731034
- R. D. Tennent, Denotational semantics. Handbook of logic in computer science, vol. 3 pp 169–322. Oxford University Press, 1994. ISBN 0-19-853762-X
- S. Abramsky and A. Jung: Domain theory. In S. Abramsky, D. M. Gabbay, T. S. E. Maibaum, editors, Handbook of Logic in Computer Science, vol. III. Oxford University Press, 1994. ISBN 0-19-853762-X
- Lecture notes
- Glynn Winskel. Denotational Semantics. University of Cambridge.
- Other references
Art Officer or Manager Roman Kepp from Amherstburg, has lots of interests that include computers, property agents singapore developers in singapore and rc model aircrafts. Discovered some amazing spots having spent 3 months at Gusuku Sites and Related Properties of the Kingdom of Ryukyu.
- Irene Greif. Semantics of Communicating Parallel Processes MIT EECS Doctoral Dissertation. August 1975.
- Gordon Plotkin. "A powerdomain construction" SIAM Journal on Computing September 1976.
- Edsger Dijkstra. A Discipline of Programming Prentice Hall. 1976.
- Krzysztof R. Apt, J. W. de Bakker. Exercises in Denotational Semantics MFCS 1976: 1-11
- J. W. de Bakker. "Least Fixed Points Revisited" Theoretical Computer Science 2(2): 155-181 (1976)
- Michael Smyth. "Power domains" Journal of Computer and System Sciences. 1978.
- Nissim Francez, C. A. R. Hoare, Daniel Lehmann, and Willem-Paul de Roever. "Semantics of nondeterminism, concurrency, and communication" Journal of Computer and System Sciences. December 1979.
- Nancy Lynch and Michael J. Fischer. "On describing the behavior of distributed systems" in Semantics of Concurrent Computation. Springer-Verlag. 1979.
- Jerald Schwartz "Denotational semantics of parallelism" in Semantics of Concurrent Computation. Springer-Verlag. 1979.
- William Wadge. "An extensional treatment of dataflow deadlock" Semantics of Concurrent Computation. Springer-Verlag. 1979.
- Ralph-Johan Back. "Semantics of Unbounded Nondeterminism" ICALP 1980.
- David Park. On the semantics of fair parallelism Proceedings of the Winter School on Formal Software Specification. Springer-Verlag. 1980.
- Will Clinger, Foundations of Actor Semantics. MIT Mathematics Doctoral Dissertation, June 1981.
- Lloyd Allison, A Practical Introduction to Denotational Semantics Cambridge University Press. 1987.
- P. America, J. de Bakker, J. N. Kok and J. Rutten. "'Denotational semantics of a parallel object-oriented language" Information and Computation, 83(2):152–205 (1989)
- David A. Schmidt, The Structure of Typed Programming Languages. MIT Press, Cambridge, Massachusetts, 1994. ISBN 0-262-69171-X.
External links
DTZ's auction group in Singapore auctions all types of residential, workplace and retail properties, retailers, homes, accommodations, boarding houses, industrial buildings and development websites. Auctions are at the moment held as soon as a month.
Whitehaven @ Pasir Panjang – A boutique improvement nicely nestled peacefully in serene Pasir Panjang personal estate presenting a hundred and twenty rare freehold private apartments tastefully designed by the famend Ong & Ong Architect. Only a short drive away from Science Park and NUS Campus, Jade Residences, a recent Freehold condominium which offers high quality lifestyle with wonderful facilities and conveniences proper at its door steps. Its fashionable linear architectural fashion promotes peace and tranquility living nestled within the D19 personal housing enclave. Rising workplace sector leads real estate market efficiency, while prime retail and enterprise park segments moderate and residential sector continues in decline International Market Perspectives - 1st Quarter 2014
There are a lot of websites out there stating to be one of the best seek for propertycondominiumhouse, and likewise some ways to discover a low cost propertycondominiumhouse. Owning a propertycondominiumhouse in Singapore is the dream of virtually all individuals in Singapore, It is likely one of the large choice we make in a lifetime. Even if you happen to're new to Property listing singapore funding, we are right here that will help you in making the best resolution to purchase a propertycondominiumhouse at the least expensive value.
Jun 18 ROCHESTER in MIXED USE IMPROVEMENT $1338000 / 1br - 861ft² - (THE ROCHESTER CLOSE TO NORTH BUONA VISTA RD) pic real property - by broker Jun 18 MIXED USE IMPROVEMENT @ ROCHESTER @ ROCHESTER PK $1880000 / 1br - 1281ft² - (ROCHESTER CLOSE TO NORTH BUONA VISTA) pic real estate - by broker Tue 17 Jun Jun 17 Sunny Artwork Deco Gem Near Seashore-Super Deal!!! $103600 / 2br - 980ft² - (Ventnor) pic actual estate - by owner Jun 17 Freehold semi-d for rent (Jalan Rebana ) $7000000 / 5909ft² - (Jalan Rebana ) actual property - by dealer Jun sixteen Ascent @ 456 in D12 (456 Balestier Highway,Singapore) pic real property - by proprietor Jun 16 RETAIL SHOP AT SIM LIM SQUARE FOR SALE, IT MALL, ROCHOR, BUGIS MRT $2000000 / 506ft² - (ROCHOR, BUGIS MRT) pic real estate - by dealer HDB Scheme Any DBSS BTO
In case you are eligible to purchase landed houses (open solely to Singapore residents) it is without doubt one of the best property investment choices. Landed housing varieties solely a small fraction of available residential property in Singapore, due to shortage of land right here. In the long term it should hold its worth and appreciate as the supply is small. In truth, landed housing costs have risen the most, having doubled within the last eight years or so. However he got here back the following day with two suitcases full of money. Typically we've got to clarify to such folks that there are rules and paperwork in Singapore and you can't just buy a home like that,' she said. For conveyancing matters there shall be a recommendedLondon Regulation agency familiar with Singapore London propertyinvestors to symbolize you
Sales transaction volumes have been expected to hit four,000 units for 2012, close to the mixed EC gross sales volume in 2010 and 2011, in accordance with Savills Singapore. Nevertheless the last quarter was weak. In Q4 2012, sales transactions were 22.8% down q-q to 7,931 units, in line with the URA. The quarterly sales discount was felt throughout the board. When the sale just starts, I am not in a hurry to buy. It's completely different from a private sale open for privileged clients for one day solely. Orchard / Holland (D09-10) House For Sale The Tembusu is a singular large freehold land outdoors the central area. Designed by multiple award-profitable architects Arc Studio Architecture + Urbanism, the event is targeted for launch in mid 2013. Post your Property Condos Close to MRT
- Denotational Semantics. Overview of book by Lloyd Allison
- Structure of Programming Languages I: Denotational Semantics. Course notes from 1995 by Wolfgang Schreiner
- ↑ Dana S. Scott. Outline of a mathematical theory of computation. Technical Monograph PRG-2, Oxford University Computing Laboratory, Oxford, England, November 1970.
- ↑ Dana Scott and Christopher Strachey. Toward a mathematical semantics for computer languages Oxford Programming Research Group Technical Monograph. PRG-6. 1971.
- ↑ John Reppy "Concurrent ML: Design, Application and Semantics" in Springer-Verlag, Lecture Notes in Computer Science, Vol. 693. 1993
- ↑ 4.0 4.1 A. W. Roscoe. "The Theory and Practice of Concurrency" Prentice-Hall. Revised 2005.
- ↑ Simon Peyton Jones, Alastair Reid, Fergus Henderson, Tony Hoare, and Simon Marlow. "A semantics for imprecise exceptions" Conference on Programming Language Design and Implementation. 1999.
- ↑ Paul Blain Levy: "Amb Breaks Well-Pointedness, Ground Amb Doesn't". Electr. Notes Theor. Comput. Sci. 173: 221-239 (2007)
- ↑ Event Structure Semantics for CCS and Related Languages. DAIMI Research Report, University of Aarhus, 67 pp., April 1983.
- ↑ Nissim Francez, C. A. R. Hoare, Daniel Lehmann, and Willem-Paul de Roever. "Semantics of nondeterminism, concurrency, and communication", Journal of Computer and System Sciences. December 1979.
- ↑ Gian Luca Cattani, Glynn Winskel. "Profunctors, open maps and bisimulation". Mathematical Structures in Computer Science, 15(3):553–614 (2005).
- ↑ Mikkel Nygaard, Glynn Winskel: "Domain theory for concurrency". Theoretical Computer Science, 316(1):153–190 (2004).
- ↑ Peter W. O'Hearn, John Power, Robert D. Tennent, Makoto Takeyama. Syntactic control of interference revisited. Electr. Notes Theor. Comput. Sci. 1. 1995.
- ↑ Frank J. Oles. A Category-Theoretic Approach to the Semantics of Programming. PhD thesis, Syracuse University, New York, USA. 1982.
- ↑ Bernhard Reus, Thomas Streicher. "Semantics and logic of object calculi". Theor. Comput. Sci., 316(1):191–213 (2004).
- ↑ P. Baillot. "Stratified coherence spaces: a denotational semantics for Light Linear Logic (ps.gz)" Theoretical Computer Science, 318 (1-2), pp. 29-55, 2004.
- ↑ P. W. O'Hearn and J. G. Riecke. "Kripke Logical Relations and PCF", Information and Computation, 120(1):107–116 (July 1995).
- ↑ Martin Abadi. "Protection in programming-language translations". Proc. of ICALP'98. LNCS 1443. 1998.
- ↑ Andrew Kennedy. "Securing the .NET programming model". Theoretical Computer Science, 364(3). 2006
- ↑ One of the biggest reasons investing in a Singapore new launch is an effective things is as a result of it is doable to be lent massive quantities of money at very low interest rates that you should utilize to purchase it. Then, if property values continue to go up, then you'll get a really high return on funding (ROI). Simply make sure you purchase one of the higher properties, reminiscent of the ones at Fernvale the Riverbank or any Singapore landed property Get Earnings by means of Renting
In its statement, the singapore property listing - website link, government claimed that the majority citizens buying their first residence won't be hurt by the new measures. Some concessions can even be prolonged to chose teams of consumers, similar to married couples with a minimum of one Singaporean partner who are purchasing their second property so long as they intend to promote their first residential property. Lower the LTV limit on housing loans granted by monetary establishments regulated by MAS from 70% to 60% for property purchasers who are individuals with a number of outstanding housing loans on the time of the brand new housing purchase. Singapore Property Measures - 30 August 2010 The most popular seek for the number of bedrooms in Singapore is 4, followed by 2 and three. Lush Acres EC @ Sengkang
Discover out more about real estate funding in the area, together with info on international funding incentives and property possession. Many Singaporeans have been investing in property across the causeway in recent years, attracted by comparatively low prices. However, those who need to exit their investments quickly are likely to face significant challenges when trying to sell their property – and could finally be stuck with a property they can't sell. Career improvement programmes, in-house valuation, auctions and administrative help, venture advertising and marketing, skilled talks and traisning are continuously planned for the sales associates to help them obtain better outcomes for his or her shoppers while at Knight Frank Singapore. No change Present Rules
Extending the tax exemption would help. The exemption, which may be as a lot as $2 million per family, covers individuals who negotiate a principal reduction on their existing mortgage, sell their house short (i.e., for lower than the excellent loans), or take part in a foreclosure course of. An extension of theexemption would seem like a common-sense means to assist stabilize the housing market, but the political turmoil around the fiscal-cliff negotiations means widespread sense could not win out. Home Minority Chief Nancy Pelosi (D-Calif.) believes that the mortgage relief provision will be on the table during the grand-cut price talks, in response to communications director Nadeam Elshami. Buying or promoting of blue mild bulbs is unlawful.
A vendor's stamp duty has been launched on industrial property for the primary time, at rates ranging from 5 per cent to 15 per cent. The Authorities might be trying to reassure the market that they aren't in opposition to foreigners and PRs investing in Singapore's property market. They imposed these measures because of extenuating components available in the market." The sale of new dual-key EC models will even be restricted to multi-generational households only. The models have two separate entrances, permitting grandparents, for example, to dwell separately. The vendor's stamp obligation takes effect right this moment and applies to industrial property and plots which might be offered inside three years of the date of buy. JLL named Best Performing Property Brand for second year running
The data offered is for normal info purposes only and isn't supposed to be personalised investment or monetary advice. Motley Fool Singapore contributor Stanley Lim would not personal shares in any corporations talked about. Singapore private home costs increased by 1.eight% within the fourth quarter of 2012, up from 0.6% within the earlier quarter. Resale prices of government-built HDB residences which are usually bought by Singaporeans, elevated by 2.5%, quarter on quarter, the quickest acquire in five quarters. And industrial property, prices are actually double the levels of three years ago. No withholding tax in the event you sell your property. All your local information regarding vital HDB policies, condominium launches, land growth, commercial property and more
There are various methods to go about discovering the precise property. Some local newspapers (together with the Straits Instances ) have categorised property sections and many local property brokers have websites. Now there are some specifics to consider when buying a 'new launch' rental. Intended use of the unit Every sale begins with 10 p.c low cost for finish of season sale; changes to 20 % discount storewide; follows by additional reduction of fiftyand ends with last discount of 70 % or extra. Typically there is even a warehouse sale or transferring out sale with huge mark-down of costs for stock clearance. Deborah Regulation from Expat Realtor shares her property market update, plus prime rental residences and houses at the moment available to lease Esparina EC @ Sengkang - ↑ The Space and Motion of Communicating Agents. Robin Milner. Cambridge University Press, 2009, ISBN 978-0-521-73833-0, 2009 draft.