## The Forum for Discussion about The Third Manifesto and Related Matters

Forum breadcrumbs - You are here:
Please or Register to create posts and topics.

# Logical incompleteness of A-algebra for base deletes

Quote from AntC on October 27, 2019, 10:21 pm
Quote from p c on October 27, 2019, 6:01 pm

The survey is about an isolated aspect of Appendix A that happens to have far-reaching consequences, using the most minimal kind of language. It would be much more efficient if people could limit their responses to 'yes' or 'no' for the rather narrow specific questions given. No logical need to diverge.

Oh dear you've lapsed into incoherence again. And you've failed to take action on any of the suggestions I made for explaining yourself in forms that would be easier to understand.

I gave neither 'yes' nor 'no' responses for reasons I explained: I didn't understand the questions. Seems some of the questions had errors of logic in them -- which happens all the time with your posts. Your latest few posts abound in logic errors. I simply can't be bothered to point them out.

I still have no idea what you think is wrong with Appendix A. I think the A algebra is hugely successful for the purposes Appendix A sets itself. And I think it is relationally complete up to Codd 1972's definition of that term, after adjusting for A using the 'named perspective'.

OTOH Codd's 'relationally complete' is problematic, and I think unsatisfactory as a measure of expressive power for a query language/algebra/calculus.

I asked who understands? You say you didn't understand. That counts as a no.

Appendix A uses a definition of natural join that permits well-formed A-expressions that depend on that join that can't be proved because they are  logically invalid. I gave a formal example for base deletion, plus an example that reflects Codd's definition.  Therefore Appendix A assumes an incomplete system. Tutorial D doesn't seem to prevent join deletion either.

I presume Codd 1972 assumes his definition of natural join. When you compare it to Appendix A, that must be an apples to oranges comparison.

