Timeline for How the language $\{a^nb^mc^nd^m | n \geq1, \ m\geq1\}$ is used to check whether formal and actual parameters are equal?
Current License: CC BY-SA 4.0
6 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Dec 9, 2018 at 3:54 | history | edited | rici | CC BY-SA 4.0 |
Added why we abstract
|
Dec 8, 2018 at 17:59 | comment | added | rici | Because of closure, that demonstrates that the original language was not context-free. That's the only point here. Nothing more. | |
Dec 8, 2018 at 17:59 | comment | added | rici |
@Apass.Jack: Nothing prevents $n$ and $m$ from being equal. The point is that the language contains strings with all values of $n$ and $m$. Procedure naming is dealt with by using $a$/$c$ for declaration/use of the first procedure and $b$/$d$ for the second one. In effect, in the simplified grammar the procedures are always named a and b (except when they are used, when they are called c and d , respectively). The point of the simplification is not to parse the original program text in any way. It's simply to demonstrate a non-context-free reduction from the original language.
|
|
Dec 8, 2018 at 17:49 | comment | added | John L. | This makes sense. What does the word $a^2b^2c^2d^2$ mean in that situation? I mean, it looks like it becomes ambiguous which usage of the procedure corresponds to which declaration. Can we use another language to abstract that kind of agreement when there are two different procedures of $n$ parameters each of which is called once right after its declaration? | |
Dec 8, 2018 at 17:26 | history | edited | rici | CC BY-SA 4.0 |
Changed the word "function" to "procedure" to avoid one kind of misreading.
|
Dec 8, 2018 at 14:45 | history | answered | rici | CC BY-SA 4.0 |