Fpqc morphism: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Anne Bauval
m Undid revision 552482251 by Anne Bauval (talk)
en>Cnilep
disambiguate
 
Line 1: Line 1:
{{Other uses|LOOP (disambiguation){{!}}LOOP}}
Letrado desde hace 20 años<br><br>My page; [http://www.acanizaresabogados.com/abogados-divorcios/ abogado divorcio]
 
'''LOOP''' is a pedagogical programming language designed by [[Uwe Schöning]], along with [[GOTO (programming language)|GOTO]] and [[WHILE (programming language)|WHILE]]. The only operations supported in the language are assignment, addition and looping.
 
The key property of the LOOP language is that the functions it can compute are exactly the [[primitive recursive function]]s.<ref>{{cite book|author=Herbert Enderton|year=2012|title=Computability Theory|publisher=Academic Press}}</ref>
 
== Features ==
Each [[primitive recursive function]] is LOOP-computable and vice versa.<ref>{{Cite book | first=Uwe | last=Schöning | title=Theoretische Informatik-kurz gefasst | edition=5 | publisher=Oxford University Press | location=London | year=2008 | page=105 | ISBN=978-3-8274-1824-1 | dnb=986529222}}</ref>
 
In contrast to [[GOTO (programming language)|GOTO]] programs and [[WHILE (programming language)|WHILE]] programs, LOOP programs always [[terminating computation|terminate]].<ref>{{Cite book | first=Uwe | last=Schöning | title=Theoretische Informatik-kurz gefasst | edition=5 | publisher=Oxford University Press | location=London | year=2008 | page=93 | ISBN=978-3-8274-1824-1 | dnb=986529222}}</ref> Therefore, the set of functions computable by LOOP-programs is a proper subset of [[computable function]]s (and thus a subset of the computable by WHILE and GOTO program functions).<ref>{{Cite book | first=Uwe | last=Schöning | edition=4 | title=Theoretische Informatik-kurz gefasst | year=2001 | publisher=Oxford University Press | location=London | page=122 | ISBN=3-8274-1099-1}}</ref>
 
An example of a total computable function that is not  LOOP computable is the [[Ackermann function]].<ref>{{Cite book | first=Uwe | last=Schöning  | title=Theoretische Informatik-kurz gefasst | edition=5 | publisher=Oxford University Press | location=London | year=2008 | page=112 | ISBN=978-3-8274-1824-1 | dnb=986529222}}</ref>
 
== Formal definition ==
 
=== Syntax ===
LOOP-programs consist of the symbols <code>LOOP</code>, <code>DO</code>, <code>END</code>, <code>:=</code>, <code>+</code>, <code>-</code> and <code>;</code> as well as any number of variables and constants. LOOP-programs have the following [[syntax]] in modified [[Backus-Naur Form]]:
 
:<math>\begin{array}{lrl}
P & := & x_i := x_j + c \\
  &  | & x_i := x_j - c \\
  &  | & P;P \\
  &  | & \mathrm{LOOP} \, x_i \, \mathrm{DO} \, P \, \mathrm{END}
\end{array}
</math>
Here, <math>Var := \{ x_0, x_1, ... \}</math> are variable names and <math>c \in \mathbb{N}</math> are constants.
 
=== Semantics ===
If '''P''' is a LOOP program, '''P''' is equivalent to a function <math>f: \mathbb{N}^k \rightarrow \mathbb{N}</math>. The variables <math>x_1</math> through <math>x_k</math> in a LOOP program correspond to the arguments of the function <math>f</math>, and are initialized before program execution with the appropriate values. All other variables are given the initial value zero. The variable <math>x_0</math> corresponds to the value that <math>f</math> takes when given the argument values from <math>x_1</math> through <math>x_k</math>.
 
A statement of the form
x<sub>0</sub> := x<sub>1</sub> + c
means the value of the constant <math>c</math> is added to the value of the variable <math>x_1</math>, and the result is set as the value of the variable <math>x_0</math>. <math>c</math> can have the value zero, which allows the value of one variable to be assigned to another variable:
x<sub>0</sub> := x<sub>1</sub> + 0
 
A statement of the form
x<sub>0</sub> := x<sub>1</sub> - c
means the value of the constant <math>c</math>is subtracted from the value of the variable <math>x_1</math>, and the result is set as the value of the variable <math>x_0</math>. Negative numbers aren't allowed, and are replaced by zeros.
 
Variables are allowed to be simultaneously on the left and right side of an assignment. A statement of the form:
 x<sub>1</sub>: = x<sub>1</sub> + c
for example, adds the value of the constant <math>c</math> to the variable <math>x_1</math>.
 
A statement of the form
''P''<sub>1</sub>; ''P''<sub>2</sub>
represents the sequential execution of sub-programs <math>P_1</math> and <math>P_2</math>, in that order.
 
A statement of the form
LOOP x DO ''P'' END
means the repeated execution of the partial program <math>P</math> a total of <math>x</math> times, where the value that <math>x</math> has at the beginning of the execution of the statement is used. Even if <math>P</math> changes the value of <math>x</math>, it won't affect how many times <math>P</math> is executed in the loop. If <math>x</math> has the value zero, then <math>P</math> is not executed inside the <code>LOOP</code> statement. This allows for [[Conditional (programming)|branches]] in LOOP programs, where the conditional execution of a partial program depends on whether a variable has value zero or one.
 
== Example Programs ==
 
=== Addition ===
In the following program, the variable <math>x_0</math> is set to the sum of the variables <math>x_1</math> and <math>x_2</math>.
x<sub>0</sub> := x<sub>1</sub> + 0;
LOOP x<sub>2</sub> DO
    x<sub>0</sub> := x<sub>0</sub> + 1
END
#
<math>x_0</math> is first assigned the value of <math>x_1</math>. Then, <math>x_0</math> is incremented a total of <math>x_2</math> times by the <code>LOOP</code> statement. This program can be used as a subroutine in other LOOP programs. The LOOP syntax can be extended with the following statement, equivalent to calling the above as a subroutine:
x<sub>0</sub> := x<sub>1</sub> + x<sub>2</sub>
 
=== Multiplication ===
The following LOOP program sets the value of the variable <math>x_0</math> to the product of the variables <math>x_1</math> and <math>x_2</math>.
LOOP x<sub>1</sub> DO
  x<sub>0</sub> := x<sub>0</sub> + x<sub>2</sub>
END
#
This multiplication program uses the syntax introduced by the addition subroutine from the previous example. The multiplication is performed here by adding the value of <math>x_2</math> a total of <math>x_1</math> times, storing results in <math>x_0</math>.
 
== See also ==
* [[μ-recursive function]]
 
== Notes and references ==
<references />
 
== External links ==
* [http://web.archive.org/web/20120311032544/http://loopgotowhile.eugenkiss.com/ Loop, Goto & While]
 
[[Category:Computability theory]]

Latest revision as of 06:28, 3 April 2014

Letrado desde hace 20 años

My page; abogado divorcio