Theorem: transformColumn_spec4 (Table/Proofs.lean)

State before:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
τ₁ τ₂ : Type u_1
⊢ ∀ (t : Table sch) (c : η) (f : Option τ₁ → Option τ₂) (hc : Schema.HasCol (c, τ₁) sch),
    nrows (transformColumn t c f) = nrows t
Tactic:
intro t c f hc
State after:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
τ₁ τ₂ : Type u_1
t : Table sch
c : η
f : Option τ₁ → Option τ₂
hc : Schema.HasCol (c, τ₁) sch
⊢ nrows (transformColumn t c f) = nrows t

State before:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
τ₁ τ₂ : Type u_1
t : Table sch
c : η
f : Option τ₁ → Option τ₂
hc : Schema.HasCol (c, τ₁) sch
⊢ nrows (transformColumn t c f) = nrows t
Tactic:
simp only [nrows, transformColumn, Schema.length_eq_List_length]
State after:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
τ₁ τ₂ : Type u_1
t : Table sch
c : η
f : Option τ₁ → Option τ₂
hc : Schema.HasCol (c, τ₁) sch
⊢ List.length (List.map (fun r => Row.retypeCell r hc (Cell.fromOption (f (getValue r c)))) t.rows) = List.length t.rows

State before:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
τ₁ τ₂ : Type u_1
t : Table sch
c : η
f : Option τ₁ → Option τ₂
hc : Schema.HasCol (c, τ₁) sch
⊢ List.length (List.map (fun r => Row.retypeCell r hc (Cell.fromOption (f (getValue r c)))) t.rows) = List.length t.rows
Tactic:
apply List.length_map
State after:
no goals