@@ -587,10 +587,13 @@ class MixedBehaviorProfile:
587587 self._check_validity()
588588 return self._is_defined_at(self.game._resolve_infoset(infoset , "is_defined_at"))
589589
590- def belief(self , node: NodeReference ) -> ProfileDType:
590+ def belief(self , node: NodeReference ) -> ProfileDType | None :
591591 """Returns the conditional probability that a node is reached , given that
592592 its information set is reached.
593593
594+ If the information set is not reachable , the belief is not well-defined.
595+ In this case , the function returns `None`.
596+
594597 Parameters
595598 ----------
596599 node
@@ -952,7 +955,10 @@ class MixedBehaviorProfileDouble(MixedBehaviorProfile):
952955 return deref(self.profile ).GetPayoff(player.player )
953956
954957 def _belief(self , node: Node ) -> float:
955- return deref(self.profile ).GetBeliefProb(node.node )
958+ cdef optional[double] value = deref(self .profile).GetBeliefProb(node.node)
959+ if value.has_value():
960+ return value.value()
961+ return None
956962
957963 def _realiz_prob (self , node: Node ) -> float:
958964 return deref(self.profile ).GetRealizProb(node.node )
@@ -967,7 +973,7 @@ class MixedBehaviorProfileDouble(MixedBehaviorProfile):
967973 return deref(self.profile ).GetPayoff(player.player , node.node )
968974
969975 def _action_value(self , action: Action ) -> float | None:
970- cdef optional[float ] value = deref(self .profile).GetPayoff(action.action)
976+ cdef optional[double ] value = deref(self .profile).GetPayoff(action.action)
971977 if value.has_value():
972978 return value.value()
973979 return None
@@ -1057,7 +1063,10 @@ class MixedBehaviorProfileRational(MixedBehaviorProfile):
10571063 return rat_to_py(deref(self.profile ).GetPayoff(player.player ))
10581064
10591065 def _belief(self , node: Node ) -> Rational:
1060- return rat_to_py(deref(self.profile ).GetBeliefProb(node.node ))
1066+ cdef optional[c_Rational] value = deref(self .profile).GetBeliefProb(node.node)
1067+ if value.has_value():
1068+ return rat_to_py(value.value())
1069+ return None
10611070
10621071 def _realiz_prob (self , node: Node ) -> Rational:
10631072 return rat_to_py(deref(self.profile ).GetRealizProb(node.node ))
0 commit comments