 
   /// The exploitability descent loss for a policy.
   @differentiable(wrt: policy)
-  public mutating func loss(for policy: TensorFlowTabularPolicy<Game>) -> Double {
+  public func loss(for policy: TensorFlowTabularPolicy<Game>) -> Double {
     let (nashConv0, qValues0, counterfactualReachProbabilities0) =
       actionValuesAgainstBestResponder(
         player: .player(0),

  ///  - `actionValuesAgainstBestResponder`, a tensor of shape
  ///    `allInformationStates.count` x `allActions.count`,
  ///  - `counterfactualReachProbability`, a tensor of shape `allInformationStates.count`.
  mutating func actionValuesAgainstBestResponder<Policy: StochasticPolicy>(
    player: Player,
    policy: Policy
  ) -> (

    self.game = informationStateCache.game
  }

  func reset() {
    reachProbabilities = [[:], [:]]
    counterfactualReachProbabilities = [[:], [:]]
    chanceReachProbabilities = [[:], [:]]
