Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
sav07_quiz_answers [2007/03/18 16:14] vkuncak |
sav07_quiz_answers [2007/03/18 16:27] vkuncak |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | * Is the following statement valid when x is a real number and f is a function | + | * Is the following statement valid when x is a real number and f is a function from reals to reals, and why: |
- | from reals to reals, and why: | + | |
"If (f(x))^2 = 4, then f(x)=2" | "If (f(x))^2 = 4, then f(x)=2" | ||
- | * **Answer**: Not valid. Let x be an arbitrary element. Take as t interpretation a function f and such that f( | + | * **Answer**: Not valid. Let x be an arbitrary element. Take as t interpretation a function f and such that f( |
- | * Is the following statement valid (for arbitrary properties | + | * Is the following statement valid (for arbitrary properties P and Q), and why: |
- | P and Q), and why: | + | |
"If for all x, both P(x) and Q(x), then both | "If for all x, both P(x) and Q(x), then both | ||
Line 13: | Line 11: | ||
2) for all x, Q(x)." | 2) for all x, Q(x)." | ||
- | * **Answer**: Valid. | + | * **Answer**: Valid. |
- | * Is the following statement valid (for arbitrary properties | + | * Is the following statement valid (for arbitrary properties P and Q), and why: |
- | P and Q), and why: | + | |
"If for all x, P(x) or Q(x) hold, then at least | "If for all x, P(x) or Q(x) hold, then at least | ||
Line 25: | Line 22: | ||
* **Answer**: Invalid. | * **Answer**: Invalid. | ||
- | * Let x,y,z be integer variables that satisfy both of these | + | * Let x,y,z be integer variables that satisfy both of these two conditions: |
- | two conditions: | + | |
x + y = 3z | x + y = 3z | ||
x - 2y = z | x - 2y = z | ||
- | + | ||
- | What is the strongest property that you can state about | + | * What is the strongest property that you can state about the integer x that does not mention the variables y or z? |
- | the integer x that does not mention the variables y or z? | + | |
* **Answer**: x is divisible by 7. | * **Answer**: x is divisible by 7. | ||
- | * Consider a simple programming language ... | + | * Consider a simple programming language ... |
- | - Say in 3-5 sentences how you would build an | + | * Say in 3-5 sentences how you would build an interpreter for this language: |
- | interpreter for this language: | + | |
- | **Answer**: Parser the program into abstract syntax tree. | + | * **Answer**: Parse the program into abstract syntax tree. Represent program state as a mapping from variable names to their value. Traverse the abstract syntax tree and change the values of variables according to the meaning of statements. |
- | Represent program state as a mapping from variable names to their value. | + | |
- | Traverse the abstract syntax tree and change the values of variables | + | |
- | according to the meaning of statements. | + | |
- | - What is the class of functions from integers to integers that can be described in this programming language? | + | * What is the class of functions from integers to integers that can be described in this programming language? |
- | **Answer**: All computable functions on integers can be computed. | + | * **Answer**: All computable functions on integers can be described. To prove this formally, we could write a simulator for a [[wk>Turing machine]], which is often used as a formal model for computable functions. We can represent the tape as an unbounded integer, whose bits represent Turing machine tapes. We can write code with loops that extracts the n-th bit of the number to access the given cells in a Turing machine, and write transition functions of a Turing machine as constructs in our language. |
- | To prove this formally, we could write a simulator for a [[wk>Turing machine]], | + | |
- | which is often used as a formal model for computable functions. We can | + | |
- | represent the tape as an unbounded integer, whose bits represent Turing machine tapes. | + | |
- | We can write code with loops that extracts the n-th bit of the number. | + | |
- | * Suggest (in 3-10 sentences) how you would design an | + | * Suggest (in 3-10 sentences) how you would design an algorithm for the following problem... |
- | algorithm for the following problem... | + | |
- | * **Answer**: According to the [[wk>Rice's theorem]], there is no algorithm that | + | * **Answer**: According to the [[wk>Rice's theorem]], there is no algorithm that solves this solution exactly. We can implement a practically useful "conservative" approximation which has the property that, when it claims that the program always returns zero, then it will indeed return zero, but when it says that the program "need not always return zero", it still might be the case that the program always returns zero but our approximate algorithm was not smart enough to do that. An approximate algorithm might perform interval analysis, which approximates an interval of values to which the variables of the program can belong to. |
- | solves this solution exactly. We can implement a practically useful "conservative" approximation | + | |
- | which has the property that, when it claims that the program always | + | |
- | returns zero, then it will indeed return zero, but when it says that the program "need not always | + | |
- | return zero", it still might be the case that the program always returns zero but our approximate | + | |
- | algorithm was not smart enough to do that. | + | |