In the above discussion, it is suggested that when we maintain
weight arrays for our opponents we only maintain all known
possible cases (for the flop 1,081 cases of the original 1,326
since we hold two known cards). However, when we compute *EHS*'
for an opponent in the re-weighting function, what do we use
for the weight array? Our opponent does not know the two cards
we hold, meaning if we hold two aces it is not correct to assume
our opponent is aware there are two less aces in the deck.
Additionally we may want to consider that sometimes an opponent's
estimation of *EHS*' is inflated by in turn observing actions
denoting weakness from other opponents (and ourselves).

To address these problems we have added a level of abstraction
to the opponent modeling in the original design. All the opponent models,
including a model of ourselves (in effect our opponents' model of us), are
gathered and adjusted using the * public* information available (our
hole cards, * private* information, are not considered public
information). In the re-weighting step for a particular player,
when *EHS*' is calculated, a * field array* (Section 7.3)
is used which is composed from the weight arrays of all the opponents
of that player. As a result, the second re-weighting in a
round is performed within the context of the first.

Of course, when we compute hand values for our betting strategy, we use all available information and do not include all the subcases which use one or both of our hole cards. Since the weight arrays have been normalized with these subcases included, some additional minor error is introduced.