Hi everyone who's interested in notational details, and especially
Steve since this is related to a very
old discussion of ours. I'll use eleven's chain as an example because it has something I tried to suggest back then. In short, my quest was to find a linear notation that would allow to write a bit more complicated or explicit branches than split-nodes, without resorting to memory. Even better if it were a valid AIC, though I didn't think it was mandatory (now I'd strongly prefer it).
My original suggestions were understandably pretty terrible, since I was a complete newbie. Once I realized their failures, thanks to Steve's good arguments, I promptly buried the idea. However, now that I hopefully understand things a little bit better, I think I was onto something after all. With a better implementation it might have actually worked. As eleven's example shows, it can be very intuitive and sometimes (like here) quite likely more readable than any alternative. That's why I still think it's worth pursuing.
That said, even with eleven's better implementation the node in question is not a valid AIC node, or rather, its links aren't valid:
eleven wrote:4r6c3 = 49r61c5 - 9r1c7|r2c4 = (13r13c7 & [1r2c4 - r2c12 = 1r3c1]) - (1|3)r7c17 = (13-4)r7c28 = 4r7c1 => -4r7c3,r4c1
It's definitely more correct than my ancient suggestions, because it does have alternating links around it and () instead of [] as the outer brackets. It thus looks more like an AIC node but isn't, which some might think is even worse. Yet I'm not here to criticize but to save it, because it would salvage my original idea too. It just needs to be made either correct or a known shortcut first, since I'm utterly incapable of writing incorrect AICs despite some people having the audacity to suggest otherwise
Well, that's not quite true, since I recently did just that very knowingly, and incidentally the error was exactly the same as here. It's not an actual error if you know what you're doing, is it? I'm suggesting the same fix here. The nice thing is, once known and accepted, it might be just assumed instead of written explicitly unless there's a real chance of confusion. With that amendment, eleven's chain can be considered a valid AIC. Otherwise not.
PART 1. WHY IS IT NOT A VALID AIC?
Let's see. If we forget the internal details, eleven's chain has a normal split-node situation:
I wrote:- (a|b) = (c & d) - (e|f) =
That, of course, is valid with perfectly alternating links and everything. It's one of the things I screwed up in most of my original suggestions, because I didn't see my "branch container" as a node per se, so the links around it weren't necessarily alternating. Anyway, the real question here is whether the middle node is still valid if d is replaced with a nested chain of the form [g - h = i]:
- (a|b) = (c & [g - h = i]) - (e|f) =
Again, that is written perfectly correctly as far as nested chain syntax goes. Does the logic work, though? That's the real question. It's easiest to work out if we isolate the right side branch:
- b = [g - h = i] - f =
Is that logically and functionally equivalent to what was probably intended, i.e. this:
- b = g - h = i - f =
? It's tempting to see it that way, isn't it? Yet the answer is NO. In the first form the nested chain is a single boolean node in the outer chain. Thus the outer links are attached to the chain node itself, and its truth value, instead of its internal nodes. Does that make a difference? It sure does.
The first version simply doesn't work, because a nested chain of that form (different link types at the ends) can't generally link in any meaningful way, thus causing a discontinuity in the outer chain. In particular, it can't normally weak link to anything because it can't eliminate anything external. The only way a chain of that form (nested or top level) can eliminate anything by itself is if (g) and (i) see each other, in which case (g) gets eliminated. Otherwise it would need to know that either (g) is considered true or (i) false, which it doesn't because that information is not transmitted by the links. The same is true with the actual example:
9r2c4 = [1r2c4 - r2c12 = 1r3c1] - 1r7c1
The outer strong link is meaningless because in this case the nested chain is already true in the grid. In some other situation it might work, but it wouldn't matter. A bigger problem is that the outer weak link doesn't work because the chain couldn't eliminate 1r7c1 without knowing that 1r2c4 (and consequently 1r3c1) is considered true (and it doesn't). That's always the case with chains of this form.
Similarly, though a bit less intuitively, a true 1r7c1 couldn't make the chain false even though it would bite one of its end points. The chain would still be valid and true, only with a known truth value (false) at one of its nodes. The chain itself is not in conflict with 1r7c1. A conflict would mean that both couldn't true without causing a contradiction, and that's not the case here. It would only happen if the chain somehow forced 1r3c1 to be true. In that case a true 1r7c1 would cause a conflict, and either we'd have a contradiction or either the chain or 1r7c1 would have to be false.
PART 2. HOW TO MAKE IT CORRECT?
I'm glad you asked. Indeed there's a simple way to make it work. It's the same I've suggested elsewhere for writing reversed contradiction chains that force one end to be true. In this case it would look like this:
9r2c4 = [(!=1)r2c4 - r2c12 = 1r3c1] - 1r7c1
That's it. Adding a strongly linked contradiction '!' to the other end of the nested chain makes it a normal AIC, which both works and is easy to understand. If the chain node is true, at least one of its internal end points must be true as well, which gives it weak link capabilities. Since one end is a contradiction, a known false, the other (1r3c1) must be true (as well as any other right side nodes). That simplifies things a lot, because the chain inherits all weak links 1r3c1 has.
That way the chain node can have a valid weak link to 1r7c1, because we now know that if the chain is true, then 1r3c1 is true as well. That was not the case with the original version. It also works the other way. If 1r7c1 is true, then 1r3c1 is false, and so is the chain because it would otherwise cause a contradiction.
The strong link now works too. If 9r2c4 is false, it makes the first link and the rest of the nested chain true, because having neither 1 nor 9 in r2c4 would be a contradiction. Similarly, if the nested chain is false, then 9r2c4 must be true, because there can't be a contradiction in r2c4 in that case.
PART 3. HOW SHOULD WE ACTUALLY WRITE IT?
Well, if one wants to be fully correct, my version above should work, unless I've seriously overlooked something. In practice, I would accept and possibly even write eleven's version too. I think it's the most readable and intuitively understandable form. For me the important part is to understand that it's not strictly speaking correct as written. As long as that's known and it's used and interpreted with the assumption that it implies the strongly linked contradiction, I'm fine with the abbreviated form as a prettier shortcut.
In fact, I recently used it myself with a
nested chain that also starts with a weak link. The contradiction is shown in the hidden explicit version, though, so it was a consciously made error.
4. SHOULD WE USE IT IN THE FIRST PLACE?
Well, since I've wanted something like that since the start of my branching days, I'm of course all for accepting it as a possibility, with the mentioned caveats. Personally I don't have nearly as much incentive to use that style as in the early days, but it would still be a nice addition to the notational tool box.
Like I originally argued, there are middling cases of branching when a net diagram would be an overkill, but neither split-nodes nor normal nested chains nor memory chains would work optimally as a linear notation. This might be a decent compromise in those situations.
Problem is, if this style starts to proliferate, I'm sure we will eventually see some pretty horrible versions that have no resemblance whatsoever to valid AICs. Maybe that's ok. See below.
5. A QUOTE FROM THE LINKED DISCUSSION...
SpAce, on Jan 28, 2018 wrote:I also happen to think that "higher standards" are sometimes just artificial rules and constraints for bored people to keep things interesting for themselves. They may have nothing to do with practical reasons. Elegance is always preferable, but it's also subjective, and sometimes a hindrance.
Well... I think I can confirm at this point that I was quite right back then