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

Forum breadcrumbs - You are here:

# Codd's remainder

Quote from Erwin on June 30, 2019, 12:34 pm
Quote from p c on June 30, 2019, 2:17 am

Nobody has ever questioned the generalized deductive validity of demorgan when applied with suitable premises. Regarding premises, just exactly what are the universes you refer to and what are the negations? Note that Codd didn't mention universes but domains instead, as in function domains. Note also that his algebra provides no way to negate a relation, it only provides a way to tell whether a given extension can be inferred or deduced or not from some other extension, for example when A join B equals A, A can be inferred from B, otherwise it can't.

The deductive validity of DeMorgan exists, period.  It does not pertain to you to reduce the scope of its "validity" by appending vague handwavy clauses such as "when applied with suitable premises".  The premises are suitable if the sets it is applied to are defined clearly and unambiguously, as per e.g. the definition of "complement" I already provided upfront but which you seemingly chose to neglect.  If you don't agree, then define "suitable" please (and write the answer in latex, you would not believe how much it aids clarity.)

"Codd's algebra" might not have provided a way "to negate a relation", but in that case : I did and I still do.  No doubt many others have given the exact same definition long before me.  "Read only Codd" is the most certain way to remain stuck in the thinking and technology of the sixties.  No wonder people who will "read only Codd" think there has been no progress.

The definition of complement was clear, what wasn't was what was meant by Ua and Ub, which is why I asked. For example, do they include elements that have never been represented in any extension value of relations A or B? Are they infinite? If they are they certainly won't correspond to elements of the function domains used by the 1970 paper.

The point about negation of an individual relation is that Codd did not require it. it's a puzzle why people think it's needed unless they are wedded to a favourite flavour or script of formal language. I imagine that could happen to people who don't realize that relational expressions are just as formal as any other flavour.

In other words formal argument does not demand latex. Personally I prefer polyester because it helps cotton t-shirts last longer than one wash.

A symptom of extreme coding mentality sometimes shows itself by overuse of the not-invented-here complaint. The complaint can sometimes be quite proper when mental efficiency is being deterred in other words productivity but that doesn't seem to be the situation here. Nobody has suggested to read only Codd, only that what he wrote should be kept in mind.

Quote from Dave Voorhis on June 30, 2019, 4:17 pm
Quote from p c on June 30, 2019, 3:30 pm
Quote from Dave Voorhis on June 30, 2019, 2:57 pm
Quote from p c on June 30, 2019, 2:02 pm
Thank you for doing those tests. Except for the pale text most of my difficulties were with the Chrome browser on Android. I see now that if I activate the physical keyboard on Chrome OS I can paste and Reflow. In my case it's too bad that Chrome OS is too cumbersome for most of my purposes for example the Android version has Superior dictation accuracy. Much of the Chrome OS interface can't be zoomed for example the URL area and the menus so I haven't been able to recognize some of the options without using a magnifying glass. I guess if I really need to read something closely I can get by with opening up Chrome OS and activating the physical keyboard. For infrequent use I guess I can put up with all the formatting clutter and use zoom to make the text seem less pale.

I don't have anything with Chrome OS. I have Android, iOS, MacOS, Linux (Ubuntu), and Windows 10. On all of these, I've been able to successfully zoom in and thus enlarge all text and icons. I presume Chrome OS also has some mechanism for zooming the browser content?

I note that the zoom facility on all of these only enlarges the browser content -- which in this case is the forum. It doesn't affect the URL and operating system menus, but I wouldn't expect it to.

I can zoom with Android Chrome but not reflow.

Are you using the pinch zoom gesture, i.e., pinching two fingers to zoom out and widening two fingers to zoom in?

If so, you're not zooming Android Chrome but the Android display of the browser content. Reflow doesn't take place because the browser essentially doesn't even know zooming is happening.

In Android Chrome, the closest you can come to zooming within the browser is probably Settings | Advanced | Accessibility | Text scaling.

Thank you for that as well.

Quote from Erwin on June 30, 2019, 11:48 am
Quote from p c on June 30, 2019, 2:17 am

