Eternity Async Tutoring

A key concept for reading this kind of post is called the unreliable narrator (that’s a standard term you can Bing). You shouldn’t trust the OP. He’s biased and there are signs of errors.

One way to deal with unreliable narrators is to consider the evidence (and sometimes objective, logical arguments) they provided while ignoring their interpretations and conclusions. Basically just make a list of the facts and then create your own interpretation based only on that list.

And sometimes the facts should be doubted too. Sometimes people lie or make mistakes. For example:

Nope she said that she wanted to break up because she wasn’t sure I was all in.

OP doesn’t claim he’s giving an exact quote and doesn’t present this in a very factual way. While I can easily believe she said something kind of similar to this, I don’t think his wording should be trusted.

You can try to think of things she might have said which would be better than his story but which he might have described as he did. For example, maybe she said “I’m concerned you’re not all in. If that’s the case, then I guess it’d be better to break up than move in together.” I can imagine that, if she said that, OP might describe it how he did. In other words, it’s compatible with the evidence we have. It’s one of the many possible statements compatible with the paraphrase he gave. In other words, the fact we actually know is not that she said she wanted to break up; the fact we have is that she said something that OP paraphrased that way.

pinging @LMD

PS It’d be easier to read with block quotes. Instead of quotation marks and bullet points, just put "> " in front of quoted paragraphs.

2 Likes

You have three inputs:x, y, and z. The expression is saying that either x is true and the other two are false, or y is true and the other two are false, or z is true and the other two are false. This means that only one of the inputs can be true for the output to be true.

Another way to put is that each part is only saying one of the inputs can be true. This input, or that input, or that input.

You have three inputs: x, y, and z.
Similar to the above. The expression is saying that either x and y are true and z is false, y and z are true and x is false, or x and z are true but y is false. Only two of the three inputs can be true.

Yeah I used it to try out some thoughts where I didn’t want to go through the full process of making the table. For the above two I thought of those beforehand and then put them in the website. I didn’t spam completely random stuff until I got something that worked.

That’s good about 2 and 3 inputs. Can you define xor(x,y,z) now (for odd number of true inputs meaning of xor, not exactly one true input meaning)?

Yes.
((x∧~y∧~z)∨(~x∧y∧~z)∨(~x∧~y∧z))∨(x∧y∧z)

Good. So breaking the problem into smaller parts let you solve it?

Make trees for these expressions then evaluate them using the trees.

1&0

or(1, not(0))

(not (and (or 1 0) 0))

I did them on paper just because evaluating felt more intuitive on paper versus doing it on MindNode.


On the last one, why’d you switch the order of and’s children?

I guess so. Also for this problem in particular part of the challenge was thinking about doing this with operators that take two or fewer inputs. Though I guess I can’t judge how well I would initially would have done if you had just said create xor in terms of other operators.

mistake, no reason. I think my brain just saw the 0 off to the side as easier to write first.

OK, suppose you can use {not, and, or, nand, nor} and they can take any number of inputs (except not always takes one input). How would you do three input xor differently?

I just realized that this notation using ∧∨~ was doing it with two operators. Each of those symbols in the following expression was only working on two operands: (x∧y∧~z)∨(~x∧y∧z)∨(x∧~y∧z). Right? I think this was easier to do with that notation. Oh yeah, I assume this is a type of infix notation? I think I had issues coming up with using operators that take only two inputs using the prefix notation I was using for a while.

How would I put this in the other notation: (x∧y∧~z)∨(~x∧y∧z)∨(x∧~y∧z). Hmm. or(and(x,y,~z), and(~x,y,z),and(x,~y,z)). Ok so the “or” and “and” function are taking three inputs. How do I make this into two inputs? and(and(x,y), ~z), etc. What about the or? or(x,y,z) = or(or(x,y), z). Ok so: or(or((and(and(x,y),~z)), ((and(and(~x,y),z))), and (and(x,~y), z)). I think I wrote that correctly? This was easier to do with the infix notation rather than the prefix one.

So I don’t know how I would write that using infix notation, but with pre-fix notation I would have done:
or((and(x,y,~z), and(~x,y,z), and(x,~y,z)), (and(x,~y,~z), and(~x,y,~z), and (~x,~y,z))

Yes. It’s worthwhile to be comfortable with prefix notation (which is the standard notation for functions in general, like f(x) or cos(a), in both math and programming).

One notable thing about prefix is it maps better to trees. The order is: parent child child child…

Infix ordering is: child parent child. Besides not working with other numbers of children besides two, it’s also out of order compared to the tree because the tree has the parent before the children.

Try making trees from the expressions you were just talking about and see if this makes sense. Also try making trees for:

5+3*2

(add 1 (multiply 8 4))

7*4-1

(multiply 6 (minus 5 3))

Whoops. I meant: or(and(x,~y,~z), and(~x,y,~z), and (~x,~y,z)), and(x,y,z))

Practice Trees.pdf (28.8 KB)

Yeah, pre-fix does seem to map better to trees. When making these trees the expressions in pre-fix notation were also easier to turn into trees.

There’s a way to use {and, or, not} to construct any logic function with any number of inputs and any truth table. Being able to do this shows that {and, or, not} is universal. There’s one general-purpose method that always works.

Try to figure out what it is, but maybe give up after 10 minutes and I’ll give you a hint.

Ok I get using those three to construct any logic function. By extension, I guess it makes sense that you could construct any truth table with any number of inputs because those three can create any logical function.

I don’t think I even get what you’re asking. I spent around ~5 minutes. Maybe a re-word would help before a hint?

Am I trying to give you a step by step process on how to get any truth table you want or?

The only thought comes to my head is that every line of a truth table you can just write in terms of {and,or,not}. For example, the conditional

Can be written as:

(~x∧~y)∨(~x∧y)∨(~x∧y)∨(x∧y)
image

Is this what you’re looking for?

I think I can expand that out to any number of inputs to get any truth table I would want.

yes

that’s a good start. can you explain more in English what you do for each line?

why do you have the same term twice? this part: (~x∧y)∨(~x∧y)

I was just going through line by line and coming up with parts of the expression as I go along, so I didn’t pay attention to the whole expression that closely.

For F F to be true, and(not(x),not(y))
For F T to be true, and(not(x), y)
For T F to be false. and(not(x), y)
For TT to be true, and(x,y)

Now that you pointed it out, yeah the two and(not(x), y) is unnecessary.

For a two input truth table all of them will look like this:

Both inputs are true, both inputs are false, the first input is true and the other is false, or the first input is false and the other input is true.

You can go line by line of the inputs in a truth table and then create simple expressions using “and” and “not” to get whatever output you want for that line.

So if you wanted F F to be true you can use and(~x,~y). Since that would make the two false’s true and therefore the and operator outputs a true. If you want to leave make it false you could either do and(~x,y), and(x,~y), or and(x,y).

For F T to be true you can use and(~x,y). For F T to be false you can use and(x,y).

For T F to be true you can use and(x,~y). For T F to be false you can use and(x,y).

For T T to be true you can use and(x,y). For T T to be false you can use and(~x,y), not(and(x,y)), and(~x,~y), or and(x,~y).

That’s how you determine the output for each line. And then you combine them all together with or. So the statement is saying it needs to be this expression or this expression or both, which allows all the expressions to work together to create a truth table you want.

You’re partly right, but check more examples and look for an error.