(I understand your problem with the symbol '>', apparently not many logicians use it. But I see no need to use Latex or other keyboard didgereedoo, which is counter-productive when most keyboards already have the '>' symbol builtin. The '>' symbol is also closer to universally available which makes parsers easier. When reading a formal argument only syntax matters. As long as the syntax is given, which it was, there's no logical problem and calling '>' not "proper" is nonsense, logically.)

As far as the survey goes, your difficulties don't matter. So far, all answers from two people are 'no' which is useful information for me, so thank you for that.

Quote from p c on October 28, 2019, 12:12 pm

As far as the survey goes, your difficulties don't matter. So far, all answers from two people are 'no' which is useful information for me, so thank you for that.

So far, the only respondent to this thread has been AntC, so the "two people" would be AntC and... You?

But I'll make it three by pointing out that I can't make heads or tails of it. Yes, there is an obligation on the part of the reader to make an effort to understand difficult material, but there's also an obligation on the part of the writer to provide sufficient context and explanation for the content to be sensible. I'm not convinced the latter effort has been made.

Quote from Dave Voorhis on October 28, 2019, 12:17 pm
Quote from p c on October 28, 2019, 12:12 pm

As far as the survey goes, your difficulties don't matter. So far, all answers from two people are 'no' which is useful information for me, so thank you for that.

So far, the only respondent to this thread has been AntC, so the "two people" would be AntC and... You?

But I'll make it three by pointing out that I can't make heads or tails of it. Yes, there is an obligation on the part of the reader to make an effort to understand difficult material, but there's also an obligation on the part of the writer to provide sufficient context and explanation for the content to be sensible. I'm not convinced the latter effort has been made.

Thanks but you already said many times that you understood nothing, so I already put you down for one "no" for every question.

Quote from p c on October 28, 2019, 12:21 pm
Quote from Dave Voorhis on October 28, 2019, 12:17 pm
Quote from p c on October 28, 2019, 12:12 pm

As far as the survey goes, your difficulties don't matter. So far, all answers from two people are 'no' which is useful information for me, so thank you for that.

So far, the only respondent to this thread has been AntC, so the "two people" would be AntC and... You?

But I'll make it three by pointing out that I can't make heads or tails of it. Yes, there is an obligation on the part of the reader to make an effort to understand difficult material, but there's also an obligation on the part of the writer to provide sufficient context and explanation for the content to be sensible. I'm not convinced the latter effort has been made.

Thanks but you already said many times that you understood nothing, so I already put you down for one "no" for every question.

I generally understand everything posted on this forum except posts on database logic by you. Why do you think that might be?

That isn't a rhetorical question, by the way, I am genuinely interested in the answer.

Furthermore, why are you reluctant to explain your posts or provide clear examples when your posts are queried?

Quote from Dave Voorhis on October 28, 2019, 12:24 pm

I generally understand everything posted on this forum except posts on database logic by you. Why do you think that might be?

That isn't a rhetorical question, by the way, I am genuinely interested in the answer.

Furthermore, why are you reluctant to explain your posts or provide clear examples when your posts are queried?

Except for a few wisecracks, nearly everything I've posted in the last eight years or so had something to do with joinable relations as well as some posts going back to the beginning. Codd explained them succinctly and clearly, why should I try to duplicate him?

The relation values you sometimes give aren't always those of joinable relations. When you don't give values, you assume Appendix A operators and simplistic set expressions and non-equivalent logical arguments, such as (A minus B). They are simplistic because nowhere do you clarify a logical argument that enforces joinable relations. The logic you think you are using doesn't clarify which relations are actually joined which, for example, are not necessarily the named relations given by a TD natural join expression.

If you want the advantages of Codd's natural join then your compiler should take some exceptional action when the applied argument it assumes doesn't include the joinable condition. This shouldn't cause application programs to fail, rather it clarifies the values that are deduced/produced.

If you don't want the advantages your documentation and posts here should make it clear your implementation is not for joinable relations and warn that the resulting system is not logically complete, unlike Codd's systems which are based on a logic that is consideed complete.

I can't say why this "might be" for sure even though one guess is that you focus far too much on the messenger and if that's accurate it could be called hapless and unproductive. Another guess is that you are too distracted by irrelevancies such as programming type theory which don't affect data language theory. Otherwise, I can't say for sure because I don't know whether you disagree with Codd on logical grounds or simply just don't understand him or don't understand the nuances of logical validity or the importance of logical completeness or disagree with any of those things, etc., etc. Regardless, dealing with these aspects is a fundamental requirement. There  might be other reasons too but why should I try to think of them all?

With the latest posts I've repeated in the strongest terms I can think of that something is seriously wrong with the TD implementations. The only comments I ever notice about Codd 1970 are dismissive but too vague to be useful, amounting to "it's obsolete".  I've said what I can think of, if that's not helpful so be it. Your energy is better exerted elsewhere rather than asking why I think you don't understand!

Quote from p c on October 28, 2019, 5:39 pm

The relation values you sometimes give aren't always those of joinable relations. When you don't give values, you assume Appendix A operators and simplistic set expressions and non-equivalent logical arguments, such as (A minus B). They are simplistic because nowhere do you clarify a logical argument that enforces joinable relations. The logic you think you are using doesn't clarify which relations are actually joined which, for example, are not necessarily the named relations given by a TD natural join expression.

If you want the advantages of Codd's natural join then your compiler should take some exceptional action when the applied argument it assumes doesn't include the joinable condition. This shouldn't cause application programs to fail, rather it clarifies the values that are deduced/produced.

Those of us using TTM-based relational DBMS implementations don't seem to be having a problem with this, particularly as some of us use those implementations to successfully maintain real-world databases. Per the semantics of Tutorial D's JOIN, I presume we're joining non-joinable relations all the time.

Can you explain -- ideally with simple examples -- what the practical impact of this problem might be?

Quote from p c on October 28, 2019, 5:39 pm

With the latest posts I've repeated in the strongest terms I can think of that something is seriously wrong with the TD implementations.

In your latest posts -- i.e., those in this thread -- you haven't even mentioned Tutorial D implementations. What do you think is wrong with them?

Is your problem with Tutorial D itself?

Or with implementations of Tutorial D?

Can you create a simple example to illustrate and explain the problem?

One last try…

This is most easily exercised with an Android device using the Logic++ app downloaded from the Play Store. It has at least one bug plus a trick but you won’t encounter those if you follow my instructions. It is a rather small app without ads’. If you are somebody who can’t accept that ‘>’ can mean logical material implication ‘->’, read no further. Following the instructions should be  possible for a grade schooler. Understanding why it works might be possible after homework.

In the following arguments the wff (p) represents the proposition that relation p is a base relation. Wff (q) represents the proposition that relation q is a subset of p.

It is desired to update the database such that relation p is replaced by a new relation such that the relation given by (p Codd’s natural join q) is an empty relation.

..1. Write the subset condition as wff { q > p ). Write the desire to negate (p join q) as the wff ( - ( p & q ) ). Enter their logical conjunction as { q > p ) & ( - ( p & q ) ). . These are the argument's premises.

..2. Write the desired conclusion as the wff ( -p & -q).

..3. Now enter the premises conjunction and the conclusion separated by the implication symbol  ‘>’:

(( q > p ) &  - ( p & q )) > ( -p & -q). This is the update argument in formal terms..

Now press the EXECUTE button.

The program should return the above argument followed by “is not valid”.  It means this upddate argument is fomally, logically, invalid. Of course anybody who can read a truth table can figure that out without a program to help.

Any system that reflects this argument is logically incomplete.

..4. Why is argument 3 not logically valid? Informally, it’s because this argument assumes that relation p may have tuples that are not tuples of the relation given by the wff ( p & q), which is a wff that expresses Appendix A natural join.

Now correct argument 3 to indicate that p and q are the subsets of the original p and q relations that are actually joinable, in other words apply Codd's natural join definition. The intention of this argument is not to replace the original p and q relations but only their joinable subsets.

(( q = p ) &  - ( p & q )) > ( -p & -q)

The program will respond with “is valid”.

..5.  The program instructions say that the backslash symbol ‘/’ can replace the implication symbol ‘/’ but this is redundant for this example. Both versions output a truth tableau for the logical validity test.

If an intellectual mediocrity like me can do this after reading only a couple of Codd’s paragraphs, I’d expect that a decent systems programmer, if anybody knows one, could visualize the necessary adjustments to make a dbms logically complete. It might even occur to such a systems programmer that argument 4 could be adapted to express much more than this base delete.

Quote from p c on October 28, 2019, 7:54 pm

...

If an intellectual mediocrity like me can do this after reading only a couple of Codd’s paragraphs, I’d expect that a decent systems programmer, if anybody knows one, could visualize the necessary adjustments to make a dbms logically complete. It might even occur to such a systems programmer that argument 4 could be adapted to express much more than this base delete.

So what are the implications of a DBMS being logically incomplete (as, if I infer correctly, you think Tutorial D is -- presumably by way of Appendix A)?

It would perhaps be helpful if you would, as I suggested before, create a simple example -- perhaps with specific, real-world values for p and q -- to demonstrate impact.

In other words, what does it mean in real-world terms for it to be the case that "any system that reflects this argument is logically incomplete"?

" ... In your latest posts -- i.e., those in this thread -- you haven't even mentioned Tutorial D implementations. ..."

Bingo for the second time! Now i know that besides not understanding, you are not even reading and maybe not even thinking.

A rule I learned to follow many years ago is that in this field, it's a bad idea to tell people whose actions have potentially wide effect how to do things. The result will usually be a disaster, and usually the disaster won't even be recognized. It is best that those people do nothing or if they do, keep it to themselves until they completely understand. Whereas the rarer truly serious people will think for themselves, even when pressured to move quickly. Much less chance of disasters that way.

Quote from Dave Voorhis on October 28, 2019, 8:30 pm
Quote from p c on October 28, 2019, 7:54 pm

...

If an intellectual mediocrity like me can do this after reading only a couple of Codd’s paragraphs, I’d expect that a decent systems programmer, if anybody knows one, could visualize the necessary adjustments to make a dbms logically complete. It might even occur to such a systems programmer that argument 4 could be adapted to express much more than this base delete.

So what are the implications of a DBMS being logically incomplete (as, if I infer correctly, you think Tutorial D is -- presumably by way of Appendix A)?

It would perhaps be helpful if you would, as I suggested before, create a simple example -- perhaps with specific, real-world values for p and q -- to demonstrate impact.

In other words, what does it mean in real-world terms for it to be the case that "any system that reflects this argument is logically incomplete"?

Good grief.  Bingo a third time. You do not understand that incompleteness means results are not provable and probably ignore future uses of relational logic. Welcome to file systems.