That reply doesn't address the two points I made, data Independence and the inapplicability of join to the shop alarm application. If it is to serve any useful purpose that application clearly depends on a relation with a predicate of a relation expressed as shop open and not alarm set OR shop not open and alarm set, which is exclusive Union.

Bogus, baloney, bollocks and bullshit.  The shop/alarm example is not invalidated if the constraint that would make it reasonable in the real world hasn't been declared.  As far as the DBMS is concerned, it could be perfectly legit for the shop to be open and the alarm to be set as well.  "If it is to serve any useful application" is ***NOT*** a valid excuse for lazy DBMS designers (or for acid-pissing critics who do nothing but watch and comment/shout from the sideline for that matter) to reduce the scope of what their systems do (and don't do).  Nobody, and that includes McGoveran and Codd in particular, has ever shown in any way how we can escape from [being able to do no more than just playing] the "abstract game of symbols".

Even more important for such justifications than realistic examples are accurate examples. It doesn't help when the information principle is ignored. But what is just as obvious is that Union usually involves two different functions but join often involves overlapping functions AKA compositions.

Abstract symbol manipulation is at the heart of the relational model. The form of an argument is everything in the sense that the logic is not affected by the varying values of extensions.I suspect that it is even possible to synthesize equivalents to base relations that enable deductive arguments to override the elementary behavior of join delete which is sometimes a useful override. since the elementary idea causes so much tumult it's maybe good that I didn't mention it here. I also have the impression that McGoveran objected to it but I could be wrong maybe he just didn't understand me or I didn't understand him.

Like it or not in this field intellectual laziness must be overcome. This matters more in some jobs then in others.

Quote from p c on June 30, 2019, 5:57 pm
Quote from Erwin on June 30, 2019, 12:34 pm
Quote from p c on June 30, 2019, 2:17 am

Nobody has ever questioned the generalized deductive validity of demorgan when applied with suitable premises. Regarding premises, just exactly what are the universes you refer to and what are the negations? Note that Codd didn't mention universes but domains instead, as in function domains. Note also that his algebra provides no way to negate a relation, it only provides a way to tell whether a given extension can be inferred or deduced or not from some other extension, for example when A join B equals A, A can be inferred from B, otherwise it can't.

The deductive validity of DeMorgan exists, period.  It does not pertain to you to reduce the scope of its "validity" by appending vague handwavy clauses such as "when applied with suitable premises".  The premises are suitable if the sets it is applied to are defined clearly and unambiguously, as per e.g. the definition of "complement" I already provided upfront but which you seemingly chose to neglect.  If you don't agree, then define "suitable" please (and write the answer in latex, you would not believe how much it aids clarity.)

"Codd's algebra" might not have provided a way "to negate a relation", but in that case : I did and I still do.  No doubt many others have given the exact same definition long before me.  "Read only Codd" is the most certain way to remain stuck in the thinking and technology of the sixties.  No wonder people who will "read only Codd" think there has been no progress.

The definition of complement was clear, what wasn't was what was meant by Ua and Ub, which is why I asked. For example, do they include elements that have never been represented in any extension value of relations A or B? Are they infinite? If they are they certainly won't correspond to elements of the function domains used by the 1970 paper.

Universal relation with heading SAME_AS_A and universal relation with heading SAME_AS_B.  The manifesto book introduces them.  It is the very cartesian product of domains (/types) as amended per TTM for having a heading (i.e. attribute names for addressibility) in the first place.  The very thing whose powerset ***IS*** the relation type.

The universal relation holds a tuple for each possible proposition that is an instantiation of a predicate whose free variables correspond to the attributes in the heading.  If an extension (some particular subset of the universal relation) has the tuples for all propositions that are instantiations of the concerned predicate and are considered true, then the complement has all the tuples for those considered false.

It could even be infinite, and so long as we remember that that means that there's a whole slew of tuples that could never ever be part of a relation for mere reasons of not even having a supported physical representation (/a whole slew of propositions that could never be considered true) it won't even break a thing in the theory as it stands.

You are still confusing a set definition with an argument and deMorgan's conclusion with an argument. By definition the conclusion of set difference, the difference or minus relation, is the conclusion of the join deletion argument.

