A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
I have said that so many times and you igored it so I said it ten more
times in a row.
> Since this isn't sinking in, let's use a pascal analogy.
>
> In pascal, the following mean different things
>
> A := B
> A = B
>
This is not Pascal it is Minimal Type Theory.
> The first is a variable assignment. The second is a comparison. The
Yes and neither one of those is macro substitution.
It seems that you might not believe that self reference can be
pathological. It seems that you must be ignoring the material on my
links. You can' do that and actually understand what I am saying.
Let me know when you have read the yellow highlighted material on the
second page of this link.
http://www.liarparadox.org/Prolog_Detects_Pathological_Self_Reference.pdf
> first is a statement which describes an action and has no value. The
> second is an expression which has a boolean value. The syntax of pascal
> treats statements and expressions as fundamentally different units. The
> first can stand alone; the second must be a part of some larger statement.
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
>
> Your := is analogous to the first of these, but your grammar treats it
> as the same type of object as the second. That's simply wrong. Which is
> particularly ironic given that a language which you call 'minimal type
> theory' fails to distinguish between different types of things.
Yes the grammar has a bug.
>
>>> You avoid this question by simply NOT PROVIDING ANY SEMANTICS for your
>>
>> Not at all, not in the least. All of the semantics comes from the
>> conventional meaning of the logical operators.
>
> Except := isn't a conventional operator. You can claim that your ¬, ∧,
> →, etc. have conventional meanings. You can't state this for :=.
It is a conventional, macro substitution operator.
If is referred to as the definition operator.
Different variations of it have "def" as a subscript.
>
>>> MTT. If you want to claim that (A := B) is a sentence of the same sort
>>
>> No it is not a sentence of the same sort...
>
> According to your grammar it is, since your grammar only recognizes
> SENTENCES. There is nothing in the grammar which mentions different
> types of sentences.
>
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
A := B is only macro substitution nothing more
>> I know that what I am saying is unconventional and that must be the
>> reason that you are having difficulty with it.
>
>> As I said a few times now think of A := B as macro expansion.
>>
>> X := blah blah blah
>> Now whenever you see X substitute blah blah blah just like the C/C++
>> #define would do.
>
> And is it possible to evaluate the following as true or false?
>
> #define A B
>
> No. It isn't. So why should it be possible to evaluate (A := B) as true
> or false?
>
This can be construed two different ways:
(1) It is not possible to evaluate the expression as true or false.
(2) The LHS of the expression aquires the truth value of its RHS.
I am leaning towards your interpretation as more apt.
It specifies infinite recursion and this infinite recursion is ignored.
#define foo (4 + foo)
where foo is also a variable in your program.
Following the ordinary rules, each reference to foo will expand into (4
+ foo); then this will be rescanned and will expand into (4 + (4 +
foo)); and so on until the computer runs out of memory.
> cuts this process short after one step, at (4 + foo)". You have a habit
> of posting things which say exactly the opposite of what you claim they do.
>
> André
>
It recognizes the infinite recursion and intentionally fails to
interpret it correctly because interpreting it correctly has
dysfunctional results.
Prolog's unify_with_occurs_check/2 will report an error in this case.
None-the-less the point that you have been consistently dodging is that
infinitely recursive expressions are ill-formed expressions that cannot
be evaluated and because they cannot be evaluated they meet the standard
definition of incompleteness:
A theory T is incomplete if and only if there is some sentence φ such
that (T ⊬ φ) and (T ⊬ ¬φ).
So error with the standard definition of Incompleteness is that it
allocates incompleteness to formal systems entirely on the basis that it
cannot evaluate infinitely recursive (thus ill-formed) expressions.