What is objective and observer in logic?

165 Views Asked by At

I am a beginner at logic and took a elementary course in it...

Could someone help me in the elementary definition of some part of a proposition that build the semantic part of a programming language

The author was going to say that logic applies in any case of math (graph, geometry, calculus,...) and even languages that we speak such as Latin.

Here is an example :

Consider the statement times 0 do print* od = donothing enter image description here

in below article I faced the objective and observer first. (page 13)

"LOGIC FOR COMPUTER SCIENCE Steve Reeves and Mike Clarke Department of Computer Science Queen Mary and Westfield College University of London"

Here is a paragraph that I adopted from that article.

"In mathematics, the symbolism of calculus, set theory, graph theory and so on, provide the object language and again your native language, augmented perhaps with some specialised mathematical vocabulary, is used as the observer's language"

1

There are 1 best solutions below

0
On

Frankly, such descriptions are so vague as to be meaningless. As long as you understand how logic applies, you can safely ignore this kind of quasi-philosophical ramblings.

Just for example, I do not agree that the the example you cited is useful. On the left and right are expressions in some programming language. The symbol "=" here was used to denote equivalence between two programs, and is not in the programming language. However, using "=" is actually misleading, since mathematical equality literally means that the two expressions refer to exactly the same thing. But here they don't; they are two different programs. One could use "$\equiv$" instead, and more precisely you might see "$\equiv_{T}$" for Turing-equivalence.

Furthermore, such an explanation is thoroughly confusing. The programs ought to be quoted as strings, namely: $\def\str#1{\text{‘‘#1''}}$

$\str{times 0 do print* od} \equiv_T \str{donothing}$

This entire statement is in the same language of the formal system $S$ used to analyze programs. On each side of "$\equiv_T$" we have written a string literal, which (together with the quotes) is in the language of $S$ and refers to a string. It so happens that these strings themselves (not quoted) are in the programming language, but in general there is no reason that every string that you refer to in $S$ is in the programming language. For example $\str{)*^\$\@~}$ is presumably not a valid program, but is still a string in $S$.