# 14 Disjunction (or)

## How do we say "or"?

Given that "and" is the interpretation we give to graphs that are juxtaposed, the question arises, how do we say "or"?

## The logical solution

The answer comes from logic. In logic, only one of the two connectives "and" and "or" is necessary to have, if only we have negation as another primitive. This stems from the fact that we can express "or" in terms of "and" plus negation, and vice versa.

The formula is:

```   p
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#218;</FONT>");
} else {
document.write("&or;");
}
-->
q   is equivalent to
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
(
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
p
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#217;</FONT>");
} else {
document.write("&and;");
}
-->

<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
q)
```

## Application to conceptual graphs

In order to do this with conceptual graphs, we just need to apply the two rules we have learned for how to express negation and conjunction ("and"). That is, in order to express disjunction ("or") between two conceptual graphs G1 and G2:

1. Place a context around G1 and negate the context,
2. Place a context around G2 and negate the context,
3. Place these two contexts inside a third, larger context,
4. Negate the larger context.

## Example

For example, in order to say

```   John is either a fool or very clever.
```

we can draw these conceptual graphs:

```
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
[Situation:

<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
[Situation:
[Person: John]- - -[Fool]
]

<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
[Situation:
[Person: John]->(Attr)->[Clever]-
->(Meas)->[Degree: #very]
]
]
```

## Extending the notation beyond two graphs

In logic, this method can be extended beyond two predicates to any number of predicates. The formula is:

```   p1
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#218;</FONT>");
} else {
document.write("&or;");
}
-->
p2
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#218;</FONT>");
} else {
document.write("&or;");
}
-->
...
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#218;</FONT>");
} else {
document.write("&or;");
}
-->
pn
is equivalent to

<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
(
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
p1
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#217;</FONT>");
} else {
document.write("&and;");
}
-->

<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
p2
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#217;</FONT>");
} else {
document.write("&and;");
}
-->
...
<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#217;</FONT>");
} else {
document.write("&and;");
}
-->

<!--
var agt=navigator.userAgent.toLowerCase();
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_gecko = (agt.indexOf('gecko') != -1);
if (is_win && !is_gecko) {
document.write("<FONT FACE=\"Symbol\">&#216;</FONT>");
} else {
document.write("&not;");
}
-->
pn)
```

We see that the pattern is just to negate every predicate and then place them all in the same context, which we then negate.

This can be applied to conceptual graphs as well. The method is to place contexts around each of the graphs, negate every context, place all of these negated contexts in the same, large context, and finally negate the large context.

## Conclusion

"Or" is not a primitive in conceptual graphs. The reason is that "and" is a more useful primitive, and "or" can be produced by means of "not" and "and".

In order to say "or" in conceptual graphs, we follow the procedure outlined above, applying the rules for "and" and "not" a number of times until the desired outcome has been reached.

Prev: 13 Conjunction (and)
Up: Part IV: Logic
Next: 15 Syllogisms