FTSE 100 Index: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
changed Kazakhmys sector to Mining on the basis of its description on the company page (pending removal in the next table update anyway)
en>Dormskirk
unsourced
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Refimprove|date=October 2009}}
One particular author is known through the name of Gabrielle Lattimer though she [http://www.dailymail.co.uk/home/search.html?sel=site&searchPhrase=doesn%27t doesn't] really like being called like that. To bake is something that the woman with been doing for growth cycles. Her job would be a cashier but soon her husband and the actual will start their own home based business. She's always loved living by using South Carolina. She is running and maintaining a blog here: http://prometeu.net<br><br>My website ... [http://prometeu.net clash of clans hack free download]
{{Data transformation}}
'''Program synthesis''' is a special form of [[automatic programming]] that is most often paired with a technique for [[formal verification]]. The goal is to construct automatically a program that provably satisfies a given high-level [[specification]]. In contrast to other automatic programming techniques, the specifications are usually non-[[algorithm]]ic statements of an appropriate [[formal system|logical calculus]].<ref>{{cite book | last1 = Basin | first1 = D. | last2 = Deville | first2 = Y. | last3 = Flener | first3 = P. | last4 = Hamfelt | first4 = A. | last5 = Fischer Nilsson | first5 = J. | title = Synthesis of programs in computational logic | id = {{citeseerx|10.1.1.62.4976}} | title = Program Development in Computational Logic | year = 2004 }}</ref>
 
== Origin ==
The idea originated in the 60s {{Citation needed|date=June 2011}} with the aim of using techniques from [[artificial intelligence]] to build an ''automatic programmer''{{Citation needed|date=June 2010}}, exploiting deep connections between mathematics and the theory of programming. Lack of early success meant that the mathematical approach soon fell out of favour, along with enthusiasm for AI, in general. Although some researchers {{Who|date=June 2011}} still work on formal approaches, more success has been obtained by combining pure deductive techniques with powerful heuristics, and limiting their application to specific domains.{{Citation needed|date=June 2011}}
 
== Problems and Limitations ==
Some feel{{Who|date=June 2011}} that the concept of automated program generation often results in poor "factoring" of information.{{Citation needed|date=June 2011}} Known redundancy should be {{Why?|date=June 2011}} factored out, not introduced, it is said {{Who|date=June 2011}}{{Citation needed|date=June 2011}}. However, sometimes{{Vague|date=June 2011}} specific programming languages are limited such that one has to introduce repetition of a concept or pattern in order to keep using the same language.{{Citation needed|date=June 2011}} Here is a simplified illustration of factoring:
 
Poor Factoring: <code>x = a + a + a + a + a</code>
 
Good Factoring: <code>x = a * 5</code> (where the asterisk means "multiply")
 
Program generation tends to focus on automating the repetition seen in the first example, when a better approach is perhaps{{Vague|date=June 2011}} to find a higher-order abstraction, which is multiplication in this case. Other examples include putting parameters into a file or database instead of inside application code.
 
== The Framework of Manna and Waldinger ==
 
The framework of Manna and Waldinger <ref>{{cite journal| author=Zohar Manna, Richard Waldinger| title=A Deductive Approach to Program Synthesis| journal=ACM Transactions on Programming Languages and Systems|date=Jan 1980| volume=2| pages=90–121}}</ref>  starts from a user-given first-order specification formula. For that formula, a proof is constructed, thereby also synthesizing a functional program from unifying substitutions. Proof rules include non-clausal [[Resolution (logic)|resolution]], logical transformations, splitting of conjunctive assertions and disjunctive goals, [[structural induction]], and generalized E-resolution and [[paramodulation]];<ref>{{cite journal| author=Zohar Manna, Richard Waldinger| title=Special Relations in Automated Deduction| journal=Journal of the ACM|date=Jan 1986| pages=1–59}}</ref> these rule have been shown to be [[Completeness|complete]] for [[first-order logic]].
The framework has been designed to enhance human readability of intermediate formulas: contrary to classical resolution, it does not require [[clausal normal form]], but allows one to reason with formulas of arbitrary structure and containing any junctors.
Programs obtained by this approach are guaranteed to satisfy the specification formula started from; in this sense the are ''correct by construction''.
Only a minimalistic, yet [[turing-complete]] [[functional programming language]], consisting of conditional, recursion, and arithmetic and other operators is supported.
 
As a toy example, a functional program to compute the maximum <math>M</math> of two numbers <math>x</math> and <math>y</math> can be derived as follows.
 
{| class="wikitable"
|+ Example synthesis of maximum function
|-
! Nr !! Assertions !! Goals !! Program !! Origin
|-
| 1 || <math>A=A</math> || ||  || Axiom
|-
| 2 || <math>A \leq A</math>  ||  || || Axiom
|-
| 3 || <math>A \leq B \lor B \leq A</math>  || ||  || Axiom
|-
| 10 || || <math>x \leq M \land y \leq M \land (x = M \lor y = M)</math> || M || Specification
|-
| 11 || || <math>(x \leq M \land y \leq M \land x = M) \lor (x \leq M \land y \leq M \land y = M)</math> || M || Distr(10)
|-
| 12 || || <math>x \leq M \land y \leq M \land x = M</math> || M || Split(11)
|-
| 13 || || <math>x \leq M \land y \leq M \land y = M</math> || M || Split(11)
|-
| 14 || || <math>x \leq x \land y \leq x</math> || x || Resolve(12,1)
|-
| 15 || || <math>y \leq x</math> || x || Resolve(14,2)
|-
| 16 || || <math>\lnot (x \leq y)</math> || x || Resolve(15,3)
|-
| 17 || || <math>x \leq y \land y \leq y</math> || y || Resolve(13,1)
|-
| 18 || || <math>x \leq y</math> || y || Resolve(17,2)
|-
| 19 || || <math>\text{true}</math> || x<y [[?:|?]] y [[?:|:]] x || Resolve(18,16)
|}
 
Starting from the requirement description "''The maximum is larger than any given number, and is one of the given numbers''", the first-order formula <math>\forall X \forall Y \exists M: X \leq M \land Y \leq M \land (X=M \lor Y=M)</math> is obtained as its formal translation. This formula is to be proved. By reverse [[Skolemization]],<ref>While ordinary Skolemization preserves satisfiability, reverse Skolemization, i.e. replacing universally quantified variables by functions, preserves validity.</ref> the specification in line 10 is obtained, an upper- and lower-case letter denoting a variable and a [[Skolem constant]], respectively.
After applying the [[distributive law]] in line 11, the proof goal is a disjunction, and hence can be split into two cases, viz. lines 12 and 13.
Turning to the first case, resolving line 12 with the axiom in line 1 leads to [[Substitution (logic)#First-order logic|instanciation]] of the program variable <math>M</math> in line 14. Intuitively, the last conjunct of line 12 prescribes the value that <math>M</math> must take in this case. Formally, the non-clausal resolution rule shown in line 57 below is applied to lines 12 and 1, with <!---I wish the color template would work inside math mode!--->
* {{color|#008000|<math>p</math>}} being the common instance {{color|#008000|<math>x=x</math>}} of {{color|#408000|<math>A=A</math>}} and {{color|#008040|<math>x=M</math>}}, obtained by syntactically [[unification (computer science)|unifying]] the latter formulas,
* {{color|#800000|<math>F[</math>}}{{color|#008000|<math>p</math>}}{{color|#800000|<math>]</math>}} being {{color|#800000|<math>\text{true} \land</math>}}{{color|#008000|<math> x=x</math>}}, obtained from [[Substitution (logic)#First-order logic|instantiated]] line 1 (appropriately padded to make the conext {{color|#800000|<math>F[\cdot]</math>}} around {{color|#008000|<math>p</math>}} visible), and
* {{color|#000080|<math>G[</math>}}{{color|#008000|<math>p</math>}}{{color|#000080|<math>]</math>}} being {{color|#000080|<math>x \leq x \land y \leq x \land</math>}}{{color|#008000|<math> x = x</math>}}, obtained from instantiated line 12,
yielding
<math>\lnot (</math>{{color|#800000|<math>\text{true} \land</math>}}{{color|#008000|<math>\text{false}</math>}}<math>) \land (</math>{{color|#000080|<math>x \leq x \land y \leq x \land </math>}}{{color|#008000|<math>\text{true}</math>}}<math>)</math>,
which simplifies to <math>x \leq x \land y \leq x</math>. In a similar way, line 14 yields line 15 and then line 16 by resolution. Also, the second case, <math>x \leq M \land y \leq M \land y = M</math> in line 13, is handled similarly. In a last step, both cases (i.e. lines 16 and 18) are joined, using the resolution rule from line 58; to make that rule applicable, the preparatory step 15&rarr;16 was needed. Since both line 16 and 18 comes with a program term, a conditional expression results in the program column. Since the goal formula <math>\text{true}</math> has been derived, the proof is done, and the program column of the "<math>\text{true}</math>" line contains the program.
 
{| class="wikitable"
|+ Non-clausal resolution rules (unifying substitutions not shown)
|-
! Nr !! Assertions !! Goals !! Program !! Origin
|-
| 51 || <math>E[p]</math> || ||  ||
|-
| 52 || <math>F[p]</math> || ||  ||
|-
| 53 || || <math>G[p]</math> || s ||
|-
| 54 || || <math>H[p]</math> || t ||
|-
| 55 || <math>E[\text{true}] \lor F[\text{false}]</math>||  ||  || Resolve(51,52)
|-
| 56 || || <math>\lnot F[\text{true}] \land G[\text{false}]</math> ||  s || Resolve(52,53)
|-
| 57 || || <math>\lnot F[\text{false}] \land G[\text{true}]</math> ||  s  || Resolve(53,52)
|-
| 58 || || <math>G[\text{true}] \land H[\text{false}]</math> || p [[?:|?]] s [[?:|:]] t || Resolve(53,54)
|}
 
== See also ==
* [[Inductive programming]]
 
== References ==
{{Reflist}}
 
{{DEFAULTSORT:Program Synthesis}}
[[Category:Programming paradigms]]

Latest revision as of 22:37, 8 January 2015

One particular author is known through the name of Gabrielle Lattimer though she doesn't really like being called like that. To bake is something that the woman with been doing for growth cycles. Her job would be a cashier but soon her husband and the actual will start their own home based business. She's always loved living by using South Carolina. She is running and maintaining a blog here: http://prometeu.net

My website ... clash of clans hack free download