Theorem: selectColumns1_spec2 (Table/Proofs.lean)

State before:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
hu : Schema.Unique sch
t : Table sch
bs : List Bool
h : List.length bs = ncols t
i : Nat
hlt : i < ncols t
⊢ List.get (header t) { val := i, isLt := (_ : i < List.length (header t)) } ∈ header (selectColumns1 t bs) ↔
    List.get bs { val := i, isLt := (_ : i < List.length bs) } = true
Tactic:
simp only [header, Schema.sieve_eq_List_sieve]
State after:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
hu : Schema.Unique sch
t : Table sch
bs : List Bool
h : List.length bs = ncols t
i : Nat
hlt : i < ncols t
⊢ List.get (Schema.names sch) { val := i, isLt := (_ : i < List.length (header t)) } ∈
      Schema.names (List.sieve bs sch) ↔
    List.get bs { val := i, isLt := (_ : i < List.length bs) } = true

State before:
η : Type u_η
dec_η : DecidableEq η
sch : Schema
hu : Schema.Unique sch
t : Table sch
bs : List Bool
h : List.length bs = ncols t
i : Nat
hlt : i < ncols t
⊢ List.get (Schema.names sch) { val := i, isLt := (_ : i < List.length (header t)) } ∈
      Schema.names (List.sieve bs sch) ↔
    List.get bs { val := i, isLt := (_ : i < List.length bs) } = true
Tactic:
exact List.sieve_map_mem_iff_true_unique (Schema.length_eq_List_length ▸ hlt)
        (h.symm ▸ hlt) Prod.fst hu
State after:
no goals