α : Type u_1
l : List α
L : List (List α)
h : isEmpty l = true ∨ foldr (fun a r => isEmpty a || r) false L = true
⊢ sections (l :: L) = []
α : Type u_1
l : List α
L : List (List α)
h : any (l :: L) isEmpty = true
⊢ sections (l :: L) = []
simp only [any, foldr, Bool.or_eq_true] at h
no goals
α : Type u_1
l : List α
L : List (List α)
h : isEmpty l = true ∨ foldr (fun a r => isEmpty a || r) false L = true
⊢ sections (l :: L) = []
match l, h with
| [], .inl rfl => simp; induction sections L <;> simp [*]
| l, .inr h => simp [sections, sections_eq_nil_of_isEmpty h]
α : Type u_1
l : List α
L : List (List α)
h : isEmpty l = true ∨ foldr (fun a r => isEmpty a || r) false L = true
⊢ (List.bind (sections L) fun s => []) = []
α : Type u_1
l : List α
L : List (List α)
h : isEmpty l = true ∨ foldr (fun a r => isEmpty a || r) false L = true
⊢ sections ([] :: L) = []
simp
no goals
α : Type u_1
l : List α
L : List (List α)
h : isEmpty l = true ∨ foldr (fun a r => isEmpty a || r) false L = true
⊢ (List.bind (sections L) fun s => []) = []
induction sections L <;> simp [*]
no goals
α : Type u_1
l✝ : List α
L : List (List α)
h✝ : isEmpty l✝ = true ∨ foldr (fun a r => isEmpty a || r) false L = true
l : List α
h : foldr (fun a r => isEmpty a || r) false L = true
⊢ sections (l :: L) = []
simp [sections, sections_eq_nil_of_isEmpty h]