Theorem: Finite.forall_eq_true_of_all_eq_true (GMLInit/Class/Finite.lean)

State before:
α✝ : Type ?u.1375
inst : Finite α✝
α : Type u_1
inst✝ : Finite α
p : α → Bool
⊢ Finite.all p = true → ∀ (x : α), p x = true
Tactic:
intro h x
State after:
α✝ : Type ?u.1375
inst : Finite α✝
α : Type u_1
inst✝ : Finite α
p : α → Bool
h : Finite.all p = true
x : α
⊢ p x = true

State before:
α✝ : Type ?u.1375
inst : Finite α✝
α : Type u_1
inst✝ : Finite α
p : α → Bool
h : Finite.all p = true
x : α
⊢ p x = true
Tactic:
have hall := Fin.forall_eq_true_of_all_eq_true h
State after:
α✝ : Type ?u.1375
inst : Finite α✝
α : Type u_1
inst✝ : Finite α
p : α → Bool
h : Finite.all p = true
x : α
hall : ∀ (i : Fin toArray.size), p (Finite.get α i) = true
⊢ p x = true

State before:
α✝ : Type ?u.1375
inst : Finite α✝
α : Type u_1
inst✝ : Finite α
p : α → Bool
h : Finite.all p = true
x : α
hall : ∀ (i : Fin toArray.size), p (Finite.get α i) = true
⊢ p x = true
Tactic:
rw [←hall (Finite.find x)]
State after:
α✝ : Type ?u.1375
inst : Finite α✝
α : Type u_1
inst✝ : Finite α
p : α → Bool
h : Finite.all p = true
x : α
hall : ∀ (i : Fin toArray.size), p (Finite.get α i) = true
⊢ p x = p (Finite.get α (find x))

State before:
α✝ : Type ?u.1375
inst : Finite α✝
α : Type u_1
inst✝ : Finite α
p : α → Bool
h : Finite.all p = true
x : α
hall : ∀ (i : Fin toArray.size), p (Finite.get α i) = true
⊢ p x = p (Finite.get α (find x))
Tactic:
rw [Finite.get_find]
State after:
no goals