In this case there are three sets, the set of a's that are not b's, the set of b's that are not a's and the set of a's that are b's and vice versa, A, B and A Join B. Draw a Venn diagram that shows the third set as the intersection of the other two. Then ask yourself how the conclusion of an assertion argument given by the expression A Join B minus A Join B can possibly leave either of A or B unchanged when A Join B is a subset of both.

There is really no need to apply deMorgan in the join delete argument unless you seek redundant reassurance that his conclusion isn't denied by the delete conclusion. But if you really want to use deMorgan in a valid argument you have to make sure that you define all three sets. The pop argument mentions Ua and Ub but not Uab. That is why I asked for clarification for the definitions of the two universes you gave. Thank you for the elaborate explanation but you are still missing one universe. So in effect you end up conflating different predicates, for example conflating Ua with Uab. That conflation would be okay if you accompanied it with the conflation of Ub with Uab but your argument would have to make both conflations explicit.

Such a diagram also explains a variety of joins when it is remembered that (A Join B) = ( (A{ common attributes} Join B) Join A)) =  ( (B{ common attributes} Join A) Join B)) = (( A{common attributes} Join B{common attributes} ) Join A Join B ).

Of course, the same technique can be used to show that deletion of a proper subset of a base relation is equivalent to join deletion where the proper subset is given by a restriction. In effect, anybody who denies the logical validity of join deletion also denies base table deletion. Apparently they have lots of company.

Quote from p c on July 2, 2019, 6:45 pm

The pop argument mentions Ua and Ub but not Uab. That is why I asked for clarification for the definitions of the two universes you gave. Thank you for the elaborate explanation but you are still missing one universe. So in effect you end up conflating different predicates, for example conflating Ua with Uab. That conflation would be okay if you accompanied it with the conflation of Ub with Uab but your argument would have to make both conflations explicit.

Good excuse to try this latex thing.

From the definition of complement, we also have :

$U_A \equiv A \cup \overline A$   (coroll.1 )

$A \cap \overline A \equiv \oslash$  (coroll. 2 - relationland's version of the law of the excluded middle)

Now :

$U_{A \bowtie B} \equiv U_A \bowtie U_B$ (def. 1)

$\overline{A \bowtie B} \equiv U_{A \bowtie B} \setminus ( A \bowtie B )$   (definition of complement)

$\overline{A \bowtie B} \equiv (U_A \bowtie U_B) \setminus ( A \bowtie B )$   (per def. 1)

$\overline{A \bowtie B} \equiv ((A \cup \overline A) \bowtie (B \cup \overline B)) \setminus ( A \bowtie B )$   (per coroll. 1)

$\overline{A \bowtie B} \equiv ((A \bowtie B) \cup (A \bowtie \overline B) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B})) \setminus ( A \bowtie B )$   (join distrib union)

$\overline{A \bowtie B} \equiv ((A \bowtie \overline B) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B}))$   (consequence of coroll. 2 : all 4 union args disjoint)

$\overline{A \bowtie B} \equiv ((A \bowtie \overline B) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B}) \cup ({\overline A} \bowtie {\overline B}))$   ( X U X ===X)

$\overline{A \bowtie B} \equiv ((A \bowtie \overline B) \cup ({\overline A} \bowtie {\overline B}) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B}))$   (U associative)

$\overline{A \bowtie B} \equiv ((A \cup{ \overline A}) \bowtie {\overline B}) \cup ({\overline A} \bowtie (B \cup {\overline B}))$   (join distrib union)

The last step is left as an exercise.

As for the latex thing : who on earth calls "intersect" "cap" and "fi" "oslash" ???

Quote from Erwin on July 2, 2019, 8:17 pm
Quote from p c on July 2, 2019, 6:45 pm

The pop argument mentions Ua and Ub but not Uab. That is why I asked for clarification for the definitions of the two universes you gave. Thank you for the elaborate explanation but you are still missing one universe. So in effect you end up conflating different predicates, for example conflating Ua with Uab. That conflation would be okay if you accompanied it with the conflation of Ub with Uab but your argument would have to make both conflations explicit.

