# Is there an algorithm for comparing if statements?

Is there an algorithm and / or tool to detect if two sets of operators `if`

with the same conditions are equivalent? When I say equivalent, I mean that they execute the same code for all data. For example:

``````# set 1
if a
if b
someMethod()
end
end

# set 2
if a && b
someMethod()
end

# set 3
if a || b
someMethod()
end
```

```

Given these three sets of operators `if`

, you can consider set 1 and set 2 to be the equivalent in that it `someMethod`

only holds when a and b are true. Likewise, set 1 and set 3 are not equivalent, since it `someMethod`

will not execute over set 1 if a is true and b is false, but will run on set 3 under the same conditions.

+1

source to share

I would use Karnaugh Maps , which is a standard for sequential logical synthesis and analysis.

• create a Karnaugh map for each set of `if`

s

• compare cards

if the mapping is the same, then the if statements are equivalent, if not, then they are different.

Sorry for the short answer, but I don't know what to add because this is basic knowledge.

• `set1 == set2`

• `set3`

is different
+3

source

All Articles