Theorem: KolmogorovStreams.chosen_indecent_closed_form (Compfiles/KolmogorovStreams.lean)

State before:
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
⊢ ∀ (n : ℕ),
    ((choose_indecent_words is_decent a h).get n).start =
      ∑ j ∈ Finset.range n, ((choose_indecent_words is_decent a h).get j).length
Tactic:
intro n
State after:
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
n : ℕ
⊢ ((choose_indecent_words is_decent a h).get n).start =
    ∑ j ∈ Finset.range n, ((choose_indecent_words is_decent a h).get j).length

State before:
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
n : ℕ
⊢ ((choose_indecent_words is_decent a h).get n).start =
    ∑ j ∈ Finset.range n, ((choose_indecent_words is_decent a h).get j).length
Tactic:
induction' n with n pn
State after:
case zero
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
⊢ ((choose_indecent_words is_decent a h).get 0).start =
    ∑ j ∈ Finset.range 0, ((choose_indecent_words is_decent a h).get j).length

case succ
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
n : ℕ
pn :
  ((choose_indecent_words is_decent a h).get n).start =
    ∑ j ∈ Finset.range n, ((choose_indecent_words is_decent a h).get j).length
⊢ ((choose_indecent_words is_decent a h).get (n + 1)).start =
    ∑ j ∈ Finset.range (n + 1), ((choose_indecent_words is_decent a h).get j).length

State before:
case zero
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
⊢ ((choose_indecent_words is_decent a h).get 0).start =
    ∑ j ∈ Finset.range 0, ((choose_indecent_words is_decent a h).get j).length
Tactic:
rfl
State after:
no goals

State before:
case succ
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
n : ℕ
pn :
  ((choose_indecent_words is_decent a h).get n).start =
    ∑ j ∈ Finset.range n, ((choose_indecent_words is_decent a h).get j).length
⊢ ((choose_indecent_words is_decent a h).get (n + 1)).start =
    ∑ j ∈ Finset.range (n + 1), ((choose_indecent_words is_decent a h).get j).length
Tactic:
rw [Finset.sum_range_succ, ← pn]
State after:
case succ
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
n : ℕ
pn :
  ((choose_indecent_words is_decent a h).get n).start =
    ∑ j ∈ Finset.range n, ((choose_indecent_words is_decent a h).get j).length
⊢ ((choose_indecent_words is_decent a h).get (n + 1)).start =
    ((choose_indecent_words is_decent a h).get n).start + ((choose_indecent_words is_decent a h).get n).length

State before:
case succ
α : Type
is_decent : List α → Prop
a : Stream' α
h : ∀ (k : ℕ), ¬all_prefixes is_decent (Stream'.drop k a)
n : ℕ
pn :
  ((choose_indecent_words is_decent a h).get n).start =
    ∑ j ∈ Finset.range n, ((choose_indecent_words is_decent a h).get j).length
⊢ ((choose_indecent_words is_decent a h).get (n + 1)).start =
    ((choose_indecent_words is_decent a h).get n).start + ((choose_indecent_words is_decent a h).get n).length
Tactic:
rfl
State after:
no goals