Teichmüller space: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
 
en>Khazar2
m Compactifications of Teichmüller spaces: clean-up, MOS:HYPHEN, replaced: widely- → widely using AWB
Line 1: Line 1:
I'm a 32 years old, married and working at the high school (Anthropology and Sociology).<br>In my spare time I teach myself Italian. I've been twicethere and look [http://www.forward.org/ forward] to returning anytime soon. I love to read, preferably on my ipad. I really love to watch Psych and Supernatural as well as docus about anything geological. I love Dog sport.<br><br>
In [[compiler theory]], a '''reaching definition''' for a given instruction is another instruction, the target variable of which may reach the given instruction without an intervening assignment. For example, in the following code:


My webpage :: [http://Www.Fotovitorius.eu/displayimage.php?album=1&pid=22 FIFA coin Generator]
d1 : y := 3
d2 : x := y
 
<code>d1</code> is a reaching definition at <code>d2</code>. In the following, example, however:
 
d1 : y := 3
d2 : y := 4
d3 : x := y
 
<code>d1</code> is no longer a reaching definition at <code>d3</code>, because <code>d2</code> kills its reach.
 
== As analysis ==
 
The similarly named '''reaching definitions''' is a [[data-flow analysis]] which statically determines which definitions may reach a given point in the code. Because of its simplicity, it is often used as the canonical example of a data-flow analysis in textbooks.  The [[data-flow confluence operator]] used is set union, and the analysis is forward flow. Reaching definitions are used to compute [[use-def chain]]s and [[def-use chain]]s.
 
The data-flow equations used for a given basic block <math>S</math> in reaching definitions are:
 
* <math>{\rm REACH}_{\rm in}[S] = \bigcup_{p \in pred[S]} {\rm REACH}_{\rm out}[p]</math>
* <math>{\rm REACH}_{\rm out}[S] = {\rm GEN}[S] \cup ({\rm REACH}_{\rm in}[S] - {\rm KILL}[S])</math>
 
In other words, the set of reaching definitions going into <math>S</math> are all of the reaching definitions from <math>S</math>'s predecessors, <math>pred[S]</math>. <math>pred[S]</math> consists of all of the basic blocks that come before <math>S</math> in the [[control flow graph]]. The reaching definitions coming out of <math>S</math> are all reaching definitions of its predecessors minus those reaching definitions whose variable is killed by <math>S</math> plus any new definitions generated within <math>S</math>.
 
For a generic instruction, we define the <math>{\rm GEN}</math> and <math>{\rm KILL}</math> sets as follows:
 
* <math>{\rm GEN}[d : y \leftarrow f(x_1,\cdots,x_n)] = \{d\}</math>
* <math>{\rm KILL}[d : y \leftarrow f(x_1,\cdots,x_n)] = {\rm DEFS}[y] - \{d\}</math>
 
where <math>{\rm DEFS}[y]</math> is the set of all definitions that assign to the variable <math>y</math>. Here <math>d</math> is a unique label attached to the assigning instruction; thus, the domain of values in reaching definitions are these instruction labels.
 
== Further reading ==
*{{cite book
|author=Aho, Alfred V.; Sethi, Ravi; & Ullman, Jeffrey D.
|title=[[Compilers: Principles, Techniques, and Tools]]
|publisher=Addison Wesley
|year=1986
|isbn=0-201-10088-6}}
*{{cite book
|author=Appel, Andrew W.
|title=Modern Compiler Implementation in ML
|publisher=Cambridge University Press
|year=1999
|isbn=0-521-58274-1}}
*{{cite book
|author=Cooper, Keith D.; & Torczon, Linda.
|title=Engineering a Compiler
|publisher=Morgan Kaufmann
|year=2005
|isbn=1-55860-698-X}}
*{{cite book
|author=Muchnick, Steven S.
|title=Advanced Compiler Design and Implementation
|publisher=Morgan Kaufmann
|year=1997
|isbn=1-55860-320-4}}
 
== See also ==
 
*[[Static single assignment form]]
 
[[Category:Program analysis]]
[[Category:Data-flow analysis]]

Revision as of 03:17, 4 November 2013

In compiler theory, a reaching definition for a given instruction is another instruction, the target variable of which may reach the given instruction without an intervening assignment. For example, in the following code:

d1 : y := 3
d2 : x := y

d1 is a reaching definition at d2. In the following, example, however:

d1 : y := 3
d2 : y := 4
d3 : x := y

d1 is no longer a reaching definition at d3, because d2 kills its reach.

As analysis

The similarly named reaching definitions is a data-flow analysis which statically determines which definitions may reach a given point in the code. Because of its simplicity, it is often used as the canonical example of a data-flow analysis in textbooks. The data-flow confluence operator used is set union, and the analysis is forward flow. Reaching definitions are used to compute use-def chains and def-use chains.

The data-flow equations used for a given basic block S in reaching definitions are:

In other words, the set of reaching definitions going into S are all of the reaching definitions from S's predecessors, pred[S]. pred[S] consists of all of the basic blocks that come before S in the control flow graph. The reaching definitions coming out of S are all reaching definitions of its predecessors minus those reaching definitions whose variable is killed by S plus any new definitions generated within S.

For a generic instruction, we define the GEN and KILL sets as follows:

where DEFS[y] is the set of all definitions that assign to the variable y. Here d is a unique label attached to the assigning instruction; thus, the domain of values in reaching definitions are these instruction labels.

Further reading

  • 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534
  • 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534
  • 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534
  • 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534

See also