Good excuse to try this latex thing.

... As for the latex thing : who on earth calls "intersect" "cap" and "fi" "oslash" ???

$\cap$ is "\cap" because it looks like a cap, $\cup$ is "\cup" because it looks like a cup, $\oslash$ is "\oslash" because it's an 'o' with a slash. Etc.

If the last line is your conclusion, then so what? All it shows is that the conclusion of A join B minus B join A relative to A and B is not denied by deMorgan. All those equivalances do is state a number of possible tautologies.  Where is the argument? Where is the minus operator?

Yes, I agree that deMorgan is true in fact it's a tautology in this situation and in this situation the reason is that the union of three empty sets is an empty set.  But that is not the problem and you are still misapplying deMorgan. The problem is deciding what the values of A and B are when their intersection is deleted, is therefore empty and that intersection is a subset of both or in other situations when it is a proper subset of one or both. But none of your equations invokes SET DIFFERENCE. Unary negation doesn't get you where you need to go. You are still confusing deMorgan's conclusion with the join deletion argument.

You need an argument that goes like this basic one or an argument that refines it for more involved situations:

Given that A Join B is non-empty ( otherwise there is nothing to delete) so one possible argument, one that could apply to your example, could assume A \ ( A Join B) is empty and B \ (B Join A) is empty. In other words, those two relative complements are fixed or constant. Now you have a premise or if you like, a predicate. Your argument is not allowed to change your premise, if it did your database would be inconsistent. This is one of the reasons why Codd defined natural join as he did.

If you try to substitute an empty set for A Join B by substituting an empty set for only one of A or B you will violate the premise because without changing your universe equations one of the relative complements A \ (A Join B) or B \ (B join A) will be non-empty. Also, they will no longer be equal even though equality is implied by the premise.

Note that data independence depends on such an argument so it can isolate joinable relations that are subsets of declared relations whose predicates are not join predicates. This dependence is regardless of whether the argument sets those relative complements to be empty or some other fixed value, for example for the typical values of the suppliers relation joined with the supplier parts relation, the complement of S relative to the join could be S{S#} minus (S{S#} Join SP{S#}) with the stipulation that the end value of S is calculated by joining that projection with the original S value . Note the fixed or constant relationship in Codd's definition, between that and S{S#} minus (S Join SP){S#}.

By contrast, if a dbms does substitute an empty set or a set that is different for one of the relative complements, the predicate that must be involved is very different and most importantly not logically equivalent, it is not the predicate of a join, but the predicate of a difference. In other words you are now not talking about join delete. If you persist in calling such an operation join deletion you have lost the correspondence between relational algebra and first order logic.

(Why people merrily embrace habits of normalization by rote and then use a join that prevents data independence is beyond me. I remember from many years ago complaining that deleting a join by targeting one base relation was equivalent to inserting to a set difference. There is nothing inconsistent with such an operation provided that it is defined as insert to difference. Note that Codd was clear in saying union insertion is ambiguous whereas natural join delete is not. TTM assumes that product is a special case of Appendix A join. The obvious reason why Codd excluded cartesian product delete is that the empty set of common attribute names has no counterpart in first order logic but his definition can be extended with synthetic attributes so that product and join have the same definition. I also remember in similar exchanges being accused of demanding POOD which I have never demanded as well as suggesting that I wanted a Datalog or Prolog dbms, which I have never wanted. That strange suggestion underlined for me just how shallow the average understanding of Codd is, even among people who claim to be relational minded.)

(The IT industry has blithely ignored the original definition of the RM for nearly fifty years.  I have thought more than once that a class action suit might fly against the vendors who provide Insert to difference and call it join deletion. Relational logic has obvious process control applications beyond the pedestrian apps that are so common but any life or death application that depends on two databases being logically consistent is likely to make logical mistakes.I remember discussing the idea of formally basing more operating system functions on relational logic with a somewhat famous system thinker. He wondered what represented a "Start IO" instruction and was satisfied that it could correspond with insertion.But the more urgent purpose would be to simiplify life for millions of coders who have plenty to do without understanding all the details of relational theory. )

Quote from Erwin on July 2, 2019, 8:17 pm
Quote from p c on July 2, 2019, 6:45 pm

The pop argument mentions Ua and Ub but not Uab. That is why I asked for clarification for the definitions of the two universes you gave. Thank you for the elaborate explanation but you are still missing one universe. So in effect you end up conflating different predicates, for example conflating Ua with Uab. That conflation would be okay if you accompanied it with the conflation of Ub with Uab but your argument would have to make both conflations explicit.

Good excuse to try this latex thing.

From the definition of complement, we also have :

$U_A \equiv A \cup \overline A$   (coroll.1 )

$A \cap \overline A \equiv \oslash$  (coroll. 2 - relationland's version of the law of the excluded middle)

Now :

$U_{A \bowtie B} \equiv U_A \bowtie U_B$ (def. 1)

$\overline{A \bowtie B} \equiv U_{A \bowtie B} \setminus ( A \bowtie B )$   (definition of complement)

$\overline{A \bowtie B} \equiv (U_A \bowtie U_B) \setminus ( A \bowtie B )$   (per def. 1)

$\overline{A \bowtie B} \equiv ((A \cup \overline A) \bowtie (B \cup \overline B)) \setminus ( A \bowtie B )$   (per coroll. 1)

$\overline{A \bowtie B} \equiv ((A \bowtie B) \cup (A \bowtie \overline B) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B})) \setminus ( A \bowtie B )$   (join distrib union)

