{-# OPTIONS --safe #-}
open import Library
open import Tree using (ε; _⨮_)
open import SingleTreeGame as Game using (moves)
open import Sequence using (seq; thm-seq)
open import ResourcedSingleTreeGame using (rempty; module RMoves)
open import Counting using (count; C:_T:_R:_)
module Necessary
(kₐ kₜ : ℕ)
(hyp : ∀ mv t
→ moves mv ε ≡ just t
→ ∃ λ leftover → RMoves.rmoves kₐ kₜ mv rempty ≡ just (leftover ⨮ t))
(let mv = seq 1 11 Game.ε)
(let (C: c# T: t# R: r#) = count mv)
where
open ℕ
open ≤-Reasoning
open RMoves kₐ kₜ
hmv : ∃ λ leftover → rmoves mv rempty ≡ just (leftover ⨮ ε)
hmv = hyp mv ε (thm-seq 1 11)
counts-seq-1-11 : kₐ * c# + kₜ * t# ≥ r#
counts-seq-1-11 with hmv
... | leftover , run =
begin
r#
≤⟨ m≤n+m r# leftover ⟩
leftover + r#
≤⟨ thm-counts' mv 0 ε run ⟩
kₐ * c# + kₜ * t#
∎
thm-op : kₐ + kₜ ≤ 3 → 82 ≤ 81
thm-op h = begin
82 ≤⟨ counts-seq-1-11 ⟩
kₐ * 27 + kₜ * 27 ≡⟨ sym (*-distribʳ-+ 27 kₐ kₜ) ⟩
(kₐ + kₜ) * 27 ≤⟨ *-monoˡ-≤ 27 h ⟩
3 * 27 ∎
thm : kₐ + kₜ ≥ 4
thm with 4 ≤? kₐ + kₜ
thm | yes p = p
thm | no ¬p = ⊥-elim (n≮n 81 (thm-op (≮⇒≥ ¬p)))