<< Chapter < Page | Chapter >> Page > |
So far, we have represented WaterWorld boards using
propositions like
and
.
You've probably already felt that this is unwieldy, having hundredspropositional variables running around,with only our naming convention implying
any relation between them.Worse, this zoo of propositions doesn't reflect how we actually
think about WaterWorld.For instance, the only way the rules recognize that locations
and
are near each other is because of several
axioms which simultaneously involve
and
,
If writing a program about WaterWorld,
our program should reflect our conception of the problem.However, as it stands, our conception corresponds
to having many many Boolean variables named
,
,
Moreover, the original rules only pertained to a fixed-size board; inventing a new game played on a 5050 grid would require a whole new set of rules!That is clearly not how we humans conceptualize the game!What we want, when discussing the rules, is a generic way to discussing neighboring locations, so thatwe can have one single rule, saying that if a (generic) location has a zero, then any neighboring location is safe.Thus, we allow the exact details ofneighboring locationto change from game to game as we play on different boards(just as which locations contain pirates changes from game to game).
In a program, you'd probably represent the board as a collection (matrix, list, whatever) of Booleans.In our logic, to correspond to this data structure, we'll introduce binary relations .
What, exactly, do we mean byrelation? We'll see momentarily , that we can represent as a set of pairs-of-locations (or equivalently, a function which takes in two locations, and returns either true or false.)
This relation " " entirely encodes the board's geography. Giving somebody the relation is every bit as good as to showingthem a picture of the board (in some ways, betterthe relation makes it perfectly clear whether two locations which just barely touch at a single point,like and , are meant to be considered neighbors.)
We used a binary (two-input) relation to describe neighboring locations.How can we use a relation to capture the notionlocation is safe?
We'll use a unary (one-input) relation: ( ) is true if and only if (iff) location is safe.
After defining relations and discussing their properties, we'll talk about interpreting logic formulas relative to particular relations.
Using relations gives us additional flexibility in modeling our domain,
so that our formal logical model more closely corresponds to ourintuition.
Relations help separate the WaterWorld domain axioms (code) fromthe data,
Notification Switch
Would you like to follow the 'Intro to logic' conversation and receive update notifications?