I spend ~30 minutes doing this before I realized. Is it fine the way I’m approaching this so far? I don’t necessarily mind trying out various arrangements until one gives me the table I need, since this is all new to me. I don’t think that’s what I’m supposed to be doing though, but I could be wrong. Figured I’d ask.
It depends. Sometimes when people work on stuff, even in less productive or more brute-force-style ways, they start noticing some patterns and developing intuition after a while, just not right away. But sometimes they don’t. How well it works depends on their attitude, background knowledge, how long they spend on it, and more.
If you don’t mind doing more then it’s probably OK. But here’s another way to approach it if you prefer:
You can translate logic expressions into English sentences describing them (e.g. “or” = “at least one is true”). And you can translate from English to other English sentences that are different but still logically the same. And you can translate from English to logical expressions. E.g. “at least one is true” = “not both are false” = “!(!x & !y)”. Using English can help you think conceptually about stuff instead of brute forcing. But you’ve tended to do better at non-word math problems than word math problems so it might not work well for you.
There’s also a generic way to construct an expression to achieve any truth table you want, using only {not, and, or}. I wouldn’t expect you to figure it out right now but it’s not super complicated so it’s not out of the question.
Overall, one of the main goals here is to build up more familiarity and intuition with logical operations (and also at some point to connect them more to English sentences so they can be used in philosophy activities like text analysis, debate, etc.)
Just sharing some writing I did today about bad/immoral people:
Are people who smoke pot the same as people who steal? In other words: are people who do bad things to themselves the same as people who violate rights? A lot of people would call both group of people immoral. Sure, I guess. I don’t know though. I’ve thought of this issue a few times and its weird every time I think about it. Like sure people who spend their days drinking, smoking pot, eating junk food, and all that are not really living that much of a life. I know some people would brand such behaviors as immoral and bad. I more-or-less feel that way too about those things (though I’m by no means perfect in living my life), but I think sometimes the lines get blurred. Sure I think smoking pot is bad, but is it the same bad as someone who steals? Both, by many people, kinds of people would get categorized as immoral but only one I feel deserves to be treated as “bad” for their actions. Yeah spending all day smoking pot is lame and pretty bad but I don’t think a pothead should be treated the same as someone who’s a thief. It’s a weird blurred line.
~Huh. Now that I think about it: this may have some kind of relation to the multi-factor decision making article from Elliot. Specifically the section: “Converting Dimensions to Goodness”.
Mmm. Yeah. Kinda? Idk. Too tired right now, but looking through that section. Goodness is kinda vague and people just arbitrarily convert things to how good they are. Different things have different ways of being good in different contexts. Bad things are similar.
I spent roughly an hour. Half-way through I realized I wasn’t timing. Thinking of the phrases in terms of English sentences helped. I did that in conjunction with creating a bunch of tables.
xor = not(or(and(x,y), and(~x,~y)). Ok, this one was a failure when it came to thinking about what the operators mean. I got an answer by noticing that if I just did a not on my answer for equality I got the table for xor.
Now that I think about it. I guess that makes sense? I got my answer for equality (I did have to look up what that meant and learned that it was the same as the bi-conditional I learned so far) by thinking about how the table is saying both have to be true or both to be false for the statement to be true. The negation of that would be only one can be true and false.
nor = not(or(x,y))
implies = or(~x,y). I didn’t have a chance to think about this one. I just noticed they matched.
I haven’t reviewed your work yet and I’m going to be busy until this evening but here’s something you can work on:
Can you come up with a universal set of logic operators that is smaller than {and, or, not}? How can you determine if a set of logic operators is universal (both in general or the easier version: using as a premise that {and, or, not} is universal)?
Starting with the easier version. Assuming that {and, or, not} is universal you can just use nand or nor. You can convert between “and” and “or”. From what you had me do earlier with De Morgan’s laws: or(x,y) = not(and(not(x),not(y)), and(x,y) = not(or(not(x),not(y)). I think you can negate both sides, which gives you: not(or(x,y)) = and(not(x),not(y)) or nor(x,y) = and(not(x),not(y)). Also not(and(x,y)) = or(not(x),not(y)) or nand(x,y) = or(not(x),(y)).
So from nand or nor you can get the three universal operators {and, or, not}. I think I answered the below:
Mmm. If those set of logic operators can be made to do everything more specific logic operators can do?
The way I went about answering the question was assuming the below was true:
I assumed that I could come up a smaller set of universal set of logic operators smaller than {and, or, not} since it was asked of me. From there I just assumed that since you can convert between “nor” and “and”/“nand” and “or” you could probably get “nor” and “nand” to do some functions similar to “and” and “or”.
Do these work? (these were made just now after the fact, so I didn’t initially know I could do these):
Hmm. I don’t think I answered your question that well. My goal was just answering the question of finding a smaller universal operator. I guess I was technically claiming I could do that. Yes.
Uhh. The way I think about it when I see it is to read it as “either-or”, meaning that either, but not both, of the the statements can be true. So xor just says only one of the statements can be true.
Yes. If both are true it’s true, if both are false the statement is still true. Both inputs need to be equal for it to be true. Makes sense.
Thinking about the operators as english statements helped.
I’m kind of confused what you’re asking here. The confusion is about “what universal sets can you make” and “what small set of set of operators have you discovered is universal”. Aren’t those the same thing?
To answer what I think you’re asking:
I also went ahead and made “and”, “not”, and “or” out of nor. Assuming that the set {and, or, not} is universal you can make that universal set out of the smaller universal set {nand, nor}.
If you use only one of those, what can and can’t you make from the set {and, or, not}? Or put another way, what is each adding that the other is missing?
Hmmm. Since I could make “and”, “not”, and “or” from both nand and nor. I don’t think there’s anything from the set I couldn’t make. Neither is adding anything that the other is missing.
One of the advantages of prefix and postfix notations is you can have any number of inputs, e.g.: and(1, 1, 1, 1, 0, 1). Can you evaluate that expression?
Can you write in English how to evaluate whether and, or and xor are true or false for input lists that could be any length? The answers should be one sentence each.