0

I'm writing some research that involves explaining some relational data structures. I frequently find it very difficult to remove ambiguity from the sentences I am trying to write. For example, the following sentence seems ambiguous to me:

When a boolean function receives an n-length boolean vector x as input, the function outputs the boolean value that is contained within the row of the function's lookup table that contains x.

It is the relative clause that seems ambiguous here. Does "that contains x" refer to the row or the lookup table? I could be referring to the row that contains x in a lookup table, or the lookup table that contains x where this lookup table contains only one row. I could replace "the row of the function's lookup table" with "the function's lookup table's row" to remove this ambiguity. But I'm unsure if the use of multiple possessive nouns is stylistically frowned upon or not (it certainly doesn't feel great to say out loud). Also, what if there are even more possessive nouns? Here is a less technical example with even more possessive nouns:

When a cashier executes a transaction for a product, the store's computer finds the store's parent company's database's row that contains the price of the product and the cashier asks the customer to pay this price for the product.

This seems very awkward to me. I could replace "the store's parent company's database's row" with "the row of the store's parent company's database", but this reintroduces the aforementioned determiner-based ambiguity.

Are there any techniques that can be used to restructure sentences like these so that the ambiguity is removed without introducing sequences of possessive nouns? Readers could use context clues in the rest of the text to decide which way they should interpret sentences like these. But for the type of technical writing I'm doing I don't think I should write sentences that have multiple interpretations, especially in cases where individuals without a background in the subject area are reading the research. I've considered adding diagrams to provide clarity, but I would have to do this so frequently that this approach would be impractical.

Also, does anyone know if there is a name for this kind of problem I'm experiencing?

Edit:

I've looked at posts such as these (suggested by another user) Ambiguous relative clause Ambiguity in use of relative pronouns.

The first two questions have answers that suggest using a possessive noun. But in this question, introducing a possessive noun results in multiple possessive nouns and I already explained that I have some uncertainty about this stylistically. The first of those suggested questions has an accepted answer that provides some additional alternative solutions. But I do not believe these solutions are suitable in this case. For example, the answer suggests that having or not having a comma before the pronoun "who" may somewhat disambiguate what "who" refers to. However, the user who posted the answer admits that in both cases, the sentence is "still rather ambiguous in print" and I already explained that removing ambiguity is important in this case because of the technical nature of the writing.

The following question that was suggested by another user contains an answer that provides a name for this kind of problem What is this an example of: "FOR SALE: Car by elderly lady with new body and spare tire". Whilst I did ask for a name that describes the problem I have described in this question, this was only a very small part of the question. This small part of the question was too minor to warrant an additional post, especially because it is linked to the context of this particular problem I am experiencing, which I have now explained is different to the suggested questions.

9
  • I've been programming for decades, but I can't understand the cited text. Nevertheless, it seems unlikely to me that "the function" has multiple "lookup tables", so it seems reasonable to assume that that refers to the row of the function's lookup table within which the n-length boolean vector x is to be found. Aug 28 at 13:01
  • Not only that, but if "that" referred to the table then there is no specifier saying which row is referred to. Unless the each table only had one row (which would be pointless) that would make the sentence indeterminate. Aug 28 at 13:10
  • 1
    The answers in that question don't really apply to this question. If you really think it's more important to close a question whenever there's a vaguely similar question already on this site, than to allow a given answer to stand, then it's a waste of time to be here. Let me know. That answer is about possessives. That's not the solution here. A premodifier is. Aug 28 at 14:48
  • 1
    @EdwinAshworth My answer explains it. the function's lookup table becomes a preposed modfier of row and then the that-clause follows immediately upon the word OP wants it to modify, row. Aug 28 at 21:32

1 Answer 1

0

When a boolean function receives an n-length boolean vector x as input, the function outputs the boolean value in the row of the function's lookup table that contains x.

Sentence as replaced by OP:

When a boolean function receives an n-length boolean vector x as input, the function outputs the boolean value that is contained within the row of the function's lookup table that contains x.

OP asks Does "that" refer to the row or the lookup table?

If you want that contains x to apply unambiguously to the row, without relying upon the fact that the function has only one lookup table, a fact the reader might not know, you can rewrite it like this:

When a boolean function receives as input an n-length boolean vector x, it outputs the boolean value to the function's lookup-table row that contains x.

New version for edited sentence:

When a boolean function receives as input an n-length boolean vector x, it outputs the boolean value found in the function's lookup-table row that contains x.

Basically what I did there was translate the prepositional phrase "of the function's lookup table" into a premodifier, eliminating the preposition of. The premodifier is unambiguously applied to row and the that-clause is unambiguously applied to the function's lookup table row.

Also changed outputs ... in to outputs ... to as being more idiomatic, and kept receives as input together so that as input doesn't arrive as a tail to a moderately complicated object phrase, but those are tangential to the central question of how to make sure the reader knows what the that-clause goes with.

Support for keeping the phrase receives as input together can be found here. It's not that placing as input after vector is ungrammatical, it is grammatical; it's just clearer to keep receives as input intact than to have it "straddle" the phrase specifying what the input is.

7
  • Or “it searches its lookup table and returns the row containing x. Aug 28 at 14:03
  • @PaulTanenbaum Yes, but the original mentioned outputting a value to that table, and I didn't want to assume that making that step explicit was unimportant. Aug 28 at 14:39
  • Hi @Tim apologies for the additional ambiguity on my part. But I am in fact talking about retrieving a boolean value from a row so the function can return it. I changed the example sentence in the question to say "the function outputs the boolean value that is contained within the row of the function's lookup table that contains x". I hope that clears it up.
    – Jonathan
    Aug 29 at 11:38
  • 1
    It's basically the same solution, @Jonathan. See revised answer. We simply transpose the row of the function's lookup table that contains x, to the function's lookup-table row that contains x. "function's lookup-table" becomes adjectival in nature, modifying row, and the relative clause follows immediately after the noun it belongs with, row. Aug 29 at 14:26
  • As Abney 1996 shows, any written English sentence is multiply ambiguous. You can't avoid it. Aug 29 at 19:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.