SteveG48 wrote:Hi, SpAce. I agree that this is an interesting discussion. It's the sort of thing that I came for and stay for at this forum. I also agree that clarity and simplicity are always highly desirable, but we need to take care that we don't allow the desire for simplicity to push us into logical error. Correctness of the Boolean expressions must be paramount.
I agree. That's why I had a lengthy discussion about these in another thread, trying to get my branched chains correctly written using my style (or preferably something better). I was originally quite confused, especially about the correct use of ORs and ANDs between the branches, but eleven helped me out a lot, which I'm grateful for. Blame him if I'm still doing something wrong!
http://forum.enjoysudoku.com/nishio-vs-aics-when-is-it-considered-cheating-t34342-45.html#p262323Anyway, I welcome any suggestions to improve my notation or to convert me into using something else. I'm just not yet sure if I can agree with your assessments here. It seems that you're misreading my intent, which of course means that my notation is not quite as intuitive as I thought (like I said, it's a very subjective concept!).
In your suggested chain, (4=83)r2c78 - (3=25)r2c23 - [[(2=8)r4c2] | [(5)r2c1 = (5)r4c1]] - (8|5=34)b6p26 => -4 r6c8 , we have a couple of problems. First, if you look on both sides of the bracketed expression you have weak links on both sides. The chain no longer alternates.
It sure does if you read it as intended. I understand what you mean if you read the bracketed part as one node, which it isn't. It's a container for the two parallel branches (within their own brackets and separated by the OR), and the preceding and following links (both weak, i.e. NANDs, in this case) apply to both branches equally. If you read it like that there's no discontinuity, is there? Both branches have a strong link inside them to ensure alternation and correct linking at both the split and the join point. Where's the problem?
Let's also look at the bracketed expression itself:
[[(2=8)r4c2] | [(5)r2c1 = (5)r4c1]] We have two terms that are ORed. The term (2=8)r4c2 is always true for this puzzle. Likewise the term (5)r2c1 = (5)r4c1, so the bracketed term must always evaluate as Boolean true. Your intent to enhance clarity has left me confused.
I'm not exactly sure if I understand your point. You may be right that if we rewrote the chain using logic gates, there might be problems. I haven't tried that exercise here so I don't know. Anyway, my intention is to imply this:
- Code: Select all
(4=83)r2c78 - (3=25)r2c23 - (2=8)r4c2 -------
\ \
(5)r2c1 = (5)r4c1 - (8|5=34)b6p26
If (2&5)r2c23 then NOT(2r4c2 OR 5r2c1), i.e. ((NOT 2r4c2) AND (NOT 5r2c1)) according to DeMorgan's theorem.
If (NOT 2r4c2) then 8r4c2
If (NOT 5r2c1) then 5r4c1
If (8r4c2 AND 5r4c1) then NOT(8b6p26 OR 5b6p26), i.e. (NOT(8b6p26) AND NOT(5b6p26))
If (NOT(8b6p26) AND NOT(5b6p26)) then (3&4)b6p26
Where does my notation fall short in expressing that logic?
Please don't take this as anything except constructive. I value the contribution that you've made to the discussion.
Of course I don't. I value your input as well. I surely don't claim to be an expert on this subject. I'm just pointing out that there are multiple forces at play here, and some of them may be in conflict with each other.