Skip to main content

Logical operators

Sometimes you'll see logical operators like 'AND' or 'IF' on a map. These let you modify truth flows in clever ways.

Make a logical operator#

To make a logical operator, click on any connector, then click this icon in the top toolbar:

The connector will automatically turn into a truth connector and split in two. Between them, a circle will appear. This circle is the 'logical operator'.

Now you can click the logical operator to change what type it is.

ADD#

The 'ADD' logical operator sums the value of incoming truth flows.

NOT#

The 'NOT' logical operator reverses any truth flow that goes into it.

POS#

Only passes on positive truth values.

NEG#

Only passes on negative truth values.

IF THEN#

The 'IF THEN' logical operator only passes on truth values if no inputs have evidence against them (i.e. their truth values are all positive or neutral numbers).

If a truth value flowing into an 'IF THEN' operator is negative, the truth value of the descendant node is propagated back to the parent node.

For example, if the parent node is 'all cats are mammals' and the child node was 'my cat is a mammal', linked by a connector going through an 'IF THEN' logical operator...

If the parent node ('all cats are mammals') has a positive truth value, this flows down as supporting evidence for 'my cat is a mammal'.

If the parent node has a neutral truth value, no truth is passed on.

If the parent node is set to a negative value ('all cats aren't mammals'), truth values from the child node flow up into the parent (e.g. a truth value of 100 for 'my cat is a mammal' would flow back up to the parent and show dissonance).

AVG#

The 'AVG' logical operator averages all the truth inputs it receives.

MIN#

The ‘MIN’ logical operator only passes on the lowest incoming value.

MAX#

The ‘MAX’ logical operator only passes on the highest incoming value.

AND#

The 'AND' logical operator only passes on truth values if all the inputs have evidence in their favour (i.e. their truth values are all positive numbers).

IF AND#

The 'IF AND' operator behaves similarly to the IF THEN operator, except it only passes on truth if all inputs are positive values (i.e. no negative or neutral values).

Because it is a form of 'IF' operator, if the outgoing node has a negative value, at least one nodes feeding in to the operator must be negative as well.

In contrast, if the outgoing node from an IF THEN operator is negative, it can't have any positive values feeding into it (or the truth would propagate from the positive value), so a dissonance identifier will appear:

So in this example, both 'All dogs are mammals' and 'It's a dog' have been set to true. This means 'It's a mammal' should be true, but because it's been set to a negative, either 'All dogs are mammals' or 'It's a dog' (or both!) must be wrong.

Compare this to 'AND', where the dissonance appears on 'It's a mammal':

...Or to 'IF THEN', where a negative value is propagated backwards to any incoming positive value (since that positive should have been passed on if it was right):