The Following Are Equivalent #
This file allows to state that all propositions in a list are equivalent. It is used by
Mathlib/Tactic/Tfae.lean.
(TFAE [P₁, P₂, P₃, ...]).out i j, where i, j are the 1-indexed indices for TFAE
statements, yields a proof of Pᵢ ↔ Pⱼ. Indices therefore must be greater than 0. This
convention matches the statement numbering in tfae tactics.
If P₁ x ↔ ... ↔ Pₙ x for all x, then (∀ x, P₁ x) ↔ ... ↔ (∀ x, Pₙ x).
Note: in concrete cases, Lean has trouble finding the list [P₁, ..., Pₙ] from the list
[(∀ x, P₁ x), ..., (∀ x, Pₙ x)], but simply providing a list of underscores with the right
length makes it happier.
Example:
example (P₁ P₂ P₃ : ℕ → Prop) (H : ∀ n, [P₁ n, P₂ n, P₃ n].TFAE) :
[∀ n, P₁ n, ∀ n, P₂ n, ∀ n, P₃ n].TFAE :=
forall_tfae [_, _, _] H
If P₁ x ↔ ... ↔ Pₙ x for all x, then (∃ x, P₁ x) ↔ ... ↔ (∃ x, Pₙ x).
Note: in concrete cases, Lean has trouble finding the list [P₁, ..., Pₙ] from the list
[(∃ x, P₁ x), ..., (∃ x, Pₙ x)], but simply providing a list of underscores with the right
length makes it happier.
Example:
example (P₁ P₂ P₃ : ℕ → Prop) (H : ∀ n, [P₁ n, P₂ n, P₃ n].TFAE) :
[∃ n, P₁ n, ∃ n, P₂ n, ∃ n, P₃ n].TFAE :=
exists_tfae [_, _, _] H
Alias of the reverse direction of List.tfae_not_iff.