If A and B are two logical variables under what circumstances, or conditions on A and B, happens that: A B = A + B - boolean-logic

If A and B are two logical variables under what circumstances, or conditions on A and B, happens
that:
A B = A + B

The easiest answer is gnasher729's, from the comments. Here is a truth table with columns for both expressions:
A B AB A+B
T T T T
T F F T
F T F T
F F F F
We see AB = A+B for the cases (A, B) in {(T, T), (F, F)}. A simpler way of saying this is that AB = A+B iff A = B.

Related

Making unique values into duplicates in R

I am working with R and I have a table that look like this...
A
B
C
D
E
F
And I need the table to look like this...
A
A
A
A
A
B
B
B
B
B
C
C
C
C
C
D
D
D
D
D
E
E
E
E
E
F
F
F
F
F
So,I need the same values 5 times in order to match them with another column.
Any help would greatly appreciated.
Thanks!
Not sure if the table has associated data that also has to be duplicated. Looking at a vector or single data.frame column can use rep
data <- LETTERS[1:6]
rep(data, each = 5) # will repeat each position 5 times prior to going to next position
rep(data, times = 5) # will repeat entire array 5 times

I can´t do a delete for do data union in a trigger update mysql?

Hello I have got a table named example in mysql with the next fields a, b, c al fields are varchar 255, and unique per column.
The unique restriction per column I do with a trigger before insert;
An example of table:
------------
a b c
------------
a c
b
d e
f g
h
i
j
k
l n
c
a
This table is ok, because al values in each column are unique exception that ""
An example of wrog table
------------
a b c
------------
a b c
b
This table is wrong, because the field b have same value in two columns
I want to be able to do the next
I want to be able to make a union of rows respecting that the values ​​are unique
Example:
Merge ('a', '', 'c') with ('', 'b', '') and get ('a', 'b', 'c')
------------
a b c
------------
a b c
d e
f g
h
i
j
k
l n
c
a
Note that ('', 'b', '') was deleted.
Merge('j', 'a', 'i')
------------
a b c
------------
a c
b
d e
f g
h
j a i
k
l n
c
I not need merge for ecample ('', 'l','n') and ('','h','') because the 'a filed is empty' but I need merge (j, a, i) and ('','h','') and get
------------
a b c
------------
a c
b
d e
f g
j h i
k
l n
c
I'm trying to do this with a trigger, with the nex logic
if 'b' changed delete the other appearance of 'b'
if 'c' changed delete the other appearance of 'c'
But I cant do theses because I cant execute a delete into a mysql trigger, any other idea.
My goal is that the logic is executed in the database, and that if I have to call a procedure, block the update on the table, so that it can comply with the restriction of all unique rows

Entry level propositional logic simplification

This is an entry level propositional logic question.
An exercise's final 2 statements are:
(A v B) v (B v C)
A v B v C
Is the last statement a distributive simplification? I can't figure out how the last statement was arrived at.
Appreciate any help.
So first use the associative property
(A v B) v (B v C)
can be written like this
A v (B v B) v C
because the associative property will hold.
The idempotent law states that B v B = B
So we end up with
A v B v C

Matching contents from one column to another column in a CSV

So I have a csv with two columns like this:
A B
C D
E F
etc..
And another column like this:
B
X
D
Y
Z
F
etc..
I'd like to match the first column (A,C,E,etc..) to the corresponding values in the last column (B,X,D,Y,etc...).
So that the result is this:
A B
X
C D
Y
Z
E F
etc..
Is there a way to accomplish this?

Is there a shortcut to normalizing a table where the columns=rows?

Suppose you had the mySQL table describing if you can mix two substances
Product A B C
---------------------
A y n y
B n y y
C y y y
The first step would be to transform it like
P1 P2 ?
-----------
A A y
A B n
A C y
B A y
B B y
B C n
C A y
C B n
C C y
But then you have duplicate information. (eg. If A can mix with B, then B can mix with A), so, you can remove several rows to get
P1 P2 ?
-----------
A A y
A B n
A C y
B B y
B C n
C C y
While the last step was pretty easy with a small table, doing it manually would take forever on a larger table. How would one go about automating the removal of rows with duplicate MEANING, but not identical content?
Thanks, I hope my question makes sense as I am still learning databases
If it's safe to assume that you're starting with all relationships doubled up, e.g.
If A B is in the table, then B A is guaranteed to be in the table.
Then all you have to do is remove all rows where P2 < P1;
DELETE FROM `table_name` WHERE `P2` < `P1`;
If this isn't the case, you can make it the case by going through the table and inserting all the duplicate rows if they don't already exist, then running this.
I don't think it's necessary in your situation, but as an intellectual exercise, you could build on Jamie Wong's solution and prevent non-duplicated columns from being removed with an EXISTS clause. Something like this:
DELETE FROM `table_name` AS t1
WHERE `P2` < `P1`
AND EXISTS (SELECT NULL FROM `table_name` AS t2
WHERE t1.`P1` = t2.`P2` AND t1.`P2` = t2.`P1`);
It pretty much just makes sure that there's a duplicate before deleting anything.
(My MySQL syntax might be a little off; it's been a while.)
Step 1 (as you've already done): Transform to Table2
P1 P2 ?
-----------
A A y
A B n
A C y
B A y
B B y
B C n
C A y
C B n
C C y
Step 2: ReOrder Columns, Select Distinct
SELECT DISTINCT
IF P1<P2 THEN P1 ELSE P2 END as P1, -- this puts the smallest value in P1
IF P1>P2 THEN P1 ELSE P2 END as P2 -- this puts the largest value in P2
FROM Table2
WHERE NOT P1=P2 --(Assuming records like A, A, y are not interesting)
I'm not a mySQL guy, so you might need to check the if/then syntax, but this seems conceptually ok anyway.