$\overline{A \bowtie B} \equiv ((A \bowtie \overline B) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B}))$   (consequence of coroll. 2 : all 4 union args disjoint)

$\overline{A \bowtie B} \equiv ((A \bowtie \overline B) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B}) \cup ({\overline A} \bowtie {\overline B}))$   ( X U X ===X)

$\overline{A \bowtie B} \equiv ((A \bowtie \overline B) \cup ({\overline A} \bowtie {\overline B}) \cup ({\overline A} \bowtie B) \cup ({\overline A} \bowtie {\overline B}))$   (U associative)

$\overline{A \bowtie B} \equiv ((A \cup{ \overline A}) \bowtie {\overline B}) \cup ({\overline A} \bowtie (B \cup {\overline B}))$   (join distrib union)

The last step is left as an exercise.

As for the latex thing : who on earth calls "intersect" "cap" and "fi" "oslash" ???

Sorry, I don't know what oslash means.  I'm guessing that it might be to do with what the bartender said when a mullah, priest and rabbi walked into a bar: "what is this, some kind of joke?" Other than that I think your experiment with unusual fonts is not very useful. Some of it appears mangled when I receive it.

Quote from p c on July 3, 2019, 1:17 am

(Why people merrily embrace habits of normalization by rote and then use a join that prevents data independence is beyond me. I remember from many years ago complaining that deleting a join by targeting one base relation was equivalent to inserting to a set difference. There is nothing inconsistent with such an operation provided that it is defined as insert to difference. Note that Codd was clear in saying union insertion is ambiguous whereas natural join delete is not. TTM assumes that product is a special case of Appendix A join. The obvious reason why Codd excluded cartesian product delete is that the empty set of common attribute names has no counterpart in first order logic but his definition can be extended with synthetic attributes so that product and join have the same definition. I also remember in similar exchanges being accused of demanding POOD which I have never demanded as well as suggesting that I wanted a Datalog or Prolog dbms, which I have never wanted. That strange suggestion underlined for me just how shallow the average understanding of Codd is, even among people who claim to be relational minded.)

You write as if you have a deeper understanding of Codd and his description of the relational model than the rest of us, but I can't make any sense of your writing about it and I suspect I'm not the only one. We do try to appreciate what you're writing, so if you're "accused" of taking various positions, it's because we're trying to make sense of your position, which -- as usual -- is given without any clarification, illustration, or explanation.

If you're going to post things like this, please, please, please try to add a few simple clarifying examples and explanations. Further rants about "how shallow the average understanding of Codd is", sans any attempt to deepen that understanding, will accomplish nothing.